Find BGM
Encuentra música de fondo para YouTube Shorts analizando el contenido del guion y recomendando pistas de YouTube Music.
Documentación
Servidor MCP Find BGM
Un servidor MCP que ayuda a los creadores de contenido de YouTube a encontrar la música de fondo perfecta para sus shorts analizando el contenido del guion y recomendando pistas de YouTube Music.
Características
- Análisis de guion: Analiza el estado de ánimo, el tema, el ritmo y el sentimiento de los guiones de video.
- Recomendaciones inteligentes: Utiliza la API de YouTube Music para encontrar pistas de fondo adecuadas.
- Filtrado por duración: Asegura que las recomendaciones se ajusten a la duración de tu video corto.
- Puntuación de confianza: Clasifica las recomendaciones según su relevancia para tu contenido.
Arquitectura
El servidor sigue principios de arquitectura limpia con diseño modular:
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
Instalación
- Instala las dependencias:
pip install -r requirements.txt
- (Opcional) Configura el acceso a la API de YouTube Music:
- Sigue la guía de configuración de ytmusicapi
- Crea el archivo
oauth.jsonen el directorio del proyecto - Sin esto, el servidor utilizará recomendaciones simuladas
Uso
El servidor proporciona una herramienta principal: recommend_background_music
Parámetros
script(obligatorio): Tu guion/contenido de YouTube Shortsduration(obligatorio): Duración de tu short en segundos (15-60)genre_preference(opcional): "pop", "electronic", "chill", "rock", "hip-hop", "classical", "ambient", "any"mood_preference(opcional): "upbeat", "calm", "dramatic", "energetic", "relaxed", "motivational", "any"content_type(opcional): "comedy", "educational", "lifestyle", "fitness", "cooking", "travel", "tech", "other"
Ejemplo de respuesta
{
"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
}
]
}
Configuración
Personaliza el comportamiento con variables de entorno:
# 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
Configuración de la API de YouTube Music
Método 1: Autenticación del navegador (Recomendado)
- Instala ytmusicapi:
pip install ytmusicapi - Ejecuta:
ytmusicapi browser - Sigue las indicaciones para pegar los encabezados del navegador desde YouTube Music
- Guarda como
oauth.json
Método 2: Configuración OAuth
- Crea un proyecto de Google Cloud
- Habilita la API de datos de YouTube v3
- Crea credenciales OAuth
- Ejecuta:
ytmusicapi oauth - Completa el flujo de autenticación
Sin la API, el servidor funciona con datos simulados para pruebas.
Ejecución del servidor
python server.py
El servidor se ejecuta en stdio y puede integrarse con cualquier cliente compatible con MCP.
Pruebas
# Test all components
python test_server.py
# Test with virtual environment
source venv/bin/activate
python test_server.py
Integración con Claude Desktop
Añade a tu claude_desktop_config.json:
{
"mcpServers": {
"find-bgm": {
"command": "/path/to/find_bgm/venv/bin/python",
"args": ["/path/to/find_bgm/server.py"]
}
}
}
Componentes
ScriptAnalyzer
Analiza el contenido del guion para detectar el estado de ánimo, el tema y el ritmo mediante el procesamiento del lenguaje natural.
YouTubeMusicService y MusicRecommendationService
Maneja la integración con la API de YouTube Music y genera recomendaciones puntuadas.
BGMTools
Interfaz de herramientas MCP que orquesta el análisis del guion y las recomendaciones musicales.
Gestión de configuración
Configuración basada en el entorno con valores predeterminados sensatos y seguridad de tipos.
Ejemplo de uso
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
)
El servidor proporciona recomendaciones musicales inteligentes para ayudar a los creadores a encontrar la banda sonora perfecta para su contenido! 🎵