Interior Reels
Ubah klip mentah proyek interior menjadi reel 9:16 siap upload. Script hanya alat. Keputusan editorial (shot mana, bagian mana, urutan apa) adalah tugas Claude dan harus didasarkan pada melihat gambar setiap klip, bukan menebak dari nama file.
SKILL = folder skill ini. Semua script: python3 SKILL/scripts/<nama>.py.
Sebelum mulai (sekali per sesi)
Jalankan bash SKILL/setup.sh. Kalau ada GAGAL, bereskan dulu. Baca SKILL/brand.json untuk nama studio, CTA, logo, pattern default, dan selera klien.
Aturan mutlak (tidak boleh dilanggar)
- Teks dan logo bukan tugas asisten. Teks dan logo diatur klien di GUI dan disimpan di
<folder>/_edit/overlay.json.render.pymembaca file ini dan menimpa seluruhteksdanlogodi plan. Jangan menulisteksataulogodiplan.json, jangan bertanya isi teks ke klien, dan jangan menambah teks sendiri keoverlay.json(termasuk CTA daribrand.json) kecuali klien memintanya. - Pattern hanya mengatur potongan dan tampilan. Yang diambil dari pattern: urutan slot, durasi, gerak, transisi, dan grade.
teks,contoh_isi, danlogodi pattern hanya catatan dari video referensi, tidak dirender. - Ubah teks atau logo lewat chat = edit
overlay.json. Kalau klien minta ganti isi teks, font, posisi, waktu muncul, ukuran, warna, atau logo, edit<folder>/_edit/overlay.json(format diPLAN.mdbagianoverlay.json), lalu render ulang. GUI memuat ulang file ini setelah balasanmu. Font hanya dariSKILL/fonts/. Daftar font, kategori, ciri, dan kegunaannya ada difonts/fonts.json; pilih dari situ sesuai suasana yang diminta klien. Font atau ukuran beda per baris (mis. "baris kedua pakai Great Vibes") diatur lewatteks[].per_baris. Logo hanyahitam(brand/logo.png) atauputih(brand/logo-putih.png). Data studio (nama, websitekeziakarin.com, Instagram@keziakarin.studio) tetap daribrand.json. - Audio juga dari
overlay.json(audio). Jangan memilih atau mengganti musik sendiri, dan jangan menulismusikdi plan. Kalau klien minta lewat chat (ganti lagu, volume, titik mulai, final dengan/tanpa musik, sinkron ketukan), editaudiodioverlay.json(format diPLAN.md). Musik hanya dari audio panduan pattern (patterns/audio/) atau library studio (brand/musik/). Ingatkan klien bahwa audio referensi milik orang lain kalau mereka ingin memakainya di final. - Kalau
overlay.jsonbelum ada, render tetap jalan tanpa teks dan logo dari pattern. Sebutkan ke klien bahwa teks dan logo bisa diisi di GUI bagian Detail. - Jangan menghapus atau mengganti
overlay.jsontanpa diminta. File ini adalah pilihan klien. - Goyang ditangani otomatis.
render.pymengukur goyang tiap segmen dan menstabilkan sendiri ("stabil": "auto", default). Jangan isistabilkecuali ada alasan:truememaksa stabil,falsemematikan (misalnya gerak tangan disengaja). Baca tabel "Stabil" di log render:! sisa goyang terlihat= cek hasilnya;! GAGAL= render berhenti, pilih rentang atau klip lain untuk segmen itu. Saat review, tetap isigoyangdi_review/*.jsonuntuk bagian yang jelas goyang/kehilangan fokus: rentang itu tidak akan dipakai saat render menggesermulai. - Pilih bagian yang layak, jangan pakai semua detik klip. Saat render,
render.pyotomatis menganalisis klip (_kualitas/) dan menandai bagian gelap, kosong (tidak ada objek), atau blur. Segmen yang memuat lebih dari 0.3 detik bagian buruk ditolak dan diberi saranmulai. Wajib: gesermulaike saran, atau kurangidurasi, atau ganti klip. Tidak boleh memakai--abaikan-kualitastanpa izin pengguna. - Durasi mengikuti footage, bukan pattern. Kalau rentang bagus klip lebih pendek dari slot pattern, pendekkan slot itu. Total reel boleh lebih pendek dari
durasi_totalpattern. Jangan mengisi slot dengan bagian buruk. - Lihat frame sebelum final. Saran dari analisis harus dicek dengan melihat frame di rentang itu (grid atau preview). Analisis tidak tahu apakah objek utamanya bagus atau apakah bagian tersebut adalah pembuka yang tepat.
- Review semua klip bahan dulu. Jalankan
scripts/review_bahan.py <folder-bahan>, lihat SETIAP lembar di_review/sampai habis, lalu isi JSON tiap klip (sudah_dilihat,goyang,rentang_layak,keputusan).render.pymenolak render kalau klip belum direview atau segmen di luarrentang_layak(kecuali--abaikan-kualitas). - Cek teks setelah render. Posisi teks dipilih klien (grid 3x3). Setelah render, lihat
*_teks<N>_cek.jpg(kotak merah = perkiraan area teks). Kalau teks menutupi wajah atau objek utama, beri tahu klien dan sarankan posisi lain. Jangan mengubah posisi sendiri tanpa persetujuan. - Klip pilihan klien dari
<folder>/_edit/klip.json. Baca file ini sebelum membuat plan (format diPLAN.mdbagianklip.json).pembuka= klip segmen pertama,penutup= klip segmen terakhir,jangan= tidak boleh dipakai di segmen mana pun. Pilihan klien menang atasjenis_shotpattern; kalau jenis shot klip itu beda dari slot pattern, beri tahu klien. Detik terbaik di dalam klip pilihan tetap dipilih asisten.render.pymenolak plan yang melanggar file ini (tidak bisa dilewati--abaikan-kualitas). Jangan mengubah atau menghapusklip.json; file ini ditulis GUI.
Alur: edit klip menjadi reel
- Kumpulkan info. Yang wajib: folder klip. Yang opsional: pattern dan file suara (narasi/voice over, mp3/m4a/wav). Teks dan logo sudah ada di
_edit/overlay.json, jangan ditanyakan. Tanya hanya yang benar-benar kosong, maksimal 1 pertanyaan. Kalau ada file suara, isisuaradi plan (lihatPLAN.md). Suara tidak direkam oleh skill: pengguna harus menyediakan file audionya. Bandingkan jumlah klip di folder denganmin_klippattern. Kalau kurang, beri tahu klien dan sarankan pattern denganmin_kliplebih kecil atau tambah klip. Tetap boleh lanjut kalau klien setuju. - Scan. Jalankan
scan_clips.py <folder>untuk membuat<folder>/_scan/. - Lihat SETIAP grid
_scan/<klip>.jpgdengan tool view. Untuk tiap klip catat dalam tabel: jenis shot (wide / medium / detail / walk-through / pan), ruangan, kualitas (goyang, gelap, terlalu terang, ada orang atau barang berantakan), detik terbaik (detik_framedimanifest.jsonmemetakan kotak grid ke detik), dan arah gerak kamera. Jangan lanjut sebelum semua grid dilihat. - Pilih pattern dari
SKILL/patterns/*.json, sesuai permintaan atau default. Kalau pemilihan otomatis, pilih yangcocok_untuk-nya paling sesuai dengan jumlah dan isi klip. Bacacatatan_trainingpattern terpilih (kalau ada) dan terapkan pelajarannya saat mengisi slot. - Isi slot. Untuk setiap slot di
alur, pilih klip dan detikmulaiyang cocok denganjenis_shot, ikuti aturan cerita di bawah. Salindurasi,gerak,transisi_masuk,efek_masuk,efek_keluar,redup, dan grade dari pattern. Salin jugabingkaidanakhirke plan, ubahlogo_slotmenjadilogo_segmen(indeks segmen slot itu), dan isipembuka_segmendengan indeks segmen slot teks pertama pattern (teks[0].slot), supaya teks pembuka dari GUI muncul di slot itu. Kalau pattern punyateks[0].durasi, tulis jugapembuka_durasi_teks(nilai number, detik) ke plan — ini memastikan teks pembuka tampil cukup lama agar terbaca. Kalau pattern punyateks[0].sampai_slot, tulis jugapembuka_tekske plan:mulai,animasi,fade,keluardisalin dariteks[0], dansampai_segmen= indeks segmen slotsampai_slot. Jangan salin teks dan logo. Tulis<folder>/_edit/plan.jsonsesuaiSKILL/PLAN.md, memakai path absolut.- Pattern dengan
bingkailetterbox: utamakan klip landscape. Klip portrait dipotong di tengah menjadi pita 16:9; kalau terpaksa dipakai, beri tahu klien. - Pakai ulang klip boleh bila klip kurang dari jumlah slot: rentang
mulaidalam klip yang sama berjarak minimal 1 detik, dan tidak di dua segmen berurutan. Render memberi peringatan kalau aturan ini dilanggar. - Kalau pattern punya
belum_didukung, sebutkan efek itu ke klien sebelum render. - Mode edit dari GUI (disebut di pesan "Mulai edit"):
ikuti referensi(default): salin alur pattern persis, jangan buang, tukar, atau gabung slot. Teks overlay sudah diberi nomor shot sesuai slot pattern (kapan), dan logo memakailogo_segmen, jadi urutan segmen harus sama denganalur. Kalau klip kurang, pakai ulang klip (aturan di atas), jangan buang slot.custom: pattern hanya titik awal gaya (grade, transisi, efek, bingkai). Durasi dan jumlah segmen boleh disesuaikan dengan klip. Tulis"mode": "custom"di plan, supaya audio referensi disinkronkan ke ketukan.
- Pattern dengan
- Preview. Jalankan
render.py <plan> --preview, lalu lihat*_preview_cek.jpg. Periksa: urutan masuk akal, tidak ada shot buruk, teks dari overlay terbaca dan tidak menutupi objek utama, tidak ada frame beku yang aneh. Perbaiki plan lalu ulangi kalau perlu. - Final. Jalankan
render.py <plan>, lihat*_cek.jpgsekali lagi, lalu laporkan path video beserta ringkasan urutan shot dalam 1-2 kalimat.
Aturan cerita interior
- 3 detik pertama menentukan orang berhenti scroll. Pembuka harus shot terkuat: terang, lurus, ruang terlihat utuh.
- Ikuti denah. Urutan ruang dari pintu masuk ke area publik (ruang tamu, makan, dapur) lalu ke area privat (kamar, kamar mandi). Jangan melompat bolak-balik antar ruangan.
- Selang-seling skala. Wide, lalu detail, lalu wide. Dua wide dari ruangan berbeda berturut-turut sebaiknya disambung transisi, bukan cut.
- Arah gerak menyambung. Pan ke kiri disambung shot yang bergerak ke kiri atau transisi
slideleft/smoothleft. Hindari arah gerak berlawanan di satu sambungan. - Ambil bagian stabil. Pilih detik di tengah gerakan, bukan saat kamera mulai atau berhenti. Lewati bagian goyang, blur, atau ada orang.
- Penutup pakai shot paling cantik yang punya area polos untuk CTA dan logo.
- Teks: diatur klien lewat
overlay.json. Kalau diminta saran, sarankan maksimal 6 kata per teks. - Klip kurang dari slot: buang slot
detaildulu. Klip berlebih: pakai yang terbaik saja, tidak perlu semua klip dipakai. - Klip landscape: pakai
"isi": "blur"kalau komposisinya penting. Kalau objek utama ada di tengah,cropsudah cukup.
Alur: revisi setelah hasil
Berlaku bila pesan klien diakhiri [mode revisi: ...] (GUI menambahkannya saat _edit/plan.json sudah ada). Tujuannya: pahami maksud revisi sebelum mengubah apa pun, karena render ulang lama. Klien hanya mengklik tombol, jadi semua pertanyaan WAJIB dikirim lewat blok pertanyaan, bukan teks bebas.
- Pesan revisi baru (bukan jawaban, bukan "Kerjakan"):
- Baca
plan.jsondan lihat*_cek.jpghasil terakhir. Jangan ubah file apa pun. - Kirim satu ronde: maksimal 4 pertanyaan. Isinya pertanyaan maksud (shot mana, seberapa banyak, gaya apa) dan maksimal 2 temuan dari hasil (mis. shot gelap, teks menutupi objek), masing-masing dengan opsi seperti "Perbaiki" / "Biarkan".
- Tiap pertanyaan 2-4 opsi pendek (≤ 6 kata), tepat satu opsi
"disarankan": true."multi": truehanya untuk pilihan yang boleh lebih dari satu (mis. shot mana saja yang diganti). Jangan tambah opsi "Lainnya"; GUI sudah menyediakan. - Tulis maksimal 1 kalimat pengantar, lalu blok, lalu berhenti dan tunggu.
- Baca
- Pesan berawal
Jawaban:= jawaban ronde. Kalau masih ada yang belum jelas dan ini baru ronde pertama, kirim ronde kedua (aturan sama). Setelah itu (atau kalau sudah jelas), kirim blokringkasan: daftar perubahan yang akan dibuat, 1 poin per perubahan. Berhenti dan tunggu. Langsung kerjakan: ...= pakai opsidisarankanuntuk semua pertanyaan terakhir, lalu kerjakan tanpa ringkasan.Kerjakan sesuai ringkasan.= kerjakan persis isi ringkasan terakhir (edit plan/overlay, preview, final), lalu laporkan seperti biasa.- Pesan teks bebas saat kartu terbuka = jawaban bebas. Perlakukan seperti
Jawaban:. - Maksimal 2 ronde pertanyaan per revisi. Permintaan yang sudah sangat jelas (mis. "ganti font jadi Great Vibes") tetap lewat 1 ronde singkat (cukup temuan, atau 1 pertanyaan konfirmasi), lalu ringkasan.
- Pesan "klip pilihan berubah" (dikirim GUI setelah klien mengubah klip pembuka, penutup, atau jangan dipakai) = revisi biasa: baca
_edit/klip.jsonterbaru dan terapkan ke plan lewat langkah 1-4 di atas (aturan mutlak 13).
Format blok (JSON valid, satu blok per balasan):
```pertanyaan
{"jenis": "tanya", "pertanyaan": [
{"id": "q1", "judul": "Shot mana yang mau diganti?", "multi": true,
"opsi": [{"label": "Shot 2 (dapur)", "disarankan": true}, {"label": "Shot 4 (kamar)"}]},
{"id": "q2", "judul": "Temuan: shot 3 agak gelap", "multi": false,
"opsi": [{"label": "Perbaiki", "disarankan": true}, {"label": "Biarkan"}]}
]}
```
```pertanyaan
{"jenis": "ringkasan", "ringkasan": ["Shot 2 diganti klip dapur detik 4", "Shot 3 dicerahkan"]}
```
Alur: training gaya
Berlaku bila pesan diakhiri [mode training: ...] (dikirim dari tab Training gaya di GUI). Tujuannya: uji ulang pattern yang sudah ada terhadap video contohnya, laporkan yang tidak cocok, dan perbaiki pattern atas persetujuan klien. Semua pertanyaan WAJIB lewat blok pertanyaan (format di "Alur: revisi setelah hasil").
- Input dari pesan GUI: nama pattern, mode (
ikuti referensi/custom), dan folder klip. - Bahan. Baca
SKILL/patterns/<pattern>.jsontermasukcatatan_training. Video contoh =skill/contoh-video/<video_contoh>(foldercontoh-videodi sebelah folder skill). Lembar referensi: pakaiSKILL/_ref/<nama>/yang sudah ada (cari nama pattern atau nama filevideo_contohtanpa ekstensi; lihatfilmstrip.jpg/shots.jpg). Kalau tidak ada, jalankananalyze_ref.py <video contoh> --name <pattern> --out <folder>/_training/<pattern>/ref. - Folder kerja =
<folder>/_training/<pattern>/. Jangan menyentuh<folder>/_edit/atau<folder>/hasil/. Tulisplan.jsondi folder kerja denganoutputdi dalam folder itu (mis.<folder>/_training/<pattern>/uji.mp4). Klip tetap direview sesuai aturan biasa (render menolak klip tanpa_review). Tanpa teks dan logo: jangan tulisoverlay.jsondi folder kerja. - Aturan mode:
ikuti: plan menyalin alur persis (aturan "Mode edit dari GUI"). Kriteria lolos: jumlah shot sama, selisih tiap cut ≤ 0.15 detik, efek/transisi tiap shot cocok, grade mirip, bingkai dan akhir sama.custom: durasi dan jumlah shot bebas, tulis"mode": "custom"di plan. Kriteria hanya gaya: grade, jenis transisi, efek, bingkai, akhir.
- Satu putaran:
render.py <plan> --preview.python3 SKILL/scripts/bandingkan.py <video contoh> <hasil preview> --out <folder kerja>/banding.jpg.- Lihat lembar banding (atas contoh, bawah hasil; hitung kolom dengan benar) dan tabel cut.
- Tulis
<folder kerja>/laporan.json:
Nama{"pattern": "<nama>", "mode": "ikuti" | "custom", "putaran": 1, "lolos": false, "cek": [{"nama": "Jumlah shot", "contoh": "14", "hasil": "14", "lolos": true, "catatan": ""}, ...], "video": "<path absolut hasil>", "banding": "<path absolut banding.jpg>", "ringkasan": "1-2 kalimat"}cek(urutan tetap):Jumlah shot,Waktu cut,Transisi,Efek,Grade,Bingkai & akhir. Di modecustom,Jumlah shotdanWaktu cutdiberi"lolos": null(tidak dinilai).lolostotal = semua cek yang dinilai lolos.
- Kalau tidak lolos: pisahkan kesalahan pattern (durasi slot, transisi, efek, grade, bingkai salah dibanding contoh) dari keterbatasan footage (klip kurang, gelap, gerak kamera beda). Pattern hanya diubah untuk kesalahan pattern; keterbatasan footage cukup dilaporkan. Kirim blok
ringkasanberisi usulan perubahan pattern (1 poin per perubahan), lalu berhenti dan tunggu. Kerjakan sesuai ringkasan.= tulis pattern baru lengkap ke file sementara di folder kerja, lalu jalankansimpan_pattern.py <pattern> <file sementara>(backup otomatis kepatterns/_backup/). Jangan pernah mengeditpatterns/*.jsonlangsung. Tambahkan pelajaran umum (bukan khusus klip ini) ke fieldcatatan_trainingpattern: array kalimat pendek, tanpa duplikat, maksimal 10 (buang yang paling lama). Lalu ulangi langkah 5 denganputaran+ 1. Maksimal 3 putaran per pesan training; setelah itu laporkan hasilnya.- Kalau lolos: laporkan singkat (1-2 kalimat). Kalau ada temuan tipis (nyaris gagal), boleh tanya lewat blok
tanyaapakah perlu diperbaiki.
Aturan ekstraksi referensi (wajib)
Tujuannya: reel hasil pattern punya struktur yang sama dengan video contoh (waktu tiap cut, transisi, bingkai, efek, grade). Isi gambar tetap dari klip klien.
-
Cut dideteksi di area gambar saja.
analyze_ref.pyotomatis memotong bar hitam (letterbox/pillarbox). Tanpa itu, cut di video berbingkai banyak yang terlewat. -
Lihat
filmstrip.jpg(4 fps) DANshots.jpg(3 frame per shot: awal, tengah, akhir). Jangan menilai shot dari satu frame. Cari cut yang tersembunyi (awal dan akhir shot beda isi), animasi (gambar membesar dari kotak kecil, muncul per potongan, kilat putih, memudar), dan teks atau logo yang muncul sebentar. -
Inventaris semua efek di
efek_cekdraft:bingkai,pembuka,penutup,kilat,kotak,teks,logo,grade. Petakan tiap efek ke field render (bingkai,akhir,logo_slot,efek_masuk,efek_keluar,redup,transisi_masuk; lihatPLAN.md). Tidak boleh ada"?"yang tersisa. -
Uji wajib sebelum pattern disimpan. Render pattern dengan klip apa saja (preview cukup), lalu jalankan
scripts/bandingkan.py <video-contoh> <hasil.mp4>. Lihat lembar bandingnya (pasangan baris: atas contoh, bawah hasil) dan tabel cut. Perbaiki pattern sampai jumlah shot sama, cut meleset ≤ 0.15 detik, dan efek di tiap shot cocok. Sebutkan hasil uji ini ke pengguna. -
Efek yang belum didukung render tetap dicatat di pattern sebagai
"belum_didukung": ["..."]dan WAJIB disebutkan ke pengguna. Jangan diam-diam dilewati atau diganti efek lain. -
Bagian cepat dicek per frame (30 fps). Untuk tiap bagian yang shotnya < 0.4 detik atau ada efek (kotak, kilat, pembuka, logo), ambil strip per frame (
ffmpeg -ss <a> -t <d> -i <video> -vf "fps=30,crop=iw:ih*0.4:0:ih*0.3,scale=90:-2,tile=27x1"). Filmstrip 4 fps melewatkan urutan klip 0.1-0.2 detik (misalnya urutan kotak bertingkat kurang dari 1.2 detik bisa berisi 6-7 klip). -
Kilat/flash dibuktikan dengan angka. Sebelum menulis
kilat-putih, ukursignalstatsYMAX/YAVG per frame di sekitarnya. Kilat putih = lonjakan YAVG jelas dan YMAX ≥ 235. Tanpa lonjakan, jangan tulis efek kilat. -
Bandingkan tiap shot di lembar banding dengan nomor shot yang benar. Hitung kolom dari awal baris; salah hitung kolom membuat efek dipasang di slot yang salah.
Alur: video contoh menjadi pattern baru
Ikuti Aturan ekstraksi referensi di atas.
- Jalankan
analyze_ref.py <video> --name <nama-pattern>, hasilnya di_ref/<nama>/. - Lihat
filmstrip.jpg(seluruh video 4 fps, 1 baris = 4 detik),shots.jpg(3 frame per shot, 1 baris per shot), dancuts.jpg(frame di titik transisi).petunjuk_transisihanya perkiraan. Tentukan jenisnya dari gambar: setengah gelap berartifadeblack, garis batas tegas berartislide*, tepi lembut berartismooth*, gambar tumpang tindih berartifade/dissolve, berganti mendadak berarticut. Durasi transisi yang lazim 0.3-0.6 detik. - Font teks. Untuk tiap baris teks di video contoh: ambil crop satu baris dari frame (
ffmpeg -ss <detik> -i <video> -frames:v 1lalu crop), jalankanscripts/font_match.py <gambar> --box x,y,w,h --teks "<baris>" --lembar <out.png>, lalu LIHAT lembar perbandingannya. Skor hanya petunjuk (mask teks bisa tercampur latar terang). Tentukan kemiripan dari mata: ciri serif/sans, kontras tebal-tipis, kondensed/lebar, kapital. Catat didraft.jsonsebagai"font": {"ciri": "...", "terdekat": "nama font", "file": "path"}dan tulis sebagai"nama font tidak pasti"kalau tidak yakin. Isi semua"?"didraft.json. Langsung isicocok_untuk(jenis proyek, jumlah klip, jenis shot yang dibutuhkan) dari hasil melihat video, jangan dibiarkan"?". Kalau mirip pattern bawaan, sebut nama pattern itu di jawaban. Lalu isi: nama slot,jenis_shotsebagai deskripsi yang bisa dicocokkan dengan klip lain (bukan "shot dapur proyek X"), gerak, transisi, teks beserta gayanya, dan grade (bandingkan warna dengan aslinya: lebih hangat, pudar, atau kontras). Jumlah klip. Isimin_klip(angka) danideal_klip([min, maks]). Mulai darimin_klip_saran_otomatis(jumlah shot ≥ 0.3 detik), lalu koreksi dari gambar: kurangi untuk shot yang bukan footage (kartu hitam/putih, logo, kolase grafis), kilasan blur transisi, dan shot berurutan yang bisa diambil dari klip yang sama (sudut lain, detik lain). Jangan kurangi untuk ruang, stasiun kerja, atau subjek yang berbeda.ideal_klipbiasanya darimin_klipsampai jumlah slot. Sebutkan angka ini dicocok_untukjuga. Hapusmin_klip_saran_otomatissebelum disimpan. Audio panduan.analyze_ref.pymenyimpan audio video contoh ke_ref/<nama>/audio.m4a. Saat pattern disimpan lewat GUI, file ini disalin kepatterns/audio/<nama>.m4adan fieldaudio_panduandiisi otomatis. Kalau gaya pelan (cut jarang, musik tenang), isi"sinkron": "2beat". - Simpan sebagai
SKILL/patterns/<nama>.jsonhanya setelah ujibandingkan.pylolos (aturan 4). Hapusefek_ceksetelah semua efek dipetakan;belum_didukungtetap disimpan. Saat disimpan lewat GUI, video contoh otomatis disalin keskill/contoh-video/<nama>.mp4(h264 disalin, format lain dikonversi ke h264 720p di background) dan fieldvideo_contohdiisi. Video asli tidak dihapus.
Kalau durasi_shot terlihat salah (ada cut terlewat, atau gerakan kamera terbaca sebagai cut), ulangi dengan --thr 30 atau --thr 55.
Kesalahan umum
| Kesalahan | Akibat | Benar |
|---|---|---|
| Memilih klip dari nama file atau urutan folder | Urutan acak, shot buruk ikut masuk | Lihat semua grid dulu |
mulai dekat akhir klip | Frame dibekukan (ada peringatan) | mulai + durasi × kecepatan + 0.5 ≤ durasi klip |
| Teks panjang di shot 1.5 detik | Tidak sempat terbaca | Teks pendek, atau taruh di shot ≥ 2 detik |
| Langsung render final | Lambat kalau ternyata salah | Selalu preview dulu |
| Menilai shot video contoh dari satu frame | Cut tersembunyi dan animasi terlewat, hasil tidak mirip contoh | Lihat filmstrip.jpg + shots.jpg 3 frame, lalu uji bandingkan.py |
| Mengubah pattern bawaan untuk satu video | Pattern rusak untuk video berikutnya | Ubah di plan.json, pattern tetap utuh. Pattern hanya diubah lewat "Alur: training gaya" |