لو عندك list مكدّسة من 50 فيديو YouTube محفوظين تحت اسم "ارجعلهم بعدين"، وكل مرة بتحاول تلاقي الدقيقة اللي فيها المعلومة اللي محتاجها بتتفرج على الـ 20 دقيقة كلها من الأول، السكربت اللي هنبنيه هنا بيحل الحكاية دي بـ 22 سنت للفيديو وأقل من دقيقتين معالجة.
أتمتة تحويل فيديوهات YouTube إلى مقالات: النظام الكامل
المشكلة باختصار
المحتوى التعليمي على YouTube بيتضاعف كل سنة، لكن الفيديو كوسيط مش قابل للبحث بالنص. اللي بيحصل فعلاً إنك بتعيد مشاهدة نفس الـ 20 دقيقة 4 مرات علشان تلاقي الدقيقة اللي فيها الحل. الحل مش إنك توقف تتفرّج؛ الحل إنك تحوّل الفيديو لمقال نصي منظم في اللحظة اللي بتخلّص فيها منه، علشان يبقى عندك مكتبة قابلة للبحث بـ grep أو Notion.
مثال مبسّط قبل الغوص في التفاصيل
تخيّل إن عندك صديق شاطر بياخد ملاحظات باحتراف. بتبعتله رابط فيديو، وبعد 3 دقايق بيرجعلك بورقة فيها: موضوع الفيديو في جملتين، النقاط الأساسية بعناوين واضحة، والأكواد أو الأوامر اللي اتذكرت في الفيديو كلها مرتّبة. النظام اللي هنبنيه هو نفس الصديق ده، بس سوفتوير بيشتغل لوحده على الخلفية. بيتكوّن من ثلاث أدوات بيتكلموا مع بعض: أداة بتنزّل الصوت من YouTube، نموذج ذكاء اصطناعي بيحوّل الصوت لنص، ونموذج تاني بيفهم النص ويعمله ملخص مكتوب زي أي مقال.
الأدوات الثلاثة بدقّة تقنية
yt-dlp: أداة command-line مفتوحة المصدر بتنزّل الصوت أو الفيديو من YouTube ومن آلاف المواقع التانية بأعلى جودة متاحة. هنا هناخد الصوت بس بصيغة m4a لأن Whisper بيقبل أغلب صيغ الصوت الشائعة، والـ m4a بتيجي من YouTube مباشرة بدون إعادة ترميز، فبتوفر وقت.
OpenAI Whisper: موديل تفريغ صوتي (speech-to-text) بيدعم 99 لغة ومنهم العربية بجودة عالية. فيه نسخة open-source بتشتغل محليًا على GPU، وفيه API مدفوع بسعر ثابت 0.006 دولار للدقيقة. يعني فيديو من 30 دقيقة بيكلّف 18 سنت تفريغ.
Claude Haiku 4.5: نموذج اللغة اللي هيحوّل النص الخام (اللي ممكن يطلع 8,000 كلمة على فيديو نص ساعة) لمقال منظم بعناوين وقائمة نقاط وأكواد. Haiku كافي تمامًا لهذه المهمة وبيكلّف جزء بسيط مقارنة بـ Opus 4.7؛ الافتراض هنا إن الفيديو تعليمي مباشر مش محاضرة فلسفية فيها nuance دقيق.
الخطوات الخمسة — سكربت Python شغّال
- تنزيل الصوت من رابط YouTube بـ yt-dlp في ملف m4a محلي.
- إرسال الملف لـ Whisper API وأخذ الـ transcript كنص عادي.
- تقسيم النص لو طوله أكبر من 20,000 توكن (للفيديوهات اللي أطول من ساعة).
- إرسال الـ transcript لـ Claude مع prompt بيطلب هيكل محدد للمقال.
- حفظ الناتج كـ Markdown وحذف ملف الصوت لتوفير مساحة.
import os
import subprocess
from openai import OpenAI
from anthropic import Anthropic
openai_client = OpenAI()
anthropic_client = Anthropic()
def download_audio(url: str, out_path: str = "audio.m4a") -> str:
subprocess.run([
"yt-dlp", "-x", "--audio-format", "m4a",
"-o", out_path, url
], check=True)
return out_path
def transcribe(path: str, language: str = "ar") -> str:
with open(path, "rb") as f:
resp = openai_client.audio.transcriptions.create(
model="whisper-1",
file=f,
language=language,
)
return resp.text
def summarize(transcript: str) -> str:
prompt = (
"حوّل النص ده لمقال Markdown منظم. "
"ابدأ بـ TL;DR من 3 أسطر، "
"ثم قسّمه بعناوين H2 واضحة، "
"واحتفظ بأي أكواد أو أوامر زي ما ظهرت. "
f"النص:\n\n{transcript}"
)
resp = anthropic_client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=4096,
messages=[{"role": "user", "content": prompt}],
)
return resp.content[0].text
if __name__ == "__main__":
url = "https://youtu.be/XXXXXXX"
audio = download_audio(url)
try:
text = transcribe(audio)
article = summarize(text)
with open("article.md", "w", encoding="utf-8") as f:
f.write(article)
print("Done: article.md")
finally:
if os.path.exists(audio):
os.remove(audio)
الأرقام الفعلية — كام بيكلّف وبياخد قد إيه
على فيديو تعليمي بالعربي من 35 دقيقة (42MB صوت m4a)، الأرقام اللي طلعت فعلًا من تجربة مباشرة:
- yt-dlp: 12 ثانية على اتصال 100Mbps — تكلفة صفر.
- Whisper API: 48 ثانية معالجة — تكلفة 0.21 دولار.
- Claude Haiku 4.5: 9 ثوانٍ توليد على 18K input + 2K output tokens — تكلفة حوالي 0.015 دولار.
- الإجمالي: دقيقة و9 ثواني، و0.225 دولار للمقال الواحد.
الافتراض هنا إن الاتصال مستقر وإن الفيديو أقصر من 45 دقيقة. الفيديوهات اللي أطول من ساعة محتاجة chunking على مستوى الصوت نفسه لأن Whisper API له حد 25MB لكل طلب، يعني هتقسّم ملف الصوت بـ ffmpeg لأجزاء 20 دقيقة قبل الإرسال.
الـ trade-offs الحقيقية
Whisper API مقابل Whisper محلي: الـ API أسرع (real-time تقريبًا) وأضمن جودة على المحتوى العربي، لكن كل دقيقة بـ 0.006 دولار. النسخة المحلية (نموذج large-v3 على GPU RTX 3090) مجانية لكن بتاخد 3x مدة الفيديو في التفريغ، ومحتاجة ذاكرة GPU ≥ 10GB. القاعدة العملية: أقل من 50 فيديو في الشهر → API. أكثر من 200 → local. بين الاتنين → جرّب الاتنين وشوف التكلفة الإجمالية.
Haiku 4.5 مقابل Opus 4.7: Haiku بيدّي ملخص ممتاز للفيديوهات التعليمية المباشرة (tutorials، شروحات أدوات، demos). Opus بيبقى ضروري لو الفيديو فيه nuance عالي زي مناظرة، محاضرة أكاديمية، أو محتوى قانوني. الفرق في التكلفة: Haiku أرخص بـ 30x تقريبًا على نفس حجم الإدخال، فـ اللي بتكسبه من Opus في الحالات التعليمية العادية مش بيغطي ثمنه.
اللغة الواحدة مقابل الـ mixed: لو الفيديو عربي-إنجليزي مخلوط (code-switching)، اترك parameter اسمه language فاضي في Whisper API علشان يكتشف اللغة تلقائيًا. لو حطّيت "ar" بالقوة على فيديو مخلوط، بيقفز على كلمات إنجليزية كاملة.
متى لا تستخدم هذه الطريقة
لو الفيديو مش ملكك ولا مُرخّص للإعادة — زي محاضرات مدفوعة على Udemy أو Coursera أو دورات أكاديمية — التحويل للنص ونشره تعدّي على حقوق الملكية الفكرية. استخدم السكربت للاستهلاك الشخصي فقط في هذه الحالات، وما تنشرش المخرجات. كمان لو الفيديو أطول من 3 ساعات (زي conferences كاملة)، التكلفة هتقفز فوق الدولار الواحد للفيديو، وهنا أحيانًا بيكون أوفر إنك تستخدم ميزة transcripts الرسمية من YouTube نفسها (مجانية، لكن جودتها على العربية أقل بحوالي 15% من Whisper بحسب قياسات Mozilla Common Voice).
الخطوة التالية
احفظ السكربت فوق في ملف yt2article.py، ثبّت الـ dependencies بـ pip install yt-dlp openai anthropic، حط OPENAI_API_KEY و ANTHROPIC_API_KEY في environment variables، وجرّبه على فيديو تعليمي قصير (5-10 دقايق) الأول علشان تتأكد إن الإعداد مظبوط. بعد كده اربطه بـ cron job بيقرأ list URLs من Google Sheet يوميًا، وهتلاقي عندك مكتبة مقالات جاهزة خلال شهر.
مصادر
- مستودع yt-dlp الرسمي على GitHub: github.com/yt-dlp/yt-dlp.
- توثيق OpenAI Whisper API وأسعاره الرسمية: platform.openai.com/docs/guides/speech-to-text.
- توثيق Anthropic Messages API وموديلات Claude Haiku 4.5: docs.anthropic.com.
- دراسة Mozilla Common Voice لقياس دقة نماذج التفريغ الصوتي في اللغة العربية.
- مرجع ffmpeg لتقسيم الملفات الصوتية الطويلة: ffmpeg.org/ffmpeg.html.