Bg music
Investigation on using Claude Code to automatically generate profitable YouTube videos.
npx -y skills add jperrello/C0BALT_CUT --skill bg-musicAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Mix a trendy looped background track under a finished short, attenuated well below the speaker (~-18dB). Picks a random song from ./songs/<category>/, or recurses across every mood folder when category is "ALL SONGS" (the default). Avoids repeating the last 5 picks via ./songs/.recent. Runs after loudnorm so the bed never overpowers the broadcast-leveled speech. Pair with pick-mood to route by clip vibe instead of pure random.
SKILL.md
2.0 KB, as published. Nobody here has run it
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.