Remotion Explainer Architect Pro (v2 — System & 3D Series Engine)
A system-driven production engine for building high-retention explainer motion graphic series in Remotion + Three.js (@remotion/three). Instead of relying on ad-hoc prompting per video, this skill enforces a 5-Pillar Reusable Production System:
- Reusable Visual & 3D Object Library (Three.js procedural primitives, exploded-view assemblies, and 2D UI cards)
- Audio-First Storyboard & Narration Schema (
AKSI/FOKUS/JEDAscene blocks + word-level highlight tokens) - Locked Theme & Visual Direction Presets (typography, semantic material palettes, shaders, camera lenses)
- Declarative Animation Rigs (
useExplodeRig,useXRayClip,useFlowParticles,useCameraChoreography) - One-Sentence Reusable Workflow (input 1 topic sentence -> output complete Lembar Kontak, Storyboard, Audio/SFX script, and Remotion + Three.js code)
When to Use
- The user provides a 1-sentence topic or question (e.g., "Kenapa mesin espresso butuh tekanan 9 bar?", "Bongkar cara kerja baterai sepeda listrik") and wants a complete explainer video or interactive studio preview.
- The user wants to build or expand a reusable visual/3D object library, exploded anatomy animation (
TAKEN APARTstyle), or series template in Remotion. - The user asks for a storyboard, asset contact sheet ("Lembar Kontak"), narration script, or
edge-tts+ SFX integration for a 60s, 90s, or 120s video.
⚡ The 3 Golden Rules of Remotion + Three.js
When implementing or generating code with this skill, strictly enforce:
- Deterministic Frame Animation (Zero
deltainuseFrame): Never usedeltaorrequestAnimationFrameaccumulators in Three.js hooks. All rotations, transforms, and shader uniforms must be pure deterministic functions offrame = useCurrentFrame(). See references/remotion-composition-rig.md. - Dynamic Audio Synchronization via
<Series>: Voiceover audio duration varies dynamically with AI speech synthesis (edge-tts). Never hardcode fixed frame durations for scenes. Always calculate<Series.Sequence durationInFrames={Math.ceil(scene.durationSec * fps)}>fromtimeline.json. - Explode Frustum & Aspect Ratio Adaptability:
When
explodeFactorreaches1.0, outer components expand outward. The camera zoom must scale dynamically (interpolate(explodeProgress, [0, 1], [baseZoom, baseZoom * 0.72])) to prevent parts from clipping outside the frame. Both16:9(1920x1080) and9:16(1080x1920 TikTok/Reels) must be supported.
Pillar 1: Theme & Visual Direction Presets (theme.config.ts)
Always lock the visual direction at the start. If the user does not specify a style, default to taken-apart-blueprint (combining editorial contact sheets with "Taken Apart" Three.js exploded orthographic anatomy). See detailed tokens in references/threejs-exploded-rig.md.
-
taken-apart-blueprint(3D Exploded Technical Anatomy)- Aesthetic: Warm cream archival paper (
#F2EFE9), crisp technical ink outlines (#1E2022), orthographic isometric Three.js camera, custom Cel/Toon shader with edge-detection outline pass. - HUD Frame: Corner registration marks, top metadata (
Fig 1,ANATOMY · [OBJECT NAME]), bottom telemetry (TAKEN APART,[X] parts · [Y] assemblies). - Typography: Display serif/sans header +
JetBrains Monouppercase tracking for technical labels.
- Aesthetic: Warm cream archival paper (
-
joni-bongkar-cutaway(Editorial Cutaway + Code UI Cards)- Aesthetic: Warm off-white (
#F5F2EB), isometric cross-section cutaway illustrations + crisp data UI cards (KARTU UI), semantic Palet Material legend, pill-highlighted subtitles (#1E8E5Agreen /#E87A24orange).
- Aesthetic: Warm off-white (
-
zackd-cgi(ZackD Films 3D Macro Fly-Through)- Aesthetic: Smooth studio PBR lighting, perspective camera with aggressive macro zoom-ins through internal mechanical chambers, real-time Three.js
ClippingPlanecross-sections, soft ambient occlusion.
- Aesthetic: Smooth studio PBR lighting, perspective camera with aggressive macro zoom-ins through internal mechanical chambers, real-time Three.js
-
dan-koe-glow/glow-sketch(Minimalist High-Contrast Cyber/Mental Models)- Aesthetic: Deep obsidian void (
#07080C), glowing vector wireframes and neon Three.js line geometries (#38BDF8,#A855F7), kinetic dot-matrix grids.
- Aesthetic: Deep obsidian void (
-
comic-vector(Pop Ink & Halftone Stylized)- Aesthetic: High-contrast thick ink contours (
#09090B), vibrant flat color fills, halftone dot overlays, dynamic comic impact action lines.
- Aesthetic: High-contrast thick ink contours (
Pillar 2: Reusable Visual & 3D Object Library (assets/library.ts)
Every episode draws from and contributes back to a modular catalog of reusable 3D assemblies (@remotion/three / Three.js) and 2D UI Cards:
A. Three.js Procedural 3D Assemblies (<ThreeCanvas />)
Each 3D object is built as a parametric group of named sub-meshes (parts & assemblies) with an explodeOffset: [x, y, z] and materialKey adhering to episode.schema.json:
<CylinderCellAssembly />: Outer casing, spiral electrode core, separator membrane, top anode cap, gas vent valve (batteries, capacitors, boilers, pistons).<FluidPumpAndBoiler3D />: Water reservoir, copper heating coil, high-pressure boiler cylinder, portafilter/nozzle, pressure gauge, drip tray (espresso machines, hydraulic systems, cooling loops).<CircuitPCBModule3D />: Fiberglass board, MOSFET/IC chips, copper trace paths, LED indicator, connector cables (BMS, smartphones, IoT, power supplies).<EnclosureShell3D />: Top lid, side panels, internal chassis frame with automatedclipPlaneorexplodeFactorsupport.
B. Reusable 2D Code UI Cards (KARTU UI)
<ThreeStageFlowCard />: 3-column progression card (e.g.,DERAS -> MELAMBAT -> BERHENTI) with animated current/progress bar underneath.<ComparisonVerdictCard />: Side-by-side metric duel (80% vs 96%,SEHAT vs DIPAKSA) with animated counters and winner/loser badges.<MythStampCard />: Checklist summary + spring-physics rubber stamp (MITOS/FAKTA/AMAN).
C. Semantic Palet Material
Every object part maps to a semantic material key rather than arbitrary colors:
shell(#B8BCC2Abu Bodi)structural(#2B2E33Arang Plastik/Besi)core_component(#3B6EE8Biru Teknis)control_bms(#1E8E5AHijau Satpam/Aman)medium_fluid(#E8D882Kuning Cairan/Elektrolit)hazard_heat(#E87A24Oranye Panas/Tembaga)energy_current(#F5C400Kuning Arus Listrik)
Pillar 3: Duration Modes & Storyboard Pacing (episode.schema.json)
Support 3 locked duration tiers (default to 90s if unspecified):
- 60s Mode (Fast Explainer — ~140 words): 9 Lembar Kontak Panels (6 3D/Cutaway + 3 UI Cards) | 16 Keyframes (10
AKSI, 4JEDA, 2FOKUS). - 90s Mode (Standard Deep-Dive — ~200 words): 10-11 Lembar Kontak Panels | 20-22 Keyframes (13
AKSI, 5JEDA, 4FOKUS). Adds microscopic/internal sub-assembly explosion and side-by-side fault simulation. - 120s Mode (Full Documentary Breakdown — ~280 words): 12 Lembar Kontak Panels | 24-28 Keyframes (16
AKSI, 6JEDA, 6FOKUS). Adds multi-culprit forensic breakdown, long-term degradation curve, and 3-step actionable solution card.
Each keyframe in the storyboard must specify:
timeSecand Rhythm Tag (AKSIgreen,FOKUSamber,JEDAneutral).narration: Punchy Indonesian explainer prose with[[highlight]]tags around 1-2 focal words per sentence.rigState: Declarative parameters driving the 3D/2D scene:explodeFactor:0.0(assembled) to1.0(fully exploded).xrayClip:0.0(solid shell) to1.0(full internal cutaway).cameraPose:[azimuth, elevation, zoom]or preset ("iso-wide","macro-core","top-down").activeCallouts: Array of component labels to pop up with leader lines.sfxCue: Sound trigger (whoosh_xray,servo_explode,ui_pop,electric_hum,verdict_stamp).
Pillar 4: Declarative Animation Rigs (Remotion + Three.js)
Never animate meshes manually frame-by-frame. Bind useCurrentFrame() and timeline.json timestamps to these core rigs:
useExplodeRig(frame, triggerFrame, partOffsetVector): Usesspring({ frame: frame - triggerFrame, fps, config: { damping: 14, stiffness: 120 } })to smoothly separate 3D sub-assemblies along axial vectors while updating the HUD parts counter.useXRayClip(frame, startFrame, endFrame): Interpolates a Three.jsTHREE.Planeclipping constant or SVG clip-path to slice open the outer shell (UTUH->TEMBUS PANDANG).useFlowParticles(frame, speed, pathPoints): Animates instanced 3D spheres or SVG dashed strokes along internal conduits to visualize electricity, water pressure, heat, or gas bubbles.useWordSyncSubtitles(frame, words): Readsedge-ttsWordBoundarytimestamps to highlight spoken words in real time and trigger<CalloutBadge />pop-ups on exact keyword frames.
Pillar 5: One-Sentence Reusable Workflow (Deliverables)
When the user gives a single sentence topic (or asks to build/preview an episode), automatically execute the full pipeline:
- Lembar Kontak (9-12 Asset Blueprint + Palet Material + 3D Part Count):
Define the reusable 3D assemblies (
X parts · Y assemblies), AI cutaway prompts, and Code UI cards. - Keyframe Storyboard (16-28 Frames with
AKSI/FOKUS/JEDA): Complete timestamped script with[[highlight]]tokens, camera choreography, andexplodeFactor/xrayClipstates according to episode.schema.json. - Audio & SFX Compilation:
Run scripts/generate_voice_and_sfx.py to synthesize:
voiceover.mp3(id-ID-ArdiNeural/id-ID-GadisNeural)- Procedural WAV SFX (
servo_explode.wav,whoosh_xray.wav,ui_pop.wav,electric_hum.wav,verdict_stamp.wav) timeline.json(mapped word boundaries + frame indices).
- Interactive Studio / Remotion + Three.js Project:
Provide ready-to-run
@remotion/threecompositions following references/remotion-composition-rig.md.