Find BGM

by opiuman

Not rated
GitHub

About

Finds background music for YouTube shorts by analyzing script content and recommending tracks from YouTube Music.

Details

Author
opiuman
Categories
Search, Other

Setup

Install Find BGM in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/opiuman/mcp-bgm-recommender

Follow the installation instructions in the repository README, then restart your MCP client.

An MCP server that helps YouTube content creators find perfect background music for their shorts by analyzing script content and recommending tracks from YouTube Music.

- Script Analysis: Analyzes mood, theme, pacing, and sentiment from video scripts
- Smart Recommendations: Uses YouTube Music API to find suitable background tracks
- Duration Filtering: Ensures recommendations fit your short video length
- Confidence Scoring: Ranks recommendations by relevance to your content

The server follows clean architecture principles with modular design:

find_bgm/ ├── server.py # Main server entry point ├── config.py # Configuration management ├── models.py # Data models and types ├── script_analyzer.py # Script analysis logic ├── music_service.py # YouTube Music API integration ├── tools.py # MCP tool definitions └── test_server.py # Test suite

- (Optional) Set up YouTube Music API access:

- Follow theytmusicapi setup guide
- Createoauth.jsonfile in the project directory
- Without this, the server will use mock recommendations

The server provides one main tool:recommend_background_music

- script(required): Your YouTube short script/content
- duration(required): Length of your short in seconds (15-60)
- genre_preference(optional): "pop", "electronic", "chill", "rock", "hip-hop", "classical", "ambient", "any"
- mood_preference(optional): "upbeat", "calm", "dramatic", "energetic", "relaxed", "motivational", "any"
- content_type(optional): "comedy", "educational", "lifestyle", "fitness", "cooking", "travel", "tech", "other"

{ "analysis": { "detected_mood": "motivational", "detected_theme": "fitness", "pacing": "medium", "sentiment_score": 0.4, "keywords": ["workout", "energy", "strong"] }, "recommendations": [ { "title": "Uplifting Corporate Background", "artist": "Audio Library", "youtube_music_id": "abc123", "confidence_score": 0.85, "reason": "Strong match for motivational mood and fitness content", "duration": 45, "loop_suitable": true } ] }

Customize behavior with environment variables:

# Logging level export BGM_LOG_LEVEL=DEBUG # OAuth file location export BGM_OAUTH_FILE=my_oauth.json # Search and recommendation limits export BGM_MAX_DURATION=240 export BGM_SEARCH_LIMIT=15

Method 1: Browser Authentication (Recommended)

- Install ytmusicapi:pip install ytmusicapi - Run:ytmusicapi browser - Follow prompts to paste browser headers from YouTube Music - Save asoauth.json - Create Google Cloud project - Enable YouTube Data API v3 - Create OAuth credentials - Run:ytmusicapi oauth - Complete authentication flow

Without the API, the server works with mock data for testing.

The server runs on stdio and can be integrated with any MCP-compatible client.

# Test all components python test_server.py # Test with virtual environment source venv/bin/activate python test_server.py

Add to yourclaude_desktop_config.json:

{ "mcpServers": { "find-bgm": { "command": "/path/to/find_bgm/venv/bin/python", "args": ["/path/to/find_bgm/server.py"] } } }

Analyzes script content to detect mood, theme, and pacing using natural language processing.

YouTubeMusicService & MusicRecommendationService

Handles YouTube Music API integration and generates scored recommendations.

MCP tool interface that orchestrates script analysis and music recommendations.

Environment-based configuration with sensible defaults and type safety.

from models import RecommendationRequest from script_analyzer import ScriptAnalyzer from music_service import MusicRecommendationService # Analyze script analyzer = ScriptAnalyzer() analysis = analyzer.analyze_script("Your video script here") # Get recommendations service = MusicRecommendationService(music_service, config) recommendations = await service.get_recommendations( analysis, "electronic", "upbeat", 30 )

The server provides intelligent music recommendations to help creators find the perfect soundtrack for their content! 🎵

Search global news using natural language. Webz.io News Search API returns the most relevant articles and content, with filters for source, country, language, date, sentiment, and category.

A set of tools to interact with YouTube, including video search, transcript extraction, and comment retrieval.

No local install, no cloud IP blocks. YouTube transcript, search, and channel data for AI agents. TranscriptAPI runs the infrastructure — 500K+ transcripts/day at 49ms. OAuth or API key. 100 free credits.

BYOK Reddit/YouTube research CLI with a tamper-evident audit log and an MCP server.

An agent-based tool for web search and advanced research, including analysis of PDFs, documents, images, and YouTube transcripts.

An MCP server providing search capabilities for Reddit, YouTube, and Twitter.

Enables LLMs to search, download, and extract information from YouTube music videos.

Encodes text data into videos that can be quickly looked up with semantic search.

A search tool for finding movies and TV shows from multiple video sources with link validation.

Provides search capabilities and data retrieval from SerpAPI and YouTube for AI assistants.

MCP server for AI music catalog — search, stream, and browse 1M+ AI-generated tracks

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.