video-editing (roteador)
Você edita vídeo executando scripts pequenos e de propósito único e lendo a saída JSON deles, não assistindo ao vídeo. Olhe para quadros (folhas de contato, stills em resolução total) apenas em pontos de decisão.
Qual skill
| O usuário quer... | Skill |
|---|---|
| uma gravação longa dividida em clipes, pontos de corte sugeridos, lead-in morto removido | auto-cut |
| texto de gancho / título / "POV:" no vídeo | hook-overlay |
| legendas, closed captions, uma transcrição, cortes que respeitam palavras | captions |
| volume corrigido, silêncio removido, junções limpas, crossfades | audio-polish |
| um loop contínuo, um GIF, um meme GIF, um sticker | loops-gifs-stickers |
| saber se um render está OK, uma folha de contato, uma etapa de aprovação | render-qc |
| o vídeo no YouTube | youtube-publish |
Pipeline padrão (gravação de tela bruta até Short publicado)
auto-cut -> hook-overlay -> captions -> audio-polish -> render-qc -> youtube-publish
sugerir, placa PNG + transcrever, cortar silêncio, verificar, dry-run,
aprovar, sobrepor ASS, queimar loudnorm folha de contato, upload privado,
dividir, cortar (último visual) (último áudio) usuário aprova ledger
Nem todo trabalho precisa de todas as etapas: um clipe musical pula legendas; um GIF pula publicação. Pergunte quando o objetivo não estiver claro; caso contrário, declare o plano e vá em frente.
Regras fixas (todas as skills)
- Nunca toque no original. As saídas vão para
edit/ao lado da fonte (os scripts usam isso como padrão). - Planeje, depois corte. Proponha pontos de corte / ganchos / configurações e obtenha o OK do usuário antes de etapas destrutivas ou lentas.
- Nunca corte dentro de uma palavra. Para fala, ajuste os cortes às lacunas entre palavras (
captions/snap-to-words). - Cada corte de áudio recebe um fade de ~30 ms. Cliques vêm de cortes em amostras não zero.
- Clipes abrem com conteúdo. Sem quadros pretos, telas de carregamento ou a cauda da tela anterior (
auto-cut/trim-lead, verificado porrender-qc). - O texto permanece na zona segura. Placa de gancho na área superior, no máximo 2 linhas; legendas acima da interface da plataforma inferior; nada sobreposto.
- Ordem importa. Cortes, depois sobreposições, depois legendas (última etapa visual), depois volume (última etapa de áudio), depois QC.
- Faça QC de cada render final com
render-qc/verify-render, depois mostre ao usuário a folha de contato ou o MP4 real. Não julgue a partir de prévias reduzidas. - Aprovação é humana. Nunca passe
--approvedou--allow-publica menos que o usuário tenha dito isso nesta conversa. - Segredos ficam fora do git e dos logs. Clientes OAuth e tokens vivem em variáveis de ambiente ou arquivos ignorados pelo git; nunca os imprima.
- Prefira reexecutar um script com flags diferentes em vez de escrever ffmpeg à mão. Cada script responde a
--helpe--help --json.
Verificação de setup
ffmpeg -version && ffprobe -version # necessário (qualquer build recente; drawtext NÃO é necessário)
node --version # >= 18
npm install # uma vez, na raiz do repositório (instala sharp)
python3 -m pip install faster-whisper # apenas para captions/transcribe.py
Se o ffmpeg não estiver no PATH, defina FFMPEG_PATH e FFPROBE_PATH.
Pacotes de estilo
brands/example.json contém tamanho da tela, fonte, cores, geometria da placa de gancho e estilo de legendas. Copie-o por canal/marca e passe --brand brands/<nome>.json. Use fontes do sistema ou fontes de licença aberta (--font-file); nunca commite fontes comerciais.