مستندات n8n
74+ نود
🐦

توییتر

Twitter (X)

اتوماسیون توییتر/ایکس: ارسال توییت، جستجو، لایک، ریتوییت، DM و مدیریت فالوورها

شبکه‌های اجتماعی
متوسط
۰ بازدید
n8n 1.0+

نمای کلی

نود 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. 1به [Developer Portal](https://developer.twitter.com/) بروید
  2. 2ثبت‌نام یا ورود با حساب Twitter/X
  3. 3از Developer Portal > Projects & Apps یک Project جدید بسازید
  4. 4نام پروژه و توضیحات را وارد کنید
  5. 5یک App داخل پروژه بسازید
  6. 6کلیدهای API را دریافت کنید

روش 1: OAuth 2.0 (توصیه‌شده)

بهترین روش برای دسترسی به API v2 با قابلیت‌های کامل:

code
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:

  1. 1Credentials > Twitter OAuth2 API
  2. 2Client ID و Client Secret را وارد کنید
  3. 3Callback URL را از n8n کپی و در Developer Portal تنظیم کنید
  4. 4Connect بزنید و اجازه دسترسی بدهید

#### Scopes مهم:

code
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)

برای اقداماتی که از طرف کاربر انجام می‌شود:

code
API Key (Consumer Key): xxxxxxxxxxxxxxxxxxxxxxxx
API Secret (Consumer Secret): xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Access Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Access Token Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

#### تنظیم در n8n:

  1. 1Credentials > Twitter OAuth API
  2. 2هر 4 مقدار را از Developer Portal کپی کنید
  3. 3Test Connection بزنید

روش 3: Bearer Token (App-only Authentication)

برای عملیات فقط خواندنی (جستجو، دریافت توییت):

code
Bearer Token: AAAAAAAAAAAAAAAAAAAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

#### تنظیم در n8n:

  1. 1Credentials > Twitter OAuth2 API
  2. 2Bearer Token وارد کنید
  3. 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:

code
POST /2/tweets:           1,500/ماه (نه در روز!)
DELETE /2/tweets/:id:     50/15 دقیقه

#### سطح Basic:

code
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:

code
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 مورد نیاز را فعال کنید

عملیات‌های موجود

1

postTweet

ارسال توییت جدید با متن، تصویر، ویدیو یا نظرسنجی. پشتیبانی از Reply و Quote Tweet.

2

deleteTweet

حذف توییتی که قبلاً ارسال شده. فقط توییت‌های خودتان قابل حذف هستند.

3

likeTweet

لایک کردن یک توییت. قابلیت Unlike نیز موجود است.

4

retweet

ریتوییت کردن یک توییت. قابلیت Undo Retweet نیز موجود است.

5

searchTweets

جستجوی پیشرفته توییت‌ها با عملگرهای فیلتر، هشتگ، کاربر، تاریخ و زبان.

6

getUser

دریافت پروفایل کامل کاربر شامل بیو، تعداد فالوور، توییت‌ها و اطلاعات حساب.

7

getFollowers

دریافت لیست فالوورهای یک کاربر با اطلاعات پروفایل.

8

getFollowing

دریافت لیست کاربرانی که یک کاربر فالو کرده است.

9

getTweet

دریافت جزئیات کامل یک توییت شامل متن، آمار تعامل، پاسخ‌ها و رسانه‌ها.

10

sendDM

ارسال پیام مستقیم به کاربر دیگر. نیاز به OAuth 2.0 با scope مناسب دارد.

11

listDMs

دریافت لیست مکالمات پیام مستقیم و پیام‌های هر مکالمه.

12

createList

ساخت لیست جدید برای دسته‌بندی و پیگیری کاربران.

13

addToList

افزودن کاربر به لیست موجود. قابلیت حذف از لیست نیز موجود است.

14

getTrending

دریافت موضوعات داغ و ترندهای توییتر بر اساس موقعیت جغرافیایی (WOEID).

کاربردهای متداول

1. زمان‌بندی و انتشار خودکار توییت (Social Media Scheduling)

ارسال توییت‌های از پیش آماده‌شده در زمان‌های مشخص:

code
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)

پیگیری هر منشن از برند و تحلیل:

code
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)

رصد فعالیت رقبا در توییتر:

code
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)

پاسخ هوشمند به منشن‌های کاربران:

code
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)

پیگیری ترندهای مرتبط با صنعت:

code
Schedule (هر ساعت)
  -> Twitter (getTrending)
       WOEID: 1 (جهانی)
  -> Code (فیلتر ترندهای مرتبط با صنعت)
     // بررسی کلمات کلیدی مرتبط
  -> IF (ترند مرتبط پیدا شد)
    -> Twitter (searchTweets)
         Query: "{{$json.trendName}} lang:fa"
    -> Code (خلاصه‌سازی و آمار)
    -> Telegram (اعلان: ترند مرتبط!)
    -> Google Sheets (ثبت ترند)

6. Cross-posting محتوا (Content Cross-Posting)

انتشار محتوا از وبلاگ یا سایر پلتفرم‌ها:

code
RSS Trigger (پست جدید در وبلاگ)
  -> Code (استخراج عنوان و لینک)
     // خلاصه‌سازی و فرمت برای توییتر
  -> Twitter (postTweet)
       Text: "{{$json.title}}\n\n{{$json.summary}}\n\n{{$json.url}} #blog"
  -> Telegram (ارسال در کانال)
  -> LinkedIn (انتشار پست)

7. رصد هشتگ‌های خاص (Hashtag Monitoring)

پیگیری هشتگ‌های مرتبط با کمپین:

code
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)

مدیریت و دسته‌بندی فالوورهای جدید:

code
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)

جمع‌آوری و نمایش آمار حساب:

code
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)

پاسخ خودکار به پیام‌های مستقیم:

code
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)

یافتن و بازنشر محتوای تولیدشده توسط کاربران:

code
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)

تشخیص سریع بحران‌های برند:

code
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. 1عملگرهای جستجوی پیشرفته:
code
// جستجوی ترکیبی
   "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. 1بهترین زمان ارسال توییت (ایران):
code
صبح: 8:00 - 10:00 (شروع کار)
   ظهر: 12:00 - 13:00 (استراحت ناهار)
   عصر: 17:00 - 19:00 (بعد از کار)
   شب: 21:00 - 23:00 (بیشترین فعالیت)

   بهترین روزها: شنبه تا چهارشنبه
   کمترین فعالیت: جمعه صبح
  1. 1Thread (رشته‌توییت):
code
// ارسال 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/ نتیجه‌گیری..."
  1. 1Engagement بالاتر:
code
// نکات افزایش تعامل:
   - از تصویر استفاده کنید (2.3x بیشتر تعامل)
   - نظرسنجی (Poll) بگذارید
   - سوال بپرسید
   - از هشتگ‌های مرتبط استفاده کنید (2-3 هشتگ بهینه)
   - Thread بنویسید (الگوریتم Thread را بیشتر نشان می‌دهد)
   - از CTA (Call to Action) استفاده کنید
  1. 1مدیریت Rate Limit هوشمند:
code
// قبل از هر درخواست بررسی کنید
   HTTP Request (GET headers)
     x-rate-limit-remaining: تعداد باقیمانده
     x-rate-limit-reset: زمان ریست (Unix timestamp)

   IF (remaining < 5)
     -> Wait (تا زمان ریست)
     -> سپس ادامه
  1. 1WOEID برای ترندهای ایران و جهان:
code
جهانی:     1
   ایران:      23424851
   تهران:     2251945
   آمریکا:    23424977
   انگلستان:  23424975
   ترکیه:     23424969
   امارات:    23424738
  1. 1Tweet Fields مفید:
code
// فیلدهای پرکاربرد در توییت
   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. 1محاسبه Engagement Rate:
javascript
// فرمول 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. 1جلوگیری از Spam و Suspension:
code
// قوانین مهم برای جلوگیری از مسدودیت:
   - بیش از 100 توییت در روز ارسال نکنید
   - توییت تکراری ارسال نکنید
   - بین عملیات‌ها فاصله بگذارید (Wait Node)
   - از Follow/Unfollow انبوه خودداری کنید
   - محتوای اسپم ارسال نکنید
   - از لینک‌های مشکوک استفاده نکنید
   - Reply انبوه به کاربران نفرستید
  1. 1Media Upload دو مرحله‌ای:
code
// مرحله 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. 1فرمت متن برای خوانایی بهتر:
code
// استفاده از Emoji و فرمت‌بندی
    Text: "\u2728 عنوان جذاب\n\n"
        + "نکته 1\n"
        + "نکته 2\n"
        + "نکته 3\n\n"
        + "#hashtag1 #hashtag2\n"
        + "link"
  1. 1Webhook برای دریافت Real-time (Account Activity API):
code
// برای دریافت آنی رویدادها (نیاز به Enterprise):
    - منشن‌ها
    - DM‌ها
    - فالوو/آنفالوو
    - لایک/آنلایک

    // جایگزین ارزان‌تر: Polling با Schedule
    Schedule (هر 1-5 دقیقه) -> Twitter (searchTweets)
  1. 1کار با Cursor Pagination:
code
// بسیاری از 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. 1تفاوت API v1.1 و v2:
code
// 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 استفاده می‌کند
  1. 1Best Practices برای اتوماسیون توییتر:
code
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 بین درخواست‌ها استفاده کنید:
code
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 یا شماره یکتا به متن اضافه کنید:
code
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 انتخاب کنید
اشتراک‌گذاری:

آیا این مستندات مفید بود؟