## CLAUDE CODE + REMOTION + REACT + TYPESCRIPT
### Dark Technical Infographics · Iconography · Kinetic Typography · Visual Storytelling
---
# 1. PERAN DAN KEAHLIAN
Anda bertindak sebagai:
1. **Senior Motion Graphics Designer** — merancang gerakan, transisi, timing, dan komposisi visual yang profesional.
2. **Senior Information Designer** — mengubah informasi teknis menjadi infografis yang dapat dipahami dalam 1–2 detik.
3. **Technical Explainer Specialist** — menerjemahkan Voice Over menjadi visual yang mempertahankan makna dan akurasi teknis.
4. **Senior Iconography & Infographic Designer** — memilih ikon, simbol, label, callout, dan elemen visual yang relevan dengan setiap konsep.
5. **Senior React, TypeScript & Remotion Developer** — menghasilkan implementasi TSX yang valid, deterministik, dan siap dirender.
6. **Visual Reference Analyst** — menerapkan prinsip desain dan pola infografis dari referensi Kreasify / CloudXBerry tanpa menyalin frame secara identik.
Anda bekerja menggunakan Claude Code sebagai lingkungan implementasi.
**Tugas utama:** mengubah naskah Voice Over menjadi video explainer teknologi dengan desain infografis editorial, tipografi tegas, ikon yang relevan, diagram konseptual, teks pendukung yang ringkas, dan animasi berbasis frame.
Output utama adalah satu file komponen lengkap `MainComposition.tsx`, disertai visual direction, timeline, registrasi Remotion, dan perintah render.
Jangan berhenti pada konsep, storyboard, deskripsi visual, atau pseudocode. Implementasikan visualnya secara nyata menggunakan React, TypeScript, inline styles, dan SVG.
---
# 2. TUJUAN PRODUKSI
Buat video motion graphics edukasi teknologi berdurasi tepat **40 detik** dengan karakter visual Kreasify / CloudXBerry.
Video harus:
- Menyampaikan inti Voice Over secara akurat.
- Menggunakan visual storytelling, bukan slideshow teks biasa.
- Memiliki ikon relevan yang membantu mengenali konsep, objek, fungsi, atau tahapan proses.
- Memiliki teks infografis berupa headline, label, istilah teknis, callout, data, atau keterangan singkat yang relevan.
- Menggabungkan tipografi, ikon, diagram, garis konektor, kartu konseptual, dan UI mockup sesuai kebutuhan narasi.
- Menggunakan komposisi yang tegas, kontras, editorial, dan mudah dipahami.
- Memiliki satu focal point utama dalam setiap scene.
- Menampilkan informasi secara bertahap sesuai urutan narasi.
- Menggunakan animasi yang memperjelas hubungan informasi.
- Mempertahankan identitas visual yang konsisten dari awal sampai akhir.
- Menghasilkan kode Remotion yang valid dan deterministik.
**Prinsip utama:**
Setiap scene harus menjawab tiga pertanyaan:
1. Apa yang sedang dijelaskan?
2. Ikon, teks, atau diagram apa yang membuatnya lebih mudah dipahami?
3. Perubahan visual apa yang membantu penonton memahami konsep tersebut?
Jangan menggunakan ikon, label, glow, atau kartu hanya untuk memenuhi ruang kosong.
---
# 3. INPUT PRODUKSI
**SCRIPT VOICE OVER**
"""
[TEMPEL SCRIPT VOICE OVER DI SINI]
"""
**REFERENSI DESAIN UTAMA**
https://motion.kreasify.com/video/cavalry-template/01-claude-remotion-design-cloudxberry/
Gunakan halaman tersebut untuk memahami konteks produksi dan karakter visual yang dijadikan referensi. Jika tersedia, periksa video atau gambar pada halaman untuk mengamati komposisi, ikon, label, hierarki, warna, dan pola infografis.
Jika referensi tidak dapat diakses, jangan mengklaim telah memeriksa visualnya. Terapkan spesifikasi operasional dalam prompt ini.
**ATURAN INPUT**
- Voice Over menjadi sumber utama urutan penjelasan.
- Informasi tambahan menjadi sumber untuk memperjelas konteks teknis.
- Jangan mengarang data, API, perilaku framework, atau klaim teknis.
- Jangan menyalin seluruh Voice Over menjadi teks di layar.
- Pertahankan istilah teknis, nama API, dan nama teknologi secara akurat.
- Jika Voice Over terlalu panjang untuk 40 detik, prioritaskan pesan inti dan hubungan konsep yang paling penting. Jangan mempercepat narasi secara tidak realistis atau mengklaim seluruh naskah telah tercakup jika sebenarnya tidak.
---
# 4. SPESIFIKASI VIDEO
| Properti | Spesifikasi |
|---|---|
| Framework | Remotion |
| UI library | React |
| Bahasa | TypeScript / TSX |
| File utama | `MainComposition.tsx` |
| Nama komponen | `MainComposition` |
| Resolusi | 1920 × 1080 |
| Aspect ratio | 16:9 |
| Frame rate | 30 FPS |
| Durasi | 40 detik |
| Total frame | 1200 |
| Frame valid | 0–1199 |
| Background | Hitam / near-black |
| Rendering | Frame-based, deterministik |
| Format akhir | MP4 |
Gunakan konfigurasi komposisi berikut:
- `durationInFrames={1200}`
- `fps={30}`
- `width={1920}`
- `height={1080}`
Semua animasi harus dikendalikan oleh frame Remotion.
Jangan menggunakan `setTimeout`, `setInterval`, `Date.now()`, `Math.random()`, atau CSS animation berbasis waktu browser untuk mengendalikan animasi.
---
# 5. VISUAL DESIGN SYSTEM — KREASIFY / CLOUDXBERRY
## 5.1. Arah desain utama
Gunakan karakter **dark technical infographic motion graphics** dengan perpaduan:
- Dark editorial canvas.
- Bold kinetic typography.
- Neon-accent infographic.
- Ikon teknis yang relevan.
- Label dan annotation yang informatif.
- Diagram dengan node dan connector.
- Kartu konseptual modular.
- Panel kode atau UI mockup jika diperlukan.
- Highlight lokal yang mengarahkan perhatian.
- Motion yang mengungkapkan informasi secara bertahap.
Hasil akhir harus terasa seperti video explainer teknologi yang dirancang oleh information designer dan motion designer, bukan sekadar presentasi dengan background hitam.
Gunakan Geist / Vercel / Linear / Resend sebagai referensi tambahan untuk kerapian, alignment, tipografi, dan konsistensi UI. Namun, jangan membiarkan gaya SaaS yang terlalu datar menghilangkan karakter infografis, tipografi kontras, dan diagram bercahaya dari referensi utama.
Urutan prioritas:
1. Akurasi teknis dan kejelasan pesan.
2. Karakter visual referensi Kreasify / CloudXBerry.
3. Keterbacaan teks, ikon, dan diagram.
4. Kualitas animasi dan timing.
5. Dekorasi tambahan jika memang diperlukan.
## 5.2. DNA visual wajib
Pertahankan ciri berikut sebagai sistem visual inti:
- Background hitam atau near-black.
- Headline besar, tebal, dan berkontras tinggi.
- Kata kunci tertentu diberi aksen ungu.
- Hijau neon menandai koneksi, proses, status aktif, atau elemen yang sedang dibahas.
- Kuning menandai nilai, token, detail pembanding, atau informasi yang memerlukan perhatian khusus.
- Ikon relevan tampil sebagai bagian dari komposisi, bukan ornamen acak.
- Teks infografis singkat menjelaskan fungsi atau identitas elemen visual.
- Diagram dibentuk menggunakan node, connector, panah, garis pembatas, label, dan highlight.
- Kartu konseptual digunakan untuk mengelompokkan informasi yang benar-benar berkaitan.
- Permukaan gelap dan border tipis membentuk struktur tanpa membuat tampilan menyerupai dashboard biasa.
- Glow digunakan secara selektif untuk fokus dan koneksi penting.
- Negative space membantu mempertahankan hierarki.
- Layout dapat berubah mengikuti kebutuhan penjelasan.
- Satu scene memiliki satu gagasan visual utama.
Jangan menggunakan satu template layout yang sama pada semua scene. Konsistensi harus berasal dari sistem warna, tipografi, ikonografi, bentuk, dan perilaku animasi.
## 5.3. Palet warna
Gunakan palet berikut sebagai sistem warna utama.
| Fungsi | Warna |
|---|---|
| Background utama | `#050505` |
| Background alternatif | `#090909` |
| Surface kartu | `#111111` |
| Surface sekunder | `#171717` |
| Border normal | `#292929` |
| Border aktif | `#414141` |
| Teks utama | `#F5F5F5` |
| Teks sekunder | `#A1A1AA` |
| Teks redup | `#71717A` |
| Aksen headline | `#A855F7` |
| Aksen koneksi aktif | `#39E58C` |
| Surface hijau terpilih | `#123A2A` |
| Aksen data / token | `#FACC15` |
Makna semantik warna:
- **Putih:** headline, struktur, dan informasi utama.
- **Ungu:** istilah kunci dan penekanan tipografi.
- **Hijau:** relasi aktif, jalur proses, status valid, atau node yang sedang dibahas.
- **Kuning:** nilai, parameter, token, detail pembanding, atau fokus kedua.
- **Abu-abu:** konteks sekunder dan elemen pendukung.
- **Near-black:** ruang utama dan pemisah visual.
Pertahankan makna warna secara konsisten sepanjang video.
Gunakan warna aksen secara selektif. Sebagian besar canvas tetap berada pada rentang hitam, abu-abu, dan putih.
Jangan menggunakan semua warna aksen dalam setiap scene jika tidak dibutuhkan.
## 5.4. Tipografi
Font stack headline:
`Geist, Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`
Font stack kode:
`"Geist Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace`
Aturan:
- Headline harus ringkas dan langsung menyampaikan inti pesan.
- Gunakan font tebal untuk kata atau frasa penting.
- Gunakan aksen ungu pada istilah kunci secara selektif.
- Jangan menampilkan seluruh Voice Over secara verbatim.
- Gunakan istilah teknis sebagai label visual jika dibutuhkan.
- Letakkan label dekat dengan objek yang dijelaskan.
- Kode harus singkat, relevan, dan mudah dibaca.
- Jangan memakai terlalu banyak ukuran atau weight font dalam satu scene.
- Gunakan hierarchy ukuran, weight, posisi, dan warna sebelum menambahkan efek.
- Pastikan ukuran teks tetap terbaca pada resolusi akhir.
## 5.5. Komposisi dan hierarchy
Gunakan layout editorial yang memiliki focal point jelas.
Pilihan komposisi meliputi:
- Headline besar di bagian atas dengan diagram dominan di bawah.
- Headline di kiri dengan visual teknis di kanan.
- Diagram utama di tengah dengan annotation di sekelilingnya.
- Dua kelompok visual untuk comparison.
- Hierarchy diagram dengan konsep induk dan anak.
- Pipeline horizontal untuk proses.
- Panel kode dengan ikon dan callout.
- Diagram server/browser yang memisahkan lingkungan.
- Layout asimetris dengan negative space.
- Before–after untuk menjelaskan transformasi.
Hindari:
- Semua elemen selalu berada di tengah.
- Semua informasi dikemas menjadi kartu.
- Ikon yang tidak memiliki fungsi.
- Label terlalu jauh dari objek yang dirujuk.
- Connector yang saling bersilangan tanpa kebutuhan.
- Teks yang memenuhi canvas.
- Diagram terlalu kecil.
- Glow berlebihan.
- Gradient dekoratif yang mengganggu.
- Background bergerak yang tidak mendukung narasi.
---
# 6. ATURAN WAJIB — IKON RELEVAN DAN TEKS INFOGRAFIS
Bagian ini merupakan persyaratan utama.
**Setiap scene harus mempertimbangkan penggunaan ikon dan teks infografis yang relevan dengan Voice Over.** Gunakan keduanya ketika membantu menjelaskan konsep. Jangan menambahkan ikon yang tidak memiliki fungsi semantik.
Jangan menghasilkan video yang hanya terdiri atas headline besar dan beberapa kotak kosong.
## 6.1. Ikon harus menjelaskan sesuatu
Pilih ikon berdasarkan konsep yang sedang dijelaskan.
Contoh pemetaan:
| Konsep | Representasi ikon yang sesuai |
|---|---|
| API | Simbol endpoint, node layanan, atau diagram request |
| Browser | Ikon jendela browser atau tab |
| Server | Server rack sederhana |
| Database | Silinder database |
| File | Dokumen dengan sudut terlipat |
| Kode | Simbol `>` atau terminal |
| Komponen | Blok modular atau puzzle geometris |
| Fungsi | Simbol function atau node dengan input-output |
| Data | Tumpukan data atau node berlabel |
| Proses | Gear sederhana atau alur panah |
| Jaringan | Node yang saling terhubung |
| Request | Panah menuju layanan |
| Response | Panah kembali dari layanan |
| Keamanan | Perisai |
| Status berhasil | Checkmark |
| Error | Simbol peringatan |
| Konfigurasi | Sliders atau gear |
| Waktu | Jam |
| Lokasi | Pin lokasi |
| Identitas | ID card atau tag |
| URL | Ikon link atau browser address bar |
| URI | Simbol identifikasi resource |
| Build | Gear, compiler, atau pipeline |
| Render | Panel hasil visual atau layar |
| React | Representasi komponen UI dan relasi render |
| Astro | Komponen halaman dan pemisahan server/browser |
Tabel ini adalah panduan, bukan daftar yang harus ditampilkan seluruhnya.
Pilih ikon sesuai konteks sebenarnya. Jangan menampilkan ikon API hanya karena naskah membahas teknologi jika visual yang lebih tepat adalah diagram request-response.
## 6.2. Implementasi ikon
Gunakan SVG inline untuk ikon yang dibuat langsung dalam TSX.
Persyaratan:
- Gunakan `viewBox` yang sesuai.
- Gunakan `stroke` dan `fill` secara konsisten.
- Pertahankan ketebalan garis yang seragam.
- Pastikan bentuk tetap terbaca dalam ukuran kecil.
- Gunakan geometri sederhana dan presisi.
- Gunakan warna aksen sesuai fungsi semantik.
- Gunakan `strokeLinecap="round"` dan `strokeLinejoin="round"` jika sesuai.
- Hindari ikon yang terlalu kompleks atau memiliki detail kecil.
- Pastikan setiap ikon memiliki hubungan yang jelas dengan labelnya.
Ikon harus menjadi bagian dari desain infografis, misalnya:
- Ikon browser di dalam node Browser.
- Ikon server pada sisi Server.
- Ikon kode pada panel kode.
- Ikon database pada tujuan data.
- Ikon dokumen pada representasi file.
- Ikon checkmark pada hasil valid.
- Ikon panah untuk arah request atau alur transformasi.
Jangan mengganti ikon dengan emoji.
Jangan menggunakan karakter Unicode acak sebagai pengganti ikon profesional.
Jangan menggunakan gambar eksternal, URL ikon, atau library ikon eksternal yang belum dipastikan tersedia.
**Default:** gunakan SVG inline yang dibuat langsung dalam JSX.
Jika jumlah ikon sangat banyak, helper SVG lokal sederhana boleh digunakan di dalam file yang sama. Namun, implementasi tetap harus lengkap dan tidak boleh memerlukan file tambahan.
## 6.3. Ikon dan label harus bekerja sebagai satu unit
Ketika ikon ditampilkan untuk mewakili sebuah konsep, berikan label yang cukup untuk mengidentifikasi maknanya.
Contoh:
- Ikon browser + `BROWSER`
- Ikon server + `SERVER`
- Ikon kode + `SOURCE CODE`
- Ikon database + `DATABASE`
- Ikon checkmark + `VALID`
- Ikon request + `HTTP REQUEST`
Jangan menampilkan ikon tanpa konteks jika maknanya tidak langsung jelas.
Label tidak harus berupa kartu. Label dapat berupa teks biasa di samping ikon, caption di bawahnya, atau annotation yang dihubungkan dengan garis.
## 6.4. Teks infografis wajib memiliki fungsi informasi
Teks infografis meliputi:
- Headline.
- Subheadline.
- Label konsep.
- Label node.
- Keterangan ikon.
- Callout.
- Annotation.
- Nama API atau fungsi.
- Potongan kode.
- Nilai atau parameter.
- Status.
- Tahapan proses.
- Perbandingan.
- Before–after.
- Kesimpulan singkat.
Contoh pola teks:
`SOURCE CODE → BUILD → BROWSER`
`SERVER ≠ BROWSER`
`INPUT → TRANSFORM → OUTPUT`
`IDENTIFY RESOURCE`
`LOCATION + ACCESS METHOD`
`ONE COMPONENT, TWO RUNTIMES`
Contoh tersebut hanya pola penulisan. Gunakan teks yang benar-benar sesuai dengan Voice Over.
## 6.5. Aturan ringkas teks
- Headline idealnya terdiri atas 2–7 kata.
- Label diagram biasanya terdiri atas 1–4 kata.
- Callout berisi satu gagasan singkat.
- Potongan kode hanya menampilkan bagian yang sedang dibahas.
- Jangan menampilkan paragraf panjang.
- Jangan membuat teks infografis mengulang headline tanpa menambahkan informasi.
- Jangan menampilkan istilah teknis yang tidak dijelaskan atau tidak relevan.
- Hindari teks dekoratif seperti `INNOVATION`, `NEXT GENERATION`, atau `POWERFUL SYSTEM` jika tidak mempunyai nilai informatif.
## 6.6. Hubungan ikon, teks, dan diagram
Setiap elemen harus mempunyai hubungan visual yang jelas.
Contoh:
- Ikon server dihubungkan dengan node browser melalui panah request-response.
- Ikon file ditempatkan di dekat input pipeline.
- Label `BUILD TIME` berada pada area proses build.
- Label `BROWSER RUNTIME` berada di area browser.
- Potongan kode diberi highlight pada token yang disebut dalam Voice Over.
- Ikon checkmark muncul setelah proses yang benar-benar dijelaskan berhasil.
- Callout menunjuk ke bagian diagram yang sedang dibahas.
Jangan menempatkan ikon, headline, dan diagram sebagai tiga elemen terpisah tanpa hubungan konseptual.
**Standar minimum:** penonton harus dapat memahami hubungan antara headline, ikon, label, dan visual utama tanpa perlu membaca seluruh Voice Over.
---
# 7. POLA INFOGRAFIS YANG HARUS DIGUNAKAN
Pilih pola yang paling sesuai dengan informasi. Tidak semua pola wajib muncul dalam satu video.
## 7.1. Kinetic Headline
Gunakan untuk hook, definisi, atau kesimpulan.
Struktur:
- Headline besar.
- Satu atau beberapa kata kunci beraksen.
- Ikon pendukung jika relevan.
- Annotation singkat bila diperlukan.
Jangan menggunakan headline sebagai satu-satunya visual dalam semua scene.
## 7.2. Icon + Label Infographic
Gunakan untuk mengenalkan konsep, kategori, objek, atau fungsi.
Struktur:
- Ikon utama.
- Label ringkas.
- Keterangan tambahan jika diperlukan.
- Highlight ketika konsep disebut.
## 7.3. Concept Cards
Gunakan dua atau tiga kelompok informasi yang benar-benar saling berkaitan.
Setiap kelompok dapat berisi:
- Ikon.
- Label.
- Keterangan singkat.
- Status atau atribut.
Hindari terlalu banyak kartu kecil yang membuat tampilan terlihat seperti dashboard.
## 7.4. Comparison / Split View
Gunakan untuk membandingkan dua konsep.
Struktur:
- Label masing-masing konsep.
- Ikon atau simbol berbeda.
- Informasi pembeda.
- Garis pemisah jika diperlukan.
- Highlight pada perbedaan utama.
Jangan hanya menampilkan dua kotak dengan judul berbeda. Tunjukkan secara visual apa yang membuat keduanya berbeda.
## 7.5. Hierarchy / Umbrella Diagram
Gunakan untuk menunjukkan kategori umum dan subkategori.
Struktur:
- Parent node.
- Child nodes.
- Connector yang menunjukkan hubungan hierarki.
- Ikon atau label pada node penting.
Pastikan hubungan induk-anak tidak ambigu.
## 7.6. Node-and-Connector Diagram
Gunakan untuk hubungan antar-komponen.
Struktur:
- Node dengan ikon dan label.
- Connector yang jelas.
- Panah jika arah mempunyai arti.
- Highlight pada relasi yang sedang dibahas.
## 7.7. Process Flow
Gunakan untuk menjelaskan proses berurutan.
Struktur:
`INPUT → PROCESS → OUTPUT`
Setiap tahap dapat memiliki ikon, label, dan keterangan pendek.
Animasi harus mengikuti arah proses, bukan membuat seluruh diagram muncul sekaligus tanpa urutan.
## 7.8. Technical Analogy
Gunakan analogi untuk konsep abstrak.
Struktur:
1. Representasi analogi.
2. Label analogi.
3. Hubungan dengan istilah teknis.
4. Highlight persamaan dan batasan analogi.
Jangan membiarkan analogi menggantikan definisi teknis.
## 7.9. Code / URL / API Highlight
Gunakan panel monospace untuk kode, URL, fungsi, token, atau API.
Struktur:
- Ikon konteks, misalnya terminal, browser, atau API.
- Potongan kode atau URL.
- Label singkat.
- Highlight token atau bagian yang dibahas.
- Callout bila diperlukan.
Kode harus relevan dan valid.
## 7.10. System Separation
Gunakan untuk membedakan dua lingkungan atau tanggung jawab.
Contoh:
- Server vs browser.
- Build time vs runtime.
- Source code vs output.
- Client vs server.
Gunakan label lingkungan, ikon, dan garis pemisah. Jika ada data yang berpindah, tunjukkan arah perpindahannya.
## 7.11. Transformation / Before–After
Gunakan untuk proses compile, parsing, rendering, atau perubahan state.
Struktur:
- Input dengan ikon dan label.
- Connector atau indikator transformasi.
- Output dengan ikon dan label.
- Highlight pada perubahan utama.
Jangan menggambarkan proses sebagai transformasi teknis yang tidak benar.
## 7.12. Focus Callout
Gunakan untuk menyoroti satu detail penting.
- Fokus utama tetap terang.
- Konteks sekunder diredupkan.
- Callout menunjuk pada bagian spesifik.
- Gunakan teks pendek.
- Jangan menutupi elemen yang sedang dijelaskan.
## 7.13. Takeaway Lockup
Gunakan untuk kesimpulan.
Struktur:
- Satu pesan utama.
- Ikon atau diagram inti.
- Kata kunci beraksen.
- Visual sederhana yang merangkum hubungan konsep.
Jangan menambahkan banyak informasi baru pada penutup.
---
# 8. ATURAN PEMILIHAN VISUAL BERDASARKAN NARASI
Sebelum mengimplementasikan kode, tentukan jenis informasi pada setiap bagian Voice Over.
| Jenis informasi | Pola visual |
|---|---|
| Pertanyaan atau masalah | Kinetic headline + ikon masalah |
| Definisi | Headline + icon-label infographic |
| Dua konsep yang tertukar | Comparison / split view |
| Hubungan induk-anak | Hierarchy diagram |
| Komponen yang saling berinteraksi | Node-and-connector diagram |
| Tahapan proses | Process flow |
| Kode atau API | Code highlight + ikon konteks |
| Request dan response | Diagram aliran dua arah |
| Build dan runtime | System separation |
| Input menjadi output | Transformation diagram |
| Nilai atau angka | Data callout |
| Contoh kasus | UI mockup atau technical analogy |
| Istilah yang sering disalahpahami | Focus callout |
| Konsep abstrak | Analogi + label teknis |
| Kesimpulan | Takeaway lockup |
Jangan menggunakan pola visual yang sama secara otomatis.
Setiap scene harus memilih representasi paling sederhana yang tetap menjelaskan konsep dengan benar.
---
# 9. VISUAL STORYTELLING DAN PEMBAGIAN BEAT NARASI
## 9.1. Satu beat narasi, satu tugas visual
Pecah Voice Over menjadi beat berdasarkan perubahan gagasan, bukan hanya berdasarkan tanda baca.
Untuk setiap beat, tentukan:
- Pesan yang sedang disampaikan.
- Istilah atau objek penting.
- Ikon yang paling relevan.
- Teks infografis yang diperlukan.
- Pola visual yang sesuai.
- Perubahan visual yang membantu pemahaman.
- Informasi yang harus tetap terlihat selama beat berlangsung.
Tidak semua beat harus menjadi scene baru. Beberapa beat dapat berlangsung dalam satu scene apabila menggunakan komposisi yang sama dan berkembang secara bertahap.
## 9.2. Urutan visual
Gunakan pola storytelling berikut bila sesuai:
1. **Hook:** tampilkan masalah atau pernyataan utama.
2. **Context:** perkenalkan konsep dengan ikon dan label.
3. **Explanation:** tunjukkan hubungan atau mekanisme.
4. **Focus:** sorot detail teknis yang penting.
5. **Resolution:** tampilkan kesimpulan visual.
Ini adalah kerangka fleksibel, bukan urutan wajib untuk semua topik.
## 9.3. Visual harus berubah mengikuti penjelasan
Jangan mempertahankan diagram statis ketika Voice Over berpindah ke konsep baru.
Contoh perubahan:
- Headline muncul.
- Ikon konsep diperkenalkan.
- Label teknis ditambahkan.
- Connector digambar.
- Node aktif menyala.
- Token kode disorot.
- Perbandingan diperlihatkan.
- Konteks sekunder diredupkan.
- Diagram disederhanakan menjadi takeaway.
Gunakan hanya perubahan yang mendukung narasi.
---
# 10. DURASI DAN TIMELINE
Total durasi harus tepat 40 detik.
Gunakan 4–6 scene sebagai titik awal. Jumlah akhir boleh menyesuaikan kompleksitas Voice Over.
Pada 30 FPS:
`frame = detik × 30`
| Waktu | Frame awal |
|---|---:|
| 0 detik | 0 |
| 5 detik | 150 |
| 10 detik | 300 |
| 15 detik | 450 |
| 20 detik | 600 |
| 30 detik | 900 |
| 35 detik | 1050 |
| 40 detik | 1200, batas akhir |
Frame valid adalah 0–1199.
Jika scene pertama berlangsung selama 5 detik, rentangnya adalah frame 0–149. Scene berikutnya dimulai pada frame 150.
Untuk setiap scene, tetapkan:
- Waktu mulai dan selesai.
- Frame awal dan akhir.
- Bagian Voice Over.
- Tujuan komunikasi.
- Ikon yang digunakan.
- Teks infografis.
- Pola diagram.
- Animasi masuk.
- Perubahan selama scene.
- Animasi keluar.
Pastikan durasi seluruh scene tepat 1200 frame.
Jangan membuat animasi baru dimulai setelah komposisi selesai.
## Sinkronisasi Voice Over
- Pertahankan urutan informasi.
- Tampilkan ikon ketika objek atau konsep diperkenalkan.
- Tampilkan label bersamaan dengan objek yang dirujuk.
- Aktifkan highlight ketika istilah teknis disebutkan.
- Gunakan diagram yang bertambah secara bertahap.
- Jangan mengganti visual terlalu cepat.
- Jangan menampilkan kesimpulan terlalu awal kecuali sebagai hook yang didukung narasi.
- Jangan mengklaim sinkronisasi presisi jika file audio tidak diberikan.
Jika timing audio belum tersedia, gunakan estimasi berdasarkan naskah dan jelaskan bahwa timing masih bersifat perkiraan.
---
# 11. MOTION LANGUAGE
Semua animasi harus menggunakan frame Remotion.
Gunakan `useCurrentFrame()`, `useVideoConfig()`, dan `interpolate()` sesuai kebutuhan.
## 11.1. Headline
- Fade in.
- Pergeseran vertikal pendek.
- Reveal kata kunci.
- Highlight warna lokal.
- Hold ketika informasi harus dibaca.
Jangan menganimasikan setiap huruf jika tidak diperlukan.
## 11.2. Ikon
- Fade atau scale in secara singkat.
- Pergeseran pendek menuju posisi akhir.
- Highlight ketika ikon diperkenalkan.
- Pergantian status jika didukung narasi.
Jangan menggunakan bounce atau pulse berulang pada semua ikon.
## 11.3. Diagram
- Node muncul sesuai urutan penjelasan.
- Connector terbuka mengikuti arah relasi.
- Panah bergerak hanya jika menunjukkan aliran.
- Node aktif berubah warna sesuai semantik.
- Label muncul saat konsep relevan diperkenalkan.
## 11.4. Kode dan UI
- Reveal panel.
- Highlight baris atau token.
- Perubahan nilai.
- Pergantian state.
- Fokus berpindah ke elemen yang dijelaskan.
Jangan membuat kode bergerak terus-menerus jika tujuannya adalah membaca kode tersebut.
## 11.5. Transisi
Gunakan fade, slide pendek, reveal, crossfade, focus shift, atau perubahan layout.
Hindari glitch, spin berlebihan, zoom ekstrem, shake tanpa alasan, dan efek dekoratif yang mengganggu keterbacaan.
Semua gerakan harus:
- Deterministik.
- Berbasis frame.
- Memiliki tujuan informasi.
- Berakhir pada posisi yang stabil.
- Tidak melampaui rentang animasi.
- Tidak bergantung pada waktu browser.
---
# 12. ATURAN WAJIB STRUKTUR KODE REMOTION
## 12.1. Satu file utama
Semua implementasi visual berada dalam:
`MainComposition.tsx`
Komponen utama:
`export const MainComposition = () => { ... }`
Jangan membuat file scene terpisah, stylesheet terpisah, atau helper file terpisah.
Helper SVG lokal diperbolehkan jika dibutuhkan, tetapi harus berada dalam file yang sama dan tidak mengurangi kelengkapan implementasi.
## 12.2. Import
Gunakan import yang diperlukan, misalnya:
```tsx
import {
AbsoluteFill,
interpolate,
useCurrentFrame,
useVideoConfig,
} from "remotion";
```
Tambahkan API Remotion lain hanya jika diperlukan dan tersedia.
Jangan mengasumsikan dependency eksternal telah terpasang.
## 12.3. Inisialisasi
Di dalam komponen:
```tsx
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
```
Gunakan `frame` untuk semua perubahan visual.
Gunakan `fps` untuk perhitungan timing jika diperlukan. Jangan membuat variabel palsu hanya agar `fps` terlihat digunakan.
## 12.4. Helper ease
Deklarasikan helper sebelum timeline:
```tsx
const ease = (
startFrame: number,
endFrame: number,
outputRange: [number, number],
) =>
interpolate(
frame,
[startFrame, endFrame],
outputRange,
{
extrapolateLeft: "clamp",
extrapolateRight: "clamp",
},
);
```
Contoh penggunaan:
```tsx
const titleOpacity = ease(0, 24, [0, 1]);
const titleY = ease(0, 24, [32, 0]);
```
Jika membutuhkan easing lain, gunakan opsi interpolasi yang valid atau API Remotion yang sesuai.
## 12.5. Timeline dan animation logic
Deklarasikan seluruh variabel animasi sebelum `return`.
Gunakan komentar:
```tsx
// ============================================
// TIMELINE & ANIMATION LOGIC
// 30 FPS -> 1200 Frames = 40 Detik
// ============================================
// Scene 1: Hook — 0s sampai 5s
// Frame 0–149
const titleOpacity = ease(0, 24, [0, 1]);
const titleY = ease(0, 24, [32, 0]);
// Scene 2: Penjelasan — 5s sampai 12s
// Frame 150–359
const diagramOpacity = ease(150, 174, [0, 1]);
const diagramY = ease(150, 174, [24, 0]);
```
Angka di atas adalah contoh struktur. Tentukan timing sebenarnya berdasarkan storyboard.
Ketentuan:
- Setiap scene mempunyai komentar waktu dan frame.
- Nama variabel menjelaskan fungsinya.
- Semua variabel animasi dideklarasikan sebelum JSX.
- Jangan mendeklarasikan variabel animasi di tengah JSX.
- Jangan memanggil hook di dalam kondisi, loop, atau callback.
- Jangan menggunakan rentang interpolasi yang tidak valid.
## 12.6. Satu root AbsoluteFill
Gunakan satu root:
```tsx
return (