كود لاستخراج ملخصات من فيديوهات YouTube وتحويلها لمقالات

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

كود لاستخراج ملخصات من فيديوهات YouTube وتحويلها لمقالات

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

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

فهم المعمارية الصحيحة قبل كتابة الكود

للحصول على ناتج مناسب لأدسنس والسيو، لا يكفي إرسال التفريغ النصي كما هو. الأفضل هو تقسيم العملية إلى مراحل صغيرة يمكن فحصها وتحسينها. هذا الأسلوب قريب من منطق البرمجة المعتمد على المهام (Task-Oriented Programming) لأنه يجعل كل خطوة مستقلة وقابلة للاختبار.

مراحل التنفيذ الأساسية

  • استخراج video_id من رابط الفيديو.
  • جلب عنوان الفيديو وبياناته الوصفية عبر YouTube Data API أو الاكتفاء بالرابط إذا كان العنوان معروفاً.
  • استخراج النص المنطوق باستخدام مكتبة youtube_transcript_api.
  • تنظيف التفريغ من التكرار والعبارات الشفهية غير المفيدة.
  • إرسال النص إلى نموذج ذكاء اصطناعي لتوليد مقال احترافي.
  • حفظ الناتج بصيغة HTML أو Markdown ثم مراجعته تحريرياً.

إذا كنت لا تزال في مرحلة الإعداد، فابدأ من تهيئة بيئة العمل: تثبيت Python والمكتبات الأساسية، ثم راجع التعامل مع Google Cloud Console وإنشاء مفاتيح الـ API عند الحاجة لاستخدام مفاتيح خدمات جوجل.

المكتبات المطلوبة ولماذا نستخدمها

هذا المشروع يمكن تنفيذه بالكامل عبر Python لأنه مرن وسريع في تكامل APIs. سنستخدم مكتبات خفيفة ومباشرة:

السكربت الكامل: من الفيديو إلى مسودة مقال

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

import os
import re
from youtube_transcript_api import YouTubeTranscriptApi
from openai import OpenAI

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

def extract_video_id(url: str) -> str:
    patterns = [
        r"v=([a-zA-Z0-9_-]{11})",
        r"youtu\.be/([a-zA-Z0-9_-]{11})",
        r"youtube\.com/shorts/([a-zA-Z0-9_-]{11})"
    ]
    for pattern in patterns:
        match = re.search(pattern, url)
        if match:
            return match.group(1)
    raise ValueError("Could not extract video ID from URL")

def get_transcript(video_id: str, languages=None) -> str:
    if languages is None:
        languages = ["ar", "en"]
    transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=languages)
    parts = [item["text"].strip() for item in transcript if item["text"].strip()]
    return " ".join(parts)

def clean_transcript(text: str) -> str:
    text = re.sub(r"\[.*?\]", "", text)
    text = re.sub(r"\s+", " ", text).strip()
    fillers = ["يعني", "طبعاً", "أوكي", "مثلاً", "basically", "you know"]
    for filler in fillers:
        text = text.replace(f" {filler} ", " ")
    return re.sub(r"\s+", " ", text).strip()

def generate_article_from_transcript(title: str, transcript_text: str) -> str:
    prompt = f'''
حوّل النص التالي المستخرج من فيديو يوتيوب إلى مقال عربي احترافي ومنظم.
الشروط:
- ابدأ بمقدمة مختصرة.
- استخدم عناوين فرعية واضحة.
- حوّل الأسلوب الشفهي إلى أسلوب كتابي احترافي.
- احذف التكرار والحشو.
- استخرج الأفكار الرئيسية والخطوات العملية.
- لا تخترع معلومات غير موجودة في النص إلا إذا كانت لإعادة الصياغة التفسيرية العامة.
- اجعل المقال مناسباً للنشر في مدونة تقنية.

عنوان الفيديو:
{title}

نص الفيديو:
{transcript_text}
'''
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        temperature=0.3,
        messages=[
            {"role": "system", "content": "أنت محرر تقني عربي خبير في تحويل النصوص الشفهية إلى مقالات عالية الجودة."},
            {"role": "user", "content": prompt}
        ]
    )
    return response.choices[0].message.content

def save_article(filename: str, content: str):
    with open(filename, "w", encoding="utf-8") as f:
        f.write(content)

if __name__ == "__main__":
    youtube_url = "https://www.youtube.com/watch?v=VIDEO_ID"
    video_title = "عنوان الفيديو"
    video_id = extract_video_id(youtube_url)
    transcript_text = get_transcript(video_id)
    cleaned_text = clean_transcript(transcript_text)
    article = generate_article_from_transcript(video_title, cleaned_text)
    save_article("youtube_article_draft.html", article)
    print("Article saved successfully.")

كيف تجعل المخرجات أكثر ثباتاً واحترافية؟

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

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

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

دمج السيو داخل خط الأتمتة

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

الجودة، الحقوق، وسياسات أدسنس

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

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

أفضل الممارسات الأمنية والتشغيلية

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

إذا كنت تنوي معالجة عشرات الفيديوهات دفعة واحدة، أضف نظام تسجيل logging، ومعالجة أخطاء exceptions، وآلية إعادة المحاولة retry لتفادي فشل الدفعات الكبيرة.

خاتمة عملية

بناء كود لاستخراج ملخصات من فيديوهات YouTube وتحويلها إلى مقالات ليس مجرد أتمتة توفير وقت، بل هو خطوة استراتيجية لإعادة استخدام المحتوى بطريقة قابلة للفهرسة والقياس والتحسين. القوة الحقيقية تظهر عندما تربط بين استخراج Transcript، جودة Prompt Engineering، والمراجعة النهائية وفق معايير الجودة.

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

اترك تعليقاً

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