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.
1---2name: render-cinematic-music-video3description: 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.4---5
6# render-cinematic-music-video
7
8Assemble a **cinematic music-video** ad from a config: a live-action-STYLE short film where an
9original sung anthem is the score and every visual beat is a shot-on-film tableau (Kodak Portra
10grain, light leaks, golden hour, handheld imperfection) timed to the lyrics, arranged as a
113-act arc (morning → peak → twilight) with the hook line on the chorus drop. This capability is
12the **FREE, deterministic assembly** — cut-to-window, hard-concat, anthem mux, caption burn,
13and the brand end card.
14
15`scripts/config.example.json` is the worked example (Hype and Vice "Game Day Girls", ~28s
161080×1920 9:16, 14 tableaux); `scripts/PIPELINE.md` maps every config block to its source step
17and `scripts/README.md` documents the free assembly.
18
19## Run
20
21This is the **FREE, deterministic** assembly stage — it spends nothing. The paid inputs are
22separate capabilities: the sung anthem (`create-music-elevenlabs`, `force_instrumental` false —
23the lyrics ARE the script, returns mp3 + `words_timestamps`); one 35mm-film keyframe per beat
24in one look pack (`create-image-fal`); and one Kling 3.0 i2v clip per beat (`create-video-fal`).
25Given the delivered anthem + `words.json` + one clip per beat + the brand end-card asset,
26`render-cinematic-music-video` cuts each clip to its lyric window, hard-concats on the beat,
27muxes the anthem, burns the cinematic lower-third captions, and overlays the end card → the
28master. Re-cuts reuse the existing anthem / keyframes / clips and cost **$0**.
29
30## Contract (the free assembly)
31
32- **The sung anthem carries the story — no separate VO.** The generated ElevenLabs track IS
33 the bed and the script (`force_instrumental` false); do not add a spoken voiceover or a
34 second bed.
35- **Plan the timeline AROUND the delivered anthem.** The anthem is generated first and
36 reshapes/overshoots length; snap every tableau boundary to the lyric-phrase edges in the
37 returned word timings — never trim the anthem to a pre-planned grid.
38- **Captions from the anthem's OWN word timings, not Whisper.** Derive `words.json` from the
39 music model's `words_timestamps`, chunk ~4 words at lyric boundaries, and burn cinematic
40 lower-third serif captions (`--placement low`) with the hook line accent-treated (bold-italic).
41 Whisper on sung audio returns "🎵 Music Playing 🎵".
42- **Land the hook on the chorus drop.** The hero tableau (`is_hook`) is timed so the
43 load-bearing line sits on the chorus drop; accent that line in the captions.
44- **One cinematic look pack + hard cuts on the beat.** The look pack (named film stock + grain +
45 flares + handheld) plus a continuity anchor holds every clip together; cut each clip to its
46 lyric window and hard-concat (one optional match-cut into the hero reveal) — no dissolves.
47- **End card from the real brand asset — never AI-render the wordmark as diffusion text.**
48 Composite the lockup (PIL/ffmpeg) from the real asset or use a designed keyframe base;
49 diffusion garbles a wordmark.
50- **FFmpeg composite, deterministic, FREE.** Normalize each clip to its beat-locked window,
51 hard-concat, mux the anthem (`afade` in/out + `loudnorm I=-14`), burn the caption ASS, overlay
52 the end card → a 1080×1920 h264+aac master. No paid calls, no keys.