/video-edit
Clipes brutos entram, reel finalizado sai. O usuário nunca abre um editor: ele revisa uma cópia no celular e dá feedback; cada rodada é um re-render de ~2 minutos.
Leia antes de construir: references/looks.md (os três looks, valores exatos), references/layout.md (zona segura,
posicionamento, fórmula atrás da cabeça), references/gotchas.md (todas as armadilhas já enfrentadas). Leia
references/overlays.md quando o roteiro pedir uma inserção animada.
Funciona em macOS, Linux e Windows. setup.py detecta a máquina no início de cada execução e todo comando abaixo vem desse registro, então nunca adivinhe caminhos ou shells: veja "Esta máquina" logo após o Passo 0.
Passo 0: Configuração inicial (executada uma vez)
SK é a pasta desta skill (a que contém este SKILL.md), como caminho completo. Geralmente ~/.claude/skills/video-edit;
no Windows é C:/Users/<nome>/.claude/skills/video-edit.
Procure por SK/config.json.
Se existir: carregue-o (nome, handle do Instagram, look padrão, pastas), execute o script de configuração exatamente como no passo 3 abaixo (alguns segundos: ele só verifica e repara o ambiente após uma atualização), leia "Esta máquina", e vá para o Passo 1 assim que imprimir PRONTO.
Se não existir:
- Diga: "Bem-vindo ao /video-edit! Vamos configurar você. Isso leva cerca de 2 minutos e acontece apenas uma vez."
- Pergunte, em uma única mensagem:
- Seu nome (usado na inserção do perfil do Instagram)
- Seu handle do Instagram (para a inserção do perfil e para puxar seus reels para o efeito de órbita)
- Look padrão: bold (palavras cinéticas atrás da cabeça), cool girl (quente, serifado itálico amarelo, seus reels orbitando você) ou cool dude (editorial escuro, caps rastreados + serifado). Ofereça bold se ele(a) não tiver certeza.
- Onde seus clipes brutos geralmente ficam (padrão
~/Downloads) e onde os projetos devem viver (padrão~/reel-edits)
- Execute o script de configuração com o Python que a máquina tiver. Tente estas ordens até que uma imprima linhas STATUS:
python3 "SK/scripts/setup.py", depoispython "SK/scripts/setup.py", depoispy -3 "SK/scripts/setup.py". (No Windows,python3geralmente é um stub da Microsoft Store que imprime "Python was not found": apenas tente o próximo.) Se nenhum funcionar: Python está faltando. Dê a correção para o sistema deles e pare (Windows:winget install --id Python.Python.3.12 -e, Mac:brew install python, Linux:sudo apt install python3 python3-venv). Em seguida, leia as linhas STATUS:- ffmpeg / node / python venv AUSENTE: a linha termina com a correção exata para ESTA máquina (winget no Windows, brew no Mac, apt no Linux). Entregue ao usuário e pare até que o script imprima PRONTO.
- Windows: o usuário cola as linhas winget na própria janela do PowerShell (winget pede para concordar com seus termos na primeira vez), depois sai do Claude Code completamente e o reabre, ou os novos programas não são encontrados.
- O script baixa os 6 efeitos sonoros sozinho. Se ainda relatar AUSENTES (offline), isso é opcional: o reel simplesmente não terá SFX até que sejam adicionados.
- Opcional, Apify (puxa reels e estatísticas do perfil automaticamente): tente uma chamada MCP Apify simples. Se não estiver
conectado, diga que é opcional e como adicioná-lo:
- Crie uma conta gratuita em https://apify.com e copie o token de API de Configurações > API & Integrations.
- No terminal, cole esta linha com o token no lugar de SEU_TOKEN:
claude mcp add apify -e APIFY_TOKEN=SEU_TOKEN -- npx -y @apify/actors-mcp-server(atenção: o Claude Code armazena o token em texto simples em~/.claude.json; mantenha esse arquivo privado). - Reabra o Claude e execute /video-edit novamente. Sem Apify, a skill pede para o usuário soltar os arquivos de reel no projeto.
- Salve
SK/config.json(sem segredos, nunca):{"name": "...", "instagram": "handle-sem-@", "defaultLook": "bold", "clipsDir": "~/Downloads", "projectsDir": "~/reel-edits", "setupComplete": true, "setupDate": "AAAA-MM-DD"} - Diga: "Configuração concluída! Executando /video-edit agora..." e continue.
Esta máquina (leia a cada execução)
Leia SK/.platform.json, escrito por setup.py. Ele registra o SO (os: macos, linux ou windows), a CPU e os
comandos exatos para este computador:
PY= seu valorpython: o Python da própria skill (.venv/bin/pythonno Mac e Linux,.venv/Scripts/python.exeno Windows). Execute TODO script Python desta skill com ele, nunca umpython3puro.HF=PY "SK/scripts/hf.py": inicia o HyperFrames fixado (npx --yes [email protected] ...) com o Node correto em qualquer SO. Semnvm use, sem problemas comnpx.cmd.cutout:CoreML(Apple Silicon) ouCPU(Windows, Linux, Macs Intel: sem ajuda de GPU, então a etapa de cutout é a lenta; diga isso, execute em segundo plano e continue construindo).
setup.py reescreve este arquivo a cada execução (Passo 0), então está sempre atualizado. Arquivo ausente, ou PY não
existe mais: a configuração não foi executada ou não chegou ao PRONTO; execute-a como no Passo 0.3 e siga a correção.
Um estilo de comando que funciona em zsh, bash, Git Bash e PowerShell:
- Caminhos completos entre aspas duplas com barras normais (funciona no Windows também):
"PY" "SK/scripts/ingest.py" "<projeto>". - No PowerShell (Windows sem Git para Windows, ou sempre que a ferramenta PowerShell for a que você tem) coloque
&na frente:& "PY" "SK/scripts/ingest.py" "<projeto>". - Um comando por chamada. Sem
&&, semVAR=1 comando, sem~dentro de argumentos, semsource, semzsh. ffmpegeffprobeestão no PATH em todos os SOs (a configuração verifica), então comandos ffmpeg avulsos são os mesmos em todos os lugares.
Regras rígidas
- Tudo dentro da zona segura do Reels: topo 220, fundo 450 (nada abaixo de y 1470), laterais 35, direita 100 a partir de y 1155.
- Nunca cubra o rosto com texto ou cartões. Palavras atrás da cabeça mostram pelo menos ~70% de cada letra.
- Legendas dizem o que foi realmente dito: corrija os erros de interpretação do Whisper em nomes e palavras-chave ("Claude" geralmente aparece como "cloud"/"claws", "skill" como "scale"). Sem travessões em texto na tela.
- Efeitos sonoros sutis (modelo
SFX_GAIN = 0.75dos volumes base), nunca mais altos que a voz. - Dê crédito a outros criadores na tela (@handle) sempre que seus reels aparecerem. Números reais no próprio perfil do usuário; qualquer outra coisa (comentários, histórico de chat) é um placeholder genérico, nunca uma pessoa real, nunca uma prova fabricada.
- Prove cortes a partir do render final, não de snapshots.
- Nunca delete os arquivos do usuário. Os originais são lidos, nunca modificados.
Fluxo de trabalho
1. Entrada
- Clipes: os arquivos que o usuário nomear, senão os arquivos de vídeo mais recentes em
clipsDir. Crie<projectsDir>/<slug-curto>/. (~no config.json é a pasta home do usuário,C:/Users/<nome>no Windows. Os scripts da skill expandem isso.) - Links de referência (IG reels, pins do Pinterest) para um estilo: baixe-os e analise os quadros antes de projetar qualquer coisa (veja overlays.md para como buscá-los).
2. Ingestão
PY SK/scripts/ingest.py <projeto> <clipes ou pasta> [--newest 5]
Veja work/sheets.jpg (cenas e ângulos) e leia transcript.txt (linhas por clipe, palavras com tempos, mapa de fala).
3. Escolher takes -> <projeto>/edl.json
- Reconstrua o roteiro a partir das takes: as pessoas repetem uma linha até acertar. Use a ÚLTIMA take completa e limpa, a menos que o usuário diga o contrário ("a melhor parte começa em 0:47" significa uma take contínua a partir dali).
- Pontos de entrada/saída do mapa de fala: comece ~0,05-0,07s antes da primeira palavra, termine no início do silêncio após a última palavra. Elimine ar morto entre seções; confirme pausas curtas com silencedetect antes de cortar (Whisper pode inventar uma palavra principal em um corte).
- Dois segmentos consecutivos do mesmo ângulo: faça punch-in em um (zoom 1,3-1,9 do original 4K, cx/cy no peito).
- Palavras incertas (palavra-chave, gatilho CTA): re-transcreva aquele trecho com medium.en e um prompt contento os nomes.
- Formato:
[{"id": "gancho", "clip": "c1", "in": 12.66, "out": 15.72, "zoom": 1.0, "cx": 0.5, "cy": 0.5, "line": "..."}] - Poste a EDL para o usuário como uma tabela curta (linha, clipe, look por seção) e continue; não espere.
4. Montar, transcrever, remover fundo
PY SK/scripts/assemble.py <projeto> # aroll.mp4 limpo 30fps CFR + segments.json com quadros exatos
PY SK/scripts/transcribe_cut.py <projeto> "<nomes e palavras-chave no roteiro>"
PY SK/scripts/cutout.py <projeto> # execute em segundo plano; garante que cutout frames == aroll frames
PY SK/scripts/headpos.py <projeto> # após o cutout: posição cabeça/corpo por segmento
Um cutout de cada vez (cerca de 1,5 GB de RAM). Ele imprime uma linha de progresso a cada 30 segundos.
5. Inserções em paralelo (assim que a EDL estiver bloqueada)
Para cada inserção animada que o roteiro pedir (um aplicativo na tela, o perfil seguir no CTA, um scroll de arquivo),
gere um sub-agente em segundo plano com o modelo de briefing em references/overlays.md: tamanho fixo, duração fixa,
batidas sincronizadas com os tempos das palavras, saída webm transparente. Continue construindo a edição principal enquanto eles trabalham.
6. Construir
Copie SK/assets/template/ para o projeto (build.py, hyperframes.json, package.json, assets/fonts, assets/sfx),
depois adapte build.py. É a construção final de um reel real: mantenha a maquinaria, reescreva o conteúdo (sua
docstring lista o que é o quê).
- Qual look onde:
defaultLookpara todo o reel; uma linha que nomeia um look muda sua seção. - Órbita e grade de perfil usam os próprios reels do usuário (overlays.md: Apify post scraper com o handle deles, ou arquivos que
eles soltarem em
assets/reels/). - Itere a partir da pasta do projeto:
HF lint(0 erros), depoisPY build.py --safe, depoisHF snapshot --at <10-20 momentos> --no-end --describe false. Leia as folhas de contato, corrija layout, legibilidade e zona segura. (HFescolhe o Node correto por si só, então não hánvm use.) Um build.py copiado de uma versão anterior desta skill ignora--safe: se o guia vermelho estiver faltando nos snapshots, construa esse projeto da maneira antiga,SAFE=1 "PY" build.py(tais projetos só existem no Mac e Linux).
7. Renderizar e QA
PY build.py # sem --safe
HF render -o renders/<slug>-vN.mp4 --quality high # ~1,5-2 min para um reel de 25s no Apple Silicon
PY SK/scripts/check_cuts.py <projeto> renders/<slug>-vN.mp4 --phone
Veja work/cut_check.jpg: cada quadro após o corte mostra o novo take limpo. Verifique picos de áudio (volumedetect,
máx. em torno de -2 a -5 dB) e o silêncio nas junções das seções.
8. Entregar
Envie ou aponte para a cópia para celular (720p) e o render em qualidade total. Relate em termos simples o que mudou e qualquer coisa
que precise da decisão do usuário. Mantenha cada versão em renders/; faça backup de assets/ + segments.json para work/vN/ antes de
remontar.
Padrões que vieram de feedback real (não reabrir discussão)
- Mude a correção de cor e as legendas para criar um look; não substitua o fundo por uma sala gerada por IA.
- Sem granulação de filme. Escuro é aceitável, mas mantenha o sujeito iluminado e a pele sem ficar vermelha.
- Legendas de introdução centralizadas na frente do falante são melhores do que linhas presas à borda esquerda.
- Palavras atrás da cabeça são a jogada característica, mas apenas quando legíveis.
Construído por @tenfoldmarc. Siga para construções diárias de automação AI, sistemas reais, não teoria.