دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

حوّل فيديوهات يوتيوب لشورتات مولّدة بالذكاء الاصطناعي باستعمال بايثون

تعلّم كيفاش تثبّت وتستعمل AI Shorts Generator، وهي أداة مفتوحة المصدر مكتوبة ببايثون كتْحوّل فيديوهات يوتيوب أو الفيديوهات المحلّية لمقاطع عمودية. هاد الشرح كيغطي إعدادات LLM وWhisper، خيارات سطر الأوامر، إعداد الويب محلّياً، توليد أبرز اللحظات، نسب العرض، الخطّافات، ونصائح عملية للتحسين.

حوّل فيديوهات يوتيوب لشورتات مولّدة بالذكاء الاصطناعي باستعمال بايثون

شنو هو مولّد الفيديوهات القصيرة بالذكاء الاصطناعي؟

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

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

مثال على النتيجة

المقاطع المولّدة تقدر تحوّل الخطب، والمقابلات، والبودكاست، والدروس، ومواد مشابهة طويلة لمقاطع مناسبة للهاتف.

مقطع قصير عمودي مولّد من خطابمقطع قصير عمودي مولّد من مقابلةمقطع قصير عمودي مولّد من محاضرة TED

كيفاش كتخدم مراحل المعالجة

  1. جلب المصدر: البرنامج كيحمّل فيديو من يوتيوب أو كيقرأ مسار الملف المحلي اللي كتحدّد.
  2. تحويل الكلام لنص: faster-whisper كينشئ نصاً محلياً مرفوقاً بالطوابع الزمنية. هاد الخطوة هي نفسها مع جميع مزوّدي LLM المدعومين.
  3. تصنيف المحتوى: مزوّد LLM المختار كيحدّد واش المصدر كيشبه لبودكاست، أو مقابلة، أو درس، أو فلوق، أو نوع آخر من المحتوى. وكيقيّم حتى الإيقاع باش يقدر يكيّف اختيار اللقطات البارزة مع المادة.
  4. ترتيب اللقطات البارزة: OpenAI أو Gemini أو MuAPI كيفحص النص بحثاً عن خطافات، وذروات عاطفية، وآراء قوية، واكتشافات، وصراع، وتصريحات قابلة للاقتباس، وذروات قصصية، وقيمة عملية. وكيرجع لائحة مرتّبة باللقطات المرشحة، مع نقاط من 0 حتى 100.
  5. إزالة التكرار: المرشحات المتداخلة كيتدمجو حسب النقاط ديالهم.
  6. اختيار Top-N: كيتختارو المرشحات الأعلى ترتيباً اعتماداً على الخيار --n.
  7. الرندر: كل مقطع مختار كيتقصّ وكيترندر تلقائياً بنسبة الأبعاد المطلوبة. إلا ما عطّلتش هاد الخيار، كيتحط خطاف سياقي مولّد بالذكاء الاصطناعي فالبداية.

المتطلبات

  • Python 3.10 أو أحدث
  • مفتاح API ديال OpenAI أو Gemini أو MuAPI
  • حزم بايثون المذكورة فـ requirements.txt

Gemini كيوفّر مستوى مجاني بحدّ يومي. OpenAI مدفوع، بينما MuAPI كيعتمد على الاستعمال المدفوع حسب الطلب بلا اشتراك. شروط وأثمنة المزوّدين تقدر تتبدّل، لذلك راجع الخدمة المناسبة قبل ما تعالج مجموعة كبيرة.

ثبّت المشروع

1. نسخ المستودع

git clone https://github.com/Colafornia/short-video-generator-AI.git
cd short-video-generator-AI

2. إنشاء بيئة افتراضية

فـ Windows، نفّذ:

python -m venv venv
venv\Scripts\activate

فـ Linux أو macOS، نفّذ:

python -m venv venv
source venv/bin/activate

البيئة الافتراضية كتخلي حزم المولّد منفصلة على مشاريع بايثون الأخرى فالحاسوب ديالك.

3. تثبيت الاعتماديات

pip install -r requirements.txt

إعداد LLM وWhisper

أنشئ ملف .env فمجلد المشروع. عيّن LLM_PROVIDER على openai أو gemini أو muapi، وزِد مفتاح API المطابق.

LLM_PROVIDER=openai

OPENAI_API_KEY=your_openai_key_here
OPENAI_MODEL=gpt-4o-mini

GEMINI_API_KEY=your_gemini_key_here
GEMINI_MODEL=gemini-2.5-flash

MUAPI_API_KEY=your_muapi_key_here

LOCAL_WHISPER_MODEL=base
LOCAL_WHISPER_DEVICE=auto

كتحتاج غير لمفتاح صالح ديال المزوّد اللي اخترتي فـ LLM_PROVIDER. خانات النموذج ديال OpenAI وGemini اختيارية.

اختيار نموذج Whisper

LOCAL_WHISPER_MODEL كيقبل tiny أو base أو small أو medium أو large-v3. المثال الافتراضي كيستعمل base. ولاختيار الجهاز، استعمل auto أو cpu أو cuda.

خلّي LOCAL_WHISPER_DEVICE=auto إلا بغيتي البرنامج يختار الجهاز المتاح. استعمل cuda إلا كان عندك إعداد CUDA متوافق، أو cpu إلا بغيتي المعالجة بالمعالج بشكل صريح.

ولّد أول مقطع قصير ديالك

مرّر رابط يوتيوب لـ main.py:

python main.py "https://www.youtube.com/watch?v=video_id"

افتراضياً، البرنامج كيرندر ثلاثة مقاطع بنسبة أبعاد 9:16، وكيستعمل دقة تحميل المصدر 720. الملفات المرندرة كتتحفظ فمجلد output.

التحكم فالعدد والنسبة والدقة

الأمر التالي كيختار ثلاثة لقطات بارزة، وكيحوّلها لفيديوهات عمودية، وكيطلب دقة مصدر قدرها 1080:

python main.py "https://www.youtube.com/watch?v=video_id" \
  --n 3 \
  --ratio 9:16 \
  --resolution 1080
  • --n كيتحكّم فعدد الكليبات اللي غادي يتخرجو. القيمة الافتراضية ديالو هي 3.
  • --ratio كيقبل نسبة مخصّصة. استعمل 9:16 للفيديوهات العمودية القصيرة ولا 1:1 للإخراج المربّع.
  • --resolution كيتحكّم فجودة تحميل الفيديو الأصلي. القيم الموثّقة والمدعومة هي 360 و480 و720 و1080.

معالجة فيديو محلّي

تقدر تعوّض رابط YouTube بمسار ملف محلّي. هاد المثال كيصاوب أربعة كليبات عمودية بجودة 720، وكيجبر Whisper يتعامل مع الكلام على أساس أنه بالصينية:

python main.py "/Users/Admin/Folder/video.mp4" \
  --n 4 \
  --ratio 9:16 \
  --resolution 720 \
  --language zh

إعداد اللغة الافتراضي هو auto. استعمل --language مع رمز لغة ديال Whisper بحال en ملي كيكون الاكتشاف التلقائي غير مناسب، ولا إلا كنت عارف من قبل اللغة اللي كيهضر بها الفيديو.

تعطيل الـ Hook المُولَّد

الـ hooks اللي كينشئهم الذكاء الاصطناعي مفعّلين افتراضياً. باش تخرّج highlights بلا ما تزيد hook جديد فالبداية، زِد --no-hook:

python main.py "https://www.youtube.com/watch?v=video_id" --no-hook

هاد الخيار مفيد إلا كان المقطع المختار عندو افتتاحية قوية من الأصل، ولا إلا بغيتي الكليب القصير يبدا بالضبط كيفما باين فالمصدر.

استعمال واجهة الويب المحلّية

نسخة الويب كتوفّر طريقة بصرية باش تصفّ طابور ديال فيديوهات متعددة وتعدّل خيارات الإخراج. باقية كتقرا مزوّد LLM ومفاتيح API من .env؛ الواجهة كتتعامل غير مع إدخال الفيديو وخيارات الإخراج.

1. شغّل الـ backend

python3 server.py

2. خدم الـ frontend

حلّ terminal آخر فمجلد المشروع وشغّل:

cd web
python3 -m http.server 8000

3. حلّ الواجهة

دخل فالمتصفّح ديالك لهاد العنوان: http://localhost:8000/shorts-generator-ui.html.

نصائح للاستعمال المتقدّم

طابق نسبة الأبعاد مع الوجهة

استعمل 9:16 للفيديوهات القصيرة العمودية العادية. اختار 1:1 إلا كنت محتاج إخراج مربّع، ولا عطِ نسبة أخرى كيدعمها المولّد لتصميم مختلف.

حدّد عدد الكليبات أثناء التجربة

عيّن --n 1 فالإعداد الأولي. هاد الشي كينقص عدد الكليبات اللي غادي يتخرجو، وكيخلّيك تتأكّد من مفاتيح API، وطريقة التفريغ، وإعدادات اللغة، والـ hooks، وأبعاد الإخراج.

python main.py "https://www.youtube.com/watch?v=video_id" --n 1 --resolution 360

فرض اللغة فالحالات المناسبة

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

عدّل إعدادات التفريغ المحلّي

التفريغ كيتدار محلّياً، حتى إلا كان تحليل highlights كيعتمد على مزوّد LLM خارجي. اختار موديل Whisper والجهاز فـ .env على حساب الموارد المتوفّرة فالجهاز ديالك. ملف README كيوضّح هاد الإعدادات، ولكن ما كيفرضش موديل واحد لكل أنواع الاستعمال.

خلّي إعدادات المزوّد منفصلة على اختيارات الواجهة

الانتقال من CLI لواجهة الويب ما كيبدّلش مزوّد LLM المكوَّن. حدّث LLM_PROVIDER ومفتاح API المطابق فـ .env كلما بدّلتي بين OpenAI وGemini وMuAPI.

راجع الكليبات المُولَّدة قبل النشر

نظام highlights كيستعمل تحليل التفريغ وإطاراً للانتشار باش يختار المرشّحين بشكل تلقائي. راجع الملفات اللي فـ output وتأكد أن القصّ، والتفريغ، والسياق، والـ hook الاختياري مناسبين للاستعمال اللي باغي قبل ما تنشرهم.

الخلاصة

AI Shorts Generator كيجمع تفريغ Whisper المحلّي، واكتشاف highlights بالاعتماد على LLM، وحذف التكرار، والترتيب، والقصّ التلقائي فمسار عمل واحد مفتوح المصدر. من بعد ما تثبّت التبعيات وتكوّن مزوّداً فـ .env، تقدر تعالج رابط YouTube ولا ملف محلّي من سطر الأوامر. واجهة الويب المحلّية كتوفّر بديلاً ملي كتبغي تصفّ الفيديوهات وتختار خيارات الإخراج بشكل بصري.

المشروع متوفّر بموجب رخصة MIT. تقدر تبلّغ على المشاكل، وتساهم بتغييرات، ولا تدير fork للمستودع من GitHub.