The person brings a music video (or the section to remake, such as the first 30 s) and a photo of the people to put in it, often several in one picture. You deliver the same section with those people in the leads' places: the original performance, camera, cuts, on-screen text and song, at the source's size and frame rate.
The route is the v2v recast (guide-recast-a-person): nothing is re-animated, so every
move and lip lands on the beat. Only the stretches with a lead in them are recast;
titles and empty frames stay original footage.
Steps
- Cut the section into shots.
ffprobe-inspect-mediafor size, frame rate and length, thenffmpeg-scene-cuts(scene > 0.15), confirmed on a contact sheet. Write the shot table inAGENTS.md: time range, who is in frame (leads, background players, cut-outs, close-ups of lips or hands) and whether it is recast. - Map who becomes whom. Name each lead by role ("the man singing on the left"), never by name, and pair them with a person in the photo. H3 Max replaces the main people left to right, so order the references the way the leads stand in the widest shot. Cut each person from the photo into their own reference, upscaled 2× with Lanczos when the crop is small (256 to 2,048 px a side; pad, never crop). Gate: the person approves the table and the mapping.
- Test one shot (
h3-max-recast): the widest shot with every lead in it, at least 5 s. Gate:review_approveagainst the source. This is where notes on the people come in (hair kept, "get rid of the mustache"); settle them before the long renders. - Recast in parts. Group the shots into parts of 5 to 15 s that start and end on a
cut, each with no shot over 15 s, and leave out stretches nobody is in. One render
per part, one seed for the job, all parts started at once. Each prompt names every
way a lead appears in that part (a wide, a cut-out head, a lip close-up, a player in
the back) and whom they become; it keeps the wardrobe, the movement and its timing,
the on-screen text letter for letter, the framing and bars, the set, the light and the
camera (
h3-prompt-format,references/recast.md). - Check every part against the source: a frame sheet every 0.75 s beside the source's, plus a frame of every lyric or title card. Look for three things the recast gets wrong (Dead ends): a feature of the old lead carried over, a small background player left unrecast, and on-screen text redrawn.
- Fix only what is wrong, cheapest first:
- a carried-over feature (a mustache):
flux-3-edit-video-remove-a-detailon the part, only where there is no on-screen text, then upscale back to the delivery size; where the person is too small for it to read, leave it; - a missed background player: re-recast the recast take with only that player's reference, and a prompt that says the other lead is not recast;
- garbled text: re-recast that window from the original (padded to 5 s) on another
seed, the text named letter for letter in the prompt.
Gate:
review_approveper fixed part, the source asoriginal.
- a carried-over feature (a mustache):
- Splice and deliver. Write the cut list in
scripts/: each part's window on the timeline and the take it comes from. Conform every take to the source's size and rate (python-conform-to-1080pfor a smaller edit), thenffmpeg-splice-into-source-cutover the original song, with original footage wherever nothing was recast. Thendeliverthe round (core skill).
Choices this workflow makes
- v2v recast, not swap-the-still-and-animate: in a music video the performance is the point, and only the recast keeps every lip and beat.
- Parts, not shots: one render per 5 to 15 s part costs the same per second as shot by shot, avoids padding every short shot to 5 s, and keeps a person consistent across the cuts inside it.
- The original audio under everything; the recast's own sound is dropped at the splice.
- 1080P renders at about $0.50 a second of input, one take per part. Re-render only the window that is wrong.
Dead ends
- "Clean-shaven, no mustache" in the recast prompt: H3 Max kept the old lead's mustache on the new man in every part. Prompting does not fix it; an edit pass does.
- Kling v4 video-to-video edit for the mustache: still there at 6.4 s, and $2.80 on a 9 s part (it bills input and output seconds).
- Gemini Omni Flash edit: refused the clip (refunded).
- Flux 3 edit-video on a part with handwritten lyrics: it invented new lyric text. That part shipped without the shave; the new man was too small for it to show.
- One prompt naming both leads on a part where one is a small player at the back: the player stayed the original person.
Worked example
A pop duet video, the first 30 s: 1920×1080, 23.976 fps, 11 shots, recast with the two people in one photo (the man into the male lead, the woman into the female lead).
| Shots | Time (s) | What is in it | Route | Note → fix |
|---|---|---|---|---|
| 1 | 0.00-2.80 | empty set, lights come up | original | — |
| 1-3 | 2.80-11.80 | silhouettes, title card, both leads wide | part A, 9 s | his mustache carried over → Flux 3 edit ($0.30), 1248×704 upscaled to 1080p |
| 4-8 | 11.80-22.23 | lip close-ups, cut-out heads, both at the keyboard | part B, 10.4 s | the keyboard player at the back stayed the original → re-recast from part B's take, his reference only |
| 9-10 | 22.23-28.74 | her close-ups, 4:3, handwritten lyrics | part C, 7.8 s | Flux 3 shave invented lyrics → part C shipped as recast |
| 11 | 28.74-30.00 | back to the wide | 5 s window from the original | lyric garbled in part C → re-recast on a new seed, now reads "Hold the light…" |
About $24.40 at list prices: $21 of H3 Max recast (the 5 s test, three parts, two fixes), $0.56 of Flux 3 edits and the $2.80 Kling miss. One round, approved as delivered.


