Find BGM
Encontra
Documentação
Servidor MCP Find BGM
Um servidor MCP que ajuda criadores de conteúdo do YouTube a encontrar a música de fundo perfeita para seus Shorts, analisando o conteúdo do roteiro e recomendando faixas do YouTube Music.
Recursos
- Análise de Roteiro: Analisa humor, tema, ritmo e sentimento dos roteiros de vídeo
- Recomendações Inteligentes: Usa a API do YouTube Music para encontrar faixas de fundo adequadas
- Filtro de Duração: Garante que as recomendações se ajustem à duração do seu vídeo curto
- Pontuação de Confiança: Classifica as recomendações por relevância ao seu conteúdo
Arquitetura
O servidor segue princípios de arquitetura limpa com design 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
Instalação
- Instale as dependências:
pip install -r requirements.txt
- (Opcional) Configure o acesso à API do YouTube Music:
- Siga o ytmusicapi setup guide
- Crie o arquivo
oauth.jsonno diretório do projeto - Sem isso, o servidor usará recomendações simuladas
Uso
O servidor fornece uma ferramenta principal: recommend_background_music
Parâmetros
script(obrigatório): Seu roteiro/conteúdo de Short do YouTubeduration(obrigatório): Duração do seu Short em 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"
Exemplo de Resposta
{
"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
}
]
}
Configuração
Personalize o comportamento com variáveis de ambiente:
# 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
Configuração da API do YouTube Music
Método 1: Autenticação via Navegador (Recomendado)
- Instale o ytmusicapi:
pip install ytmusicapi - Execute:
ytmusicapi browser - Siga as instruções para colar os cabeçalhos do navegador do YouTube Music
- Salve como
oauth.json
Método 2: Configuração OAuth
- Crie um projeto no Google Cloud
- Ative a API de Dados do YouTube v3
- Crie credenciais OAuth
- Execute:
ytmusicapi oauth - Conclua o fluxo de autenticação
Sem a API, o servidor funciona com dados simulados para testes.
Executando o Servidor
python server.py
O servidor roda em stdio e pode ser integrado a qualquer cliente compatível com MCP.
Testes
# Test all components
python test_server.py
# Test with virtual environment
source venv/bin/activate
python test_server.py
Integração com Claude Desktop
Adicione ao seu claude_desktop_config.json:
{
"mcpServers": {
"find-bgm": {
"command": "/path/to/find_bgm/venv/bin/python",
"args": ["/path/to/find_bgm/server.py"]
}
}
}
Componentes
ScriptAnalyzer
Analisa o conteúdo do roteiro para detectar humor, tema e ritmo usando processamento de linguagem natural.
YouTubeMusicService & MusicRecommendationService
Lida com a integração da API do YouTube Music e gera recomendações pontuadas.
BGMTools
Interface de ferramenta MCP que orquestra a análise de roteiro e recomendações de música.
Gerenciamento de Configuração
Configuração baseada em ambiente com padrões sensatos e segurança de tipos.
Exemplo 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
)
O servidor fornece recomendações musicais inteligentes para ajudar criadores a encontrar a trilha sonora perfeita para seu conteúdo! 🎵