Communitygithub.com

montage-editeur

Edita um vídeo de pessoa falando (9:16 Reel, TikTok, Short ou anúncio pago) em uma edição dinâmica com motion graphics — câmera frontal em tela cheia alternando com "painéis" onde o palestrante é reduzido a um card na parte inferior com a cabeça saindo, enquanto gráficos animados na identidade visual da marca (logotipo oficial, capturas do site, maquetes de chat/telefone, cards de recursos, revelação do logotipo) são exibidos acima — além de legendas, música de fundo, efeitos sonoros, movimentos de câmera (zoom in / zoom out); depois abre uma INTERFACE DE EDIÇÃO (lista de cenas, pré-visualização ao vivo, timeline de cada animação, legendas, faixas de voz/música/efeitos) onde o usuário clica em qualquer elemento para deixar um comentário que o Claude processa.

O que é montage-editeur?

Esta skill edita vídeos do tipo "talking head" (9:16 para Reels, TikTok, Shorts ou anúncios pagos) transformando-os em edições dinâmicas com motion graphics. Ela alterna entre câmera frontal em tela cheia e painéis onde o palestrante é reduzido a um card na parte inferior com a cabeça saindo, enquanto gráficos animados da marca (logotipo, capturas de site, maquetes de chat/telefone, cards de recursos) são exibidos acima. A skill gera legendas, música de fundo e efeitos sonoros, e oferece uma interface de edição local (similar ao CapCut) com lista de cenas, pré-visualização e timeline, onde cada animação é registrada como elemento clicável. Suporta plataformas como Claude Code e Cursor, e utiliza scripts bash, Python e Node.js para processamento de vídeo com FFmpeg, reconhecimento de fala (Whisper), máscara de pessoa (U2-Net) e renderização final com normalização de loudness (-14 LUFS). O usuário pode ajustar níveis de áudio, ocultar/reordenar elementos e deixar comentários que o Claude processa automaticamente, seguindo regras de identidade visual, ritmo e zonas seguras para anúncios.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hakunadigitalpro-png/montage-editeur/tree/HEAD

Perguntar na sua IA favorita

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

Documentação

Edição com motion graphics + interface de edição

Fale com o usuário no idioma dele. Escreva as legendas exatamente como o palestrante disse (nunca parafraseie).

Caminhos: ME = esta pasta da skill, W = uma pasta de projeto por vídeo. Todos os scripts são bash/python/node; scripts/env.sh encontra ffmpeg, node, python, Chrome e o motor integrado (engine/). Primeira vez: veja README.md → Instalação (npm install na pasta da skill, pip install -r requirements.txt).

Regras (innegociáveis)

  1. Apenas logotipos oficiais para qualquer marca mencionada — nunca um ícone "inspirado" redesenhado. Obtenha do site da marca (capture_site.js) ou pergunte ao usuário.
  2. Identidade visual: para um cliente, leia cores, fontes e logotipo do site dele (captures/info.json) e escreva a paleta no topo de parts/top.js. Para vídeos do próprio usuário, pergunte pela identidade uma vez e mantenha em theme.json + top.js.
  3. Capturas de site: capture o site do cliente (páginas completas, desktop + mobile) e use-as em painéis (navegador com rolagem, ilustrações oficiais recortadas). Banners de cookies são ocultados, nunca aceitos. Telas de produto logado não são acessíveis: avise e ofereça integrar capturas de tela fornecidas pelo usuário.
  4. Ritmo: tela cheia ↔ painéis (zoom OUT ao entrar, zoom IN ao sair), punch-ins em palavras fortes (~1 a cada 2-3 s), exatamente um momento de assinatura (revelação do logotipo/nome), música de fundo com volume reduzido sob a voz, efeitos sonoros (whoosh em cada zoom, pops, cliques, digitação, impacto na revelação), flash de luz em cortes abruptos.
  5. Anúncios pagos: nada importante nos 14% superiores (y < 270) nem abaixo de y ≈ 1250 (UI do Reels/TikTok); legendas elevadas (CAPDY); sem legendas dentro de painéis (o painel mostra as palavras como títulos); card final = logotipo da marca + URL + as palavras do palestrante; nenhuma alegação ou número inventado.
  6. Legendas nunca sobre o rosto. Idiomas LTR → "sens": "ltr" em projet.json (o build corrige a ordem das palavras); RTL (árabe) → "rtl". Nome da marca como uma pílula (fx: "pill", cores em projet.json → pill).
  7. Mixagem: o usuário define voz / música / efeitos no editor. Padrões: voz 100%, música 46%, efeitos 36%. Sempre normalize o loudness para -14 LUFS.
  8. Toda animação é um ELEMENTO do registro (veja abaixo) para que o usuário possa selecionar, deslocar, ocultar e comentar. Nenhuma animação fora do registro.
  9. Âncoras: todo wS(card, palavra) deve apontar para a palavra que a animação ilustra — execute scripts/ancres.py e leia a tabela; nunca adivinhe um índice.

Fluxo de trabalho

  1. Preparar: bash $ME/scripts/preparer.sh <video> <W> <lang> "<Whisper prompt: nomes próprios>" → fonte copiada, corte full-frame, quadros, cortes prováveis, transcrição palavra por palavra. Em seguida, o recorte da pessoa no fundo (~1 s/quadro; não execute Whisper ao mesmo tempo — RAM): python $ME/engine/mask.py u2net_human_seg <W> && python $ME/engine/make_head.py <W>.
  2. Cliente (se houver): node $ME/scripts/capture_site.js <url> <W> → captures/, assets/logo-*.png, cores/fontes. Olhe as capturas; recorte recursos visuais úteis em W/assets/ (ilustrações, uma página longa para navegador com rolagem).
  3. Legendas: escreva W/cartes.json (palavras exatas + tempos do Whisper; cards de 2 a 5 palavras; hot, fx) → python $ME/scripts/cartes.py <W>. Modelo: templates/cartes.EXAMPLE.json.
  4. Plano de edição: divida o roteiro em momentos (gancho, problema, produto, prova, CTA…), escolha para cada um: tela cheia ou painel, qual objeto concreto mostrar, um momento de assinatura, sons. Escreva W/plan-montage.md (modelo templates/plan.EXAMPLE.md) e mostre-o brevemente ao usuário antes de animar.
  5. projet.json (modelo templates/projet.EXAMPLE.json): nom, titre, langue, sens, outro, vol, musique_gain, pill, coupes, cadrage (tomadas que vão para um painel → janela de medição), cadrage_force se a máscara capturar o fundo. Em seguida, python $ME/scripts/framing.py <W>.
  6. Cenas em W/parts/: top.js ← templates/top.EXAMPLE.js (paleta, CUTS/SEGB, PANELS, zooms ZP, CAPDY); primitives.js ← templates/primitives.js; gfx.js ← templates/gfx.EXAMPLE.js (SCENES_ED, um EL(...) por animação, camadas, card final, fontes).
  7. Sons: W/sons.json (modelo templates/sons.EXAMPLE.json): musique {bpm, intro_filtree, coupure = silêncio antes de uma revelação, accords} e events = [element|null, time|"fim+x", "sound[:param]", gain, [repeat, step]]. Sons: pop, bulle, clic, shutter, succes, buzz, tick, touche, impact, tape, whoosh_in:dur, whoosh_out:dur, ding:freq:dur, shimmer:dur, riser:dur, souffle:dur. Vincule cada som ao seu elemento para que ele acompanhe quando o elemento for deslocado ou ocultado.
  8. Âncoras: python $ME/scripts/ancres.py <W>.
  9. Pré-visualizações: python $ME/scripts/build.py <W> então node $ME/engine/04_render_frames.js <W> preview t1 t2 … → folha de contato → revise como um editor exigente (legível? rosto claro? zonas seguras de anúncio?) e corrija antes da renderização.
  10. Renderizar: bash $ME/scripts/rendu.sh <W> (segundo plano, 3-6 min) → <nom>.mp4 (+ .srt/.txt), stems em mixage/pistes/, mídia do editor. Verifique 6-8 quadros do MP4, -14 LUFS, tamanho.
  11. Editor: execute python $ME/scripts/editor_server.py <W> <port> (no Claude Code desktop: adicione a .claude/launch.json e use a ferramenta de pré-visualização), abra http://localhost:<port>/editeur/. Verifique a pré-visualização, a seleção por clique e a reprodução.
  12. Monitorar comentários: monitore W/comments.json e emita uma linha por novo comentário com status == "à faire" (comando em references/editor.md).

Processando um comentário

  1. Leia-o (target = el:<id> | scene:<id> | cap:<n> | audio:<track>, t, clique x,y).
  2. Defina o status "en cours": POST /api/comments/status {"id":…, "status":"en cours"}.
  3. Altere o elemento em parts/gfx.js (ou top.js para zooms/painéis, cartes.json para legendas, sons.json para sons), mantendo-se dentro da identidade visual e do registro. Se o pedido for vago, aplique a melhor opção e mencione uma alternativa na resposta.
  4. python $ME/scripts/build.py <W> (+ sons.py se os sons mudarem) → o editor recarrega a pré-visualização sozinho. Verifique 1-2 quadros da pré-visualização.
  5. Status "fait" + um breve reply (o que mudou) — exibido no editor. Lembre ao usuário que ele pode clicar em "Renderizar o vídeo".
  6. Uma preferência geral ("Nunca quero X") → adicione-a às Regras deste arquivo.

Registro de elementos (contrato com o editor)

EL(id, name, scene, layer, [x,y,w,h], ()=>[start,end], t=>{…desenhar…})

  • layer: 'panel' (desenhado dentro do painel, atrás da cabeça saindo) · 'full' (tela cheia, na frente) · 'none' (global: flashes, card final).
  • t recebido = tempo deslocado pelo editor (EDITS.off); desenhe apenas dentro da sua janela; oculto se EDITS.hide[id].
  • A caixa [x,y,w,h] é usada para clicar na pré-visualização: mantenha-a precisa.
  • SCENES_ED = cenas listadas à esquerda do editor (id, label, a, b, kind).
  • Zooms: cada entrada ZP é um elemento zoom<i> (pode ser removido no editor).

Arquivos do projeto

projet.json · cartes.json → caps.json (caps.orig.json = base do editor) · sons.json · parts/{top,primitives,gfx}.js · framing.js · edits.json (configurações do editor: off, hide, caps, vol) · comments.json · captures/, assets/ · mixage/pistes/ · editeur/ · <nom>.mp4/.srt/.txt.

Habilidades Relacionadas