توییتر
Twitter (X)
اتوماسیون توییتر/ایکس: ارسال توییت، جستجو، لایک، ریتوییت، DM و مدیریت فالوورها
نمای کلی
نود Twitter (X) یکی از مهمترین نودهای n8n برای اتوماسیون شبکههای اجتماعی و بازاریابی دیجیتال است.
تغییر نام به X:
در سال 2023، توییتر به X تغییر نام داد. API همچنان با نام Twitter API v2 شناخته میشود و اکثر endpointها بدون تغییر باقی ماندهاند. در n8n این نود با نام Twitter شناخته میشود اما کاملاً با پلتفرم X سازگار است.
قابلیتهای کلیدی:
- ارسال و حذف توییت (Post/Delete Tweet)
- لایک و آنلایک توییت
- ریتوییت و Quote Tweet
- جستجوی پیشرفته توییتها با عملگرهای فیلتر
- دریافت اطلاعات کاربر و پروفایل
- مدیریت فالوورها و فالووینگها
- ارسال و دریافت پیام مستقیم (DM)
- ساخت و مدیریت لیستها
- رصد ترندهای محلی و جهانی
- آپلود تصویر و ویدیو به همراه توییت
- Schedule کردن توییتها
- دریافت Timeline کاربر
Twitter Trigger:
- دریافت منشنهای جدید
- دریافت توییتهای جدید با هشتگ خاص
- دریافت فالوورهای جدید
- رصد کلمات کلیدی خاص
سطوح دسترسی API:
- Free: فقط Post Tweet و Delete Tweet (1,500 توییت/ماه)
- Basic: خواندن توییت، جستجو، مدیریت لایک و ریتوییت ($100/ماه - 10,000 خواندن/ماه)
- Pro: دسترسی کامل، حجم بالا، Filtered Stream ($5,000/ماه - 1,000,000 خواندن/ماه)
- Enterprise: سفارشی، بدون محدودیت عملی
کاربردها:
- زمانبندی و انتشار خودکار محتوا
- رصد برند و تحلیل احساسات
- تحلیل رقبا و بازار
- پاسخ خودکار به منشنها و DM
- رصد ترندها و موضوعات داغ
- Cross-posting محتوا بین پلتفرمها
- جمعآوری داده برای تحلیل بازار
- مدیریت کمپینهای تبلیغاتی
- ساخت Dashboard آمار شبکه اجتماعی
احراز هویت
احراز هویت Twitter API v2
پیشنیاز: ایجاد حساب Developer
#### مراحل ایجاد اپلیکیشن:
- 1به [Developer Portal](https://developer.twitter.com/) بروید
- 2ثبتنام یا ورود با حساب Twitter/X
- 3از Developer Portal > Projects & Apps یک Project جدید بسازید
- 4نام پروژه و توضیحات را وارد کنید
- 5یک App داخل پروژه بسازید
- 6کلیدهای API را دریافت کنید
روش 1: OAuth 2.0 (توصیهشده)
بهترین روش برای دسترسی به API v2 با قابلیتهای کامل:
Client ID: xxxxxxxxxxxxxxxxxxxxxxxx
Client Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Authorization URL: https://twitter.com/i/oauth2/authorize
Token URL: https://api.twitter.com/2/oauth2/token
Scopes: tweet.read tweet.write users.read dm.read dm.write#### تنظیم در n8n:
- 1Credentials > Twitter OAuth2 API
- 2Client ID و Client Secret را وارد کنید
- 3Callback URL را از n8n کپی و در Developer Portal تنظیم کنید
- 4Connect بزنید و اجازه دسترسی بدهید
#### Scopes مهم:
tweet.read → خواندن توییتها
tweet.write → ارسال و حذف توییت
users.read → خواندن پروفایل کاربران
follows.read → مشاهده فالوورها
follows.write → فالو/آنفالو کردن
like.read → مشاهده لایکها
like.write → لایک/آنلایک کردن
dm.read → خواندن پیامهای مستقیم
dm.write → ارسال پیام مستقیم
list.read → مشاهده لیستها
list.write → ساخت و مدیریت لیستها
offline.access → دسترسی Refresh Tokenروش 2: OAuth 1.0a (User Authentication)
برای اقداماتی که از طرف کاربر انجام میشود:
API Key (Consumer Key): xxxxxxxxxxxxxxxxxxxxxxxx
API Secret (Consumer Secret): xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Access Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Access Token Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx#### تنظیم در n8n:
- 1Credentials > Twitter OAuth API
- 2هر 4 مقدار را از Developer Portal کپی کنید
- 3Test Connection بزنید
روش 3: Bearer Token (App-only Authentication)
برای عملیات فقط خواندنی (جستجو، دریافت توییت):
Bearer Token: AAAAAAAAAAAAAAAAAAAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx#### تنظیم در n8n:
- 1Credentials > Twitter OAuth2 API
- 2Bearer Token وارد کنید
- 3فقط برای عملیات خواندنی قابل استفاده است
سطوح دسترسی API و قیمتگذاری:
| سطح | قیمت | محدودیتها | |------|-------|------------| | Free | رایگان | فقط Post/Delete، 1,500 توییت/ماه، 1 App | | Basic | $100/ماه | 10,000 خواندن/ماه، 50,000 توییت/ماه، 2 App | | Pro | $5,000/ماه | 1,000,000 خواندن/ماه، 300,000 توییت/ماه، 3 App | | Enterprise | سفارشی | بدون محدودیت عملی |
Rate Limits (محدودیت نرخ درخواست):
#### سطح Free:
POST /2/tweets: 1,500/ماه (نه در روز!)
DELETE /2/tweets/:id: 50/15 دقیقه#### سطح Basic:
GET /2/tweets/search/recent: 60/15 دقیقه
GET /2/users/:id: 300/15 دقیقه
POST /2/tweets: 100/24 ساعت (per user)
POST /2/users/:id/likes: 50/24 ساعت
POST /2/users/:id/retweets: 50/24 ساعت
GET /2/dm_conversations: 300/15 دقیقه#### سطح Pro:
GET /2/tweets/search/recent: 300/15 دقیقه
GET /2/tweets/search/all: 1/ثانیه
POST /2/tweets: 100/24 ساعت (per user)
GET /2/users/:id/followers: 15/15 دقیقهنکات امنیتی:
- کلیدهای API را هرگز در کد یا Repository ذخیره نکنید
- از Environment Variables استفاده کنید
- سطح دسترسی را به حداقل مورد نیاز محدود کنید
- Callback URL را دقیق تنظیم کنید
- API Keyها را به صورت دورهای Rotate کنید
- از App Permissions فقط Read/Write مورد نیاز را فعال کنید
عملیاتهای موجود
postTweet
ارسال توییت جدید با متن، تصویر، ویدیو یا نظرسنجی. پشتیبانی از Reply و Quote Tweet.
deleteTweet
حذف توییتی که قبلاً ارسال شده. فقط توییتهای خودتان قابل حذف هستند.
likeTweet
لایک کردن یک توییت. قابلیت Unlike نیز موجود است.
retweet
ریتوییت کردن یک توییت. قابلیت Undo Retweet نیز موجود است.
searchTweets
جستجوی پیشرفته توییتها با عملگرهای فیلتر، هشتگ، کاربر، تاریخ و زبان.
getUser
دریافت پروفایل کامل کاربر شامل بیو، تعداد فالوور، توییتها و اطلاعات حساب.
getFollowers
دریافت لیست فالوورهای یک کاربر با اطلاعات پروفایل.
getFollowing
دریافت لیست کاربرانی که یک کاربر فالو کرده است.
getTweet
دریافت جزئیات کامل یک توییت شامل متن، آمار تعامل، پاسخها و رسانهها.
sendDM
ارسال پیام مستقیم به کاربر دیگر. نیاز به OAuth 2.0 با scope مناسب دارد.
listDMs
دریافت لیست مکالمات پیام مستقیم و پیامهای هر مکالمه.
createList
ساخت لیست جدید برای دستهبندی و پیگیری کاربران.
addToList
افزودن کاربر به لیست موجود. قابلیت حذف از لیست نیز موجود است.
getTrending
دریافت موضوعات داغ و ترندهای توییتر بر اساس موقعیت جغرافیایی (WOEID).
کاربردهای متداول
1. زمانبندی و انتشار خودکار توییت (Social Media Scheduling)
ارسال توییتهای از پیش آمادهشده در زمانهای مشخص:
Schedule (هر روز ساعت 9, 13, 18)
-> Google Sheets (خواندن محتوای آماده)
-> IF (نوع محتوا: متنی یا تصویری)
-> True (متنی):
Twitter (postTweet)
Text: "{{$json.content}}"
-> True (تصویری):
HTTP Request (دانلود تصویر)
-> Twitter (postTweet)
Text: "{{$json.content}}"
Media: {{$binary.data}}
-> Google Sheets (بروزرسانی وضعیت: منتشر شد)
-> Telegram (اعلان: توییت ارسال شد)2. رصد برند و تحلیل احساسات (Brand Monitoring)
پیگیری هر منشن از برند و تحلیل:
Schedule (هر 15 دقیقه)
-> Twitter (searchTweets)
Query: "@mybrand OR #mybrand -is:retweet"
Sort: recency
Max Results: 100
-> Code (فیلتر توییتهای جدید)
-> Code (تحلیل احساسات ساده - مثبت/منفی/خنثی)
-> IF (احساس منفی)
-> Telegram (هشدار به تیم پشتیبانی)
-> Google Sheets (ثبت برای پیگیری)
-> IF (احساس مثبت)
-> Twitter (likeTweet)
-> Google Sheets (ثبت بازخورد مثبت)3. تحلیل رقبا (Competitor Analysis)
رصد فعالیت رقبا در توییتر:
Schedule (هر روز ساعت 23)
-> Twitter (getUser - رقیب 1)
Username: competitor1
Fields: public_metrics
-> Twitter (getUser - رقیب 2)
Username: competitor2
Fields: public_metrics
-> Twitter (searchTweets - توییتهای رقبا)
Query: "from:competitor1 OR from:competitor2"
-> Code (محاسبه آمار: فالوور جدید، توییتها، تعامل)
-> Google Sheets (ثبت آمار روزانه)
-> Telegram (گزارش روزانه رقبا)4. پاسخ خودکار به منشنها (Auto-Reply to Mentions)
پاسخ هوشمند به منشنهای کاربران:
Schedule (هر 5 دقیقه)
-> Twitter (searchTweets)
Query: "@myaccount -is:retweet"
Sort: recency
-> Code (فیلتر منشنهای جدید و پاسخنداده)
-> Switch (بر اساس کلمات کلیدی)
-> Case "قیمت" / "price":
Twitter (postTweet)
Reply To: {{$json.id}}
Text: "سلام! برای مشاهده قیمتها به سایت ما مراجعه کنید: https://example.com/pricing"
-> Case "مشکل" / "bug":
Twitter (postTweet)
Reply To: {{$json.id}}
Text: "متشکریم از گزارش شما. لطفا جزئیات را در DM ارسال کنید تا بررسی کنیم."
-> Default:
Twitter (likeTweet)
Tweet ID: {{$json.id}}5. رصد ترندها و موضوعات داغ (Trend Tracking)
پیگیری ترندهای مرتبط با صنعت:
Schedule (هر ساعت)
-> Twitter (getTrending)
WOEID: 1 (جهانی)
-> Code (فیلتر ترندهای مرتبط با صنعت)
// بررسی کلمات کلیدی مرتبط
-> IF (ترند مرتبط پیدا شد)
-> Twitter (searchTweets)
Query: "{{$json.trendName}} lang:fa"
-> Code (خلاصهسازی و آمار)
-> Telegram (اعلان: ترند مرتبط!)
-> Google Sheets (ثبت ترند)6. Cross-posting محتوا (Content Cross-Posting)
انتشار محتوا از وبلاگ یا سایر پلتفرمها:
RSS Trigger (پست جدید در وبلاگ)
-> Code (استخراج عنوان و لینک)
// خلاصهسازی و فرمت برای توییتر
-> Twitter (postTweet)
Text: "{{$json.title}}\n\n{{$json.summary}}\n\n{{$json.url}} #blog"
-> Telegram (ارسال در کانال)
-> LinkedIn (انتشار پست)7. رصد هشتگهای خاص (Hashtag Monitoring)
پیگیری هشتگهای مرتبط با کمپین:
Schedule (هر 30 دقیقه)
-> Twitter (searchTweets)
Query: "#mycampaign OR #mybrand has:images -is:retweet"
Max Results: 50
Fields: public_metrics, author_id
-> Code (محاسبه آمار: تعداد، Reach، تعامل)
-> IF (توییتهای برتر - بیش از 10 لایک)
-> Twitter (retweet)
-> Twitter (likeTweet)
-> Google Sheets (ثبت آمار هشتگ)
-> Schedule (پایان هر روز) -> Telegram (گزارش روزانه هشتگ)8. مدیریت لیست فالوورها (Follower Management)
مدیریت و دستهبندی فالوورهای جدید:
Schedule (هر روز)
-> Twitter (getFollowers)
User ID: MY_USER_ID
Max Results: 100
-> Code (مقایسه با لیست قبلی -> فالوورهای جدید)
-> Loop (هر فالوور جدید)
-> Twitter (getUser)
Fields: public_metrics, description
-> IF (فالوور با بیش از 1000 فالوور)
-> Twitter (addToList)
List: "influencers"
-> Twitter (sendDM)
Text: "سلام! ممنون از فالو. خوشحال میشیم با هم در ارتباط باشیم."
-> Google Sheets (ثبت فالوور جدید)9. داشبورد آمار اجتماعی (Social Analytics Dashboard)
جمعآوری و نمایش آمار حساب:
Schedule (هر روز ساعت 00:00)
-> Twitter (getUser - حساب خودمان)
Fields: public_metrics
-> Twitter (searchTweets - توییتهای امروز)
Query: "from:myaccount"
Start Time: امروز 00:00
-> Code (محاسبه آمار)
// فالوور جدید، لایک کل، ریتوییت کل، Engagement Rate
-> Google Sheets (ثبت آمار روزانه)
-> Telegram (گزارش عملکرد روزانه)
Text:
<b>گزارش توییتر - {{$json.date}}</b>
فالوور: {{$json.followers}} ({{$json.newFollowers}}+ جدید)
توییت امروز: {{$json.tweetsToday}}
لایک دریافتی: {{$json.likesReceived}}
ریتوییت: {{$json.retweetsReceived}}
Engagement Rate: {{$json.engagementRate}}%10. سیستم پاسخ هوشمند DM (Smart DM Responder)
پاسخ خودکار به پیامهای مستقیم:
Schedule (هر 2 دقیقه)
-> Twitter (listDMs)
Max Results: 20
-> Code (فیلتر DMهای جدید و پاسخنداده)
-> Switch (بر اساس محتوای پیام)
-> Case "سفارش":
Twitter (sendDM)
Text: "برای ثبت سفارش به لینک زیر مراجعه کنید:\nhttps://example.com/order"
-> Case "پشتیبانی":
Twitter (sendDM)
Text: "تیم پشتیبانی در اولین فرصت پاسخگوی شما خواهد بود. شماره تماس: 021-12345678"
-> Default:
Telegram (ارسال DM جدید به ادمین برای پاسخ دستی)11. محتوای UGC و بازنشر (User-Generated Content)
یافتن و بازنشر محتوای تولیدشده توسط کاربران:
Schedule (هر ساعت)
-> Twitter (searchTweets)
Query: "#mybrand has:images -is:retweet min_faves:5"
-> Code (انتخاب بهترین محتوا)
-> Twitter (retweet)
-> Twitter (postTweet)
Reply To: {{$json.id}}
Text: "ممنون از اشتراکگذاری تجربهتان! عالیه!"
-> Google Sheets (ثبت UGC)12. هشدار بحران شبکه اجتماعی (Crisis Alert)
تشخیص سریع بحرانهای برند:
Schedule (هر 5 دقیقه)
-> Twitter (searchTweets)
Query: "@mybrand (complaint OR problem OR terrible OR worst OR scam)"
Max Results: 100
-> Code (تحلیل حجم و شدت)
// اگر تعداد شکایات بیش از 10 در 15 دقیقه
-> IF (حالت بحران)
-> Telegram (هشدار فوری به مدیران)
Text: "هشدار بحران! {{$json.count}} شکایت در 15 دقیقه اخیر"
-> Email (ارسال ایمیل به تیم PR)
-> Google Sheets (ثبت جزئیات بحران)نکات حرفهای
نکات حرفهای
- 1عملگرهای جستجوی پیشرفته:
// جستجوی ترکیبی
"keyword1 OR keyword2" -> یکی از دو کلمه
"keyword1 keyword2" -> هر دو کلمه
"exact phrase" -> عبارت دقیق
"-keyword" -> حذف کلمه از نتایج
// فیلترهای خاص
from:username -> توییتهای یک کاربر
to:username -> Reply به یک کاربر
@username -> منشن یک کاربر
#hashtag -> هشتگ خاص
has:images -> فقط با تصویر
has:videos -> فقط با ویدیو
has:links -> فقط با لینک
is:retweet -> فقط ریتوییتها
-is:retweet -> بدون ریتوییت
is:reply -> فقط Replyها
lang:fa -> زبان فارسی
lang:en -> زبان انگلیسی
min_faves:10 -> حداقل 10 لایک
min_retweets:5 -> حداقل 5 ریتوییت
until:2024-01-01 -> قبل از تاریخ
since:2024-01-01 -> بعد از تاریخ- 1بهترین زمان ارسال توییت (ایران):
صبح: 8:00 - 10:00 (شروع کار)
ظهر: 12:00 - 13:00 (استراحت ناهار)
عصر: 17:00 - 19:00 (بعد از کار)
شب: 21:00 - 23:00 (بیشترین فعالیت)
بهترین روزها: شنبه تا چهارشنبه
کمترین فعالیت: جمعه صبح- 1Thread (رشتهتوییت):
// ارسال Thread با n8n
Step 1: Twitter (postTweet) -> ذخیره Tweet ID
Step 2: Twitter (postTweet)
Reply To: {{$json.tweetId}} // ID توییت قبلی
Text: "2/ ادامه مطلب..."
Step 3: Twitter (postTweet)
Reply To: {{$json.tweetId}} // ID توییت دوم
Text: "3/ نتیجهگیری..."- 1Engagement بالاتر:
// نکات افزایش تعامل:
- از تصویر استفاده کنید (2.3x بیشتر تعامل)
- نظرسنجی (Poll) بگذارید
- سوال بپرسید
- از هشتگهای مرتبط استفاده کنید (2-3 هشتگ بهینه)
- Thread بنویسید (الگوریتم Thread را بیشتر نشان میدهد)
- از CTA (Call to Action) استفاده کنید- 1مدیریت Rate Limit هوشمند:
// قبل از هر درخواست بررسی کنید
HTTP Request (GET headers)
x-rate-limit-remaining: تعداد باقیمانده
x-rate-limit-reset: زمان ریست (Unix timestamp)
IF (remaining < 5)
-> Wait (تا زمان ریست)
-> سپس ادامه- 1WOEID برای ترندهای ایران و جهان:
جهانی: 1
ایران: 23424851
تهران: 2251945
آمریکا: 23424977
انگلستان: 23424975
ترکیه: 23424969
امارات: 23424738- 1Tweet Fields مفید:
// فیلدهای پرکاربرد در توییت
tweet.fields=public_metrics -> لایک، ریتوییت، Reply، Quote
tweet.fields=created_at -> زمان ارسال
tweet.fields=author_id -> شناسه نویسنده
tweet.fields=entities -> هشتگها، منشنها، URLها
tweet.fields=attachments -> رسانههای پیوست
tweet.fields=conversation_id -> شناسه Thread
tweet.fields=lang -> زبان توییت
tweet.fields=source -> منبع (وب، موبایل، API)
// فیلدهای پرکاربرد کاربر
user.fields=public_metrics -> فالوور، فالووینگ، تعداد توییت
user.fields=description -> بیو
user.fields=profile_image_url -> عکس پروفایل
user.fields=verified -> تیک آبی
user.fields=created_at -> تاریخ عضویت- 1محاسبه Engagement Rate:
// فرمول Engagement Rate
const tweet = $json;
const metrics = tweet.public_metrics;
const engagements = metrics.like_count + metrics.retweet_count
+ metrics.reply_count + metrics.quote_count;
const impressions = metrics.impression_count || 1;
const engagementRate = ((engagements / impressions) * 100).toFixed(2);
// Engagement Rate بالای 3% خوب است- 1جلوگیری از Spam و Suspension:
// قوانین مهم برای جلوگیری از مسدودیت:
- بیش از 100 توییت در روز ارسال نکنید
- توییت تکراری ارسال نکنید
- بین عملیاتها فاصله بگذارید (Wait Node)
- از Follow/Unfollow انبوه خودداری کنید
- محتوای اسپم ارسال نکنید
- از لینکهای مشکوک استفاده نکنید
- Reply انبوه به کاربران نفرستید- 1Media Upload دو مرحلهای:
// مرحله 1: آپلود رسانه
HTTP Request (POST)
URL: https://upload.twitter.com/1.1/media/upload.json
Content-Type: Multipart
Body: media (Binary Data)
-> ذخیره media_id
// مرحله 2: ارسال توییت با رسانه
Twitter (postTweet)
Text: "متن توییت"
Media IDs: ["{{$json.media_id_string}}"]- 1فرمت متن برای خوانایی بهتر:
// استفاده از Emoji و فرمتبندی
Text: "\u2728 عنوان جذاب\n\n"
+ "نکته 1\n"
+ "نکته 2\n"
+ "نکته 3\n\n"
+ "#hashtag1 #hashtag2\n"
+ "link"- 1Webhook برای دریافت Real-time (Account Activity API):
// برای دریافت آنی رویدادها (نیاز به Enterprise):
- منشنها
- DMها
- فالوو/آنفالوو
- لایک/آنلایک
// جایگزین ارزانتر: Polling با Schedule
Schedule (هر 1-5 دقیقه) -> Twitter (searchTweets)- 1کار با Cursor Pagination:
// بسیاری از endpointها از Cursor Pagination استفاده میکنند
Step 1: Twitter (getFollowers) -> ذخیره next_token
Step 2: IF (next_token وجود دارد)
-> Twitter (getFollowers)
Pagination Token: {{$json.meta.next_token}}
-> Merge (ترکیب نتایج)
-> Back to Step 2- 1تفاوت API v1.1 و v2:
// v2 (فعلی و توصیهشده):
- Endpoint: https://api.twitter.com/2/
- فیلدها را انتخاب میکنید (tweet.fields, user.fields)
- پاسخ ساختار data/includes/meta دارد
- OAuth 2.0 با PKCE
// v1.1 (قدیمی، برخی endpointها هنوز فعال):
- Endpoint: https://api.twitter.com/1.1/
- همه فیلدها برگردانده میشود
- OAuth 1.0a
- Media Upload هنوز از v1.1 استفاده میکند- 1Best Practices برای اتوماسیون توییتر:
1. همیشه Error Handling داشته باشید
2. Rate Limit را رصد کنید
3. لاگ همه عملیات را نگه دارید
4. محتوای متنوع ارسال کنید (تکراری نباشد)
5. زمانبندی هوشمند داشته باشید
6. قوانین توییتر را رعایت کنید
7. پشتیبان از محتوا نگه دارید
8. Credentials را ایمن نگه دارید
9. از تست در محیط Development شروع کنید
10. فعالیتهای انبوه را تدریجی انجام دهیدرفع مشکلات
خطاهای رایج و راهحلها
1. خطای 401 Unauthorized
علت: اطلاعات احراز هویت نامعتبر یا منقضی شده
راهحل
- API Key و Secret را مجدداً بررسی کنید
- Bearer Token را از Developer Portal تازهسازی کنید
- Access Token ممکن است منقضی شده باشد -> Refresh Token استفاده کنید
- در n8n: Credential را Reconnect کنید
- مطمئن شوید App Permissions در Developer Portal تنظیم شده
- بررسی کنید که App شما Suspended نشده باشد
2. خطای 403 Forbidden
علت: سطح دسترسی API کافی نیست یا Scope مورد نیاز ندارید
راهحل
- سطح API خود را بررسی کنید (Free فقط Post/Delete دارد)
- برای Search و Read نیاز به سطح Basic دارید
- Scopeهای OAuth را بررسی کنید (tweet.read, tweet.write, ...)
- در Developer Portal مطمئن شوید App Permission روی Read+Write است
- اگر DM نیاز دارید، باید scope
dm.readوdm.writeداشته باشید
3. خطای 429 Too Many Requests (Rate Limit)
علت: تجاوز از محدودیت نرخ درخواست
راهحل
- Rate Limit هر endpoint را بررسی کنید
- از Wait Node بین درخواستها استفاده کنید:
Twitter -> Wait (2 seconds) -> Next Request- هدر
x-rate-limit-remainingوx-rate-limit-resetرا بخوانید - برای ارسال توییت: حداکثر 100 در روز (per user)
- برای جستجو در سطح Basic: 60 درخواست/15 دقیقه
- درخواستها را Batch کنید و فاصله بگذارید
- در صورت نیاز به حجم بالا، ارتقا به سطح Pro
4. خطای 400 Bad Request - "Invalid Tweet Text"
علت: متن توییت نامعتبر
راهحل
- حداکثر 280 کاراکتر (URLها 23 کاراکتر حساب میشوند)
- متن خالی نباشد
- توییت تکراری ممنوع (Duplicate Tweet)
- لینکهای مسدودشده ممکن است باعث خطا شوند
- از کاراکترهای خاص مراقبت کنید
5. خطای "Duplicate Tweet"
علت: ارسال توییت با محتوای تکراری
راهحل
- توییتر اجازه ارسال متن یکسان در بازه زمانی کوتاه را نمیدهد
- Timestamp یا شماره یکتا به متن اضافه کنید:
Text: "محتوای توییت - {{$now.toFormat('HH:mm')}}"- از Variable یا Random Element استفاده کنید
6. خطای "Media upload failed"
علت: مشکل در آپلود تصویر یا ویدیو
راهحل
- حجم تصویر: حداکثر 5MB (JPEG, PNG, GIF, WEBP)
- حجم ویدیو: حداکثر 512MB (MP4)
- GIF متحرک: حداکثر 15MB
- فرمتهای مجاز را بررسی کنید
- از Binary Data صحیح استفاده کنید
- ابتدا Media Upload کنید، سپس Media ID را در توییت استفاده کنید
7. خطای "User not found" یا "Tweet not found"
علت: ID کاربر یا توییت نامعتبر یا حذف شده
راهحل
- فرمت ID را بررسی کنید (عددی، نه username)
- کاربر ممکن است حساب خود را حذف یا خصوصی کرده باشد
- توییت ممکن است حذف شده باشد
- از username بدون @ استفاده کنید
- برای دریافت User ID از username: ابتدا Get User by Username
8. خطای "Not authorized for this resource"
علت: تلاش برای انجام عملیات روی حساب دیگران
راهحل
- فقط توییتهای خودتان قابل حذف هستند
- DM فقط به کاربرانی که اجازه دادهاند ارسال میشود
- مطمئن شوید OAuth از طرف کاربر صحیح انجام شده
- برای عملیات App-level از Bearer Token استفاده کنید
9. خطای "Your account is suspended"
علت: حساب کاربری یا App توسط توییتر مسدود شده
راهحل
- قوانین توییتر (Terms of Service) را بررسی کنید
- از اتوماسیون بیش از حد (Spam) خودداری کنید
- درخواست بررسی مجدد (Appeal) ارسال کنید
- حساب جایگزین با رعایت قوانین ایجاد کنید
- Rate Limitها را رعایت کنید
10. مشکل Callback URL در OAuth
علت: آدرس Callback در n8n با Developer Portal مطابقت ندارد
راهحل
- Callback URL دقیق n8n:
https://your-n8n.com/rest/oauth2-credential/callback - در Developer Portal > App Settings > Authentication settings:
- Website URL و Callback URL را تنظیم کنید
- مطمئن شوید HTTPS باشد (HTTP قبول نمیشود)
- Type of App: Web App انتخاب کنید
