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

  1. Instala las dependencias:
pip install -r requirements.txt
  1. (Opcional) Configura el acceso a la API de YouTube Music:

Uso

El servidor proporciona una herramienta principal: recommend_background_music

Parámetros

  • script (obligatorio): Tu guion/contenido de YouTube Shorts
  • duration (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)

  1. Instala ytmusicapi: pip install ytmusicapi
  2. Ejecuta: ytmusicapi browser
  3. Sigue las indicaciones para pegar los encabezados del navegador desde YouTube Music
  4. Guarda como oauth.json

Método 2: Configuración OAuth

  1. Crea un proyecto de Google Cloud
  2. Habilita la API de datos de YouTube v3
  3. Crea credenciales OAuth
  4. Ejecuta: ytmusicapi oauth
  5. 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! 🎵