/auto-video-edit: de filmagem bruta a vídeo finalizado
Execute tudo sem precisar parar para perguntar. Corrija erros e execute novamente até que exista um final-video.mp4 de boa qualidade.
SKILL_DIR abaixo significa a pasta onde este arquivo está (normalmente ~/.claude/skills/auto-video-edit).
1. Verifique a configuração (uma vez)
ls SKILL_DIR/.venv/bin/python SKILL_DIR/remotion/node_modules/.bin/remotion
Se algum estiver faltando, execute o install.sh do repositório, ou faça manualmente:
python3 -m venv SKILL_DIR/.venv && SKILL_DIR/.venv/bin/pip install -r SKILL_DIR/requirements.txt
cd SKILL_DIR/remotion && npm install && npx remotion browser ensure
Também precisa de ffmpeg, ffprobe e node no PATH (macOS: brew install ffmpeg node).
2. Execute o pipeline
Na pasta com a filmagem (o maior arquivo de vídeo é usado, a menos que você nomeie um):
bash SKILL_DIR/scripts/run_all.sh # ou: run_all.sh meu-video.mov
Ele executa três etapas, cada uma também executável independentemente com SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/<etapa>.py:
| Etapa | O que faz | Gera |
|---|---|---|
edit.py | encontra fala, corta silêncios > 0,5 s (mantém 0,15 s de respiro), divide em planos de ~4,5 s, escolhe zoom normal / aproximado (1,3×) / fechado (1,5×) por plano a partir das palavras, centraliza os zooms no rosto detectado, corrige cor, masteriza a voz para -14 LUFS, fades de 10 ms em cada corte | edited-video.mp4, work/transcript.json, work/edit_report.json |
animate.py | encontra momentos que precisam de um visual: números com unidade → Contador, "A vs B" / "em vez de" / antes-depois → Comparação, 3+ sentenças "primeiro / depois / finalmente" → Fluxograma, afirmações fortes ("a verdade é", "a maioria das pessoas", …) → CartãoTexto; cerca de 1 cartão a cada 15 s, nunca nos primeiros 2,5 s; renderiza cada cartão no tamanho e fps do vídeo | work/animation_plan.json, animations/*.mp4, work/animation_manifest.json |
finalize.py | insere cada cartão em seu momento com fades suaves; se existir uma pasta broll/, insere clipes cujos nomes de arquivo correspondam a palavras faladas (broll/cafe.mp4 → "café") por 3 s | final-video.mp4, work/finalize_report.json |
Flags úteis: edit.py --no-zoom, --whisper small (melhor transcrição, mais lento), --silence-db -35 (sala silenciosa) / -25 (sala barulhenta), --min-silence 0.35 (cortes mais justos). animate.py --max 3, --min-gap 8.
3. Torne os cartões inteligentes (faça isso toda vez)
O plano automático usa regras. Melhore-o com a transcrição antes da renderização final:
SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/animate.py --plan-only- Leia
work/transcript.jsonework/animation_plan.json. Edite o plano:- Reescreva cada
headline/label/steps/valueem 2–6 palavras impactantes que digam o que o orador quis dizer (não um fragmento da frase). Corrija números que a transcrição entendeu errado. - Remova cartões que não ajudam no entendimento; adicione um cartão onde um número-chave, lista ou contraste não tem nenhum. Tipos e props de cartão:
Counter:{"to": 75, "decimals": 0, "prefix": "$", "suffix": "%", "label": "..."}Comparison:{"left": {"label": "Antes", "value": "4 horas"}, "right": {"label": "Depois", "value": "10 min"}}Flowchart:{"steps": ["Gravar", "Upload", "Publicar"]}(2–5 passos)TextCard:{"headline": "Ninguém fala sobre isso", "body": ""}
- Cada cartão precisa de
"start"(segundos em edited-video.mp4) e"seconds"(3–5).
- Reescreva cada
SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/animate.py --from-planSKILL_DIR/.venv/bin/python SKILL_DIR/scripts/finalize.py
4. Verifique o resultado
- Leia
work/edit_report.jsonework/finalize_report.json: duração diminuiu de forma sensata, sem avisos. - Capture quadros para inspecionar:
ffmpeg -ss 5 -i final-video.mp4 -frames:v 1 -y work/check.jpg(e no início de cada cartão + 1 s). Olhe para eles: rosto no quadro nos planos com zoom, cartões legíveis, nada cortado. - Se um zoom cortar o rosto severamente, execute novamente
edit.py --no-zoom. Se os cortes parecerem abruptos, use--min-silence 0.8.
Se algo falhar
Cada etapa escreve toda a saída do ffmpeg/Remotion em work/*.log. Leia as últimas linhas, corrija a causa e execute apenas aquela etapa novamente. Comuns:
whisper unavailable→ o venv está faltando; instale-o (etapa 1). A edição ainda funciona sem escolhas de zoom.- Remotion
Could not find a browser→cd SKILL_DIR/remotion && npx remotion browser ensure. - Um cartão falha ao renderizar → ele é repetido como um TextCard simples e depois ignorado; o vídeo ainda termina.
Relatório
--- EDIÇÃO DE VÍDEO CONCLUÍDA ---
Entrada / Saída / Duração antes → depois / cortes / mix de zoom / cartões / b-roll / tamanho do arquivo
Em seguida, nomeie qualquer coisa que não pôde ser corrigida.