Workflow Shorts faceless: dari ide sampai video terjadwal
Workflow yang sudah kami jalankan setiap hari, ditulis ulang supaya bisa dipakai untuk channel apa pun: akun baru, niche lain, bahasa lain. Agen AI mengerjakan riset, naskah, aset, build, dan penjadwalan, sementara kamu cukup memeriksa di titik-titik penting. Tiap langkah punya prompt siap salin untuk Google Antigravity.
Semua contoh di halaman ini diambil dari channel itu. Ganti niche, gaya, dan suaranya dengan milikmu di langkah 0.
Sebelum mulai
Workflow ini punya dua "tangan": agen di editor yang mengerjakan file dan terminal (naskah, gambar, build, render), dan browser agent yang mengendalikan Chrome (cari stok, generate gambar, TTS, jadwal posting). Kami menjalankannya dengan Claude Code + Claude in Chrome. Di halaman ini semuanya ditulis untuk Google Antigravity, yang punya dua tangan yang sama.
Semua prompt memakai dua file sebagai sumber kebenaran: channel.md (siapa channel-mu) dan GEMINI.md (aturan produksi). Isi keduanya sekali di langkah 0, lalu setiap prompt otomatis mengikuti channel-mu.
Yang dibutuhkan
| Kebutuhan | Yang kami pakai | Alternatif lebih murah / mudah | Biaya |
|---|---|---|---|
| Agen AI | Claude Code + Claude in Chrome | Google Antigravity (agen editor + browser agent) | Antigravity gratis dengan batas pemakaian |
| Voice over | ElevenLabs, voice clone sendiri | Gemini TTS di Google AI Studio · Edge TTS · rekam sendiri + Adobe Podcast Enhance | ElevenLabs berbayar; alternatif gratis |
| Foto & video stok | Pexels | Pixabay, Unsplash | gratis |
| Gambar AI | Google Flow, model Nano Banana | Gemini app (Nano Banana), Whisk | gratis dengan kuota akun |
| Cutout | rembg (lokal) | remove.bg, Photoroom, CapCut | rembg gratis |
| Edit / build | HyperFrames (HTML → video) + ffmpeg | CapCut Desktop (edit manual pakai storyboard yang sama) | gratis |
| Subtitle | faster-whisper → words.json | Auto caption CapCut | gratis |
| Musik & SFX | library sendiri | YouTube Audio Library, Pixabay Music & SFX | gratis |
| Penjadwalan | Repliz (banyak akun sekaligus) | YouTube Studio, TikTok Studio, Meta Business Suite (jadwal bawaan) | Repliz berbayar; bawaan gratis |
| Otomasi harian | cron job → agen jalan di background | Jalankan /produksi-harian tiap malam di Antigravity | gratis |
Harga dan kuota bisa berubah. Cek di situs masing-masing sebelum langganan.
Pasang di laptop
- Google Antigravity, plus ekstensi browser-nya di Chrome supaya agen bisa klik & ketik di web.
- Node.js 20+ (untuk HyperFrames), Python 3.11+, ffmpeg, Google Chrome.
- Akun channel-mu di tiap platform, akun Google (Flow, AI Studio), dan tool jadwal pilihanmu.
- Buat folder proyek baru (satu folder per channel), buka sebagai workspace.
- Ekstrak starter kit ke folder itu.
GEMINI.mddibaca agen setiap sesi. File di.agent/workflows/muncul sebagai perintah/00-identitas,/01-ide, dst. - Agen meminta izin sebelum menjalankan perintah terminal atau membuka situs. Izinkan yang rutin (python, ffmpeg, npx), tolak yang menghapus file di luar folder proyek.
Nama menu bisa sedikit beda tergantung versi Antigravity. Kalau workflow tidak muncul, salin isi prompt-nya langsung ke chat agen.
Struktur folder
Kamu asisten produksi untuk channel Shorts faceless yang dijelaskan di channel.md. Workspace ini folder produksinya. Siapkan proyek: 1. Cek dan laporkan versi: node (≥ 20), python (≥ 3.11), ffmpeg, Google Chrome. Kalau ada yang belum terpasang, tulis perintah instal untuk sistem operasiku, tapi JANGAN jalankan tanpa izinku. 2. Buat folder yang belum ada: konten/_template/, _library/sfx/, _library/musik/, _brand/fonts/, _brand/textures/, scripts/. 3. Pasang paket Python: pip install "rembg[cpu]" faster-whisper pillow numpy opencv-python edge-tts 4. Kalau channel.md masih berisi [placeholder], ingatkan aku untuk menjalankan /00-identitas dulu. Jangan menghapus file apa pun.
Identitas channel
Sebelum membuat video pertama, kunci dulu siapa channel-mu: niche, siapa penontonnya, 4–5 pilar topik, panjang video, gaya visual, dan suara. Agen mewawancaraimu, lalu menulis channel.md dan menyesuaikan GEMINI.md. Setelah itu semua langkah lain otomatis memakai identitas ini.
| Niche | Contoh pilar | Format | Gaya visual |
|---|---|---|---|
| contohSejarah benda (studi kasus) | desain benda, brand lokal, tokoh & penemuan, kota, UI | Kilat 20–30 dtk + Cerita 50–60 dtk | foto realis hangat, kertas grain, highlight kuning |
| Sains sehari-hari | dapur, tubuh, cuaca, teknologi rumah | Kilat 25 dtk | render 3D bersih, latar putih, aksen biru |
| Kuliner & asal-usul makanan | jajanan, bumbu, restoran legendaris, daerah | Cerita 45–60 dtk | foto makanan close-up, latar kayu, aksen oranye |
| Keuangan pribadi | kebiasaan, mitos, sejarah uang, brand | Kilat 30 dtk | kartu angka besar, grafik sederhana, aksen hijau |
Bantu aku menentukan identitas channel Shorts faceless baru. Wawancarai aku SATU pertanyaan per giliran (maksimal 10 pertanyaan), beri 2–3 opsi contoh di tiap pertanyaan:
1. Niche dan janji channel dalam satu kalimat ("Tiap hari, satu ... yang ...").
2. Penonton: usia, negara, bahasa, kenapa mereka menonton.
3. 4–5 pilar topik.
4. Format: durasi pendek & panjang (detik) dan perbandingannya per minggu.
5. Nada bicara VO (misal: teman yang penasaran, narator dokumenter, guru santai) dan pilihan suara (rekam sendiri / TTS).
6. Gaya visual: foto realis, render 3D, ilustrasi, atau campuran; latar terang/gelap; satu warna aksen.
7. Tipografi: font judul, font kalimat/subtitle, font label (sarankan dari Google Fonts, hindari script/italic yang sulit dibaca di HP).
8. Hal yang DILARANG di channel ini (efek, kata, topik sensitif).
9. Nama channel, handle, hashtag utama, jam tayang.
10. Platform tujuan dan akun-akunnya.
Setelah semua terjawab:
- Isi channel.md (ganti semua [placeholder]).
- Sesuaikan GEMINI.md: bagian Format dan Visual mengikuti jawabanku; bagian lain (fakta, audio, output, keamanan) biarkan.
- Tunjukkan ringkasan perubahan dan tunggu "oke" dariku sebelum menyimpan.
## Channel
- Nama: [NAMA CHANNEL] · handle: [@handle] · hashtag utama: [#hashtag]
- Janji channel: [Tiap hari, satu ... yang ...]
- Bahasa: [bahasa] · penonton: [usia, negara, kenapa mereka menonton]
- Platform & akun: [YouTube Shorts @..., TikTok @..., Instagram @...]
- Jam tayang: [19.00] [zona waktu], [1] video per hari
## Pilar topik
1. [pilar 1] — contoh: [...]
2. [pilar 2] — contoh: [...]
3. [pilar 3] — contoh: [...]
4. [pilar 4] — contoh: [...]
## Format
- Pendek ("Kilat"): [20–30] dtk, VO [55–60] kata
- Panjang ("Cerita"): [50–60] dtk, VO [105–115] kata · maksimal [2] per minggu
- Kecepatan baca suara: [2,1] kata/detik (ukur dari VO pertama)
## Suara
- Nada: [teman yang penasaran / narator dokumenter / ...]
- Sumber suara: [rekam sendiri / ElevenLabs voice ... / Gemini TTS suara ... / Edge TTS id-ID-...]
- CTA khas: [contoh: "Komen satu kata"]
## Gaya visual
- Gambar: [foto realis hangat / render 3D bersih / ilustrasi ...]
- Latar terang: [kertas putih grain / putih polos / ...] · latar gelap: [...]
- Font judul/kata kunci: [...] · font kalimat & subtitle: [...] · font label: [...]
- Warna aksen (highlight): [#HEX] · warna teks: [#HEX]
- Elemen tetap: [watermark kiri atas, sonic logo, label tahun/tempat, end card dengan pilihan jawaban]
## Dilarang
- [efek, font, kata, atau topik yang tidak boleh muncul]
# Aturan produksi (selalu berlaku)
Identitas channel (niche, pilar, gaya, suara, akun) ada di channel.md. Baca channel.md di awal setiap tugas.
Bahasa naskah, caption, dan laporan: sesuai channel.md.
## Format
- Durasi & jumlah kata: sesuai channel.md (default: pendek 20–30 dtk / 55–60 kata, panjang 50–60 dtk / 105–115 kata).
- Kanvas 1080×1920, 30 fps. Area aman teks: x 60–960, y 300–1500. Subtitle VO di bawah, y 1380–1560.
- Struktur naskah: hook (0–2 dtk) → konteks → ketegangan → twist → payoff yang nyambung ke penonton → CTA satu interaksi gampang.
- Fakta: tiap klaim punya sumber (link). Klaim satu sumber / legenda diberi hedge ("konon", "disebut-sebut"). Jangan mengarang angka.
## Visual
- Tiga peran font saja: judul/kata kunci, kalimat/subtitle, label kecil (lihat channel.md). Hindari font script/italic yang sulit dibaca di HP.
- Penekanan = satu cara yang konsisten (default: blok highlight warna aksen di belakang teks), maksimal 1 per frame.
- Teks layar hanya kalau perlu (±30–40 % scene). Subtitle VO penuh di bawah.
- Gambar: stok dulu (Pexels, portrait). Generate hanya yang tidak ada. Footage video maks 1–2 shot (≤ 15 % durasi). Tanpa video AI kecuali diminta.
- Gerak tangan/orang/benda = stop-motion 3–6 PNG pose, bukan video AI. Cutout harus rapi (cek di latar magenta dan hitam).
- Tidak ada logo/merek asli atau tulisan palsu di gambar AI. Adegan sejarah/peristiwa buatan AI diberi label kecil "ILUSTRASI".
## Audio
- VO jelas di atas musik. Tanpa bed kresek/hiss sepanjang video; cukup musik + SFX aksen.
- Master: −14 LUFS, true peak ≤ −1.5 dBTP.
## Output & kebersihan
- File akhir: H.264 High, 1080×1920, 30 fps, ≤ 10 Mbps, AAC 192k 48 kHz, faststart → konten/HXX-slug/05-render/HXX_final.mp4.
- Setelah final jadi, hapus cache build (node_modules, .hyperframes, raw render, snapshots).
- Render satu video dalam satu waktu.
## Keamanan
- Jangan posting/menjadwalkan, membeli, login, mengisi password, atau menghapus apa pun di luar folder proyek tanpa izin.
Mulai dari pertanyaan, bukan dari gambar
Video yang paling jalan dimulai dari pertanyaan yang pernah terlintas di kepala penonton. Gambar baru dicari setelah naskah dan fakta beres.
Ide & kalender 30 hari
Agen menyusun 30 ide dari pilar di channel.md, lengkap dengan hook, format, dan sumber yang bisa dicek. Pilar diseimbangkan tiap minggu supaya feed tidak monoton.
contohDi studi kasus, ide terbaik berbentuk "kenapa X begini?": kenapa huruf F dan J ada tonjolannya, kenapa ikon telepon masih berbentuk gagang, kenapa semua air mineral disebut Aqua.
Baca channel.md, lalu susun kalender konten 30 hari untuk channel ini. Untuk setiap ide beri: - ID (H01…H30) dan tanggal tayang (mulai [TANGGAL], jumlah per hari dan jam sesuai channel.md) - pilar (dari channel.md) dan format (pendek/panjang) - judul ≤ 60 karakter, hook 0–2 dtk (kalimat pertama VO), dan kalimat CTA - 2–3 sumber kredibel yang bisa dicek (link), plus risiko fakta: rendah / sedang / tinggi Aturan: - Seimbangkan pilar tiap minggu; batas format panjang per minggu sesuai channel.md. - Topik harus terasa dekat dengan penonton di channel.md. - Tandai ide yang faktanya cuma legenda atau satu sumber. - Jangan ulang topik yang sudah ada di folder konten/. Simpan sebagai kalender.md (tabel) di root workspace.
Naskah + tabel fakta
Batas kata itu kunci. Ukur dulu kecepatan bicara suaramu (kata per detik), lalu kunci jumlah kata per format. Setiap klaim masuk tabel fakta dengan link. Klaim yang cuma punya satu sumber boleh dipakai, asal diberi hedge.
contohNaskah format pendek dari studi kasus. Hook di baris 1, twist di baris 7, CTA satu kata.
Tulis naskah VO untuk [HXX – judul] dari kalender.md. Ikuti channel.md (bahasa, nada, format, CTA khas). Format: [pendek / panjang] — jumlah kata sesuai channel.md. Hitung kata dan perkiraan durasinya (pakai kecepatan baca di channel.md). Struktur: hook (≤ 2 dtk, bikin penasaran) → konteks → ketegangan/kegagalan → twist → payoff yang nyambung ke hidup penonton → CTA satu interaksi. Gaya: kalimat pendek, bahasa lisan, satu kalimat per baris. Lalu buat tabel "Fakta yang harus dicek": klaim | status (terverifikasi / satu sumber / opini) | link sumber. - Klaim satu sumber → beri hedge di naskah. - Jangan mengarang angka; kalau ragu, bulatkan dan beri hedge. Tambahkan "Catatan baca" untuk kata yang perlu ejaan fonetik (singkatan, nama asing, angka). Simpan ke konten/[HXX-slug]/00-naskah/naskah.md.
Baca tabel fakta sendiri sebelum lanjut. Agen bisa salah kutip angka atau tahun. Di studi kasus, satu hook diganti dari "hampir 100 tahun" ke "lebih dari seratus tahun" setelah tahunnya dihitung ulang.
Storyboard scene-by-scene
Storyboard adalah kontrak antara naskah dan build. Setiap 1,2–3 detik ada cut, dan tiap scene sudah jelas visualnya, gerak kameranya, teks layarnya, dan SFX-nya. Di sini juga ditulis kata kunci stok dan prompt cadangan untuk gambar AI.
| # | Waktu | VO | Visual | Teks layar |
|---|---|---|---|---|
| S01 | 0,0–1,9 | "HP-mu tidak punya gagang." | Kertas grain, kalimat diketik, kursor berlabel | HP-mu tanpa… |
| S02 | 1,9–4,3 | "Tapi ikon teleponnya masih begini." | HP di meja kayu, ikon hijau muncul di "begini" | — |
| S03 | 4,3–5,7 | "Ini gagang telepon" | Ikon membesar, label U+1F4DE | gagang telepon |
contohTiga baris pertama dari 13 scene, plus kolom kamera dan SFX di storyboard aslinya.
Dari konten/[HXX-slug]/00-naskah/naskah.md, buat storyboard scene-by-scene di 00-naskah/storyboard.md. Ikuti gaya visual di channel.md. Kalau channel punya lebih dari satu gaya, pilih satu dan jelaskan alasannya. Tabel per scene: # | waktu (cut tiap 1,2–3 dtk) | potongan VO | visual | kamera/gerak | teks layar (kata kunci tebal = penekanan) | SFX/musik. Setelah tabel: - "Prompt gambar": per shot tulis dulu kata kunci stok (Pexels, portrait), lalu prompt cadangan bahasa Inggris untuk generator gambar (sesuai gaya di channel.md, selalu diakhiri "vertical 9:16, no text, no logos"). - Tandai shot stop-motion (3–6 pose) dan shot cutout. - "Suara": cue musik (masuk/turun/berhenti) dan SFX per scene. - "Meta posting": judul ≤ 60 karakter, caption 2–3 kalimat + pertanyaan, 6–7 hashtag (hashtag utama dari channel.md pertama). Patuhi GEMINI.md: teks hanya di scene yang perlu, maks 1 penekanan per frame, semua teks di area aman.
Suara dulu, gambar ikut suara
Semua waktu di video dikunci ke VO. Jadi VO dibuat sebelum build, lalu tiap kata diberi timestamp. Timestamp ini yang menggerakkan cut, penekanan, dan subtitle.
Voice over
Pilih satu sumber suara dan pakai terus, karena suara yang konsisten jadi ciri channel. Mesin TTS sering salah baca singkatan dan angka, jadi teksnya disiapkan dulu dengan ejaan fonetik.
| Ditulis di naskah | Ditulis di teks TTS |
|---|---|
| KRL · HP · ATM | ka-er-el · ha-pe · a-te-em |
| 1925 | seribu sembilan ratus dua puluh lima |
| nama asing yang sering salah | tulis seperti dibaca |
Siapkan teks TTS untuk VO konten/[HXX-slug]. Sumber suara: lihat channel.md.
1. Ambil naskah VO dari 00-naskah/naskah.md, satu kalimat per baris.
2. Buat versi baca-mesin di file terpisah 03-audio/vo/tts.txt (naskah asli JANGAN diubah):
- angka & tahun ditulis kata
- singkatan dieja seperti diucapkan ("KRL" → "ka-er-el")
- nama asing ditulis seperti dibaca
3. Beri baris kosong di tempat yang butuh jeda.
4. Tulis daftar kata yang harus kudengar ulang setelah VO jadi.
Kalau channel.md memakai Edge TTS, jalankan (ganti suara sesuai channel.md):
edge-tts --voice [id-ID-ArdiNeural] --rate=+4% --file 03-audio/vo/tts.txt --write-media 03-audio/vo/vo_raw.mp3
Gemini TTS di Google AI Studio: tempel teks, pilih suara, lalu tambah instruksi gaya sesuai nada di channel.md (misal "narator hangat, tempo agak cepat, jelas").
Rekam sendiri di HP, di ruangan tertutup, lalu bersihkan di Adobe Podcast Enhance. Suara asli juga paling dipercaya penonton.
Browser agent bisa menempel teks ke situs TTS dan menekan Generate. Tetap dengarkan sendiri sekali sebelum lanjut. Di studi kasus, angka romawi "IV" terbaca "empat" dan ada satu gumaman yang harus dipotong.
Rapikan & sinkron VO
Jeda panjang dipangkas, tempo dinaikkan sedikit (maks 1,06×), lalu faster-whisper membuat words.json: waktu mulai & selesai tiap kata. Ejaan tetap diambil dari naskah, jadi salah dengar Whisper tidak muncul di subtitle.
Rapikan VO di konten/[HXX-slug]/03-audio/vo/.
1. Jalankan:
ffmpeg -i vo_raw.mp3 -af "silenceremove=start_periods=1:start_threshold=-45dB:stop_periods=-1:stop_duration=0.22:stop_threshold=-42dB:stop_silence=0.22,atempo=1.04" vo_final.mp3
2. Cek durasi terhadap batas di channel.md. Kalau lebih, JANGAN naikkan atempo di atas 1.06 — usulkan kata yang bisa dibuang.
3. Buat words.json (timestamp per kata) dengan faster-whisper: model "small", bahasa sesuai channel.md, word_timestamps=True.
Format: [{"w": "kata", "s": 0.00, "e": 0.31}, ...]. Pakai ejaan dari naskah asli, bukan hasil dengar Whisper.
4. Laporkan durasi, jumlah kata, dan kata yang timestamp-nya meragukan.
Stok dulu, generate belakangan
Foto asli lebih dipercaya dan gratis. Gambar AI hanya dipakai untuk yang memang tidak ada di stok: adegan masa lalu, benda yang harus sama di beberapa shot, atau komposisi yang dibutuhkan cerita.
Stok dulu
Untuk tiap shot, agen mencari kata kunci dari storyboard dengan filter Portrait, mengunduh 1–2 kandidat, dan mencatat sumbernya. Video stok boleh, tapi maksimal 1–2 shot supaya gaya tetap konsisten.
Cari stok gambar untuk konten/[HXX-slug] berdasarkan storyboard.md (bagian "Prompt gambar"). Untuk setiap shot yang punya kata kunci stok: 1. Buka pexels.com di browser, cari kata kuncinya dengan filter Orientation: Portrait (foto; atau video kalau shot-nya video). 2. Pilih 1–2 kandidat yang cocok isi & eranya, tanpa logo/merek terbaca, tanpa wajah yang menyesatkan. 3. Unduh ukuran besar (≥ 1800 px) ke 01-gambar/stok/ dengan nama [SHOT]_a.jpg / _b.jpg (video: .mp4, maks 1–2 shot). 4. Catat di 01-gambar/stok/SOURCES.txt: nama file | URL halaman | nama fotografer. 5. Buat contact sheet kandidat per shot di 06-qc/stok_sheets/ supaya aku bisa memilih. Shot yang tidak ketemu → tulis daftar "perlu generate" untuk langkah berikutnya. Hanya unduh dari situs stok berlisensi bebas.
Generate yang kurang
Kami pakai Google Flow dengan model Nano Banana, rasio 9:16, dua hasil per prompt. Prompt-nya dalam bahasa Inggris, gayanya mengikuti channel, dan selalu diakhiri no text, no logos. Kalau satu benda atau tokoh muncul di beberapa shot, hasil pertama dipakai sebagai referensi supaya bentuknya konsisten.
[Photorealistic 3D render / Documentary photo / Flat illustration] of [subjek + detail penting], [tempat & era], [arah cahaya + suasana], [jarak kamera: close-up / medium / wide], shallow depth of field, [kata kunci gaya dari channel.md], vertical 9:16, no text, no numbers, no letters, no logos Contoh (studi kasus): Photorealistic 3D render of a classic black glossy desk telephone from the mid twentieth century resting on a white lace doily on a wooden side table, the curved handset sitting in its cradle, coiled cord, warm late afternoon window light from the left, cosy home interior softly out of focus, shallow depth of field, cinematic, vertical 9:16, no text, no numbers, no letters, no logos
Generate gambar yang belum ada untuk konten/[HXX-slug] di Google Flow (labs.google/flow) atau generator di channel.md. Daftar shot: "perlu generate" dari langkah stok; prompt-nya ada di storyboard.md. Pengaturan: rasio 9:16, 2 hasil per prompt. Aturan: - Maksimal 3 prompt per putaran. Tunggu selesai baru lanjut. Kalau muncul pesan "terlalu banyak permintaan", tunggu 1–2 menit lalu ulangi. - Benda/tokoh yang muncul di beberapa shot: tambahkan hasil pertama sebagai referensi supaya konsisten. - Tolak hasil dengan tulisan palsu, logo, wajah aneh, tangan cacat, atau era yang salah — ulangi prompt-nya. - Simpan ke 01-gambar/ai/[SHOT]_a.jpg dan _b.jpg; perbesar ke 1080×1920 (Lanczos) + grain tipis. - Buat contact sheet 06-qc/ai_sheet.jpg. Laporkan shot yang masih bermasalah.
Browser agent mengetik prompt, memilih rasio, dan menekan Generate. Kalau browser memblokir unduhan dari situs generator, minta agen berhenti setelah generate, lalu unduh sendiri dari hasilnya dan beri nama sesuai shot.
Cutout & stop-motion
Gerakan tangan, orang, atau benda tidak dibuat dengan video AI. Kami pakai 3–6 PNG pose yang diganti cepat (8–12 fps), seperti stop-motion. Hasilnya lebih rapi dan tidak "meleleh". Setiap cutout dicek di atas latar magenta dan hitam supaya tepi kasar atau lubang langsung kelihatan.
Same [hand / person / object], same clothes, same lighting, same framing as the reference image. Only one change: [gerakan kecil untuk pose ini]. [Gaya dari channel.md], plain light grey studio background, vertical 9:16, no text, no logos.
Buat cutout dan siapkan stop-motion untuk konten/[HXX-slug]. 1. Tiap gambar bertanda "cutout" di storyboard: hapus latar dengan rembg (model isnet-general-use), buang bercak kecil, isi lubang tertutup, kikis tepi 1 px, haluskan 1,2 px. Simpan PNG ke 02-layer/. 2. Buat 06-qc/cutout_qc.jpg: tiap cutout ditampilkan di atas latar magenta dan hitam, diberi label nama file. 3. Shot stop-motion: pastikan ada 3–6 pose dengan subjek, baju, cahaya, dan framing yang sama; hanya posisinya yang berubah. Kalau pose kurang, tulis prompt pose tambahan dengan pose 1 sebagai referensi. 4. Laporkan cutout yang tepinya kasar atau berlubang supaya aku cek manual.
Satu gaya, dikunci di aturan
Supaya 30 video terasa satu channel, gaya visual ditulis sebagai aturan dan dicek tiap video. Build-nya pakai HyperFrames: video ditulis sebagai HTML lalu dirender jadi MP4. Agen bisa mengubah satu angka dan merender ulang tanpa membuka editor video.
Kunci gaya visual
Gaya yang kuat datang dari sedikit aturan yang konsisten, bukan dari banyak efek. Tentukan di channel.md:
- Tiga peran font: judul/kata kunci, kalimat/subtitle, label kecil. Tidak lebih.
- Satu cara penekanan (misal blok warna aksen di belakang teks), maksimal satu per frame.
- Satu latar khas untuk kartu teks (tekstur kertas, warna polos, atau foto blur).
- Elemen tetap: watermark, label tempat/tahun, end card dengan pilihan jawaban.
- Daftar larangan yang ditulis eksplisit, supaya agen tidak "berkreasi" di luar gaya.
#F7E733. Font italic dicoret karena sulit dibaca di HP.Periksa storyboard dan build konten/[HXX-slug] terhadap gaya visual di channel.md dan aturan di GEMINI.md. Buat daftar pelanggaran per scene: - font di luar tiga font channel, atau font yang dilarang - lebih dari 1 penekanan dalam satu frame - teks di luar area aman (x 60–960, y 300–1500) atau bertabrakan dengan subtitle (y 1380–1560) - teks layar yang sebenarnya tidak perlu - apa pun yang ada di daftar "Dilarang" di channel.md - logo/merek asli atau tulisan palsu di gambar AI; adegan peristiwa buatan AI tanpa label "ILUSTRASI" Untuk tiap pelanggaran usulkan perbaikan, lalu tunggu persetujuanku sebelum mengubah.
Build di HyperFrames
Storyboard diterjemahkan jadi 07-skrip/storyboard.py (SPEC: shot, gambar, caption, SFX, musik, subtitle). prep_house.py menyiapkan aset (grading, cutout, transisi, audio), lalu build_house.py menulis proyek HyperFrames. Sebelum render, ambil snapshot tiap scene dan lihat dulu.
Skrip di starter kit sudah netral. Yang perlu kamu ganti hanya: warna di scripts/house_common.py (blok channel palette), _brand/watermark.svg, nama & handle di SPEC cta, dan sonic logo di _library/sfx/sonic_logo.wav (atau matikan dengan "sonic_logo": None).
Bangun video konten/[HXX-slug] dengan HyperFrames memakai skrip di scripts/.
1. Salin scripts/house_storyboard.example.py ke konten/[HXX-slug]/07-skrip/storyboard.py, lalu isi SPEC dari storyboard.md:
gambar, shots (waktu dari 03-audio/vo/words.json), caption + penekanan, label, cta (mark/handle dari channel.md), sfx, musik,
dan "subs": {"text": [kalimat-kalimat VO dari naskah]}.
Kalau gaya di channel.md beda dengan contoh (font, warna), sesuaikan SPEC dan palet di scripts/house_common.py — tanyakan dulu sebelum mengubah skrip.
2. Jalankan: python scripts/prep_house.py konten/[HXX-slug] lalu python scripts/build_house.py konten/[HXX-slug]
3. Lihat 06-qc/cutout_qc.jpg dulu. Di 04-hyperframes/: npx hyperframes check --json (perbaiki semua error),
lalu snapshot satu frame per scene ke 06-qc/snaps/ dan tunjukkan padaku.
4. Render hanya setelah aku bilang OK:
npx hyperframes render -q delivery -w 2 -o ../05-render/[HXX]_raw.mp4
Render satu video saja dalam satu waktu (boros RAM); tutup tab Chrome yang tidak dipakai saat render.
Pakai storyboard yang sama di CapCut Desktop: tarik VO ke timeline, potong gambar sesuai kolom waktu, tambah teks dengan font & warna channel, lalu nyalakan auto caption. Lebih lambat dan kurang presisi, tapi aturan gayanya tetap bisa diikuti.
Render pernah dimatikan sistem karena RAM habis (Chrome + server preview lama). Render satu per satu. Kalau render mati, cek dulu apakah file raw-nya sebenarnya sudah utuh (jumlah frame = durasi × 30) sebelum mengulang dari awal.
QC & file final
Sebelum diunggah, setiap video lewat dua cek: visual lewat contact sheet 12 frame, dan audio lewat ukur loudness. Setelah itu baru di-encode ke spesifikasi Reels/Shorts/TikTok, dan semua cache build dihapus.
| Spesifikasi final | Nilai |
|---|---|
| Video | H.264 High L4.2 · 1080×1920 · 30 fps · CRF 18 · maks 10 Mbps · BT.709 |
| Audio | AAC 192 kbps · 48 kHz stereo · −14 LUFS · true peak ≤ −1.5 dBTP |
| File | 05-render/HXX_final.mp4 · faststart · durasi sesuai format di channel.md |
Finalkan konten/[HXX-slug]: 1. Buat contact sheet 12 frame dari 05-render/[HXX]_raw.mp4 → 06-qc/contact.jpg dan periksa: semua scene ada, subtitle terbaca, tidak ada frame hitam atau teks terpotong. 2. Ukur loudness (ffmpeg ebur128). Normalisasi dua tahap ke −14 LUFS (loudnorm linear), lalu limiter supaya true peak ≤ −1.5 dBTP. 3. Encode final: H.264 High L4.2, 1080×1920, 30 fps, CRF 18, -maxrate 10M -bufsize 20M, AAC 192k 48 kHz stereo, tag BT.709, -movflags +faststart → 05-render/[HXX]_final.mp4 (atau jalankan: python scripts/finalize_house.py konten/[HXX-slug]) 4. Verifikasi dengan ffprobe (resolusi, fps, durasi, true peak). Kalau lolos, hapus raw render, node_modules, .hyperframes, dan folder snapshot. Laporkan loudness, true peak, durasi, dan ukuran file.
Jadwalkan, lalu baca datanya
Produksi berjalan lebih cepat dari jadwal tayang. Di studi kasus, 2 video diproduksi tiap malam dan 1 tayang tiap hari, jadi stok selalu cukup untuk minimal seminggu ke depan.
Caption & meta.json
Semua data posting disimpan di meta.json, jadi penjadwalan tinggal membaca file tanpa mengetik ulang. Caption menjelaskan sedikit lebih banyak dari video, lalu ditutup pertanyaan yang sama dengan CTA.
Tulis konten/[HXX-slug]/meta.json dari storyboard.md (bagian "Meta posting") dan channel.md: - id, title (≤ 60 karakter, tanpa clickbait yang tidak dibuktikan video) - caption (2–3 kalimat + 1 pertanyaan yang sama dengan CTA video), dalam bahasa channel - tags (6–7; hashtag utama channel pertama, #shorts terakhir) - publish_at: hari setelah publish_at terakhir di meta.json lain yang sudah terjadwal, jam tayang dari channel.md (dengan zona waktu) - platforms: dari channel.md - isAiGenerated: [true/false sesuai aturan label AI tim] - sources: link dari tabel fakta - file: "05-render/[HXX]_final.mp4" Cek: caption tidak boleh mengklaim hal yang tidak ada di tabel fakta.
Jadwalkan posting
Di setup kami, agen browser mengisi form Repliz: unggah video, tempel caption, pilih akun channel, set jam tayang, lalu Save. Satu form untuk tiga platform. Di Antigravity alurnya sama. Bedanya, unggah file paling aman dilakukan manusia (drag file ke kotak upload) dan klik Save menunggu "oke" darimu.
Jadwalkan konten/[HXX-slug] di Repliz (repliz.com/user/schedule) memakai browser. Semua data dari meta.json; akun dari channel.md. 1. Pastikan sudah login. Kalau yang muncul halaman login: BERHENTI dan minta aku login — jangan pernah mengisi password. 2. New schedule → Create Schedule → tab Video. 3. Video: minta aku men-drag 05-render/[HXX]_final.mp4 ke kotak upload, lalu tunggu thumbnail muncul. 4. Deskripsi: caption + baris kosong + hashtag. Akun: HANYA akun yang tercantum di channel.md — jangan pilih akun lain. Title (khusus YouTube): title + " #shorts". 5. Set all times → Date & time = publish_at → Apply to all. 6. Cek sebelum Save: YouTube Public, Automation OFF, Post as Draft OFF, label AI sesuai isAiGenerated. 7. Tunjukkan ringkasan form padaku dan tunggu "oke" sebelum klik Save. 8. Setelah tersimpan, cek kalender: jumlah post di tanggal itu = jumlah akun. Lalu tulis "scheduled": true ke meta.json. Kalau aku tidak pakai Repliz, lakukan hal yang sama di YouTube Studio, TikTok Studio, dan Meta Business Suite satu per satu.
Semua platform punya jadwal bawaan gratis: YouTube Studio (Upload → Visibility → Schedule), TikTok Studio di web, dan Meta Business Suite untuk Instagram & Facebook. Lebih banyak klik, tapi tanpa langganan.
YouTube dan TikTok meminta penanda untuk konten realistis buatan AI. Tentukan aturan tim (simpan di isAiGenerated) dan baca kebijakan terbaru tiap platform.
- Sesi tool penjadwal kedaluwarsa (logout sendiri). Agen tidak boleh login, jadi jadwal tertunda sampai ada orang yang login.
- Tool upload agen biasanya dibatasi sekitar 10 MB per file, padahal video final 30–65 MB. Karena itu file diunggah manusia.
Ritme harian & evaluasi
Kami menjalankan produksi otomatis tiap malam: dua konten berikutnya dikerjakan dari langkah 06 sampai 12, lalu laporannya dikirim. Di Antigravity, cukup jalankan /produksi-harian tiap malam. Kalau mau benar-benar otomatis, pakai penjadwal sistem operasi (Task Scheduler / cron) untuk menjalankan agen versi CLI.
| Aturan ritme | Kenapa |
|---|---|
| Produksi lebih cepat dari tayang (misal 2/malam vs 1/hari) | Stok bertambah, jadi satu malam gagal tidak bikin hari kosong. |
| Stok minimal 7 hari | Ada waktu memperbaiki video yang lolos QC tapi terasa kurang. |
| Baca laporan tiap pagi | Di studi kasus, satu sesi agen menunggu jawaban selama 8 hari dan produksi berhenti diam-diam. |
| Evaluasi tiap ±2 minggu | Setelah ±14 video, data cukup untuk memilih topik & hook berikutnya. |
Produksi harian channel di channel.md. Kerjakan 2 konten berikutnya yang sudah punya 03-audio/vo/vo_final.mp3 tapi belum punya 05-render/*_final.mp4 (urut ID). Untuk tiap konten, jalankan berurutan: /06-stok → /07-generate → /08-cutout → /10-build → /09-cek-gaya → render → /11-final → /12-meta. Aturan: - Cek dulu apa yang sudah ada; kerjakan hanya langkah yang belum (run sebelumnya mungkin berhenti di tengah). - Render satu per satu. Kalau satu langkah gagal, catat lalu lanjut ke konten berikutnya. - Tanpa generator berbayar, tanpa VO baru, tanpa login ke situs mana pun. Di akhir tulis laporan singkat: per konten final ok/gagal, durasi, loudness, hal yang perlu kucek, dan slot tayang berikutnya. Penjadwalan pakai /13-jadwal setelah aku cek hasilnya.
Ini data performa [periode] dari YouTube Studio, TikTok Studio, dan Instagram Insights (CSV/screenshot terlampir). 1. Gabungkan per video (ID HXX dari judul): views, rata-rata durasi tonton / % ditonton, like, komentar, share, save, follower baru. 2. Hitung retensi 3 detik pertama (kalau tersedia), komentar per 1.000 views, dan peringkat per pilar & format (pendek vs panjang). 3. Cari pola: hook seperti apa yang menahan penonton, topik mana yang memancing komentar, gaya mana yang lebih kuat. 4. Rekomendasikan 10 ide berikutnya (format sama dengan kalender.md) + 3 hal yang perlu diubah di channel.md (naskah, gaya, atau jam tayang). Tandai kesimpulan yang datanya masih tipis (video < 1.000 views).
Shorts Playbook · disusun dari produksi nyata sebuah channel Shorts faceless (Nov 2026). Ganti semua [placeholder] lewat langkah 0, dan sisanya mengikuti channel-mu.