Background Music Generator
Generate production-ready background music for social media posts, presentations, reels, and in-app content using ElevenLabs Music on Replicate.
Setup
Install dependencies (one-time):
pip3 install -r ~/.cursor/skills/bg-music/scripts/requirements.txt
Set your Replicate API token (skipped if already configured by another skill):
python3 ~/.cursor/skills/bg-music/scripts/setup_key.py YOUR_REPLICATE_API_TOKEN
Quick Reference
Generate background music
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "gentle piano melody for a pet care post" \
--mood calm --duration 30 --output bgm_calm.mp3
Prompt enhancement (default)
The script auto-enhances your description into an optimal prompt for ElevenLabs Music. Use --raw-prompt to skip:
# Enhanced (default)
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "upbeat happy vibe" -m uplifting -d 30 -o happy.mp3
# Raw: use your prompt verbatim
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "Lo-fi hip hop beat, warm vinyl texture, 85 BPM, C major" \
--raw-prompt -d 45 -o lofi.mp3
Generate variations
# Same mood, different results
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "warm acoustic background" \
-m heartfelt -d 30 -n 3 -o acoustic.mp3
# Generates: acoustic_1.mp3, acoustic_2.mp3, acoustic_3.mp3
Choose output format
# High-quality MP3
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "epic cinematic track" \
-m epic -d 30 -f mp3_high_quality -o epic.mp3
# CD-quality WAV
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "ambient meditation pad" \
-m calm -d 60 -f wav_cd_quality -o ambient.wav
generate_bgm.py Options
| Option |
Short |
Description |
--mood MOOD |
-m |
Emotional mood preset (see below) |
--duration SECS |
-d |
Duration in seconds (5-300, default: 30) |
--output PATH |
-o |
Output file path (default: auto-named) |
--variations N |
-n |
Number of variations to generate (1-5) |
--output-format FMT |
-f |
Audio format (default: mp3_standard) |
--raw-prompt |
|
Use prompt as-is, skip enhancement |
--fade-in MS |
|
Fade-in duration in ms (default: 500) |
--fade-out MS |
|
Fade-out duration in ms (default: 1500) |
--no-fade |
|
Disable fade-in/fade-out |
--bpm INT |
|
Suggest BPM in the prompt (optional, mood has defaults) |
--key KEY |
|
Suggest musical key (e.g. "C major", "A minor") |
--list-moods |
|
Show all available mood presets |
Output Formats
| Format |
Quality |
Best For |
mp3_standard |
128kbps MP3 |
Social media, general use (default) |
mp3_high_quality |
192kbps MP3 |
Higher quality, still compact |
wav_16khz |
16kHz WAV |
Voice-focused content |
wav_22khz |
22kHz WAV |
Medium quality WAV |
wav_24khz |
24kHz WAV |
Good quality WAV |
wav_cd_quality |
44.1kHz WAV |
Uncompressed CD quality |
Mood Presets
| Mood |
Best For |
Default Dur. |
Character |
uplifting |
Success stories, achievements, celebrations |
30s |
Bright, optimistic, major key |
calm |
Wellness tips, mindful moments, care routines |
30s |
Gentle, ambient, soothing |
playful |
Fun pet content, games, lighthearted posts |
20s |
Bouncy, cheerful, quirky |
heartfelt |
Adoption stories, bonds, emotional moments |
30s |
Warm, acoustic, intimate |
dramatic |
Transformations, reveals, before/after |
20s |
Building tension, cinematic |
confident |
Tips, expertise, professional advice |
25s |
Steady, assured, modern |
nostalgic |
Memories, throwbacks, reflection |
30s |
Warm, vintage, soft |
energetic |
Fitness, active pets, outdoor adventures |
25s |
Driving, uptempo, powerful |
mysterious |
Teasers, coming soon, curiosity hooks |
20s |
Suspenseful, textural, dark |
inspiring |
Milestones, growth, motivational content |
30s |
Soaring, orchestral, hopeful |
cozy |
Home life, comfort, seasonal content |
30s |
Lo-fi, warm, intimate |
epic |
Big announcements, launches, hero moments |
25s |
Cinematic, powerful, layered |
tender |
Gentle care, lullabies, quiet moments |
30s |
Delicate, piano, strings |
corporate |
Presentations, pitch decks, demos |
30s |
Clean, modern, understated |
generic |
General purpose (default) |
30s |
Neutral, versatile |
Moods are defined in scripts/moods.json and can be customized.
Common Workflows
Background music for social media posts
# Happy pet content
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "cheerful background for a dog playing at the park" \
-m playful -d 20 -o assets/bgm/dog_park.mp3
# Heartfelt adoption story
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "emotional piano for pet adoption story" \
-m heartfelt -d 30 -o assets/bgm/adoption_story.mp3
Presentation backing track
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "clean modern background for tech presentation" \
-m corporate -d 60 --fade-out 3000 -o assets/bgm/presentation.mp3
Reel / short-form video music
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "trendy upbeat track for instagram reel" \
-m energetic -d 15 --bpm 120 -o assets/bgm/reel_beat.mp3
Long-form content (up to 5 minutes)
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "ambient background for a meditation session" \
-m calm -d 300 -f wav_cd_quality -o assets/bgm/meditation.wav
Try different styles for the same concept
# Generate 3 variations, pick your favourite
python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "warm acoustic guitar background" \
-m heartfelt -d 30 -n 3 -o assets/bgm/acoustic.mp3
Fade-In / Fade-Out
Background music tracks benefit from smooth fades. By default:
- Fade-in: 500ms gentle ramp
- Fade-out: 1500ms smooth tail
Use --fade-in and --fade-out to customize (in ms), or --no-fade to disable.
Fades are applied via ffmpeg after generation -- the model generates the full track, then fades are applied as post-processing.
Model
Uses ElevenLabs Music (elevenlabs/music) on Replicate -- studio-grade music generation with:
- Text-to-music from natural language prompts
- Instrumental-only mode (enabled by default for background music)
- Up to 5 minutes of audio per generation
- Multiple output formats (MP3 and WAV at various quality levels)
- Commercial use license
Pricing: $8.30 per 1000 seconds of output audio (120 seconds for $1).
Prompt Enhancement
Enhancement adds musical descriptors to improve results:
- Injects mood-specific style keywords (tempo, instruments, tonality)
- Adds production quality descriptors (mixed, mastered, professional)
- Suggests BPM range when appropriate
- Adds "background music" / "instrumental" framing
- Keeps your core description intact
Configuration
Config at ~/.cursor/skills/bg-music/config.json:
{
"replicate_api_token": "YOUR_TOKEN",
"default_mood": "generic",
"default_duration": 30,
"default_output_format": "mp3_standard"
}
Falls back to tokens from sound-effects, avatar-video-reel, or brand-asset-studio skills.
1---2name: bg-music3description: Generate background music tracks for social media posts, presentations, reels, and app content using ElevenLabs Music on Replicate. Supports emotional mood presets (uplifting, calm, dramatic, playful, etc.), configurable duration (up to 5 minutes), multiple output formats (MP3/WAV), and fade-in/fade-out. Use when the user asks to generate, create, or produce background music, BGM, backing tracks, mood music, or any musical audio content for posts, reels, presentations, or videos.4---56# Background Music Generator78Generate production-ready background music for social media posts, presentations, reels, and in-app content using ElevenLabs Music on Replicate.910## Setup1112Install dependencies (one-time):1314```bash15pip3 install -r ~/.cursor/skills/bg-music/scripts/requirements.txt16```1718Set your Replicate API token (skipped if already configured by another skill):1920```bash21python3 ~/.cursor/skills/bg-music/scripts/setup_key.py YOUR_REPLICATE_API_TOKEN22```2324## Quick Reference2526### Generate background music2728```bash29python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "gentle piano melody for a pet care post" \30 --mood calm --duration 30 --output bgm_calm.mp331```3233### Prompt enhancement (default)3435The script auto-enhances your description into an optimal prompt for ElevenLabs Music. Use `--raw-prompt` to skip:3637```bash38# Enhanced (default)39python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "upbeat happy vibe" -m uplifting -d 30 -o happy.mp34041# Raw: use your prompt verbatim42python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "Lo-fi hip hop beat, warm vinyl texture, 85 BPM, C major" \43 --raw-prompt -d 45 -o lofi.mp344```4546### Generate variations4748```bash49# Same mood, different results50python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "warm acoustic background" \51 -m heartfelt -d 30 -n 3 -o acoustic.mp352# Generates: acoustic_1.mp3, acoustic_2.mp3, acoustic_3.mp353```5455### Choose output format5657```bash58# High-quality MP359python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "epic cinematic track" \60 -m epic -d 30 -f mp3_high_quality -o epic.mp36162# CD-quality WAV63python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "ambient meditation pad" \64 -m calm -d 60 -f wav_cd_quality -o ambient.wav65```6667## generate_bgm.py Options6869| Option | Short | Description |70|--------|-------|-------------|71| `--mood MOOD` | `-m` | Emotional mood preset (see below) |72| `--duration SECS` | `-d` | Duration in seconds (5-300, default: 30) |73| `--output PATH` | `-o` | Output file path (default: auto-named) |74| `--variations N` | `-n` | Number of variations to generate (1-5) |75| `--output-format FMT` | `-f` | Audio format (default: mp3_standard) |76| `--raw-prompt` | | Use prompt as-is, skip enhancement |77| `--fade-in MS` | | Fade-in duration in ms (default: 500) |78| `--fade-out MS` | | Fade-out duration in ms (default: 1500) |79| `--no-fade` | | Disable fade-in/fade-out |80| `--bpm INT` | | Suggest BPM in the prompt (optional, mood has defaults) |81| `--key KEY` | | Suggest musical key (e.g. "C major", "A minor") |82| `--list-moods` | | Show all available mood presets |8384### Output Formats8586| Format | Quality | Best For |87|--------|---------|----------|88| `mp3_standard` | 128kbps MP3 | Social media, general use (default) |89| `mp3_high_quality` | 192kbps MP3 | Higher quality, still compact |90| `wav_16khz` | 16kHz WAV | Voice-focused content |91| `wav_22khz` | 22kHz WAV | Medium quality WAV |92| `wav_24khz` | 24kHz WAV | Good quality WAV |93| `wav_cd_quality` | 44.1kHz WAV | Uncompressed CD quality |9495## Mood Presets9697| Mood | Best For | Default Dur. | Character |98|------|----------|-------------|-----------|99| `uplifting` | Success stories, achievements, celebrations | 30s | Bright, optimistic, major key |100| `calm` | Wellness tips, mindful moments, care routines | 30s | Gentle, ambient, soothing |101| `playful` | Fun pet content, games, lighthearted posts | 20s | Bouncy, cheerful, quirky |102| `heartfelt` | Adoption stories, bonds, emotional moments | 30s | Warm, acoustic, intimate |103| `dramatic` | Transformations, reveals, before/after | 20s | Building tension, cinematic |104| `confident` | Tips, expertise, professional advice | 25s | Steady, assured, modern |105| `nostalgic` | Memories, throwbacks, reflection | 30s | Warm, vintage, soft |106| `energetic` | Fitness, active pets, outdoor adventures | 25s | Driving, uptempo, powerful |107| `mysterious` | Teasers, coming soon, curiosity hooks | 20s | Suspenseful, textural, dark |108| `inspiring` | Milestones, growth, motivational content | 30s | Soaring, orchestral, hopeful |109| `cozy` | Home life, comfort, seasonal content | 30s | Lo-fi, warm, intimate |110| `epic` | Big announcements, launches, hero moments | 25s | Cinematic, powerful, layered |111| `tender` | Gentle care, lullabies, quiet moments | 30s | Delicate, piano, strings |112| `corporate` | Presentations, pitch decks, demos | 30s | Clean, modern, understated |113| `generic` | General purpose (default) | 30s | Neutral, versatile |114115Moods are defined in `scripts/moods.json` and can be customized.116117## Common Workflows118119### Background music for social media posts120121```bash122# Happy pet content123python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "cheerful background for a dog playing at the park" \124 -m playful -d 20 -o assets/bgm/dog_park.mp3125126# Heartfelt adoption story127python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "emotional piano for pet adoption story" \128 -m heartfelt -d 30 -o assets/bgm/adoption_story.mp3129```130131### Presentation backing track132133```bash134python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "clean modern background for tech presentation" \135 -m corporate -d 60 --fade-out 3000 -o assets/bgm/presentation.mp3136```137138### Reel / short-form video music139140```bash141python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "trendy upbeat track for instagram reel" \142 -m energetic -d 15 --bpm 120 -o assets/bgm/reel_beat.mp3143```144145### Long-form content (up to 5 minutes)146147```bash148python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "ambient background for a meditation session" \149 -m calm -d 300 -f wav_cd_quality -o assets/bgm/meditation.wav150```151152### Try different styles for the same concept153154```bash155# Generate 3 variations, pick your favourite156python3 ~/.cursor/skills/bg-music/scripts/generate_bgm.py "warm acoustic guitar background" \157 -m heartfelt -d 30 -n 3 -o assets/bgm/acoustic.mp3158```159160## Fade-In / Fade-Out161162Background music tracks benefit from smooth fades. By default:163- **Fade-in**: 500ms gentle ramp164- **Fade-out**: 1500ms smooth tail165166Use `--fade-in` and `--fade-out` to customize (in ms), or `--no-fade` to disable.167168Fades are applied via ffmpeg after generation -- the model generates the full track, then fades are applied as post-processing.169170## Model171172Uses **ElevenLabs Music** (`elevenlabs/music`) on Replicate -- studio-grade music generation with:173174- Text-to-music from natural language prompts175- Instrumental-only mode (enabled by default for background music)176- Up to 5 minutes of audio per generation177- Multiple output formats (MP3 and WAV at various quality levels)178- Commercial use license179180Pricing: ~$8.30 per 1000 seconds of output audio (~120 seconds for $1).181182## Prompt Enhancement183184Enhancement adds musical descriptors to improve results:1851861. Injects mood-specific style keywords (tempo, instruments, tonality)1872. Adds production quality descriptors (mixed, mastered, professional)1883. Suggests BPM range when appropriate1894. Adds "background music" / "instrumental" framing1905. Keeps your core description intact191192## Configuration193194Config at `~/.cursor/skills/bg-music/config.json`:195196```json197{198 "replicate_api_token": "YOUR_TOKEN",199 "default_mood": "generic",200 "default_duration": 30,201 "default_output_format": "mp3_standard"202}203```204205Falls back to tokens from `sound-effects`, `avatar-video-reel`, or `brand-asset-studio` skills.