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


ماذا سنبني اليوم؟

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

لماذا نحتاج لهذه الأداة؟

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

  • توفير الوقت: أتمتة عملية التقسيم.
  • زيادة الوصول: نشر محتوى المقال على منصات متعددة بانتظام.
  • تحسين الـ SEO: جذب الزوار إلى المقال الأصلي من خلال روابط في المنشورات الاجتماعية.

الأدوات المستخدمة

  • بايثون (Python): لغة البرمجة الرئيسية.
  • مكتبة NLTK: لمعالجة اللغة الطبيعية، وتحديداً لتقسيم النص إلى جمل.

الخطوات البرمجية

  1. تحميل مكتبة NLTK وبياناتها (أداة تقسيم الجمل).
  2. تعريف دالة تأخذ نص المقال وتحدد حد الأحرف للمنصة المستهدفة.
  3. تقسيم المقال إلى جمل باستخدام NLTK.
  4. تجميع الجمل في منشورات، مع التحقق من حد الأحرف وإضافة رابط للمقال الأصلي.
  5. معالجة الجمل الطويلة جداً لضمان تناسبها مع حدود المنصة.

الكود العملي (Python)

سنستخدم الكود التالي لتنفيذ عملية التحويل. تأكد من تثبيت مكتبة NLTK أولاً:

pip install nltk
import nltk
from nltk.tokenize import sent_tokenize

# تأكد من تحميل بيانات 'punkt' الخاصة بـ NLTK
# إذا لم تكن موجودة، سيتم تنزيلها تلقائياً
try:
    nltk.data.find('tokenizers/punkt')
except nltk.downloader.DownloadError:
    nltk.download('punkt')

def article_to_social_posts(article_text, platform_char_limit=280, link_placeholder=" [اقرأ المزيد: رابط المقال]"):
    """
    يقوم بتحويل مقال طويل إلى قائمة من المنشورات القصيرة المناسبة لمنصات التواصل الاجتماعي.

    Args:
        article_text (str): نص المقال الأصلي.
        platform_char_limit (int): الحد الأقصى للأحرف لكل منشور (مثال: 280 لتويتر).
        link_placeholder (str): نص العنصر النائب للرابط الذي سيضاف إلى كل منشور.

    Returns:
        list: قائمة بسلاسل نصية، كل سلسلة تمثل منشوراً جاهزاً.
    """
    sentences = sent_tokenize(article_text, language='arabic')
    posts = []
    current_post_sentences = []
    current_post_length = 0

    for sentence in sentences:
        # حساب الطول المحتمل إذا تمت إضافة هذه الجملة
        # إضافة 1 للمسافة بين الجمل إذا كانت هناك جمل سابقة في المنشور الحالي
        potential_length_with_new_sentence = current_post_length + (len(sentence) + 1 if current_post_sentences else len(sentence))

        # التحقق مما إذا كانت إضافة هذه الجملة + العنصر النائب للرابط سيتجاوز الحد
        if potential_length_with_new_sentence + len(link_placeholder) > platform_char_limit:
            # إذا كان هناك جمل في المنشور الحالي، قم بإنهاء المنشور وإضافته
            if current_post_sentences:
                posts.append(" ".join(current_post_sentences).strip() + link_placeholder)
                current_post_sentences = []
                current_post_length = 0
            
            # الآن، تعامل مع الجملة الحالية التي قد تكون طويلة جداً بمفردها
            # إذا كانت الجملة الواحدة أطول من حد المنشور، سنحاول تقسيمها
            remaining_sentence = sentence
            while len(remaining_sentence) + len(link_placeholder) > platform_char_limit:
                # حساب نقطة التقسيم، مع ترك مساحة للعنصر النائب وبضعة أحرف كاحتياطي
                split_point = platform_char_limit - len(link_placeholder) - 10 
                if split_point <= 0: # الجملة قصيرة جداً بحيث لا يمكن تقسيمها بشكل مفيد أو الاحتياطي كبير جداً
                    # إذا كانت لا تزال طويلة جداً، خذ الحد الأقصى المسموح به وأجبر على إنشاء منشور
                    posts.append(remaining_sentence[:platform_char_limit - len(link_placeholder)].strip() + link_placeholder)
                    remaining_sentence = remaining_sentence[platform_char_limit - len(link_placeholder):].strip()
                    if not remaining_sentence: break # إذا لم يتبق شيء بعد التقسيم الإجباري
                else:
                    part = remaining_sentence[:split_point]
                    # حاول التقسيم عند آخر مسافة قبل نقطة التقسيم لتحسين قابلية القراءة
                    last_space_index = part.rfind(' ')
                    if last_space_index != -1 and last_space_index > split_point * 0.7: # لا تقسم مبكراً جداً
                        part = part[:last_space_index]
                    
                    posts.append(part.strip() + link_placeholder)
                    remaining_sentence = remaining_sentence[len(part):].strip()
            
            # بعد التقسيم، إذا كان هناك أي جزء متبقي من الجملة، أضفه إلى المنشور الحالي
            if remaining_sentence:
                current_post_sentences.append(remaining_sentence)
                current_post_length = len(remaining_sentence)

        else:
            # أضف الجملة إلى المنشور الحالي
            current_post_sentences.append(sentence)
            current_post_length = potential_length_with_new_sentence

    # أضف أي نص متبقٍ كمنشور أخير
    if current_post_sentences:
        posts.append(" ".join(current_post_sentences).strip() + link_placeholder)

    return posts

# مثال على الاستخدام:
article_example = """
تعد الأتمتة والذكاء الاصطناعي من أهم التطورات التكنولوجية في عصرنا الحالي، حيث غيرت بشكل جذري طريقة عمل الشركات والأفراد. ففي مجال التسويق الرقمي، على سبيل المثال، أصبحت أدوات الأتمتة لا غنى عنها لتحسين محركات البحث (SEO) وإدارة الحملات الإعلانية بفعالية أكبر. يمكن للأتمتة أن تقوم بتحليل البيانات الضخمة، وتحديد الكلمات المفتاحية الأكثر شيوعاً، وحتى توليد محتوى أولي. هذا يوفر وقتاً وجهداً كبيراً للمسوقين، مما يمكنهم من التركيز على الجوانب الاستراتيجية والإبداعية.

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

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

print("--- منشورات تويتر (حد 280 حرفاً) ---")
twitter_posts = article_to_social_posts(article_example, platform_char_limit=280, link_placeholder=" [المزيد: yourarticle.com/link]")
for i, post in enumerate(twitter_posts):
    print(f"المنشور {i+1} (الطول: {len(post)}):\n{post}\n")

print("\n--- منشورات سناب شات (حد 100 حرفاً) ---")
snapchat_posts = article_to_social_posts(article_example, platform_char_limit=100, link_placeholder=" [شاهد الآن]")
for i, post in enumerate(snapchat_posts):
    print(f"المنشور {i+1} (الطول: {len(post)}):\n{post}\n")

شرح الكود

  • sent_tokenize(article_text, language='arabic'): هذه الدالة من NLTK تقوم بتقسيم النص إلى قائمة من الجمل. تحديد language='arabic' يضمن معالجة دقيقة للنص العربي.
  • platform_char_limit: متغير يمكنك تعديله لتحديد الحد الأقصى للأحرف لكل منصة (مثلاً، 280 لتويتر، وقيمة أقل بكثير لسناب شات).
  • link_placeholder: نص الرابط الذي سيتم إضافته في نهاية كل منشور، وهو ضروري لتوجيه المستخدمين إلى المقال الأصلي.
  • الحلقة التكرارية ومعالجة الجمل: يقوم الكود بجمع الجمل في منشور واحد حتى يقترب من تجاوز الحد الأقصى للأحرف. عندما يحدث ذلك، يتم حفظ المنشور الحالي وبدء منشور جديد.
  • معالجة الجمل الطويلة: إذا كانت جملة واحدة أطول من أن تتناسب مع منشور واحد (حتى بعد إضافة العنصر النائب للرابط)، فإن الكود يحاول تقسيمها إلى أجزاء أصغر مع الحفاظ على جزء من المعنى قدر الإمكان (عن طريق البحث عن مسافات).

كيفية استخدام الكود

  1. قم بتثبيت Python ومكتبة NLTK.
  2. انسخ الكود والصقه في ملف Python (مثلاً article_splitter.py).
  3. استبدل article_example بنص مقالك الفعلي.
  4. قم بتعديل platform_char_limit و link_placeholder حسب المنصة المستهدفة ورابط المقال الخاص بك.
  5. شغل الملف: python article_splitter.py.
  6. ستظهر لك المنشورات الجاهزة في سطر الأوامر، ويمكنك نسخها ولصقها في منصات التواصل الاجتماعي.

النتيجة النهائية المتوقعة

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


--- منشورات تويتر (حد 280 حرفاً) ---
المنشور 1 (الطول: 181):
تعد الأتمتة والذكاء الاصطناعي من أهم التطورات التكنولوجية في عصرنا الحالي، حيث غيرت بشكل جذري طريقة عمل الشركات والأفراد. ففي مجال التسويق الرقمي، على سبيل المثال، أصبحت أدوات الأتمتة لا غنى عنها لتحسين محركات البحث (SEO) وإدارة الحملات الإعلانية بفعالية أكبر. [المزيد: yourarticle.com/link]

المنشور 2 (الطول: 226):
يمكن للأتمتة أن تقوم بتحليل البيانات الضخمة، وتحديد الكلمات المفتاحية الأكثر شيوعاً، وحتى توليد محتوى أولي. هذا يوفر وقتاً وجهداً كبيراً للمسوقين، مما يمكنهم من التركيز على الجوانب الاستراتيجية والإبداعية. [المزيد: yourarticle.com/link]

... وهكذا لبقية المقال.

--- منشورات سناب شات (حد 100 حرفاً) ---
المنشور 1 (الطول: 98):
تعد الأتمتة والذكاء الاصطناعي من أهم التطورات التكنولوجية في عصرنا الحالي. [شاهد الآن]

المنشور 2 (الطول: 98):
غيرت بشكل جذري طريقة عمل الشركات والأفراد. ففي مجال التسويق الرقمي. [شاهد الآن]

... وهكذا.

هذه المنشورات جاهزة للنسخ واللصق، أو يمكن دمج الكود مع واجهات برمجة تطبيقات (APIs) لمنصات التواصل الاجتماعي لأتمتة النشر بالكامل.