bg-music
Background music makes a podcast clip feel like a TikTok, not a recording.
This skill picks a random mp3 from the local ./songs/ library, loops it to
match the clip's length, and mixes it under the speaker with a hard volume
attenuation. No ducking sidechain — the bed is just quiet enough to live
underneath broadcast-leveled speech.
Invoke
.claude/skills/bg-music/bg-music.sh <input> <out> [category=ALL SONGS] [volume=0.17] [fade=0.6]
input— finished, loudnorm'd mp4out— output mp4 with music mixed incategory— subfolder of./songs/to pick from (e.g.Energetic,Story,Inspiring). Defaults toALL SONGS, which recurses across every mood folder under./songs/.volume— linear gain for the bg track, default0.17. Lower for more speech-forward clips.fade— seconds of fade-in so the bed ramps up instead of blasting att=0(it would otherwise be exposed under the speech-free title card). Default0.6.
How
- Picks a random
.mp3/.MP3/.wavfrom$SHORTS_ROOT/songs/<category>/. - Loops it with
-stream_loop -1so any track length covers the clip. amixwithduration=firstso output matches the video duration exactly.- Bg volume hard-set; output limited with
alimiter=limit=0.97to avoid clip. - Video is stream-copied.
Caveats
- Re-encodes audio only.
- Idempotent via
<out>.bgmeta(input mtime + category + volume + fade + chosen track basename). - The chosen track is logged to stderr so you can reproduce / blacklist.