كود لتحويل المقالات الطويلة إلى “منشورات تويتر” أو “سناب شات” آلياً

دقائق القراءة: 7

لماذا نحتاج إلى تحويل المقالات الطويلة إلى منشورات قصيرة آلياً؟

إعادة تدوير المحتوى لم تعد رفاهية تحريرية، بل أصبحت جزءاً أساسياً من أي منظومة نشر ذكية. المقال الطويل غالباً يحتوي على أفكار كثيرة قابلة للاستخراج على شكل نقاط، اقتباسات، Hooks، وملخصات مناسبة للنشر على منصات سريعة مثل تويتر أو سناب شات. المشكلة أن تنفيذ ذلك يدوياً يستهلك وقتاً كبيراً ويؤدي إلى تفاوت في الجودة والأسلوب.

هنا تأتي الأتمتة: نأخذ النص الكامل، نمرره عبر منطق تقطيع ذكي، ثم نستخدم واجهة ذكاء اصطناعي لصناعة مخرجات قصيرة قابلة للنشر وفق قواعد محددة. هذه الفكرة ترتبط مباشرة بمفهوم مدخل إلى عالم أتمتة الـ SEO: لماذا الآن؟ لأن الهدف ليس مجرد توفير الوقت، بل بناء نظام نشر متكرر، قابل للقياس، ويحافظ على نبرة العلامة التجارية.

الفكرة المعمارية للنظام

السيناريو العملي بسيط نظرياً، لكنه يحتاج إلى انضباط تقني جيد. ندخل مقالاً طويلاً، ثم يقوم السكربت باستخراج النص، تنظيفه، تلخيصه إلى عدة زوايا، ثم إنتاج مخرجات مختلفة: سلسلة تويتر، تغريدة منفردة، نص قصير لسناب شات، ونسخة CTA قابلة لإعادة الاستخدام.

لبناء هذا التدفق ستحتاج إلى فهم أساسي لـ مفهوم الـ API: كيف نطلب البيانات من Google وOpenAI، وإلى تنظيم البيانات بصيغة أساسيات التعامل مع ملفات JSON (لغة التفاهم بين الأنظمة) لأن أفضل طريقة للتعامل مع المخرجات هي إلزام النموذج بإرجاع بنية منظمة بدلاً من نص حر يصعب معالجته لاحقاً.

مكونات السكربت الأساسية

  • قراءة المقال من ملف أو من رابط.
  • تنظيف النص من الفراغات والعناوين الزائدة.
  • تجزئة المحتوى إلى وحدات منطقية إذا كان طويلاً جداً.
  • إرسال طلب إلى OpenAI API أو أي واجهة مشابهة.
  • استقبال مخرجات منظمة بصيغة JSON.
  • حفظ النتائج في ملف أو جدول أو لوحة نشر.

كيف نصمم Prompt ينتج منشورات قابلة للنشر فعلاً؟

أغلب المشاريع تفشل هنا. إذا كان الطلب عاماً، ستحصل على مخرجات إنشائية أو مكررة أو مخالفة لطبيعة المنصة. الأفضل هو فرض قواعد دقيقة على النموذج: عدد الأحرف، نوع الجمهور، نبرة الكتابة، عدد النسخ المطلوبة، ومنع الحشو والمقدمات العامة.

هذا يتكامل مع ما شرحناه في كيفية كتابة “Prompt” برمجي للحصول على نتائج ثابتة (JSON). عندما تطلب من النموذج إخراجاً منظماً، يصبح الربط مع أي واجهة لاحقة أسهل بكثير، سواء كانت لوحة محتوى أو ملف CSV أو حتى Google Sheets.

اكتب دائماً الطلب بحيث يميز بين نوع المنصة. تغريدة تويتر تحتاج اختصاراً وإيقاعاً سريعاً، بينما نص سناب شات يحتاج جملة أسهل، أكثر مباشرة، وقد يستفيد من أسلوب تشويقي قصير جداً مع دعوة واضحة للمشاهدة أو السحب.

الكود الكامل بلغة Python

السكريبت التالي يقرأ مقالاً من ملف نصي، ويرسل المحتوى إلى واجهة ذكاء اصطناعي، ثم يعيد مخرجات منظمة تتضمن سلسلة تويتر ونصوص سناب شات. قبل التشغيل، احرص على إعداد البيئة كما في تهيئة بيئة العمل: تثبيت Python والمكتبات الأساسية، وعلى حفظ المفتاح السري بطريقة آمنة كما في الحماية والأمان: كيف تخفي مفاتيحك السرية في الكود؟.

import os
import json
from pathlib import Path
from openai import OpenAI

MODEL_NAME = "gpt-4o-mini"
INPUT_FILE = "article.txt"
OUTPUT_FILE = "social_posts.json"

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

def load_article(file_path: str) -> str:
    path = Path(file_path)
    if not path.exists():
        raise FileNotFoundError(f"File not found: {file_path}")
    text = path.read_text(encoding="utf-8").strip()
    if not text:
        raise ValueError("Article is empty.")
    return text

def build_prompt(article_text: str) -> str:
    return f'''
You are a senior content repurposing assistant.
Convert the following Arabic article into platform-ready short-form content.

Rules:
1. Return valid JSON only.
2. Write in Arabic.
3. Keep the meaning accurate and avoid hallucinations.
4. Generate:
   - 5 twitter_posts
   - 1 twitter_thread with 6 short tweets
   - 4 snapchat_posts
   - 3 hook_lines
5. Each twitter post should be concise and engaging.
6. Each snapchat post should be ultra-short, natural, and conversational.
7. Avoid generic intros.
8. Preserve technical credibility.
9. If the article is educational, highlight actionable insights.

JSON schema:
{{
  "twitter_posts": ["", "", "", "", ""],
  "twitter_thread": ["", "", "", "", "", ""],
  "snapchat_posts": ["", "", "", ""],
  "hook_lines": ["", "", ""]
}}

Article:
{article_text}
'''.strip()

def generate_social_posts(article_text: str) -> dict:
    prompt = build_prompt(article_text)

    response = client.chat.completions.create(
        model=MODEL_NAME,
        temperature=0.7,
        messages=[
            {"role": "system", "content": "You create structured Arabic social media outputs."},
            {"role": "user", "content": prompt}
        ]
    )

    content = response.choices[0].message.content.strip()
    return json.loads(content)

def save_output(data: dict, file_path: str) -> None:
    Path(file_path).write_text(
        json.dumps(data, ensure_ascii=False, indent=2),
        encoding="utf-8"
    )

def main():
    article_text = load_article(INPUT_FILE)
    social_posts = generate_social_posts(article_text)
    save_output(social_posts, OUTPUT_FILE)
    print(f"Done. Output saved to {OUTPUT_FILE}")

if __name__ == "__main__":
    main()

شرح منطق الكود خطوة بخطوة

1) قراءة النص الأصلي

الدالة load_article() تقرأ ملف المقال وتتحقق من وجوده وعدم كونه فارغاً. هذه الخطوة مهمة لمنع فشل السلسلة لاحقاً بسبب إدخال غير صالح.

2) بناء الطلب الذكي

الدالة build_prompt() تفرض على النموذج إخراجاً محدداً بعدد واضح من العناصر. هنا أنت لا تطلب “لخص المقال”، بل تطلب وحدات نشر جاهزة بتقسيم يخدم منصة معينة.

3) استدعاء الواجهة البرمجية

يتم إرسال الطلب عبر الكائن OpenAI، ثم تُلتقط النتيجة من response.choices[0].message.content. بعد ذلك نستخدم json.loads() لتحويل النص إلى كائن برمجي قابل للتخزين والمعالجة.

4) حفظ النتائج

الدالة save_output() تحفظ النتائج في ملف JSON. من هنا يمكنك نقل المخرجات إلى أي مسار نشر آخر أو ربطها مع جداول كما في كيفية ربط Google Sheets بالعالم الخارجي عبر Script.

تحسينات احترافية تجعل النظام صالحاً للإنتاج

السكريبت السابق ممتاز كبداية، لكن البيئة الإنتاجية تحتاج طبقات إضافية. أولاً، المقالات الطويلة جداً يجب تقسيمها إلى أجزاء قبل الإرسال إذا كانت تتجاوز حدود السياق. ثانياً، من المفيد تمرير معلومات إضافية مثل شخصية العلامة التجارية، الجمهور المستهدف، والمنصة المقصودة.

  • إضافة حقل brand_voice داخل الطلب.
  • إضافة فحص لطول التغريدات بعد التوليد.
  • إعادة التوليد التلقائي إذا فشل JSON parsing.
  • ربط النتائج بلوحة تتبع أداء لقياس أكثر الصيغ تفاعلاً.
  • تصنيف المقالات حسب النوع قبل التوليد، مثل تعليمي أو خبري أو تحليلي.

إذا كنت تتعامل مع أرشيف ضخم من المقالات، فهنا يظهر دور استخدام مكتبة Pandas لتحليل بيانات الـ SEO الضخمة في إدارة قائمة المقالات، حالات التنفيذ، وعدد المنشورات الناتجة لكل صفحة.

الجانب التحريري: كيف تحافظ على الجودة ولا تقع في التكرار؟

الأتمتة لا تعني النشر الأعمى. ينبغي أن يكون لكل منصة منطقها. تويتر يناسب الأفكار الجدلية أو الحقائق السريعة أو السلاسل التعليمية. سناب شات يناسب العبارات القصيرة، الإحساس بالعفوية، وربط النص بمشهد أو Story. لذلك من الخطأ استخدام نفس النص بعد قصّه فقط.

أفضل نتيجة تأتي عندما تطلب من النموذج استخراج “زاوية” مختلفة لكل منشور: فائدة عملية، خطأ شائع، رقم لافت، نصيحة سريعة، أو سؤال يثير الفضول. بهذه الطريقة لا يتحول المقال الواحد إلى نسخ متشابهة مزعجة للمستخدم.

كما يُفضل وضع مراجعة بشرية خفيفة قبل النشر، خاصة في المحتوى المرتبط بالبيانات أو التوصيات التقنية. هذا يعزز الثقة ويخدم معايير الخبرة والاعتمادية التي أصبحت محورية في تقييم المحتوى الحديث.

فوائد SEO غير المباشرة من هذا النوع من الأتمتة

رغم أن المنشورات الاجتماعية ليست بديلاً عن تحسين محركات البحث، فإنها تساعد في توسيع توزيع المحتوى، جذب زيارات أولية، وإعادة تنشيط المقالات القديمة. كما أن بناء نظام إعادة نشر منظم يمنح فريق المحتوى سرعة أعلى في اختبار الزوايا التي تجذب الاهتمام، ثم إعادة استثمارها في العناوين والوصف والمحتوى الداخلي.

على المستوى العملي، يمكن دمج هذا المشروع لاحقاً مع بناء أداة توليد عناوين جذابة بناءً على الكلمات المفتاحية أو مع أتمتة كتابة الـ Meta Descriptions لآلاف المقالات لتكوين خط إنتاج محتوى متكامل يبدأ من المقال وينتهي بتوزيعه وتحسينه عبر القنوات المختلفة.

خاتمة

تحويل المقالات الطويلة إلى منشورات تويتر أو سناب شات آلياً ليس مجرد حيلة لتوفير الوقت، بل خطوة استراتيجية لبناء محرك توزيع محتوى ذكي. باستخدام Python، وواجهة ذكاء اصطناعي، وPrompt مضبوط، يمكنك تحويل أصل واحد إلى عشرات الأصول القابلة للنشر مع الحفاظ على الجودة والاتساق.

النقطة الفاصلة ليست في كتابة الكود فقط، بل في تصميم النظام: كيف يقرأ المقال، كيف يفهم الهدف، كيف يخرج بصيغة منظمة، وكيف تراجع نتائجه. عندما تضبط هذه المراحل، يصبح لديك سير عمل قابل للتوسع، مناسب للمواقع الكبيرة، وفعّال جداً في استثمار المحتوى طويل العمر.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *