
Konsep MLflow di MotionMind Studio: Setiap Render Adalah Eksperimen
Experiment, run, parameter, metrik, artefak, dan model registry: bagaimana ide MLflow menjadi cara MotionMind Studio mencatat, membandingkan, dan mem-promote setiap render.
Segera rilis ·
Tutorial lengkap dari satu rekaman suara sampai video Reels 9:16 dengan lip-sync, karikatur, 249 SFX, dan thumbnail poster, memakai Claude Code, skill MotionMind SkillFull, dan MotionMind Studio.

Desfina adalah karakter 2D yang membawakan cerita bisnis dalam video Reels: kenapa Blockbuster menertawakan Netflix, bagaimana Aqua lahir dari ide yang dianggap gila, sampai kisah kakak-adik pendiri Adidas dan Puma. Sampai sekarang sudah ada 12 video, masing-masing sekitar satu menit, dan semuanya dibuat dengan cara yang sama: satu file voice over masuk, satu video jadi keluar.
Animasinya tidak dibuat di After Effects. Kami memberi brief ke AI agent (Claude Code) yang sudah dibekali skill MotionMind SkillFull. Agent itu menulis kode animasinya, menyamakan timing dengan suara, menata SFX, me-render MP4, lalu membuatkan thumbnail. Di artikel ini kami bongkar seluruh prosesnya langkah demi langkah, supaya kamu bisa membuat seri karakter versimu sendiri.
Tonton dulu salah satu hasilnya:
Desfina — Blockbuster Menertawakan Netflix. 61,9 detik, 1080×1920, 12 scene, 249 SFX, dibuat dari satu file voice over.
| Alat | Fungsinya | Keterangan |
|---|---|---|
| AI agent | Mengerjakan semua langkah di folder proyek | Kami memakai Claude Code. Agent lain yang bisa membaca skill juga bisa. |
| Skill MotionMind SkillFull | Cara kerja sutradara motion: perencanaan, animasi, timing narasi, sound design, render lokal | Beli di Agensi (USD) atau versi Indonesia (Rupiah) |
| MotionMind CLI & Studio | Workspace, cek komputer, catatan versi, perbandingan render | Gratis dan open source: npm i -g motionmind |
| Node.js 22+, Python 3, ffmpeg | Render frame, olah audio, encode MP4 | Playwright (Chromium) dipakai untuk mengambil frame |
| Voice over | Naskah yang sudah direkam, format WAV | Rekaman sendiri atau TTS, sekitar 45–75 detik |
Semua render berjalan lokal di komputermu. Ini bukan video AI generatif yang hasilnya acak. Setiap frame digambar oleh kode, jadi hasilnya bisa diulang persis sama dan bisa direvisi bagian per bagian.

Experiment, run, parameter, metrik, artefak, dan model registry: bagaimana ide MLflow menjadi cara MotionMind Studio mencatat, membandingkan, dan mem-promote setiap render.

Kenapa kami membuat skill agent, CLI, dan Studio lokal untuk membuat video dengan AI agent yang sudah Anda pakai, dan cara membuat video pertama Anda.
Mulai dengan MotionMind sekarang, rekam setiap iterasi bersama AI agent Anda.

Dari voice over ke video jadi. Kamu cukup memberi VO, mengecek hasil, dan meminta revisi.
Karakter dibuat sekali di awal (langkah 1). Setelah itu, setiap video baru cukup mengulang langkah 2 sampai 8. Agent menyalin proyek video terakhir sebagai template, jadi renderer, caption, efek, dan pengaturan mix tidak perlu dibuat ulang.
1. Pasang skill MotionMind SkillFull. Setelah membeli, ikuti petunjuk instalasi dari toko. Untuk Claude Code, folder skill berada di ~/.claude/skills/. Buka Claude Code, lalu tanyakan "skill apa saja yang tersedia?" untuk memastikan skill-nya terbaca.
2. Pasang MotionMind dan buat workspace.
npm i -g motionmind
motionmind setup studio-desfina
cd studio-desfina
motionmind doctor
doctor mengecek Node, ffmpeg, dan kebutuhan lainnya. Pastikan semua baris bertanda ✓ sebelum lanjut.
3. Buka Studio di terminal terpisah dan biarkan tetap berjalan:
motionmind ui
Studio terbuka di http://127.0.0.1:4310. Di sinilah nanti setiap versi video dicatat, diputar, dan dibandingkan.
Kunci seri yang konsisten adalah karakter yang dibuat sebagai kode, bukan gambar datar. Desfina dibuat sebagai SVG berlapis. Setiap bagian punya id sendiri (hair-back, head, eye-l, eye-r, brow-l, mouth, arm-r, hand-r), jadi bisa digerakkan satu per satu: kedip, melirik, mengangguk, menunjuk, dan berbicara.

Character sheet Desfina: 7 ekspresi, 5 bentuk mulut untuk lip-sync, palet warna, dan foto profil. Semuanya dari satu generator.
Contoh prompt untuk membuat karakter:
Buatkan karakter 2D flat vector perempuan bernama Desfina untuk konten bisnis. Rambut panjang hitam, blazer teal, aksen emas. Buat sebagai SVG dengan layer terpisah untuk rambut, kepala, mata, alis, mulut, dan lengan. Sertakan 7 ekspresi (senang, yakin, ngobrol, kaget, mikir, wink, ketawa) dan 5 bentuk mulut untuk lip-sync (diam, E/I, A, O/U, senyum). Export character sheet, pose badan penuh, dan foto profil.
Setelah kamu memilih versi favorit, minta agent mencatatnya di TASTE.md proyek: palet, font, gaya, posisi karakter, dan aturan caption. File ini dibaca agent setiap kali memulai video baru, jadi gayanya tidak berubah-ubah walaupun chat-nya berbeda.
Rekam naskahmu dalam format WAV, lalu taruh di folder topik, misalnya konten desfina/blockbuster/vo.wav. Beberapa tips:
Ini prompt yang benar-benar kami pakai untuk setiap video Desfina:
Lanjut sekarang buatkan konten yang mengikuti VO ini, buat animasi kaya sebelumnya, samakan branding nya ya Desfina hair, penuh dengan sound effect, transisi, kamera bergerak, keyframe, dan sebagainya. Jika tidak tahu apa yang dibahas kamu bisa riset dulu, apalagi ada brand-nya. Kalau perlu menampilkan wajah karakter yang lagi dibahas juga gpp, jadiin versi animasi muka dia. Export ke folder yang sama. Jangan lupa buatkan thumbnail-nya juga.
Prompt-nya pendek karena aturan mainnya sudah ada di skill dan di TASTE.md. Setelah menerima brief ini, agent akan:
Agent mentranskrip VO secara lokal dengan faster-whisper, sehingga setiap kata punya detik mulai dan selesai. Hasil transkrip selalu dicek ulang. Contohnya, "Malah minggu" dibetulkan menjadi "Malam minggu", dan awal kata yang meleset digeser sesuai energi suara.
Dari kata-kata itu, agent menyusun satu file pusat: plan/beats.json.


Kata "menertawakan" mulai di detik 1,76. Angka yang sama memicu teks MENERTAWAKAN, guncangan kamera, dan SFX tawa.
{
"words": [{ "w": "menertawakan", "s": 1.76, "e": 2.5 }],
"events": { "tertawa": 1.76, "n50": 4.46, "whip1": 5.95 },
"fx": [{ "type": "shake", "t": 1.76, "dur": 0.5, "amp": 10 }],
"scenes": [{ "id": "hook", "start": 0, "end": 6.3 },
{ "id": "store", "start": 5.95, "end": 9.3 }]
}
Prinsipnya: visual dan suara membaca angka yang sama. Kalau VO direkam ulang, cukup perbarui beats.json, dan seluruh animasi serta SFX ikut bergeser.
Setiap scene adalah satu file JavaScript di src/scenes/. Rentang waktunya sengaja dibuat sedikit tumpang tindih supaya transisinya mulus: whip-pan dengan motion blur, iris, gelombang warna, atau wipe diagonal.
Video Blockbuster terdiri dari 12 scene. Setiap file menggambar satu bagian cerita.
Gerakannya memakai keyframe yang dihitung dari waktu, bukan dari frame sebelumnya. Contoh potongan dari scene ruang rapat:
camera(ctx, {
s: kf(t, [[28.4, 1.12], [29.2, 1, 'out5'], [E.tawa, 1.08, 'out']]),
x: kf(t, [[E.tahan - 0.2, 0], [E.tawa, -120, 'out']]),
});
slam(ctx, 'MENAHAN TAWA', 540, 380, t, E.tawa, { size: 100, rot: -3 });
stamp(ctx, 'DITOLAK', 560, 1180, t, E.ditolak, { rot: -12, size: 130 });
Karena setiap frame hanya bergantung pada waktu t, render ulang selalu menghasilkan gambar yang persis sama. Kamu juga bisa me-render potongan 5 detik saja untuk mengecek satu bagian.
Video bisnis lebih hidup kalau tokohnya muncul. Agent membuat satu generator karikatur (src/figure.js) dengan parameter rambut, kacamata, kumis, pakaian, pose, dan ekspresi, dengan gaya garis yang sama dengan Desfina.

Tirto Utomo, Djajadi Djaja, Gunpei Yokoi, Dassler bersaudara, John Antioco, serta Reed Hastings dan Marc Randolph. Semuanya dari generator yang sama.
Beberapa aturan yang kami pegang:
Mulut Desfina bergerak mengikuti suara. Script lip-sync membaca energi dan karakter suara di setiap frame, lalu memilih satu dari empat bentuk mulut di character sheet. Ditambah kedipan setiap sekitar 3 detik dan anggukan kecil saat bicara, karakternya terasa benar-benar sedang berbicara.

Setiap kotak di bawah adalah satu frame (1/30 detik). Warnanya menunjukkan bentuk mulut yang dipakai.
Sebelum render penuh, agent membuat contact sheet: puluhan frame kecil dalam satu gambar. Cara ini jauh lebih cepat daripada menonton video berulang-ulang, dan masalah tata letak langsung terlihat.

Contact sheet 23 detik pertama, satu frame setiap 0,4 detik.
Contoh masalah yang tertangkap lewat contact sheet di seri ini:
Di sinilah video terasa "mahal". Setiap gerakan penting punya suara: whoosh saat transisi, pop saat label muncul, stempel, uang, tawa kartun, dengung neon, sampai pesawat lewat. Video Blockbuster memakai 249 cue SFX, gabungan library SFX dan suara sintetis yang dibuat dengan kode.

Setiap garis kuning adalah satu SFX yang menempel di event animasi. Mix akhir tetap memberi ruang untuk suara narasi.
Aturan mix-nya:
Render memakai Playwright untuk menggambar setiap frame di Chromium, lalu ffmpeg menggabungkannya dengan audio menjadi MP4 1080×1920, 30 fps. Perintah lengkapnya dicatat di README.md setiap proyek, jadi kamu bisa me-render ulang kapan saja:
python scripts/build_beats.py
python scripts/lipsync.py
python scripts/mix.py --version 1
node src/render.js --fps 30 --out "konten desfina/blockbuster" --name "Desfina - Blockbuster v1" --audio cache/mix/mix_v1.wav
node src/render.js --page thumb.html --png --to .034 --out cache/thumb
Thumbnail tidak diambil dari potongan video. Ini pelajaran dari revisi kami sendiri: frame video terlihat datar kalau dijadikan cover. Setiap thumbnail didesain sebagai poster tersendiri, dengan stiker potongan tokoh, judul 3D, tekstur halftone atau koran retro, dan Desfina mengintip di pojok.

12 thumbnail poster seri Desfina. Karakter dan gayanya sama, tapi konsepnya berbeda di setiap video.
Begitu ada v2, v3, dan seterusnya, kamu perlu tahu versi mana yang terbaru dan apa bedanya. MotionMind mencatat setiap render sebagai versi yang dibekukan:
# pantau folder export, setiap MP4 baru otomatis tercatat
motionmind track "konten desfina/blockbuster" --campaign desfina/blockbuster
# atau catat satu file secara manual, lengkap dengan contact sheet-nya
motionmind log "Desfina - Blockbuster v1.mp4" --campaign desfina/blockbuster \
--version v1-blockbuster --sheet cache/sheet/s1.jpg --notes "render pertama"
Di Studio (motionmind ui), setiap versi bisa diputar, dilihat contact sheet dan loudness-nya, lalu dibandingkan berdampingan. Versi yang sudah disetujui bisa dipromosikan ke tahap produksi dengan motionmind promote.
Karena semuanya berupa kode, revisi bisa dilakukan per bagian tanpa mengulang dari nol. Contoh permintaan yang efektif:
Agent selalu menyimpan hasil revisi sebagai versi baru, jadi versi yang sudah kamu setujui tidak pernah tertimpa.
TASTE.md. Tanpa catatan gaya, setiap chat baru bisa menghasilkan gaya yang berbeda.Butuh beberapa jam untuk menyiapkan karakter dan video pertama. Setelah itu, setiap video baru tinggal mengirim satu VO dan satu prompt. Semua yang kamu lihat di artikel ini dibuat dengan alat yang sama:
npm i -g motionmind. Panduan lengkapnya ada di halaman Learn.Punya ide karakter atau topik bisnis yang ingin dianimasikan? Coba buat video pertamamu, lalu bandingkan setiap versinya di Studio.