Habilidade de Edição de Vídeo com IA
Você (Claude) é o editor. Esta pasta fornece um motor comprovado para reels, três estilos visuais (Clássico, Explicador 3D, Ilustrado), as regras de roteiro e ritmo do criador, e as ferramentas para narração, renderização, revisão e exportação. Você escreve o roteiro e o código da cena; as ferramentas fazem o trabalho pesado.
SKILL_DIR abaixo significa a pasta onde este arquivo está (no workspace AI Video é <workspace>/skill). Execute todas as ferramentas de qualquer lugar com caminhos absolutos, ex.: node "$SKILL_DIR/tools/reel.mjs" ....
0. Primeira vez neste computador: verificação de configuração (2 minutos)
Execute node "$SKILL_DIR/tools/doctor.mjs". Ele verifica Node, ffmpeg, Python, o navegador headless, a chave ElevenLabs e a voz escolhida, e imprime a correção exata para qualquer item faltante. Oriente o usuário por cada correção uma de cada vez, em palavras simples (eles podem não ser técnicos). Detalhes em SETUP.md.
- Etapas de instalação que você pode executar sozinho (com a permissão do usuário):
npm installenpm run browserdentro de SKILL_DIR,pip3 install numpy. - Chaves de API: o USUÁRIO cola a chave no arquivo que o doctor nomeia. Nunca peça para colar uma chave no chat, nunca imprima ou registre uma chave.
- Voz: se nenhuma voz estiver salva, ajude-os a escolher uma (seção 3). Faça isso uma vez; fica salva para todos os reels futuros.
- Plano de IA: pergunte uma vez qual plano eles usam (Claude Pro, Claude Max, API, Team, Codex, Cursor); você não pode detectar isso sozinho. Salve:
node "$SKILL_DIR/tools/doctor.mjs" --set-plan <max|pro|api|team|codex|cursor|other>. No Max, API ou Team, diga a eles: "seu plano executa os construtores de cena em paralelo, então a produção de vídeo é muito mais rápida". Em qualquer outro plano, pergunte também uma vez: "Melhor qualidade (o processo completo, mas pode esgotar rapidamente seus limites de uso) ou Boa qualidade (uma construção mais leve que se encaixa melhor nos seus limites)?" e salve:node "$SKILL_DIR/tools/doctor.mjs" --set-quality <best|good>. Eles podem mudar a qualquer momento ("use melhor/boa qualidade"). Veja "Modos de esforço" abaixo. - Apresentador (clássico e ilustrado apenas): se
~/.config/ai-video/config.jsonainda não tiver"presenter"e o reel for clássico ou ilustrado, pergunte uma vez por uma foto deles (ou "sem apresentador") e construa a aparência deles (guides/presenter.md). Salvo na configuração deles. Se o usuário disse para não fazer perguntas, use o apresentador padrão do template (engines/classic/template/reel.json) e mencione na entrega que eles podem ter a própria aparência (ou nenhuma) na próxima vez.
Execute o doctor novamente sempre que uma ferramenta falhar com um erro de configuração.
1. Entenda o pedido (não pergunte demais)
A partir de um prompt você precisa: tópico/ângulo, roteiro ou não, estilo, palavra-chave CTA, idioma. Infira o que puder; pergunte no máximo UMA pergunta curta apenas se o tópico em si não estiver claro. Padrões:
- Usuário colou um roteiro → use-o textualmente (apenas corrija erros de digitação óbvios; nunca "melhore"). Caso contrário, escreva-o (seção 2).
- Estilo (veja
guides/styles/):- Clássico (
classic): pontos de discussão, ferramentas, dicas, listas, opiniões, notícias de negócios/IA/tecnologia, qualquer coisa "aqui está como / aqui está por que". O padrão. - Explicador 3D (
explainer3d): "como X funciona realmente" sobre algo físico ou um sistema (gadgets, aplicativos, carros, o corpo, redes, cidades). - Ilustrado (
illustrated: o motor clássico, mesma aparência de papel, legendas e apresentador, mas o herói de cada batida é um desenho de aparência real do assunto viaguides/illustration.md,kits/illustrate.jselibrary/classic/illustrated/): o roteiro é sobre coisas reais e nomeáveis: uma empresa ou rede, uma loja, um lugar ou bairro, um produto, comida, um prédio, um veículo, um aplicativo ou vídeo em um telefone. - Histórias com pessoas e lugares (uma pequena empresa e seus clientes, uma loja, uma rua, uma equipe, uma cidade): Ilustrado quando a história é sobre o negócio, o lugar ou o produto (a fachada real, o balcão, a comida, o mapa, com pequenas pessoas como vida); Explicador 3D quando o ponto é como um sistema se move por aquele lugar (entregas, filas, tráfego, sinais). Quando o usuário nomeia um estilo ("3D", "desenhado", "ilustrado", "como meu último reel"), isso vence.
- Clássico (
- Palavra-chave CTA: uma palavra memorável ligada ao tópico (ex.: PLUGINS, COFFEE), em maiúsculas. Salva em reel.json.
- Idioma: o idioma do roteiro. Defina
"language": "xx"em reel.json (código ISO: ru, es, de, ar...) para que a voz, legendas, CTA e texto da interface (folhas de comentários, DMs) o usem; escreva legendas/ênfase você mesmo se não tiver certeza. Fontes latinas, cirílicas, gregas e vietnamitas estão incluídas; para outros scripts executepython3 "$SKILL_DIR/tools/fonts.py" check <project>após a etapa de voz. - Voz ↔ apresentador: se o usuário se descrever (gênero, idade) ou fornecer uma foto, certifique-se de que a voz salva se encaixa; se obviamente não se encaixar (ex.: uma voz masculina para a apresentadora dele), mencione e ofereça
voices.py searchpara uma correspondente (ou use a deles se insistirem). Para scripts não-ingleses, prefira uma voz marcada com esse idioma.
2. Roteiro (pule se o usuário forneceu um)
Leia guides/scripting.md e siga exatamente: gancho nos primeiros 1,5 s, loop de curiosidade na linha 2, riscos concretos, produto/resposta nomeado apenas depois que o problema é sentido, conversacional (não staccato), 110-170 palavras (≈ 32-50 s: duração ≈ palavras / (3 × velocidade da voz) s; um roteiro mais curto solicitado mantém o gancho, loop e recompensa, comprimido), terminando "Comente KEYWORD e eu enviarei para você...". Escreva em <project>/script.txt. Mostre o roteiro ao usuário no chat antes de narrar se eles pediram para revisar; caso contrário, continue (eles pediram um reel finalizado).
3. Projeto + voz
node "$SKILL_DIR/tools/reel.mjs" new <VIDEOS>/<slug> --style <classic|explainer3d|illustrated>
python3 "$SKILL_DIR/tools/tts.py" <VIDEOS>/<slug>
<VIDEOS> = a pasta videos/ adjacente a esta pasta de skill quando existir (o workspace AI Video: <workspace>/videos/<slug>/), caso contrário ./videos/ na pasta atual do usuário, a menos que ele diga o contrário. <slug> é um nome de tópico curto em kebab-case. --style illustrated prepara um projeto clássico (reel.json "style": "classic", "look": "illustrated"); tudo abaixo que diz "clássico" se aplica a ele, mais guides/illustration.md. tts.py escreve audio/vo.mp3 (pausas ajustadas, aceleradas pela velocidade salva da voz (×1,15 a menos que a voz tenha sido salva com outro --speed), normalizadas em volume) e build/words.json + build/word_index.txt (cada palavra com seu tempo). Toda animação é sincronizada com essas palavras.
- Escolhendo uma voz (primeira execução, ou o usuário pede para mudar):
python3 tools/voices.py search "<o que eles querem>" [--lang xx], dê ao usuário 3 links de pré-visualização, depoisvoices.py add <owner> <voice_id> "<name>"evoices.py use <voice_id> --name "<name>". Gravação própria:tts.py <project> --provider file --audio take.mp3. Vozes OpenAI:voices.py provider openai. - Créditos: uma geração de voz por reel. Se você alterar o roteiro depois, regenere; para correções apenas de tempo use
--reuse(sem novos créditos).
4. Invente os visuais, depois planeje as batidas (storyboard antes do código)
4a. Invente (isso é o que diferencia um reel artesanal de um template). Primeiro leia guides/mindset.md (o padrão e as perspectivas para pensar: seja muito criativo, bonito, nunca vazio, bem animado, instantaneamente compreensível). Depois leia guides/patterns.md (clássico, ilustrado) ou guides/patterns_3d.md (explicador 3D) e aplique seu método de invenção a ESTE roteiro:
- Uma metáfora central / mundo visual que carrega toda a ideia (um objeto físico, máquina ou lugar cujo comportamento É o argumento), e 3-6 adereços personalizados para as batidas. Eles devem vir das palavras deste roteiro, não dos exemplos: os adereços de exemplo nos guias e
library/mostram técnicas, nunca os cole. Pergunte: "este quadro caberia no reel de outra pessoa?" Se sim, é genérico: invente novamente. - Assuntos do mundo real (o roteiro nomeia uma empresa real, lugar, produto, comida, prédio, veículo, ou mostra um vídeo/app em um telefone): desenhe-os como na vida real, não como ícones planos ou cartões de nome:
guides/illustration.md(clássico e ilustrado: primitivaskits/illustrate.js+ exemploslibrary/classic/illustrated/; um vídeo na tela sempre REPRODUZ). A coisa real é muitas vezes o herói e a metáfora inventada age sobre ela. - Escreva a invenção no topo de
STORYBOARD.md: metáfora, por que se encaixa, os adereços, e o único momento "uau" por seção.
4b. Storyboard. Abra build/word_index.txt. Divida o roteiro em batidas: uma batida por frase ou ideia, 1,5-5 s cada. Leia primeiro a seção de qualidade do guia de estilo (e OLHE suas tiras de referência). Depois escreva este bloco para CADA batida (sem batidas de uma linha):
batida NN · "<as palavras>" (palavra i0-i1, s-e)
palco permanece : os elementos já na tela que permanecem (e onde)
cada palavra acentuada adiciona/altera : palavra → o que entra ou muda de estado (uma por palavra acentuada, a cada 0,4-0,8 s)
mantém-se em movimento : a vida ociosa de cada elemento (tique-taque, balançando, rolando, digitando, piscando, flutuando)
apresentador : (clássico) foco que ele aponta + seu ato por frase · (3D) quem/o que age
câmera : inclinar/empurrar/cortar/rastejar em quais palavras · transição de entrada
adereços personalizados : quais dos SEUS adereços inventados aparecem (novo código para escrever)
grandes momentos : batidas, cortes, chicotes, revelações: mire em 1+ por segundo (o motion do reel mede isso no rascunho)
Regras (de guides/direction.md): o palco CONSTRÓI-SE (cada palavra acentuada adiciona ou altera um elemento, os anteriores permanecem e continuam se movendo) com exatamente UM foco por vez; a imagem faz sentido com o som desligado; nada estático por mais de 1,2 s; coisas grandes acontecem NA palavra acentuada; a batida do gancho mostra a recompensa ou o conflito imediatamente, já completo.
5. Construa as cenas
Leia guides/styles/<style>.md completamente antes de escrever código (ilustrado: guides/styles/classic.md + guides/illustration.md) (padrão de qualidade, aparência, tokens, API, contrato de cena, receitas). O motor fornece COMO as coisas se movem (molas, pêndulos, gravidade, palco de construção, atuação do apresentador, câmera, digitação, números rolando, transições); O QUE se move são os adereços que você inventou em 4a, desenhados como novo código no projeto. Orçamento: os reels do criador contêm 50-110 linhas de código de cena personalizado e 3-7 objetos desenhados personalizados por segundo de vídeo; planeje para isso.
- Sincronize com palavras usando o auxiliar do estilo (
wordAt('palavra')/wi(index)), nunca segundos codificados. - Pré-visualize cada adereço inventado sozinho antes de usá-lo (uma batida/cena descartável mostrando apenas o adereço, renderizada com
reel stills <project> <t> --only <id>; o explicador 3D também tem uma página de exibição do kit). Nomeie esse arquivo de cenascenes/preview_<prop>.js(craftignorascenes/preview*.jsescenes/props*.js, então nunca coloque código de reel real em arquivos nomeados assim). Clássico: liste-o emSCENE_FILESmas nunca emTIMELINE: uma cena registrada que não está na linha do tempo nunca renderiza no reel; remova-a deSCENE_FILESantes do final. - Após CADA
reel stills/reel video, leia o final da saída: se listar "erro ao desenhar quadros", esses quadros estão quebrados. Corrija-os primeiro. - Modo paralelo: use subagentes (O modo um-por-um constrói exatamente as mesmas batidas com o mesmo resumo por batida, você mesmo, um após o outro): um por 1-2 batidas, todos em paralelo, cada um recebendo: guides/mindset.md (cole-o no resumo), o caminho do guia de estilo, guides/patterns(_3d).md, guides/illustration.md quando sua batida desenha um assunto do mundo real (clássico), o bloco de invenção, suas linhas e palavras do storyboard, e o estado de transição das cenas vizinhas. Cada subagente renderiza seus stills com
--out <nome da batida>(própria folha, sem sobrescrever). Depois revise-os juntos.
6. Revise seu próprio trabalho (obrigatório, é isso que o faz parecer profissional)
Siga guides/review.md. Em resumo:
node "$SKILL_DIR/tools/reel.mjs" stills <project> <t1> <t2> ...no meio de cada batida e 0,1 s após cada corte (folha:stills/sheet.jpg). OLHE a imagem da folha. Verifique cada item da lista de verificação de revisão; corrija e re-renderize stills até ficar limpo.node "$SKILL_DIR/tools/reel.mjs" video <project>(rascunho rápido em baixa resolução,build/draft.mp4). Extraia e olhe os quadros em torno de cada transição (ffmpeg -ss T -frames:v 1). Corrija pops, sobreposições, silêncio.node "$SKILL_DIR/tools/reel.mjs" motion <project>enode "$SKILL_DIR/tools/reel.mjs" craft <project>: ambos devem imprimir PASS (craft = trabalho original suficiente, nenhum adereço genérico carregando o reel).motionlista cada trecho plano com suas palavras: dê a cada um um evento de construção, movimento secundário, um movimento de câmera ou um ato do apresentador, re-renderize o rascunho, re-execute. Nunca renderize o final enquanto falhar. Se o usuário proibir renderizações de vídeo, pule o rascunho (etapa 2) emotione verifique a densidade nos stills (guides/review.md, "Execuções apenas com stills": algo novo em cada palavra acentuada, nenhuma janela de 1,2 s onde dois stills consecutivos parecem iguais);craftainda executa, e diga na entrega que o movimento não está verificado.- Antes do final, olhe a folha de stills mais uma vez através das perguntas de
guides/mindset.md(mais criativo? completo, bonito, vivo? um foco claro? o criador postaria isso?). Se alguma resposta for "ainda não", melhore primeiro. - Final:
node "$SKILL_DIR/tools/reel.mjs" video <project> --finaldepoisnode "$SKILL_DIR/tools/reel.mjs" export <project>→out/<name>.mp4(1080x1920, 30 fps, H.264 + AAC, pronto para Instagram). Apenas uma renderização por vez (trava embutida). Rascunhos primeiro, final uma vez: é gentil com o laptop do usuário.
7. Entrega
Dê ao usuário: o caminho para out/<name>.mp4, uma legenda para postagem (2-3 linhas que adicionam contexto, a palavra-chave CTA, 3-5 hashtags relevantes), e um lembrete de que "Comente KEYWORD" precisa de uma resposta automática de DM configurada (ManyChat, ReplyRush ou as automações do próprio Instagram) com o link que prometeram. Veja guides/delivery.md. Ofereça uma rodada de alterações ("gancho mais rápido", "voz diferente", "trocar cena 3").
Modos de esforço (leia agent_plan e quality de ~/.config/ai-video/config.json; o doctor os imprime)
- Velocidade: Max, API, Team = paralelo (um subagente por 1-2 batidas, todos ao mesmo tempo: produção de vídeo muito mais rápida)