music-video
Transforme uma música finalizada em um videoclipe de 24fps. A música é o áudio mestre. Os intervalos de cena cobrem a faixa exatamente uma vez.
Gatilhos
- videoclipe / MV / lyric video / visualizer / storyboard
- 音乐视频 / MV合成 / 歌词动画 / 歌曲动画
Capacidades
code: inicialize um projeto p5.js e p5.brush fixo e anime a música em JavaScript.hybrid: inspecione imagens de personagens, cenas estáticas e clipes de vídeo locais e monte-os. Nenhuma API de geração de imagem ou vídeo é chamada.- Análise local de batida, onset, baixa frequência e volume para pontos de corte e dicas de animação.
- Montagem frame-exata com a música original como única trilha sonora.
Entradas
Obrigatórias:
song: áudio local (.mp3,.wav,.m4a,.flac,.ogg,.aac)brief: a ideia visual, o público e quaisquer referências necessáriasmode:codeouhybrid
Opcionais:
lyrics: texto ou.srt. Necessário antes do storyboard quando o timing vocal importa.assets: diretório de imagens e clipes parahybridaspect:16:9(padrão),9:16,1:1ou4:3
Se o usuário quiser que uma música seja criada primeiro, use text-to-music e depois retorne aqui com o arquivo escolhido.
Saídas
<project>/output/final.mp4docs/CREATIVE_BRIEF.md,docs/STORYBOARD.md,docs/TASKS.mdedocs/PROGRESS.mdaudio/analysis.jsonedocs/inspect.jsonquando existirem ativos
Fluxo de trabalho
Execute python3 skills/music-video/scripts/mv.py a partir da raiz do repositório. Se este skill estiver instalado em outro lugar, use o scripts/mv.py ao lado deste arquivo. Crie o projeto fora do diretório do skill.
- Escolha
codequando o vídeo for desenhado em JavaScript. Escolhahybridquando o usuário fornecer imagens ou clipes. Pergunte uma vez quando nenhum dos dois estiver claro. - Inicialize um projeto isolado:
python3 skills/music-video/scripts/mv.py init \
--project ./mv-project --song ./song.mp3 --lyrics ./lyrics.txt --mode code
python3 skills/music-video/scripts/mv.py init \
--project ./mv-project --song ./song.mp3 --lyrics ./lyrics.srt \
--assets ./clips --mode hybrid --aspect 16:9
- Analise a música. Trate mudanças de andamento como aproximadas e confirme os limites das seções a partir do áudio:
python3 skills/music-video/scripts/mv.py analyze --project ./mv-project
- Obtenha o timing da letra. Se o usuário não o forneceu, use speech-to-text somente quando
NOIZ_API_KEYou~/.config/noiz/api_keyjá existir. Nunca imprima a chave. Se nenhum dos dois existir, peça a letra ou os timestamps e não faça upload da música. - Leia references/opus-5.5-prompt.md e siga-o. Escreva o briefing criativo e o storyboard antes do código da cena ou da montagem. Revise a abertura e o pico principal antes de construir os outros capítulos.
- No modo
code, leia<project>/animation/ANIMATION_GUIDE.mdantes de desenhar. DefinaPROJECT.bpmePROJECT.offseta partir deaudio/analysis.json. O canvas do template fixo é 1920×1080; alterestudio.htmle a janela do renderizador antes de usar outra proporção. Verifique o movimento com o renderizador do template:
node render.mjs --sheet=1,2,3 --out=../output/sheets/pilot.jpg
node render.mjs --strip=START:END --out=../output/sheets/pilot-motion.jpg
node render.mjs --clip --range=START:END --out=../output/pilots/opening.mp4
Execute-os dentro de <project>/animation. Passe --chrome ou defina CHROME_PATH quando o Chrome não estiver em um local padrão. Uma folha de contato apenas exibe o layout. Um --strip ou a reprodução da abertura, pico e final é a revisão de movimento.
7. No modo hybrid, inspecione a mídia local e pare se um clipe necessário estiver faltando. Não gere um substituto.
python3 skills/music-video/scripts/mv.py inspect --project ./mv-project
- Escreva
timeline.jsonusando references/timeline.schema.json. Os intervalos são inclusivos emstart_framee exclusivos emend_frame. - Monte e analise o resultado:
python3 skills/music-video/scripts/mv.py assemble --project ./mv-project
Timeline
{
"fps": 24,
"width": 1920,
"height": 1080,
"audio": "audio/source.mp3",
"scenes": [
{
"id": "opening",
"start_frame": 0,
"end_frame": 240,
"source": "output/pilots/opening.mp4",
"source_start": 0,
"fit": "cover",
"transition": "fade",
"fade_frames": 6
}
],
"overlays": []
}
fade permanece dentro de sua própria cena. Não sobreponha cenas para criar um crossfade.
Conclusão
Finalize somente quando cada item for verdadeiro:
[0, ceil(duration × 24))é coberto exatamente uma vez, sem lacuna ou sobreposição.final.mp4tem um fluxo de vídeo e a música original completa.- A abertura, o pico principal e o final foram revisados em movimento.
- A última história lida teve tempo para se estabelecer.
docs/PROGRESS.mdnão tem bloqueios em aberto.
Segurança
init --mode code clona JohnHeibel/ClaudeAnimationBase no commit 0ac8bf2b31942376cb6b8c4074715595d512acd2 dentro do projeto. Esse template é licenciado MIT. Análise, inspeção, renderização e montagem permanecem locais. O modo híbrido não faz upload de mídia e não chama um serviço de geração de imagem, vídeo ou música.
Requisitos
ffmpegeffprobe- Python 3.9+
analyze:uv pip install 'numpy>=2,<3'- modo
code:git, Node.js e Google Chrome - modo
hybrid: ativos locais apenas
Limitações
- Este skill não compõe música, gera efeitos sonoros ou cria imagens e vídeo por meio de uma API.
- A grade de batidas assume um andamento aproximadamente constante.
- Preenchimentos aquarela no modo code podem levar segundos por quadro sem uma GPU discreta. Peça ao renderizador para evitar esses preenchimentos em gráficos integrados.
- A montagem rejeita um clipe mais curto do que sua cena, em vez de congelá-lo ou reajustá-lo.