promo-video
Um filme é feito em seis estágios. Cada estágio termina com algo que o humano verifica. Não avance antes do tempo: o estágio caro (a construção) só é barato se os anteriores estiverem resolvidos, porque cada evento visual é posicionado em relação à música e à voz.
Diga o plano ao humano uma vez no início (README.md tem a versão para humanos), depois execute os estágios em ordem. Fale com eles na lingua deles. Mantenha todos os arquivos do projeto em um diretório (<project>/: audio/, vo/, PLAN.md, elevenlabs.md, o projeto Remotion em video/).
| # | Estágio | Você faz | Humano faz | Referência |
|---|---|---|---|---|
| 1 | Música | analisa a faixa, encontra o BPM real e os marcos determinantes | escolhe a faixa no Epidemic Sound, usa Create a cut para definir a duração, te envia o arquivo | references/01-music.md |
| 2 | Storyboard | faz as perguntas orientadoras, escreve PLAN.md (tabela de cenas sincronizada com a música) | responde, aprova | references/02-storyboard.md |
| 3 | Roteiro de locução | escreve as falas + a captação ElevenLabs marcada | gera no ElevenLabs, envia o arquivo | references/03-voiceover.md |
| 4 | Corte da locução | abre cut_ui.py na captação, depois divide, nivela, posiciona cada fala | clica entre as falas na página do navegador, pressiona Done; verifica a tabela de posicionamento | references/03-voiceover.md |
| 5 | Construção | projeto Remotion a partir de template/, cena por cena, verifica cada still | revisa stills / um render rascunho | references/04-build.md |
| 6 | Revisão + polimento | render, verificação de volume, abre review_ui.py no render, lê as notas e quadros deles, corrige, re-render | assiste na página de revisão, deixa notas no quadro, escolhe Aprovado / Precisa de alterações | references/05-review.md |
Automação de navegador: ofereça, nunca presuma
Os estágios 1 e 3 ocorrem em sites (Epidemic Sound, ElevenLabs). Se uma ferramenta ou skill de automação de navegador estiver disponível (ex.: ego-browser, um setup Playwright, um browser MCP), ofereça-se para fazer essas partes você mesmo, e diga claramente o que isso envolve antes de pedir um sim:
- Contas: ambos os sites exigem uma conta (Epidemic Sound é uma assinatura paga com teste grátis; ElevenLabs tem um nível gratuito com limite mensal de caracteres). Se o humano não tiver nenhuma, eles se cadastram: você não cria contas.
- Custo: ElevenLabs cobra por caracteres; um filme de 40-60 s são ~600-1000 caracteres, e cada regeneração é cobrada novamente. Downloads do Epidemic contam contra o plano. Informe o gasto esperado e pergunte primeiro.
- Login e pagamento são do humano: entregue o navegador (
task.handOff()no ego-browser) para login, 2FA, captchas e qualquer tela de pagamento; retome após eles dizerem que terminaram. Nunca digite a senha deles, nunca insira ou armazene detalhes de cartão, nunca cole a chave de API deles em uma página ou arquivo. - O que você pode fazer após um sim: pesquisar/filtrar faixas pelo mood e BPM acordados e abrir candidatas para eles ouvirem (eles escolhem), clicar em Create a cut com a duração alvo e baixar o resultado; colar a captação
elevenlabs.md, aplicar a voz e configurações que eles escolheram, gerar uma vez, baixar o mp3. - Sem essa ferramenta, ou se eles recusarem: dê a eles os passos exatos (documentos dos estágios 1 e 3) e aguarde o arquivo.
As escolhas continuam sendo deles: a faixa e a voz nunca são escolhidas para eles.
Regras básicas (aprendidas da maneira mais difícil)
- Tudo mostrado é real. Malhas de exemplo reais (tesselar o CAD/STEP real), código e API reais em painéis de código, a interface reconstruída a partir dos próprios componentes frontend do produto. Conteúdo de aparência falsa é a única coisa que os espectadores notam. Se você não conseguir o material real, diga e pergunte – não invente.
- A música é o relógio. Meça o BPM real (
scripts/music_analyze.pyajusta; um BPM adivinhado que esteja 1,2% errado coloca uma emenda um terço de batida fora e o humano ouve um tropeço). Todos os tempos vivem emsrc/marks.ts; as cenas os importam, nunca codificam segundos diretamente. - Confirme etapas externas ou caras: o arquivo de música e a voz são escolha do humano; você nunca os escolhe para eles. Nunca imprima chaves de API ou tokens de login que apareçam no produto que você está filmando.
- Verifique imagens com stills, não por fé: renderize os quadros nos marcos (batidas, cortes, o logotipo) e olhe para eles antes de um render completo. Um render completo leva minutos; um still leva segundos.
- Mantenha a versão antiga. Quando o humano pedir uma versão reduzida ou variante, copie o diretório do projeto e edite a cópia (
cp -R video video_short, link simbóliconode_modules). - Relate como um editor: o que mudou, o caminho do arquivo, o que ouvir/observar e em qual segundo.
Ferramentas neste skill
Todos os scripts Python rodam com uv run (as dependências são declaradas em cada arquivo; nada para instalar).
| Script | Propósito |
|---|---|
scripts/music_analyze.py track.wav --out beats.json | BPM real (ajustado), grade de batidas/compassos, seções, drop, lacunas silenciosas |
scripts/music_splice.py track.wav out.wav --beats beats.json --keep a:b --keep c:d | encurtar uma faixa com um salto alinhado a compasso e crossfade; verifica a junção |
scripts/cut_ui.py take.mp3 --mode cuts --script elevenlabs.md --out vo/cuts.json | página de corte no navegador (forma de onda, roteiro mostrado linha por linha, fala vs pausas, zoom, desfazer/refazer): o humano reproduz e clica onde uma linha termina, pressiona Done, a aba fecha e cuts.json chega para você. --mode marks --beats beats.json marca o drop/stab/breakdown da música na grade de batidas |
scripts/vo_cut.py take.mp3 --regions vo/cuts.json --out vo/ | dividir uma captação ElevenLabs em clipes nivelados + clips.json (ou --lines N --ends t1,... se o humano preferir digitar tempos) |
scripts/review_ui.py out/promo.mp4 --out review/review.json [--overlay overlay.json] | página de revisão no navegador: monitor no topo, faixa de timeline abaixo (filmstrip + forma de onda da mixagem final + batidas/marcas/linhas de voz opcionais). O humano deixa notas em um momento ou intervalo; cada nota carrega o quadro exato; eles finalizam com Aprovado / Precisa de alterações e review.json chega para você |
scripts/new_project.sh <dir> [--link-modules path] | projeto Remotion a partir de template/ (palco metal, relógio de batida, mixagem VO, câmera virtual) |
template/tools/mesh.py | formas STEP/OCC -> malha compacta + arestas B-rep para three.js |
template/tools/refold.py | limpar as strings enormes de metadados STEP que o OCC não consegue ler |
template/tools/variants.py, stages.py | variantes de parâmetros de malha / cada sólido intermediário de um caderno CAD (para cenas de "arraste um slider, o modelo segue" e "célula por célula") |
Requer: ffmpeg, node 20+, uv. Para three.js no Chrome headless: playwright's chrome-headless-shell (new_project.sh instala).