{/* آخر تحديث: 2026-04-24 | بُني ونُفذ مباشرة على nerdleveltech.app.n8n.cloud | gpt-5-mini عبر أرصدة n8n المجانية */}
ملف JSON للسير في هذا الدليل استُورد وحُفظ على n8n cloud، مع التحقق من البيانات والمطالبات عبر لوحات العقد. ألصقه في سير جديد، افتح عقدة OpenAI الفرعية، وشغّل — لقطات التنفيذ أدناه تعرض مخرجات AI الفعلية.
ما الذي ستبنيه
سير n8n من ست عقد:
- يستقبل رابط تدوينة + نغمة + عدد التغريدات عبر نموذج عام
- يجلب HTML المقال من جانب الخادم (بدون browser spoofing)
- يُزيل nav و footer و scripts و styles وصولاً إلى نص المقال الحقيقي
- يُرسل كل شيء إلى
gpt-5-miniعبر سلسلة LangChain مع Output Parser يفرض JSON صالحاً - يُعيد كائن خيط منظم:
{ hook, tweets[], cta, preview_card_headline }
تخطَّ البناء — استورد السير
أنشئ سير عمل جديداً، انقر على اللوحة الفارغة، اضغط Cmd+V / Ctrl+V. كل العقد الست تُحمّل مع وصلاتها.
المتطلبات المسبقة
| المتطلب | التفاصيل |
|---|---|
| حساب n8n | تجربة مجانية على n8n.io/cloud |
| أرصدة OpenAI | 100 رصيد مجاني مدمج — يغطي مئات الخيوط |
| رابط تدوينة مباشر | أي مقال تريد إعادة توظيفه |
| الوقت | حوالي 12 دقيقة |
العقد المستخدمة: Form Trigger و HTTP Request و Code و Basic LLM Chain و OpenAI Chat Model (فرعية) و Output Parser Structured (فرعية) — الأخيرة هي نجمة الدليل.
الخطوة 1 — استيراد السير
من اللوحة الرئيسية، اضغط + Create workflow. على اللوحة الفارغة ألصق JSON. السير يُحمّل كـ "AI Twitter Thread Writer" بكل العقد الست في مكانها.
انقر نقراً مزدوجاً على OpenAI Chat Model وتأكد أن البيانات تُظهر n8n free OpenAI API credits والنموذج gpt-5-mini مع درجة حرارة 0.7 — أعلى من سلسلة كتابة التدوينات لأن الخيوط تستفيد من كتابة hook أكثر إبداعاً.
الخطوة 2 — جلب المقال
انقر نقراً مزدوجاً على Fetch Article HTML. تعبير URL يسحب من النموذج:
={{ $json['Article URL'] }}
الاستجابة مضبوطة على text (ليس JSON مُحلل تلقائياً) لأنك تحصل على HTML خام. خيار neverError: true يُبقي السير مستمراً إذا أعاد الموقع 403 أو 500 أو انتهت مهلته — عقدة Code التالية تتعامل مع المدخلات الفارغة بأمان.
User-Agent مهم
تحت Headers → Header Parameters:
| الاسم | القيمة |
|---|---|
| User-Agent | Mozilla/5.0 (compatible; n8n-thread-writer/1.0) |
User-Agent الافتراضي لـ n8n هو n8n.io ويُحد معدله بعض المنشورات. UA عام من Mozilla يمر معظم المرشحات.
عندما تفشل هذه الخطوة: إذا اختبرت مع موقع محمي بـ Cloudflare وحصلت على 403، بدّل عقدة Fetch Article HTML إلى استدعاء Firecrawl أو Browserless أو ScrapingBee. عقدة Code التالية لا تهتم من أين أتى HTML.
الخطوة 3 — استخراج نص نظيف
انقر نقراً مزدوجاً على Extract Clean Text. هذه عقدة Code بـ ~40 سطر JavaScript. ثلاثة أشياء تحدث:
- استخراج العنوان وميتا الوصف عبر regex على
<title>و<meta name="description"> - إزالة الضوضاء — scripts و styles و nav و header و footer (تهيمن على HTML لكنها ليست المقال)
- فك ترميز HTML entities ليصبح
&إلى&و"إلى"
ثم يُحدد النص بـ 6000 حرف. لماذا؟ نافذة سياق gpt-5-mini تحمل 40 ألف+ رمز إدخال، لكن بعد ~6 آلاف حرف من النثر، يبدأ الخيط في إعادة صياغة النصف الأول ويتجاهل الثاني. الحد يُبقي الخيط مركزاً على حجة المقال.
const body = cleaned.slice(0, 6000);
return [{ json: { title, description, body, articleUrl, tone, tweetCount } }];
إذا احتجت المقال الكامل، بدّل إلى chainMapReduce (سلسلة map-reduce من LangChain) التي تُلخص chunks ثم تجمع الملخصات — لكن هذا 3× تكلفة الرموز.
الخطوة 4 — المطالبة و Output Parser
انقر نقراً مزدوجاً على Write Thread. المطالبة تفرض ثماني قواعد:
| القاعدة | لماذا موجودة |
|---|---|
| التغريدة 1 = hook يوقف التمرير، بدون "في هذا الخيط…" | تلك الافتتاحيات تقتل معدل تمرير الإبهام |
| كل تغريدة ≤ 270 حرف | تترك 10 أحرف للتعديلات اليدوية |
| فكرة واحدة لكل تغريدة وسطى | الخيوط التي تحزم أفكاراً متعددة تحصل على engagement أسوأ |
| أرقام ملموسة وأسماء علم ومحددات | العموميات الغامضة = تمرير فوري |
| آخر تغريدة = CTA مع رابط وطلب bookmark | "Bookmark + follow" يزدوج النقر للخوارزمية |
| هاشتاج واحد كحد أقصى | الخيوط متعددة الهاشتاجات تُخفض ترتيباً |
| بدون إيموجي إلا إذا النغمة Hot take | النغمات الاحترافية تبدو ضعيفة الجهد بالإيموجي |
| بدون "In this thread I will cover..." | افتتاحية كلاسيكية منخفضة الـ engagement |
سحر Output Parser
انتقل إلى عقدة Output Parser الفرعية (متصلة بالسلسلة كـ ai_outputParser). مثال مخطط JSON الخاص بها:
{
"hook": "string",
"tweets": ["string"],
"cta": "string",
"preview_card_headline": "string"
}
السلسلة الآن تفرض هذا الشكل. إذا أعاد gpt-5-mini JSON تالفاً أو أضاف نثراً خارج JSON، يُطلق n8n خطأً واضحاً يمكنك التقاطه بـ Error Trigger — أو إعادة المحاولة بـ maxAttempts: 2 في تبويب Settings للعقدة.
العقد اللاحقة ترى الخيط ككائن حقيقي:
{{ $json.output.hook }}← تغريدة الـ hook{{ $json.output.tweets[0] }}← أول تغريدة وسطى{{ $json.output.cta }}← CTA الإغلاق
بدون regex. بدون تجريد markdown. بيانات نظيفة.
⚠️ تحذير اكتشفناه في الاختبار: أعاد
gpt-5-miniالمخطط مغلفاً كـ{ "output": { ... } }بدلاً من الكائن المباشر الذي يتوقعه Output Parser، مما تسبب في فشل التحقق الصارم بـ"Model output doesn't fit required format". استجابة AI الأصلية كانت صحيحة — المُحلل الصارم فقط رفض الغلاف. حلان: (1) افتح تبويب Settings لعقدة Write Thread واضبط On Error علىContinue (using error output)— السلسلة عندها تُمرر نص AI الخام للأسفل وتُحلله يدوياً؛ (2) احذف Output Parser تماماً ودع تعليمات JSON الصارمة في المطالبة تقوم بالعمل وحدها. الخيار 2 أبسط للاستخدام الفردي؛ الخيار 1 أفضل إذا كنت تُمرر إلى عقدة أخرى.
الخطوة 5 — التشغيل والفحص
اضغط Test this trigger على عقدة Form Trigger، افتح رابط الاختبار، وأرسل رابط مقال حقيقي. جرب أحد منشوراتك الخاصة أو شيئاً من منشورك المفضل.
راقب التنفيذ يشتغل عقدة بعقدة في اللوحة. لوحة مخرجات عقدة Write Thread النهائية تُظهر JSON المُحلل. انسخ hook و tweets[] و cta إلى لوحة إنشاء X وانشرها كخيط — أو أرسلها لعقدة نشر تلقائي (انظر التوسعات).
في اختبارنا الحقيقي، تغذية مقتطف مقال من 6000 حرف أنتج خيطاً مُنظماً من 5 تغريدات بـ hook وثلاث تغريدات وسطى موضوعية و CTA — ~26 ثانية و ~2,044 رمز عبر gpt-5-mini. كل تغريدة وسطى التقطت حقيقة ملموسة محددة من المقال المصدر.
فحص جودة الخيط قبل النشر
قبل الضغط على نشر، تحقق من:
| الفحص | ما تبحث عنه |
|---|---|
| Hook | أول 70 حرفاً ظاهرة بدون نقر "Show more" — ضع المكافأة هناك |
| التغريدة 2 | يجب أن تُسلِّم شيئاً ملموساً من وعد التغريدة 1 — ليس مجرد إعادة |
| CTA | طلب منخفض الاحتكاك (bookmark > reply > DM > نقر رابط) |
| محددات | هل تستطيع إيجاد كل رقم/اسم في المقال المصدر؟ إن لم تستطع، AI خمّن — عدّل |
التوسعات: نشر تلقائي وجدولة و A/B
نشر تلقائي عبر واجهة X
بعد عقدة Write Thread، أضف عقدة HTTP Request لكل تغريدة في الخيط (أو Loop Over Items + عقدة واحدة). نقطة نهاية واجهة X v2:
POST https://api.twitter.com/2/tweets
Authorization: Bearer <your OAuth2 token>
Content-Type: application/json
{ "text": "{{ $json.output.hook }}" }
اسلسل التغريدات التالية بـ "reply": { "in_reply_to_tweet_id": "{{ $json.id }}" } لبناء الخيط.
جدولة الخيوط مع Typefully / Buffer / Hypefury
معظم تطبيقات الجدولة تقبل webhooks. بدّل واجهة X بـ:
POST https://api.typefully.com/v1/drafts
…مع مفتاح Typefully API في رأس Authorization والخيط في الـbody. تحصل على جدولة drag-and-drop فوق توليد AI.
اختبار A/B لخيطين من مقال واحد
كرّر عقدتي Write Thread و OpenAI Chat Model. أعطِ واحدة درجة حرارة 0.4 (ثابتة) والأخرى 0.9 (إبداعية). استخدم عقدة Merge لضم المخرجتين جنباً إلى جنب، ثم اختر الفائز يدوياً أو غذِّ كليهما إلى سلسلة AI ناقد.
معالجة جملية لـbacklog
استبدل Form Trigger بعقدة Google Sheets Read (أو Airtable أو Notion Database Read) تُعيد 50+ رابط تدوينة. أضف عقدة Split In Batches مضبوطة على عنصر واحد، وباقي السير يشتغل مرة لكل صف. حدّ concurrency إلى 3 للبقاء تحت حدود API.
ما التالي
لديك خط أنابيب قابل للتكرار لتحويل أي تدوينة إلى خيط. التالي، تعلم كيف تحوّل الأخبار الرائجة إلى ملخص يومي ← ملخص الأخبار متعدد المصادر، أو ابنِ روبوت AI يعرف مستنداتك ← الدردشة مع صفحة ويب (RAG).