--- name: remotion-assemble description: How to use Remotion as the assembly layer - read the project's meta.json and stitch the rendered HyperFrames scenes + footage + voice + sound effects into the finished video. Read this when writing/editing code in engines/remotion or when assembling the timeline for a video. --- # Remotion Assemble - building the timeline from meta.json In this system Remotion **does exactly one thing**: assemble the pieces that already exist (scene MP4s rendered by HyperFrames, source footage, voice, sound effects) into the final video. Do not build motion graphics in Remotion - that is HyperFrames' job. ## Structure of engines/remotion ``` engines/remotion/ ├── package.json ← remotion, @remotion/cli, @remotion/renderer ├── remotion.config.ts └── src/ ├── Root.tsx ← registers 3 compositions: "Assemble" + "Poster" + "Thumbnail" ├── Assemble.tsx ← master composition: read manifest → build timeline ├── Poster.tsx ← static poster composition (image projects) ├── Thumbnail.tsx ← static video-thumbnail composition (frame card + title) ├── manifest.ts ← load + validate video props (zod) ├── posterManifest.ts ← load + validate poster props (zod) ├── thumbnailManifest.ts ← load + validate thumbnail props (zod) ├── brandFonts.ts ← load brand fonts via staticFile (offline) ├── index.ts ← entry point registering Root └── components/ ├── SceneClip.tsx ← / for one scene/footage clip ├── Transition.tsx ← hard cut / crossfade (fade) - only these 2 ├── SfxTrack.tsx ← places