--- name: render-cinematic-music-video description: Assemble a cinematic live-action-style music-video ad from a config — an original sung anthem carries the whole narrative while N 35mm-film-look i2v clips are each cut to their lyric window and hard-concatenated on the beat as a 3-act arc, the anthem muxed at loudnorm I=-14, cinematic lower-third serif captions built from the song's OWN word timings (never Whisper) with the hook line landing on the chorus drop, and closed on a brand end card composited from the real asset — never AI-rendered text. This is the FREE deterministic assembly stage (cut-to-window + hard concat + anthem mux + captions + end card); the anthem, keyframes, and clips come from create-music-elevenlabs / create-image-fal / create-video-fal. Use for the cinematic-music-video format. status: active --- # render-cinematic-music-video Assemble a **cinematic music-video** ad from a config: a live-action-STYLE short film where an original sung anthem is the score and every visual beat is a shot-on-film tableau (Kodak Portra grain, light leaks, golden hour, handheld imperfection) timed to the lyrics, arranged as a 3-act arc (morning → peak → twilight) with the hook line on the chorus drop. This capability is the **FREE, deterministic assembly** — cut-to-window, hard-concat, anthem mux, caption burn, and the brand end card. `scripts/config.example.json` is the worked example (Hype and Vice "Game Day Girls", ~28s 1080×1920 9:16, 14 tableaux); `scripts/PIPELINE.md` maps every config block to its source step and `scripts/README.md` documents the free assembly. ## Run This is the **FREE, deterministic** assembly stage — it spends nothing. The paid inputs are separate capabilities: the sung anthem (`create-music-elevenlabs`, `force_instrumental` false — the lyrics ARE the script, returns mp3 + `words_timestamps`); one 35mm-film keyframe per beat in one look pack (`create-image-fal`); and one Kling 3.0 i2v clip per beat (`create-video-fal`). Given the delivered anthem + `words.json` + one clip per beat + the brand end-card asset, `render-cinematic-music-video` cuts each clip to its lyric window, hard-concats on the beat, muxes the anthem, burns the cinematic lower-third captions, and overlays the end card → the master. Re-cuts reuse the existing anthem / keyframes / clips and cost **$0**. ## Contract (the free assembly) - **The sung anthem carries the story — no separate VO.** The generated ElevenLabs track IS the bed and the script (`force_instrumental` false); do not add a spoken voiceover or a second bed. - **Plan the timeline AROUND the delivered anthem.** The anthem is generated first and reshapes/overshoots length; snap every tableau boundary to the lyric-phrase edges in the returned word timings — never trim the anthem to a pre-planned grid. - **Captions from the anthem's OWN word timings, not Whisper.** Derive `words.json` from the music model's `words_timestamps`, chunk ~4 words at lyric boundaries, and burn cinematic lower-third serif captions (`--placement low`) with the hook line accent-treated (bold-italic). Whisper on sung audio returns "🎵 Music Playing 🎵". - **Land the hook on the chorus drop.** The hero tableau (`is_hook`) is timed so the load-bearing line sits on the chorus drop; accent that line in the captions. - **One cinematic look pack + hard cuts on the beat.** The look pack (named film stock + grain + flares + handheld) plus a continuity anchor holds every clip together; cut each clip to its lyric window and hard-concat (one optional match-cut into the hero reveal) — no dissolves. - **End card from the real brand asset — never AI-render the wordmark as diffusion text.** Composite the lockup (PIL/ffmpeg) from the real asset or use a designed keyframe base; diffusion garbles a wordmark. - **FFmpeg composite, deterministic, FREE.** Normalize each clip to its beat-locked window, hard-concat, mux the anthem (`afade` in/out + `loudnorm I=-14`), burn the caption ASS, overlay the end card → a 1080×1920 h264+aac master. No paid calls, no keys.