Communitygithub.com

montage-video

Monta um vídeo com câmera frontal a partir de materiais brutos: edição (silêncios, hesitações "uh", takes ruins, retomadas, instruções ditas em voz alta durante a gravação), em seguida B-rolls (primeiro da biblioteca da pessoa, depois planos gratuitos do Pexels e Pixabay), animações de designers no estilo visual da pessoa (fala, lista marcada, local, número, título de seção, citação, chamada para ação, ponto-chave) e ilustrações personalizadas, sons ambientes sobre a voz, player de correções no estilo Frame.io e exportação para Final Cut Pro. Reconhece o tipo de vídeo (vídeo longo do YouTube, short, treinamento, entrevista) e usa o mecanismo de renderização do video-use em vez de recriá-lo. Use este skill sempre que a pessoa fornecer um material bruto, um take cru ou uma pasta de gravação e quiser um vídeo editado, mesmo sem dizer "edição": "edite este vídeo", "/edicao", "limpe este arquivo", "remova os brancos e os uhs", "corte as hesitações", "remova os takes ruins", "limpe este..."

O que é montage-video?

O **montage-video** é um skill de IA para Claude (ou compatível) que transforma materiais brutos de vídeo em produções polidas, automatizando todo o fluxo de pós-produção: desde a transcrição e remoção de hesitações ("uh", silêncios, retomadas) até a inserção de B-rolls, animações gráficas personalizadas, sons ambientes e exportação otimizada. Ele aproveita o mecanismo de renderização do skill público **video-use** em vez de recriá-lo, e as animações gráficas são geradas pelo HyperFrames. Todo o processamento ocorre localmente no Mac do usuário (Apple Silicon, macOS 14+), sem envio de dados para a nuvem. O fluxo é guiado por scripts Python (derush.py, brolls.py) que realizam a transcrição com CrisperWhisper, a indexação da biblioteca de B-rolls com visão computacional local (mlx-vlm), e a busca em bancos gratuitos (Pexels, Pixabay) via Playwright ou navegador do agente. O resultado é uma versão editada do vídeo, acompanhada de um player de correções (comentários, versões, comparações) e de um projeto exportável para Final Cut Pro. O skill é ideal para criadores de conteúdo, editores e equipes que querem acelerar o corte de entrevistas, tutoriais, vlogs e vídeos corporativos, mantendo total controle sobre os arquivos e a privacidade.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fredericpuxeddu-lgtm/montage-video/tree/main

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Montagem de vídeo: do material bruto ao vídeo publicável

A pessoa grava, deposita seus arquivos e recebe um vídeo editado e enxuto.

O que este skill não faz por conta própria: o motor de corte e renderização é o do video-use (skill público, a ser instalado ao lado), as animações são renderizadas pelo HyperFrames. Refazer aqui o que uma dessas ferramentas já faz significa duas versões para manter.

Instalação (uma vez por máquina)

Este skill roda em um Mac com chip Apple (M1 ou mais recente), macOS 14 ou superior. Tudo permanece na máquina: nenhum vídeo é enviado online. Verificar na ordem e instalar o que faltar:

  1. O próprio skill: esta pasta montage-video colocada em ~/.claude/skills/.
  2. ffmpeg e ffprobe: brew install ffmpeg (Homebrew: https://brew.sh).
  3. uv, que gerencia ambientes Python separados: brew install uv.
  4. Node.js 18 ou mais recente (com npx): brew install node. O HyperFrames, que renderiza as ilustrações, é baixado automaticamente na primeira renderização (npx [email protected]), junto com seu navegador de renderização.
  5. O skill video-use (motor de corte e renderização), nesta versão específica, com a qual este skill foi testado:
    git clone https://github.com/browser-use/video-use ~/.claude/skills/video-use
    git -C ~/.claude/skills/video-use checkout 87f00c6
    
    Se estiver em outro local que não ~/.claude/skills/video-use: informar o caminho via VIDEO_USE_DIR. Este skill usa apenas o helpers/render.py dele, que precisa apenas do ffmpeg: nenhuma chave ElevenLabs necessária.
  6. CrisperWhisper, o transcritor que capta os "uh": python3 scripts/derush.py instalar (2,2 GB, fora do skill, recusa se houver menos de 5 GB livres; veja o passo 0 da edição).
  7. O modelo de visão que classifica a biblioteca de B-rolls: não é necessário fazer nada, ele é baixado na primeira execução de brolls.py indexar (mlx-vlm, via uv).
  8. Final Cut Pro, apenas para o botão "Abrir no Final Cut Pro" do player.
  9. Playwright e seu navegador WebKit, que buscam B-rolls gratuitos no Pexels e Pixabay, sem chave nem conta: npm install -g playwright e depois npx playwright install webkit. Sem eles, o agente pesquisa com seu próprio navegador (veja "B-rolls").

Verificar a instalação com um vídeo curto real (um minuto basta): derush.py analisar, depois montar, depois verificar. A instalação é considerada concluída somente quando esses três comandos forem executados.

Onde os arquivos são armazenados

Tudo o que é usado na edição de um vídeo vai para a Área de Trabalho, em uma pasta com seu nome: ~/Desktop/Arquivos de edição <nome do vídeo> (excluir ao final); neste nome, um apóstrofo deve ser ’ (tipográfico), nunca ': o motor de corte não lê uma pasta que contenha um apóstrofo reto, o skill para e avisa (transcrições, listas de cortes, planos, versões, projeto do player de correções, projeto Final Cut). A pasta é criada no primeiro gesto, não se pergunta onde colocá-la. Os materiais brutos originais nunca são movidos nem modificados. A exportação final também vai para a Área de Trabalho, ao lado, com um nome legível ("<nome do vídeo> editado.mp4").

Nada é excluído automaticamente: a pessoa remove a pasta de trabalho quando o vídeo estiver do seu gosto. Enquanto ela existir, pode-se retomar uma correção ou reabrir o projeto Final Cut, que aponta para seus arquivos. Ao final da edição, informar onde estão os dois: a exportação final e a pasta de trabalho que a pessoa poderá jogar no Lixo quando não tiver mais correções a fazer. Uma pasta da Área de Trabalho sincronizada pelo iCloud pode recusar mv: copiar (cp -Rc) e, em seguida, mover o original para o Lixo.

Status do skill (dizer a verdade a quem o invoca)

ComponenteStatus em 11/11/2026
1. Edição: silêncios, hesitações, retomadas, instruções ditasEm operação, hesitações captadas pelo CrisperWhisper 2.0 rápido desde 11/11/2026, testado em quatro materiais brutos reais
2. B-rolls da biblioteca: classificação local, escolha, sobreposição, controleEm operação, testado em uma biblioteca de teste com 12 planos
3. B-rolls gratuitos do Pexels e Pixabay, sem chave nem contaEm operação desde 11/11/2026: pesquisa via Playwright ou pelo navegador do agente (computer use), testado em uma edição real (três planos inseridos)
4. Animações no estilo visual: 38 de designers (padrão desde 11/11/2026) e 24 personalizadas, seu catálogoEm operação em 16:9, testado em uma edição real (três animações de designers); formato vertical não testado
5. Player de correções (comentários quadro a quadro, um ponto por comentário na barra, comentário vinculado a uma animação, intervalos, desenho, versões, comparação)Em operação, testado de ponta a ponta em um vídeo real (3 correções, uma V3); estudo em references/player-estilo-frame-io.md
6. Sons ambientes: sussurro na entrada de uma animação, clique por marcação, swoosh por planoEm operação desde 11/11/2026, inseridos automaticamente na sobreposição, testado em uma edição real (oito sons ambientes)
6 bis. Música de acordo com a emoçãoA construir (nenhuma biblioteca de músicas disponível)
7. Clipes verticais, legendas, publicação onlineNão faz parte deste skill
8. Memória das correçõesManual: uma regra datada no final deste arquivo após cada retorno
9. Exportação para Final Cut Pro (botão do player, faixas separadas)Em operação: projeto criado e compatível com o formato do Final Cut; sons ambientes em sua própria faixa; sem correção de cor nem música. Premiere e DaVinci: a construir

Uma solicitação que envolva um componente "a construir" deve ser informada como tal na entrega: entrega-se o que funciona, nomeia-se o que falta. Não se anuncia "vídeo editado" para um vídeo apenas com a limpeza inicial.

Configurações da máquina (no primeiro uso)

Nada específico de uma pessoa é escrito neste skill: ele atende a várias pessoas. A pasta de B-rolls, o cache e o estilo visual das ilustrações ficam em um arquivo de configurações da máquina, ~/.config/montage-video/configuracoes.json, fora do skill.

python3 scripts/brolls.py configuracao            # mostra como está

Na primeira solicitação de B-rolls, se "biblioteca" valer "nenhuma", perguntar uma vez à pessoa: "Você tem uma pasta de B-rolls própria? Informe-me o local." Depois brolls.py configuracao --biblioteca <pasta>. Se ela não tiver: continuar apenas com os bancos livres, sem insistir. Mesma lógica para o estilo visual: sem configuração, as ilustrações saem no estilo padrão, e mostra-se o catálogo para que a pessoa escolha o seu.

A edição (corte de hesitações e silêncios), passo a passo

scripts/derush.py contém os três comandos. Tudo roda no Mac, nada é enviado online.

0. Uma vez por máquina: instalar o transcritor. As hesitações são captadas pelo CrisperWhisper 2.0 em sua versão rápida (turbo), um Whisper retreinado para escrever os "uh". Ele fica fora do skill, em ~/.local/share/montage-video/crisper (ou $MONTAGE_VIDEO_DADOS):

python3 scripts/derush.py instalar          # 2,2 GB, recusa se houver menos de 5 GB livres

Sem ele, analisar para e avisa: nunca cai em silêncio para outro método.

1. Analisar.

python3 scripts/derush.py analisar <video> --edit-dir <pasta de trabalho>/edit

O script transcreve palavra por palavra com CrisperWhisper, detecta silêncios no áudio, e escreve edit/derush/<nome>.json (os dados) e edit/derush/<nome>.md (o texto palavra por palavra, frase por frase, com marcação de tempo). A pasta de trabalho é a do vídeo na Área de Trabalho (veja "Onde os arquivos são armazenados").

Por que CrisperWhisper: um transcritor comum produz um texto limpo, portanto sem os "uh", e não se corta o que não se vê. Medido em 11/11/2026 em quatro materiais brutos reais (296 s de áudio, 11 hesitações verificadas no áudio): CrisperWhisper rápido encontra 10, o método antigo (Whisper iniciado com uma frase cheia de hesitações, mantido em --motor arranque) 5; nenhuma palavra real perdida de um lado ou de outro; aproximadamente 4 vezes mais lento (152 s contra 35 s). Corta-se apenas o intervalo entre a palavra real anterior e a palavra real posterior: uma hesitação inventada não corta nada.

O modelo rápido às vezes data incorretamente a palavra após um "uh" (duração zero, posicionada no meio da hesitação): em um material bruto de teste, dois "que", e 0,2 s de "uh" restaram na renderização. crisper.py a redata pelo áudio (voz mantida até um vale, busca limitada a 0,4 s e à palavra seguinte) e escreve cada correção em corrigido_no_audio da transcrição.

2. Ler o texto e decidir as retomadas. Este é o trabalho do agente, não de um script: ler <nome>.md por inteiro e escrever um arquivo remover.json, uma lista de {"inicio", "fim", "motivo"}. Incluir:

  • a retomada: uma frase recomeçada. Manter a última versão completa, remover as anteriores, do início da primeira tentativa até o início da versão correta;
  • a instrução dita em voz alta: "vou recomeçar", "corta isso", "vamos refazer". Remover a instrução e o que ela designa;
  • a frase abandonada no meio do caminho, a saída falsa, o aparte fora do assunto ("espera", um barulho, alguém que entra).

Os limites devem ser definidos com base nos horários do texto, com 0,1 s de margem antes da primeira palavra mantida. Em caso de dúvida sobre uma retomada (duas versões que dizem coisas diferentes), manter ambas e sinalizar: cortar uma ideia é mais grave do que deixar uma repetição.

As "vozes sem palavra" listadas no início do texto não são cortadas automaticamente: é um som falado que nenhuma palavra cobre. Geralmente, uma hesitação que o transcritor perdeu, às vezes uma risada, uma palavra mal ouvida, ou um "uh" dito de propósito (um material bruto de teste continha um: "foi um uh bem longo"). O agente analisa o contexto e o adiciona a remover.json somente se for um descarte.

3. Montar.

python3 scripts/derush.py montar edit/derush/<nome>.json --remover remover.json -o <saida>.mp4

O script escreve a lista de cortes no formato do video-use e a faz renderizar por seu motor (trechos, fade de áudio de 30 ms em cada corte, colagem sem recompactação). --previa renderiza em 720p, mais rápido, para uma primeira visualização. Ele para se a duração renderizada se desviar da duração esperada.

4. Verificar, e só então entregar.

python3 scripts/derush.py verificar <saida>.mp4

A renderização é transcrita novamente pelo mesmo transcritor. Entrega-se quando hesitacoes_restantes for 0, não houver mais silêncio superior a 0,6 s, e o texto renderizado puder ser lido de uma vez, sem frase amputada ou palavra cortada. Uma frase amputada é corrigida em remover.json, não ampliando as margens para todos. Verificar também dois ou três cortes no quadro (video-use, helpers/timeline_view.py): um salto de enquadramento muito visível exigirá um zoom no componente 3; enquanto isso, informar.

Os B-rolls, passo a passo

Um B-roll é um plano que mostra o que a pessoa está dizendo enquanto continuamos a ouvi-la. scripts/brolls.py contém os comandos; a renderização continua sendo feita pelo video-use.

1. Indexar a biblioteca, uma vez.

python3 scripts/brolls.py indexar

Cada plano é descrito na máquina por um pequeno modelo de visão (três imagens do plano, duas frases), o tema é o nome da subpasta. Calcular 3 segundos por plano; apenas arquivos novos ou modificados são reprocessados, portanto, pode-se executar novamente sem medo antes de cada edição. Um arquivo com mais de 40 s é dividido em planos de 20 s. Imagens estáticas também contam. A biblioteca nunca é modificada: o índice é armazenado junto com as configurações.

O modelo de visão descreve bem o assunto, mal o detalhe: às vezes conta "três relógios" porque vê três imagens do mesmo plano. A descrição serve para encontrar, não para decidir: olhar a prancha do controle antes de entregar.

2. Ler o vídeo editado, frase por frase.

python3 scripts/brolls.py frases <video editado>

3. Escolher: este é o trabalho do agente, não de um script. Ler a biblioteca inteira (brolls.py listar) quando ela couber em algumas dezenas de planos; além disso, brolls.py procurar "<palavras>" com palavras do que se quer VER ("teclado", "relógio", "câmera"), não a frase dita: "deixo rodar por 45 minutos" não contém nenhuma palavra de um relógio, cabe ao agente fazer a ponte entre a ideia e a imagem.

A ordem: a biblioteca da pessoa primeiro (suas imagens se parecem com ela, ninguém mais as tem), um banco gratuito somente quando nada se encaixa:

Os bancos gratuitos são acessados sem chave nem conta, de duas formas. O agente escolhe:

OpçãoQuando usarComando
Playwright (padrão)Sempre primeiro: rápido, sem tela, o mesmo resultado no Claude e no ChatGPTbrolls.py banco "<palavras>"
Computer use (o navegador do agente: Claude no Chrome, computer use, o agente do ChatGPT)Playwright está ausente na máquina ou não retorna nada que se encaixe; ou o plano exige uma olhada real (uma atmosfera, um gesto preciso)o agente busca e escolhe na imagem, depois brolls.py banco --pegar <endereço da página>
python3 scripts/brolls.py banco "typing laptop" -n 3            # palavras em INGLÊS, duas ou três, concretas
python3 scripts/brolls.py banco "film camera" -n 2 --cada       # pelo menos um plano de cada site
python3 scripts/brolls.py banco --pegar "https://pixabay.com/videos/keyboard-hands-writing-computer-1046/"

Playwright. O script abre a página de pesquisa do Pexels, depois do Pixabay, no navegador WebKit do Playwright, sem janela, mudo, perfil descartável fechado ao sair. Um programa simples recebe uma recusa de ambos os sites, e o Chromium do Playwright fica preso na página de verificação deles: o WebKit passa (medido em 11/11/2026). Se faltar: npm install -g playwright e depois `npx playwright

... [truncado para tradução]

Habilidades Relacionadas