Finance Video Script
Agen (kamu) yang menulis naskah. Skrip scripts/vengine_cli.py menyiapkan kerangka beat, menerima scene per beat, dan menjalankan lint terhadap panduan gaya.
Cakupan
- Termasuk: brief (termasuk pilihan
stylevisual) → beat sheet → naskah per beat (scenes.json) → lint → pemetaan halaman visual (map-pages) → ekspor (naskah.md,prompts.json,naskah.srt) → generate aset gambar AI full-screen (generate-images) → render video MP4 sinematik lengkap dengan TTS Bahasa Indonesia (render). - Belum termasuk: upload otomatis ke platform.
Persiapan
- Python 3.10+ dengan
pip install pydantic pyyaml pillow edge-tts imageio-ffmpeg, atau jalankan lewatuv run(dependensi otomatis). <skill-dir>= folder tempatSKILL.mdini berada. Semua perintah:python <skill-dir>/scripts/vengine_cli.py <perintah> ...(di Windows bolehpymenggantikanpython).- Jalankan dari folder kerja pengguna, bukan dari dalam folder skill. Proyek disimpan di
./video-projects/<slug>/(ubah dengan--home DIRatau variabelVENGINE_HOME).
Alur kerja
- Kumpulkan brief. Tanyakan yang belum jelas: topik, format (A = cerita, B = panduan langkah, S = short-form 30–60 detik), durasi,
stylevisual (preset:claymation,flat-vector,3d-pixar,anime-ghibli,cinematic-realistic,watercolor,comic-book,dark-moody, atau deskripsi custom bebas), audiens,angka_kunci, dan khusus format A tokoh (protagonis, pembanding, figuran). Tanyakan juga ajakan komentar/subscribe dan instrumen keuangan yang boleh disebut. Jangan mengarang angka kunci; angka berasal dari pengguna atau dari hitungan yang kamu tulis rumusnya. - Baca
references/panduan-naskah.mdsebelum menulis apa pun. Itu sumber kebenaran gaya, teknik, dan aturan angka/klaim. - Buat proyek.
init <slug> --topic "..." --format A|B|S --minutes N --style <style>, isibrief.yamlbersama pengguna, lalubuild <slug>(membuat story bible dan beat sheet). - Tulis per beat (ulangi sampai semua beat selesai):
beat <slug>menampilkan tugas untuk beat berikutnya: brief, tokoh, tiga scene sebelumnya, poin isi, target kata/scene, dan syarat tag.- Tulis JSON scene ke
video-projects/<slug>/draft/<beat>.json. Isiimage_promptberbahasa Inggris untuk setiap scene (karena seluruh scene dirender full-screen). add <slug> --beat <id> --file video-projects/<slug>/draft/<id>.json.- Jika ada error, beat tidak disimpan. Perbaiki JSON sesuai pesan lalu
addlagi. Jika beat perlu ditulis ulang setelah tersimpan, tambahkan--replace. Jangan memakai--forcekecuali pengguna meminta.
- Periksa.
status <slug>untuk progres,lint <slug>untuk pemeriksaan penuh. Error harus nol sebelum naskah ditunjukkan sebagai final; warn dibaca dan diputuskan bersama pengguna. - Petakan Halaman Visual. Jalankan
map-pages <slug>untuk memetakanpage_typedanpropssecara otomatis mengikuti katalogreferences/design-video.md. - Ekspor.
export <slug>menghasilkan:video-projects/<slug>/out/naskah.md(naskah kanonik per babak)video-projects/<slug>/out/prompts.json(prompt ilustrasi full-screen siap generate untuk seluruh scene lengkap dengan karakter & style)video-projects/<slug>/out/naskah.srt(subtitle ber-timestamp)
- Generate Aset Gambar AI Full-Screen. Jalankan
generate-images <slug>(bisa tambah--style <style>,--scene <nomor>untuk mengulang satu scene, atau--forceuntuk menimpa semua) untuk mengunduh gambar AI full-screen (Pollinations Flux) kevideo-projects/<slug>/out/images/scene_XXX.png. - Render Video MP4 (opsional/jika diminta). Jalankan
render <slug>(bisa tambah--voice id-ID-ArdiNeuralatauid-ID-GadisNeural, serta--fps 12untuk gaya stop-motionclaymation) untuk menggabungkan gambar latar full-screen (dengan gerak stop-motion / Ken Burns, vignette, overlay glassmorphism angka/punchline, dan subtitle karaoke), audio voiceover Bahasa Indonesia, menjadivideo-projects/<slug>/out/video.mp4.
Format JSON scene
{"scenes": [
{"narration": "Strategi kesatu, uang harus dipisah di awal.",
"tags": ["SECTION"], "image_prompt": "clean modern workspace with warm morning sunlight beams", "characters": [], "mood": "warm", "notes": ""},
{"narration": "Kalau setiap hari kamu menyisihkan dua puluh ribu rupiah, dalam sebulan terkumpul enam ratus ribu rupiah.",
"tags": ["CALC"], "image_prompt": "neatly stacked glass savings jars with glowing coins on wooden desk",
"motion_prompt": "Stop-motion claymation, slow subtle push-in camera, soft ambient light flicker", "characters": [], "mood": "neutral",
"notes": "20.000 x 30 = 600.000"}
]}
narration: siap dibacakan, 15–35 kata. ScenePUNCHdanSECTIONmaksimal 14 kata dan berdiri sendiri.tags:PUNCH,BRIDGE,SECTION,CTA,NUMBER,CALC. Syarat per beat ada di tugas daribeat.image_prompt: bahasa Inggris, tanpa teks atau angka di dalam gambar; direkomendasikan diisi pada setiap scene agar latar full-screen sesuai konteks (jikanull, engine otomatis meracik prompt latar kontekstual).end_image_prompt(opsional): bahasa Inggris untuk End Frame jika scene memiliki transisi perubahan objek/pencahayaan (mis. sakelar lampu ditekan dari gelap ke terang; di-generate dengan seed yang sama).motion_prompt(opsional): instruksi gerak per scene (mis.zoom_flicker,bobbing,switch_lightuntuk animasi stop-motion claymation).characters: id tokoh dari story bible (mis.protagonis), bukan nama.mood:tense,neutral,warm,uplift,melancholy.notes: wajib berisi rumusA x B = Cuntuk sceneCALC/NUMBER; tuliskan juga sumber klaim.
Aturan yang tidak boleh dilanggar
- Tulis orisinal. Jangan menyalin atau memparafrasekan video atau transkrip referensi; hanya struktur dan teknik yang dipakai.
- Hitung ulang semua angka. Timeline menuju angka tujuan harus eksplisit dan jujur.
- Tanpa statistik tanpa sumber ("90% orang..."), tanpa janji hasil. Instrumen keuangan hanya sebagai contoh dan wajib disertai kalimat disclaimer.
- Konten fiksi (format A) diberi label "cerita ilustrasi".
- Jangan mengubah
beats.jsonatauscenes.jsondengan tangan; gunakanadd, supaya validasi dan penomoran ulang scene tetap berjalan.
Pemecahan masalah
Modul 'pydantic' belum terpasang→pip install pydantic pyyamlatau pakaiuv run.Proyek ... tidak ditemukan→ periksa folder kerja; proyek berada di./video-projects/pada folder tempat perintah dijalankan, atau di--home.- Lint
mirip_referensi→ letakkan transkrip referensi sebagai.txtdi./references/(atau--refs DIR); tulis ulang bagian yang dilaporkan dengan kata-katamu sendiri. - Lint
total_kata→ tambah atau kurangi scene di beat yang menyimpang jauh dari target (lihatstatus), laluadd --replace.