Rich in the Dark: A 15-Second AI Music Video Stack
I wanted a short vertical for a Suno track — not a four-minute epic, just the hook people would actually loop. The song is Never Fancy; the line that stuck was we look rich in the dark. Fifteen seconds. Ordinary-night cool. No VIP velvet.
This is the stack that got me there, what each tool actually did, and where the “upload song → finished MV” fantasy fell apart.
Tools, in the order I used them
| Step | Tool | Job |
|---|---|---|
| Song | Suno (v5.5) | Write and generate Never Fancy |
| Character + scene stills | Gemini (image) | Lock the face, then night-bus / walk / hallway stills from a reference photo |
| Motion | Kling (image → video) | Turn each still into ~5s silent cinematic clips |
| Cut the hook | ffmpeg + lyric timing | Trim the master to the pre-chorus → first two chorus lines (~15s) |
| Base edit | CapCut | Lay three scenes under the trimmed audio |
| Singing close-ups | Hedra | Animate the locked still to the same 15s audio (lip-sync) |
| Sprinkle / export | ffmpeg again | Hard-cut lip-sync punches onto the base cut |
What I did not use successfully for the video itself: Gemini Veo. It refused the night-person generations with a policy wall. Stills were fine. Motion was Kling’s job.
1. Lock the look before you animate anything
I started with one character reference — an AI character I already had — and asked Gemini for a photoreal night portrait: thrift hoodie, cold phone glow, crushed blacks, never fancy. That still became the identity lock for every later shot.
Then three scene stills with the same face attached:
- Night bus — rain on the window, blue screen light
- Walk home — wet sidewalk, soft bokeh
- Hallway — fluorescent tubes, quiet flex for the chorus
If the face drifts between stills, Kling cannot save you. Consistency is an image problem first.
2. Kling for motion, not for the soundtrack
Each still went into Kling as image-to-video. The prompts were motion-only: slow push-in, phone flicker, rain streaks, preserve the face. Medium/low motion kept the identity stable.
Important detail: Kling (and most cinematic generators) will invent their own audio if you let them. I muted every clip. The Suno master stayed the only soundtrack.
3. Find the viral island, then cut the song to it
The full track is ~2:37. The useful social object was much smaller: pre-chorus → “We’re never fancy / We look rich in the dark.”
I aligned lyrics to timestamps (~00:20.5–00:35.5) and trimmed a dedicated MP3 with ffmpeg. CapCut got that island, not the whole song. Three ~5s Kling clips map cleanly onto fifteen seconds of audio.
4. CapCut is the glue
Base timeline:
- 0–5s → bus
- 5–10s → walk
- 10–15s → hallway
Hard cuts on phrase changes. One shared grade (cool shadows, crushed blacks). No fancy transitions — the song already supplies the rhythm.
5. Hedra for lips, not for the whole movie
CapCut cannot invent singing mouths on Kling B-roll. Hedra can: upload the locked still + the 15s island audio → lip-synced performance.
Hedra was slow (on the order of half an hour for that clip) and credit-hungry, so I did one generation, not three. Then I cut short punches from it — especially on never fancy and rich in the dark — and hard-cut those into the base edit. Overlay tricks froze frames; replacing segments did not.
The result is mostly Kling atmosphere with Hedra face hits on the title lines. That mix reads more like a music video than either tool alone.
What I would repeat
- Still → video → edit → lip-sync insert, not “one tool that hears the song.”
- Trim the audio to the hook before you generate expensive video.
- Mute every generative video track; your release WAV/MP3 is the master.
- Spend Hedra only where the mouth must match the lyric.
What I would skip next time
- Fighting Gemini Veo after the first policy refusal
- Lip-syncing every scene still
- Expecting a song-to-video agent to deliver this noir look in one click
The interesting part was not the final render — it was learning which tool owns which five seconds.