← العودة إلى العروض

سير العمل — كيف صُنعت المواد

كيف صُنعت هذه المقاطع — دليل عملي

ثلاثة مقاطع جاهزة للعرض، صُنعت كلها في جلسة واحدة، بتكلفة إجمالية ‎$2.11.
هذا الملف يشرح كل أمر نصي (prompt) وكل سطر أمر (command) والتكلفة الحقيقية لكل خطوة — دون إخفاء شيء، بما في ذلك الأخطاء والميزانية المهدورة.

١ · الخلاصة في جدول واحد

المقطعالمدةما بداخلهالتكلفة الحقيقية
أغنية الحروف (16:9)‎30.8 ثموسيقى + غناء عربي + ٦ صور‎$0.2723
فيديو سد مأرب القصير (9:16)‎59.7 ثتعليق صوتي + ٦ صور + مقطعَي فيديو + موسيقى‎$0.6325
سُلّم الأسعار (16:9)‎4 ث ×٣نفس الأمر على ٣ نماذج‎$1.0210
(مهدور بسبب خطأ برمجي — انظر القسم ٧)——‎$0.1800
الإجمالي‎$2.1056

الرقم الأهم: الفيديو القصير (Short) التعليمي مدته دقيقة وكلفته ‎$0.63.
لو استبدلنا مقطعَي الفيديو بصورتين ثابتتين لصارت التكلفة ‎$0.31 — أي أن دقيقة الفيديو التعليمي الاحترافي تكلف أقل من ثلثي دولار.

⚠️ الأرقام أعلاه هي تكلفة الإنتاج فقط. لا تشمل وقتك، ولا تضمن مشاهدة المقطع أو تحقيق أرباح منه.
راجع ما قيل في المسار ٣ عن سياسة YouTube ومشكلة التحويلات المالية من اليمن.

٢ · الإجابة عن السؤال المطروح: هل يغني Lyria بالعربية؟

نعم، وهذا ليس تخميناً بل أمرٌ مؤكد.

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

النموذج المُدقِّقما سمعه
gemini-3.6-flash«ألف باء تاء ثاء نقرأ معاً بهناء، ألف أرنب يقفز، باء بطة تسبح…»
gemini-3.5-flash«ألف باء تاء ثاء نقرأ معاً بها ألف أرنب يقفز باء بطة تسبح…»

النتيجة العملية: لا حاجة للحيلة التي تلجأ إليها كثير من القنوات العربية (موسيقى بلا كلمات + صوت آلي منفصل يقرأ الكلمات). Lyria يغنّي الكلمات مباشرة، بكلفة ‎$0.04 للمقطع الواحد (~٣٠ ثانية).

لكن بصراحة — ما هي عيوب الأغنية؟

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


٣ · التجهيز (مرة واحدة فقط)

الأدوات كلها في events/event 3/tools/:

الأداةماذا تفعلالتكلفة
media_gen.py speechتعليق صوتي عربي (Gemini TTS)مجاني
media_gen.py imageصور (‎gemini-2.5-flash-image‎)‎$0.0387 للصورة
media_gen.py musicموسيقى وغناء (‎lyria-3-clip-preview‎)‎$0.04 للمقطع
video_gen.pyفيديو (veo / seedance)‎$0.03–$0.15 للثانية
audio_check.pyيسمع ملفاً صوتياً ويصفه — للتحققمجاني
ffmpegالتركيب والمونتاجمجاني

كل نداء مدفوع يمرّ على حارس ميزانية: يقدّر التكلفة → يقرأ الرصيد الحقيقي → يرفض إن تجاوز السقف.
لهذا يُمرَّر --ceiling في كل أمر.

# تحقّق من الرصيد قبل أي شيء
curl -H "Authorization: Bearer $OPEN_ROUTER_API_KEY" https://openrouter.ai/api/v1/key

٤ · الأصل الأول — أغنية الحروف (‎$0.2723‎)

٤.١ الكلمات

كُتبت بالفصحى المشكولة (التشكيل يساعد النموذج على النطق الصحيح)، ثم دُقّقت لغوياً عبر Gemini قبل الاستخدام (tools/arabic_review.py) — ١٥ نصاً، وافق على ١٤ وصحّح واحداً.

أَلِف بَاء تَاء ثَاء، نَقْرَأُ مَعاً بِهَنَاء
أَلِف أَرْنَبٌ يَقْفِزُ، بَاء بَطَّةٌ تَسْبَحُ
تَاء تُفَّاحَةٌ حَمْرَاء، ثَاء ثَعْلَبٌ في الصَّحْرَاء
جِيم جَمَلٌ في البَادِيَة، حَاء حِصَانٌ يَجْرِي
حُرُوفُنَا حُرُوفُنَا، أَجْمَلُ شَيْءٍ عِنْدَنَا

٤.٢ توليد الأغنية — ‎$0.0400

الأمر النصي حرفياً (بالإنجليزية — النماذج تفهمها أدقّ في وصف الأسلوب الموسيقي):

Cheerful Arabic children's nursery rhyme for preschoolers. Lead vocal: warm
female voice singing IN ARABIC, joined by a small children's choir singing along
in Arabic. Bright simple singable melody, ukulele, glockenspiel, hand claps,
light kick and shaker, major key, 108 BPM, playful and innocent, clear enunciated
Arabic lyrics, no English.
python media_gen.py music --ceiling 0.05 --seconds 30 \
  --out "../trials/song/audio/letters-v1.mp3" \
  --prompt "<الأمر أعلاه>" \
  --lyrics "<الكلمات في ٤.١>"

الدرس: اكتب وصف الأسلوب بالإنجليزية، والكلمات بالعربية. هذا ما نجح.

٤.٣ الصور — ٦ صور × ‎$0.0387 = ‎$0.2323

أهم حيلة في هذا القسم: ضع نفس جملة الأسلوب حرفياً في نهاية كل أمر. هذا ما يجعل الصور الست تبدو من عالم واحد:

children's picture-book illustration, warm flat gouache painting style, soft
rounded shapes, thick friendly hand-drawn outlines, warm sunny palette of cream,
terracotta, mustard yellow, sage green and sky blue, subtle paper grain texture,
simple uncluttered composition, gentle innocent mood for preschool children,
absolutely no text, no letters, no writing, no signage anywhere in the image
⚠️ لماذا «no text, no letters»؟ لأن نماذج الصور تشوّه الحروف العربية تماماً.
الحل: اطلب صورة خالية من النصوص، ثم أضف الكلمات العربية بنفسك أثناء المونتاج (ffmpeg).
هذه هي الطريقة الصحيحة الوحيدة، وهي مجانية.

المشاهد الستة (يُضاف لكل منها نص الأسلوب أعلاه):

الملفالأمر النصي
01-children.pngThree happy young children sitting cross-legged on a soft rug in a sunlit room, sharing one big open picture book, a small window with a potted plant behind them.
02-rabbit.pngA cheerful white rabbit caught mid-hop over a grassy meadow dotted with small wildflowers, wide blue sky with a few soft clouds.
03-duck.pngA little yellow duckling swimming on a calm blue pond, gentle ripples spreading around it, tall green reeds at the water's edge.
04-fox.pngA friendly small desert fox with big ears sitting on warm sand beside one big shiny red apple, soft dunes and a single acacia tree behind.
05-camel.pngA gentle smiling camel standing on golden desert dunes at soft golden hour, delicate sand ripples, clear warm sky.
06-horse.pngA happy brown horse galloping across an open green field, mane and tail flowing, low warm sun glowing behind.
python media_gen.py image --aspect 16:9 --ceiling 0.05 \
  --out "../trials/song/images/02-rabbit.png" \
  --prompt "<وصف المشهد> <نص الأسلوب>"

٤.٤ الحيلة التي رفعت الجودة أكثر من أي شيء آخر — المونتاج على إيقاع الغناء

بدل تقسيم الصور بالتساوي (٣٠.٨ ÷ ٦ = ٥.١ ث لكل صورة)، سألت Gemini أن يستمع للأغنية ويخبرني متى يُغنّى كل حرف:

python audio_check.py "../trials/song/audio/letters-v1.mp3" \
  --ask "give the timestamp in seconds where each letter's line is SUNG..."

فأعطى: أ عند 4.8 · ب عند 6.9 · ت عند 9.0 · ث عند 11.1 · ج عند 13.3 · ح عند 15.5

وتحقّقت من صدق هذه الأرقام بقصّ المقطع من 6.9 إلى 9.0 وسؤاله عمّا فيه — فأجاب «بطة تسبح». صحيح.

الآن كل قطع بصري يقع على الكلمة المغنّاة بالضبط. هذه الخطوة مجانية وتغيّر طابع المقطع وتأثيره تماماً.

٤.٥ التركيب

cd trials/song && python build.py

build.py يفعل ثلاثة أشياء:

  1. يبني لكل مشهد مقطعاً بحركة تقريب/تبعيد بطيئة (zoompan) — الصورة الساكنة تصبح لقطة حيّة.
  2. يستخدم صورة الثعلب مرتين بتأطيرين مختلفين: مرة على التفاحة (ت) ومرة على الثعلب (ث). صورة واحدة = لقطتان = توفير ‎$0.04.
  3. يكتب الحروف العربية بـ libass فوق الفيديو.

٥ · الأصل الثاني — فيديو سد مأرب القصير (‎$0.6325‎) ← ابدأ من هنا

هذا هو الشكل الأكثر قابلية للتكرار: ٦ صور ثابتة + مقطعا فيديو + تعليق صوتي مجاني.

٥.١ النص (~٦٠ ثانية)

قاعدة: جملة قصيرة واحدة لكل لقطة، وعنصر الجذب (Hook) في أول ٣ ثوانٍ.

#النصالمدة
١أعظمُ سدٍّ في العالم القديم لم يكن في مصر… بل في اليمن.6.8 ث
٢قبل نحو ثلاثة آلاف عام، بنى السبئيون سدَّ مأرب في وادٍ بين جبلين.7.8 ث
٣لم يكن السد يخزّن الماء طوال العام، بل كان يقتنص السيول.6.6 ث
٤تنزل الأمطار الموسمية من الجبال، فيوقفها الجدار ويرفع منسوبها.6.7 ث
٥ثم تُفتح البوابات، فيجري الماء في قنوات حجرية إلى آلاف الحقول.7.9 ث
٦سُقيت به واحة مساحتها نحو مئة كيلومتر مربع، في قلب الصحراء.7.4 ث
٧صمد السد أكثر من ألف عام، لأن الناس كانوا يرمّمونه كل موسم.6.4 ث
٨وحين توقّفت الصيانة، انهار السد. الهندسة تبقى بالصيانة، لا بالبناء وحده.9.8 ث

الجملة الأخيرة هي الخلاصة — لا تنهِ الفيديو القصير بمعلومة، بل أنهِه بفكرة.

٥.٢ التعليق الصوتي — ‎$0.00

python media_gen.py speech --voice Charon \
  --out "../trials/short/audio/s1.wav" \
  --text "اقرأ النص التالي بصوت راوٍ وثائقي دافئ وواضح، بإيقاع هادئ وثقة: <الجملة>"

حيلتان مهمّتان:

  1. ضع تعليمات الأداء داخل النص نفسه («اقرأ بصوت راوٍ وثائقي…»). النموذج ينفّذها ولا ينطقها. تحقّقت من ذلك.
  2. ولّد كل جملة في ملف منفصل؛ لتحديد مدتها بدقة وضبط طول اللقطة وتزامن النصوص معها. وإذا ساءت جملة، تعيد توليدها وحدها.

الصوت المختار: Charon (أعمق، وثائقي الطابع).
⚠️ الحدّ المجاني ١٠ نداءات في الدقيقة. إن ظهر 429، انتظر قليلاً وأعد المحاولة.

٥.٣ الصور الست — ‎$0.2325

جملة الأسلوب الموحّدة:

cinematic documentary illustration, painterly realism with soft depth of field,
warm golden desert light, fine dust haze in the air, ochre sandstone and deep
teal water tones, dramatic natural lighting, richly detailed, vertical
composition, absolutely no text, no letters, no writing, no watermark, no signage
الملفالأمر النصي
01-dam.pngA colossal ancient stone dam wall spanning a narrow rocky valley between two mountains in ancient Arabia, massive fitted masonry blocks, viewed from below at golden hour, tiny human figures at the base giving a sense of enormous scale.
02-build.pngAncient Sabaean workers in simple linen garments hauling and setting huge cut stone blocks to build a dam wall between two mountains, wooden scaffolding, ropes and baskets of earth, bright clear desert daylight.
03-flood.pngA dry desert valley riverbed seen from a high vantage point, a distant wall of brown flash-flood water surging down the wadi toward a stone dam, dark storm clouds gathering over the mountains.
06-oasis.pngAerial view of a vast green irrigated oasis of dense palm groves and geometric farm fields in the middle of golden desert, thin silver irrigation channels branching across it, late afternoon light.
07-repair.pngAncient workers repairing a stone dam wall, lifting replacement blocks into a gap and packing silt, woven baskets and simple hand tools, a foreman pointing, warm morning light.
08-ruin.pngThe ruined breached remains of a colossal ancient stone dam in a desert valley, a huge gap torn through the middle of the wall, scattered fallen blocks, dry cracked earth, dusk light.

--aspect 9:16 للشكل العمودي.

٥.٤ مقطعا الفيديو — ‎$0.18 لكل واحد

متى يستحق الفيديو ثمنه؟ حين تكون الحركة هي الفكرة نفسها.
هنا: الماء. الماء الساكن في صورة لا يعني شيئاً؛ الماء المندفع يعني كل شيء.

python video_gen.py --model google/veo-3.1-lite --seconds 6 \
  --resolution 720p --aspect 9:16 --no-audio --ceiling 0.20 \
  --out "../trials/short/video/v1-flood.mp4" --prompt "<الأمر>"
المقطعالأمر النصيالزمن
v1-floodAerial cinematic shot: brown flash-flood water surging down a narrow desert wadi between steep rocky mountains, churning and foaming, slamming into a massive ancient stone dam wall, dust and spray glowing in warm low sunlight. Slow motion, photorealistic documentary footage, no text, no captions, no people.‎90 ث
v2-channelCinematic low tracking shot following clear water racing along a straight ancient stone irrigation channel in the desert, out toward distant green fields and palm groves, sunlight glinting on the fast moving surface, warm dusty air, photorealistic documentary footage, no text, no captions, no people.‎90 ث

--no-audio يخفض السعر من ‎$0.05 إلى ‎$0.03 للثانية. ولا نحتاج صوت النموذج لأن التعليق يغطّيه.

٥.٥ الموسيقى الخلفية — ‎$0.0400

Sparse cinematic documentary underscore, purely INSTRUMENTAL with absolutely no
voices and no singing. Slow oud and low sustained strings, soft frame-drum pulse,
warm desert atmosphere, contemplative and patient, understated, leaves room for a
narrator, 70 BPM, minor key.

ثم تحقّقت أنها فعلاً بلا غناء عبر audio_check.py (لو فيها غناء لتصادمت مع التعليق).
مقطع واحد ٣٠ ثانية يُكرَّر ليغطّي الدقيقة — لا داعي لشراء مقطع ثانٍ.

٥.٦ التركيب

cd trials/short && python build.py

ما يفعله، بالترتيب:

  1. يقصّ الصمت من بداية كل جملة صوتية (Gemini يترك ~٠.٢٨ ث صمت). هذا يشدّ الإيقاع.
  2. يبني لقطة لكل جملة بطولها بالضبط → الصورة والصوت متزامنان دائماً.
  3. يمدّد مقطع الفيديو (٦ ث) ليغطي الجملة (٦.٨ ث) بتباطؤ خفيف — الماء يتحمّل التباطؤ.
  4. يخلط التعليق مع الموسيقى، والموسيقى أخفض بـ ‎19 dB.
  5. يحرق الترجمة العربية بـ libass.

التحقق النهائي: أعدتُ الصوت النهائي (بعد الخلط) إلى Gemini وطلبت تفريغه — فأعاد النص كاملاً وحرفياً. هذا يثبت أن التعليق مسموع فوق الموسيقى، لا مجرد ادّعاء.


٦ · الأصل الثالث — سُلّم الأسعار (‎$1.0210‎)

نفس الأمر النصي حرفياً، ثلاثة نماذج، ثلاثة أسعار.

A traditional multi-storey Yemeni tower house in the old city of Sana'a at golden
hour, intricate white gypsum tracery around the windows, camera slowly pushing
forward, warm dust motes drifting in the low sunlight, a flock of pigeons lifting
off from the rooftop.

كلها: ‎4 ثوانٍ · ‎720p · ‎16:9

النموذجالتكلفةزمن التوليدالصوت
google/veo-3.1-lite‎$0.2000‎54 ثصوت مولّد واضح (‎max −1.5 dB)
bytedance/seedance-1-5-pro‎$0.2099‎84 ثصوت خافت جداً (‎max −18.6 dB)
bytedance/seedance-2.0‎$0.6111‎145 ثبلا صوت إطلاقاً

الحكم — بصراحة

نعم، النموذج الأعلى تكلفة أفضل بصرياً، وهذه حقيقة واضحة.
seedance-2.0 أعطى أجمل تكوين، وأفضل إضاءة، وأنعم حركة كاميرا، وأقل تشوّهاً في تفاصيل الجصّ.

ولكن:

  1. أغلى بـ ٣ مرات وأبطأ بـ ٢.٧ مرة من veo-3.1-lite.
  2. رفض التوليد أول مرة بحجة «قد يكون الصوت الناتج محمياً بحقوق نشر»، ولم ينجح إلا بعد تعطيل الصوت. النموذج الغالي أعطاني فيديو صامتاً.
  3. veo-3.1-lite كان الأكثر التزاماً بالأمر: هو الوحيد الذي أظهر فعلاً بيتاً يمنياً متعدد الطوابق وسرباً ينطلق من السطح. seedance-2.0 أعطى واجهة أقرب للطراز الأندلسي/المغربي، والطيور نقاط بعيدة.
  4. النموذجان الأقل تكلفة أنتجا مادة قابلة للاستخدام تماماً في مقطع مدته دقيقة.

الحساب الذي يهمّ صانع محتوى بلا مال:

لو بنيتَ شورت دقيقة من ١٠ لقطات فيديوالتكلفة
كلها seedance-2.0‎$6.11
كلها veo-3.1-lite‎$2.00
الطريقة التي استخدمناها فعلاً: ٦ صور + مقطعان‎$0.63
الدرس ليس «أي نموذج أفضل؟» بل «كم ثانية فيديو مُولَّد تحتاج فعلاً؟»
الجواب: قليلاً جداً. الصور الثابتة مع حركة تقريب بطيئة تصنع أساس المقطع، بينما يُستخدم الفيديو عندما تكون الحركة ضرورية للمعنى.

المقارنة الجاهزة للعرض: trials/ladder/price-ladder-compare.mp4


٧ · ما الذي أخفق — بصراحة كاملة

المشكلةما حدثالحل
خط Dubai يفسد الألفخط Dubai على هذا الجهاز يعرض حرف الألف (‎ا أ إ آ) كمربع فارغ ▯. اكتُشف قبل الإنفاق.استُخدم Tahoma. ⚠️ لوحة Excalidraw للجلسة مضبوطة على خط Dubai ويجب فحصها.
ضاع ‎$0.18video_gen.py كان ينزّل النتيجة من unsigned_urls بلا مفتاح → خطأ ‎401 بعد أن دُفع ثمن الفيديو.صُحّحت الأداة (تجرّب بمفتاح وبدونه)، وأُضيف تسجيل رقم المهمة و--recover.
رفض seedance-2.0فشل بسبب فلتر حقوق نشر على الصوت.أُعيد بـ --no-audio. المحاولة الفاشلة لم تُحاسَب.
Gemini كذبقال إن مقطع seedance-2.0 فيه صوت — وهو خالٍ من أي مسار صوتي أصلاً.لا تثق بحكم النموذج وحده. ffprobe هو الحَكَم.
حدّ TTS‎429 بعد ١٠ نداءات في الدقيقة. جملتان وُلّدتا بنموذج احتياطي.تحقّقت أن الصوت لم يتغيّر مسموعاً، فأُبقيتا.
مقطع الفيضانبعد الثانية ‎3.5 يتحوّل إلى ما يشبه انفجاراً غبارياً لا فيضاناً.نُقل ليكون الخطّاف الافتتاحي حيث الإبهار مطلوب.
إطارات في الصورصورتان من ست رسم النموذج فيهما إطاراً زخرفياً لم يُطلب.حركة التقريب تبدأ من ‎1.06 فتقصّه.

٨ · ابدأ الليلة — بهذا الترتيب

الخطوة ١ (مجانية تماماً — ابدأ بها الآن):
ولّد جملة عربية واحدة بـ media_gen.py speech واستمع إليها. صفر تكلفة، ودقيقة واحدة، وستعرف فوراً إن كان هذا المسار يناسبك.

الخطوة ٢ (‎$0.04):
ولّد صورة واحدة. اكتب وصف الأسلوب بالتفصيل، وأضف دائماً no text, no letters.

الخطوة ٣ (~‎$0.25):
اصنع فيديو قصيراً كاملاً من صور ثابتة فقط (دون فيديو مُولَّد). ٦ صور + تعليق صوتي + zoompan. هذا يمنحك ٩٠٪ من النتيجة بـ ٤٠٪ من التكلفة.

الخطوة ٤ (‎$0.18):
أضف مقطع فيديو واحداً فقط، في الموضع الذي تكون فيه الحركة هي الفكرة.

لا تفعل:


٩ · التحقق — الأدلة لا الادّعاءات

song-letters-final.mp4     1920×1080  30.77 ث  h264 + aac   max −0.2 dB
marib-dam-short.mp4        1080×1920  59.70 ث  h264 + aac   max −4.4 dB
price-ladder-compare.mp4   1920×1080   4.00 ث  h264 (صامت عمداً)

صور الإثبات — trials/verification/

الملفماذا يثبت
01-FONT-BUG-dubai-drops-alef.pngخط Dubai يفقد الألف، بينما Tahoma وSegoe UI وArial سليمة
02-song-images-style-match.pngتطابق أسلوب صور الأغنية الست
03-song-final-frames.pngإطارات الأغنية النهائية — الحروف العربية مرسومة صحيحة
04-short-images-style-match.pngتطابق أسلوب صور الشورت الست
05-short-final-frames-arabic-subs.pngالترجمة العربية المحروقة — الاتجاه والتشكيل سليمان
06-short-video-clips.pngإطارات من مقطعَي الفيديو المولّدين
07-ladder-3x3-model-comparison.pngمقارنة النماذج الثلاثة، ٣ إطارات لكل نموذج
08-ladder-compare-strip.pngشريط المقارنة الجاهز للعرض

شجرة الملفات

trials/
├── WORKFLOW.md                  ← هذا الملف
├── spend-log.md                 ← كل نداء مدفوع
├── video-jobs.md                ← أرقام مهام الفيديو (للاسترجاع)
├── song/    song-letters-final.mp4   + build.py + images/ + audio/
├── short/   marib-dam-short.mp4      + build.py + images/ + video/ + audio/
├── ladder/  price-ladder-compare.mp4 + build.py + المقاطع الثلاثة الأصلية
└── verification/                ← صور الإثبات أعلاه

الرصيد: المفتاح بدأ عند ‎$4.842588 وانتهى عند ‎$2.737036.
المصروف الفعلي: ‎$2.105552 من سقف ‎$3.50.
كل نداء مدفوع مسجَّل في trials/spend-log.md.