music-mixlisted
Install: claude install-skill novoads/claude-code-ads
# Music mix
Puts a music bed under a finished video. The bed is trimmed to the video's exact
duration, faded out at the tail, and ducked under the voice. This is the last step of
the pack: base video → b-roll overlay → burned captions → **music**.
Mixing mechanics live entirely in `scripts/music_mix.py`. This file is judgment only —
when to enter, what track to pick, where the music comes from, what the user sees.
## Entry condition
**A finished video the user has signed off on.** Captions already burned in is the
preferred input, because music is genuinely the last thing that happens. That is safe
because the script copies the video stream packet for packet (`-c:v copy`) and verifies
afterwards that the output's video packets hash identical to the input's — so burned
captions come through bit-exact, not "re-encoded but probably fine".
If the cut is still moving, wait. Remixing is cheap; re-rendering the pipeline is not.
## Track judgment
- **Match the genre to the ad's mood, not to your taste.** Calm skincare and a punchy
supplement ad do not want the same bed. Read the script's tone first.
- **Lofi is the default** — it is what the reference edit used, and it sits under a
talking head without competing with it. Depart from it deliberately, and say why.
- **Always produce 2–3 named variants.** The reference edit shipped a `final-mixes`
folder with `lofi-jazzy` and `lofi-warm` of the same cut. Vary the track or
`--music-gain`, name them for what they are, and l