Claude AutoCut
Edição de vídeo local guiada por uma transcrição no nível da palavra. Tudo roda na máquina do usuário: Whisper (faster-whisper) para fala, FFmpeg para mídia, Pillow para legendas e, apenas no modo cartoon, HyperFrames (Node.js) para renderizar a animação. Sem chave de API, sem serviço pago, nada é enviado.
A linha de comando é scripts/autocut.py dentro desta pasta da skill. Execute com o Python que tem
as dependências instaladas (veja "Configuração"):
python "<dir-da-skill>/scripts/autocut.py" <comando> ...
<dir-da-skill> é o diretório base desta skill (mostrado quando a skill carrega).
Escolha o modo
| O usuário quer | Modo | Comando |
|---|---|---|
| "editar este vídeo", "cortar as pausas", "remover os 'hãns'", "limpar meus retakes" | Edição Automática | edit VIDEO -o PROJETO |
| legendas em um vídeo sem cortá-lo | Legendas | captions VIDEO -o PASTA |
| uma cena animada acima do locutor, gravação inteira mantida | Animado Completo | cartoon init VIDEO -o PROJETO, storyboard, cartoon render |
| editar primeiro, depois animar o vídeo editado | Completo | complete VIDEO -o PASTA, storyboard, cartoon render |
| "cartoon", "podcast animado" sem dizer se cortar | pergunte uma vez: manter tudo (Animado Completo) ou cortar primeiro (Completo)? |
Se a solicitação for ambígua, pergunte qual modo em uma breve pergunta e recomende um. Antes de qualquer outra coisa,
execute doctor uma vez na sessão: ele informa quais modos estão prontos nesta máquina.
Configuração (uma vez por máquina)
python -m venv .venve ative-o, depoispip install -r "<dir-da-skill>/requirements.txt".- FFmpeg (
ffmpegeffprobe) no PATH. - Modos cartoon apenas: Node.js 18+ (npx e npm). HyperFrames 0.8.79 é baixado pelo npx no primeiro uso e nunca é atualizado automaticamente; cada projeto cartoon instala GSAP com npm.
python "<dir-da-skill>/scripts/autocut.py" doctor
A primeira transcrição baixa o modelo Whisper (--model tiny ~75 MB, small ~480 MB, o padrão).
Use --language quando o idioma for conhecido; --model medium ou large-v3 para áudio difícil.
Edição Automática
python "<dir-da-skill>/scripts/autocut.py" edit input.mp4 -o edits/meu-video [--language pt] [--model small]
Etapas: transcrição → análise → plano → renderização → verificação (a edição é transcrita novamente e comparada) →
legendas → REPORT.md. Saídas na pasta do projeto: renders/cut_vN.mp4 (edição limpa),
renders/final_vN.mp4 (com legendas queimadas), captions_vN.srt, decisions.md (cada trecho removido com
seu tipo e motivo), analysis.md, verify_vN.json. Nada é sobrescrito: cada renderização é uma nova versão.
O vídeo original é apenas lido.
O que o plano faz por conta própria (conservador propositalmente):
- corta silêncio antes da primeira e depois da última palavra;
- encurta pausas maiores que 0,7 s, mas nunca as remove; uma pausa após o final de uma frase mantém mais (uma possível pausa para ênfase);
- remove sons de preenchimento e um take incompleto que é refeito logo em seguida;
- de dois takes completos da mesma frase, mantém o mais limpo por evidência, nunca "o último" ou "o mais curto"; se as evidências forem equivalentes, ambos permanecem e o caso é listado sob "Para revisão";
- mantém som audível que a transcrição perdeu e descarta texto que o Whisper inventou sobre silêncio.
O portão (cortes de alto impacto)
Um corte que remove palavras não ditas em nenhum outro lugar (negações incluídas) é de alto impacto. O plano automático
nunca faz um; eles vêm apenas de overrides.json (cortes que você adiciona a pedido do usuário). A renderização para
até que cada corte de alto impacto tenha uma aprovação. Para aprovar, mostre ao usuário o trecho exato e as palavras de
decisions.md, obtenha um sim explícito, então:
python "<dir-da-skill>/scripts/autocut.py" approve PROJETO --start 12.0 --end 18.5 --by "usuario" --reason "pedido para remover a tangente"
python "<dir-da-skill>/scripts/autocut.py" edit input.mp4 -o PROJETO # a transcrição é reutilizada, nova versão renderizada
Nunca registre uma aprovação que o usuário não deu. plan PROJETO reexecuta análise e plano sem renderizar.
overrides.json (na pasta do projeto)
{"cuts": [{"start": 12.0, "end": 18.5, "reason": "tangente fora do assunto"}],
"keep": [{"start": 3.0, "end": 4.2, "reason": "o preenchimento faz parte da piada"}],
"pauses": {"p04": {"action": "keep"}, "p07": {"keep_s": 0.8}}}
Os ids de pausa (p04) vêm de analysis.md. Leia references/editing.md para como as decisões são classificadas.
Reportando ao usuário
Leia REPORT.md e decisions.md e informe ao usuário, brevemente: duração antes e depois, o que foi removido
e por quê, qualquer coisa sob "Para revisão", se a verificação passou (palavras faltando, negações mantidas). Diga que
você não pode ouvir ou assistir ao vídeo: ritmo e gosto são para o usuário julgar com som.
Apenas legendas
python "<dir-da-skill>/scripts/autocut.py" captions input.mp4 -o captions/meu-video [--no-burn] [--caption-y 0.75]
Escreve captions.srt, captions.json e captioned.mp4. Vídeos verticais recebem legendas maiúsculas grandes a
70% da altura; os horizontais ficam perto da base. Cada palavra falada aparece uma vez, em ordem.
Cartoon (Animado Completo e Completo)
cartoon init VIDEO -o PROJETO(Completo fazeditprimeiro e cria o projeto cartoon na edição).- Leia
PROJETO/speech.md(blocos de fala com tempos) e escrevaPROJETO/storyboard.json: cenas que cobrem todo o vídeo sem lacunas, cada uma com um cenário, as poses e rostos do apresentador, objetos e palavras na tela. O esquema, o catálogo (cenários, poses, rostos, objetos, transições) e as regras de layout estão emreferences/cartoon.md. Leia antes de escrever o primeiro storyboard. cartoon check PROJETOaté que não reporte erros. O texto na tela só pode usar palavras que são faladas.cartoon snapshot PROJETO --at 1.5,8,20e veja os quadros emreviews/.cartoon render PROJETO(ou--range 0-6para um teste rápido). Saída:renders/cartoon_vN.mp4com o áudio original copiado inalterado;renders/cartoon_vN.qc.jsonverifica duração e áudio.
A animação lê o significado da fala apenas através do storyboard que você escreve: o código não entende a fala por si só.
Regras
- Nunca modifique ou exclua o vídeo original ou renderizações anteriores.
- Nunca adicione um corte que mude o significado da fala; nunca aprove um corte de alto impacto pelo usuário.
- Texto na tela e legendas usam apenas palavras que são faladas.
- Execute renderizações uma de cada vez; a renderização cartoon é pesada (veja
references/troubleshooting.md). - Não afirme que o resultado "soa bem": você não pode ouvi-lo. Reporte o que foi medido.
Quando algo falha
Veja references/troubleshooting.md (FFmpeg faltando, download do modelo, Node/npx, HyperFrames, memória, idioma
errado, transcrição ruim).