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



كيفاش كتخدم مراحل المعالجة
- جلب المصدر: البرنامج كيحمّل فيديو من يوتيوب أو كيقرأ مسار الملف المحلي اللي كتحدّد.
- تحويل الكلام لنص:
faster-whisperكينشئ نصاً محلياً مرفوقاً بالطوابع الزمنية. هاد الخطوة هي نفسها مع جميع مزوّدي LLM المدعومين. - تصنيف المحتوى: مزوّد LLM المختار كيحدّد واش المصدر كيشبه لبودكاست، أو مقابلة، أو درس، أو فلوق، أو نوع آخر من المحتوى. وكيقيّم حتى الإيقاع باش يقدر يكيّف اختيار اللقطات البارزة مع المادة.
- ترتيب اللقطات البارزة: OpenAI أو Gemini أو MuAPI كيفحص النص بحثاً عن خطافات، وذروات عاطفية، وآراء قوية، واكتشافات، وصراع، وتصريحات قابلة للاقتباس، وذروات قصصية، وقيمة عملية. وكيرجع لائحة مرتّبة باللقطات المرشحة، مع نقاط من 0 حتى 100.
- إزالة التكرار: المرشحات المتداخلة كيتدمجو حسب النقاط ديالهم.
- اختيار Top-N: كيتختارو المرشحات الأعلى ترتيباً اعتماداً على الخيار
--n. - الرندر: كل مقطع مختار كيتقصّ وكيترندر تلقائياً بنسبة الأبعاد المطلوبة. إلا ما عطّلتش هاد الخيار، كيتحط خطاف سياقي مولّد بالذكاء الاصطناعي فالبداية.
المتطلبات
- 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-AI2. إنشاء بيئة افتراضية
فـ 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 اختيارية.
- Gemini: خذ مفتاحاً من Google AI Studio.
- OpenAI: خذ مفتاحاً من OpenAI Platform.
- MuAPI: خذ مفتاحاً من MuAPI.
اختيار نموذج 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.py2. خدم الـ frontend
حلّ terminal آخر فمجلد المشروع وشغّل:
cd web
python3 -m http.server 80003. حلّ الواجهة
دخل فالمتصفّح ديالك لهاد العنوان: 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.
