Communitygithub.com

Video craft

Edite materiais gravados e crie vídeos com acabamento profissional, comprovado por verificações técnicas. Inclui transcrição, remoção de pausas, cortes, legendas, redimensionamento, ajuste de áudio e muito mais.

O que é Video craft?

Esta skill transforma vídeos brutos ou briefings de marca em produções profissionais, combinando script automatizado com controle manual. Ela atende dois fluxos principais: edição de materiais gravados (como tutoriais, podcasts ou gravações de tela) e criação de filmes a partir de uma identidade visual (intros de marca, vídeos de lançamento, anúncios). Na edição, realiza transcrição palavra por palavra, planejamento de cortes, remoção de pausas, erros de fala e retomadas, além de aplicar legendas, redimensionamento para formatos 9:16/1:1, ajuste de loudness e exportação otimizada. Na criação, gera animações quadro a quadro a partir de HTML, com movimento determinístico, síntese de som e verificação de qualidade. A skill é usada para solicitações como "cortar e limpar esta gravação", "criar um Short/Reel/TikTok a partir disto", "adicionar legendas", "fazer um vídeo de lançamento" ou "verificar o áudio e o conteúdo visual". Sempre exige comprovação: um script de QA (qa.py) verifica loudness, quadros pretos, áreas seguras e se alguma palavra foi encoberta por um corte. A saída final só é considerada pronta após essas verificações passarem. Suporta ferramentas como ffmpeg, Whisper, Remotion e Playwright, e é ideal para desenvolvedores e editores que buscam um fluxo de trabalho preciso e mensurável.

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/sridhar-raj/video-craft/tree/HEAD

Perguntar na sua IA favorita

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

Documentação

O que Video craft faz?

Dois trabalhos, um padrão. Edite o material que alguém gravou, ou crie um filme a partir de um kit de marca e um texto. De qualquer forma, o trabalho é planejado antes de ser renderizado, renderizado por scripts precisos e verificado por medições antes que alguém seja informado de que está pronto.

O que faz um vídeo parecer finalizado, em ordem:

  1. Estrutura. Um gancho nos primeiros 3 segundos, uma ideia, nada que não mereça seu tempo.
  2. Ritmo. Cortes e movimentos acertam na fala e na batida; nada é morto, nada apressa.
  3. Detalhes técnicos. Ar ao redor de cada corte, legendas que se leem, movimento que desacelera no lugar, som com volume suficiente e nunca clipando.
  4. Comprovação. qa.py passa e a folha de contato foi examinada.

Caminho rápido

PerguntaAção
"Apertar / limpar esta gravação"transcrever → planejar_cortes → revisar EDL → renderizar → qa
"Criar um Short/Reel/TikTok a partir disso"como acima, mais captions.py --style punch, render.py --preset shorts --fit crop (ou blur para gravações de tela)
"Adicionar legendas"transcribe.py → captions.py → render.py --captions (ou enviar o .srt)
"Adicionar música"render.py --music bed.mp3 (abaixada automaticamente sob a fala)
"Deixar com volume suficiente / corrigir o áudio"render.py --voice --denoise, alvo de platforms.md
"Intro de marca / revelação de logo / sting"copiar films/brand-sting, preencher o kit de marca, stills → rascunho → master → qa
"Vídeo de lançamento / promo / anúncio"copiar films/launch, escrever o texto, escolher formatos, stills → rascunho → master → qa
"Verificar este vídeo"qa.py video.mp4 --sheet sheet.jpg [--safe]
Projeto já no Remotionreferences/remotion.md

Requisitos

ffmpeg 6+ e Python 3.9+ para edição. Transcrição: pip install faster-whisper (ou openai-whisper, ou whisper.cpp). Filmes: Node 18+ e Playwright (npm i -D playwright && npx playwright install chromium). Legendas são queimadas com libass quando ffmpeg a tem, caso contrário desenhadas com Pillow (pip install pillow). Execute python3 scripts/doctor.py para ver o que está instalado.

Todos os scripts aceitam --help. Trabalhe em uma pasta por trabalho: work/ para intermediários, out/ para entregáveis.

Editando material

python3 scripts/transcribe.py raw.mp4 -o work/words.json            # transcrição palavra por palavra
python3 scripts/plan_cuts.py raw.mp4 --words work/words.json -o work/edl.json
python3 scripts/captions.py work/words.json --edl work/edl.json --style clean -o work/cap
python3 scripts/render.py work/edl.json -o out/final.mp4 --preset youtube \
        --captions work/cap.cues.json --music bed.mp3 --voice --zoom auto
python3 scripts/qa.py out/final.mp4 --edl work/edl.json --sheet out/sheet.jpg \
        --words work/words.json --words-check
  1. Leia a transcrição primeiro e decida a estrutura: o que vai inteiramente (cortes de seção leem limpos; muitos cortes no meio da frase leem nervosos), e qual é o gancho. Coloque decisões de seção inteira manualmente nos segments da EDL, se necessário.
  2. plan_cuts.py remove ar morto (reduzido a uma respiração, não a zero), preenchimentos e retomadas abandonadas (mantém a última tentativa). O silêncio é medido por gravação, cada borda é ajustada ao áudio real, o preenchimento (padding) é assimétrico (80 ms antes, 140 ms depois) e nunca penetra em uma palavra removida. Leia sua lista: repetição enfática pode parecer uma retomada.
  3. Verifique com a pessoa em qualquer coisa longa: duração antes/depois, seções cortadas, retomadas descartadas. As anotações dela se tornam edições na EDL.
  4. render.py faz tudo em um único grafo ffmpeg: cortes exatos por quadro, fades de 8 ms em cada corte, taxa de quadros constante, punch-ins, redimensionamento, legendas, polimento de voz, música diminuída sob a fala e loudness de duas passagens.
  5. qa.py, depois olhe a folha. --words-check retranscreve o resultado e nomeia qualquer palavra que um corte tenha engolido.

Julgamento, números e modos de falha: references/editing.md. Áudio: references/sound.md.

Criando filmes (intros de marca, spots de lançamento, anúncios)

cp -r films/brand-sting my-film && python3 scripts/sfx.py --out my-film/sfx
# edite PARAMS em my-film/index.html (ou passe --params '{"name": "...", ...}')
node scripts/render_film.mjs my-film/index.html --stills 0.5,1.6,2.4,3.5 -o work/stills  # veja-as
node scripts/render_film.mjs my-film/index.html --draft -o work/draft.mp4                 # julgue o ritmo
node scripts/render_film.mjs my-film/index.html --blur 4 -o out/intro.mp4                 # master
python3 scripts/qa.py out/intro.mp4 --no-gaps --sheet out/intro.sheet.jpg --safe
  1. Kit de marca primeiro (references/brand-intro.md): o arquivo de logotipo oficial, cores hex, fonte, palavras exatas, registro, formatos, som e uma fonte para cada número. Nunca redesenhe ou recolorize um logotipo; nunca invente alegações, clientes ou UI de produto.
  2. Beat sheet antes do código: cada batida com seu tempo, o que se move, a suavização e o som. Escolha um registro (premium, clean, tech, bold, playful) e escalone toda a linha do tempo com ele.
  3. Construa sobre assets/film.js: cada pixel é uma função de t. Film.tween, Film.spring, Film.stagger, Film.random(seed); sem animações CSS, timers ou Date.now. Abra o HTML em um navegador para percorrê-lo em tempo real.
  4. Stills em cada batida, depois um rascunho, depois o master. Corrija o que os stills mostram antes de renderizar vídeo. Masters renderizam ~2–5 quadros por segundo; rascunhos são 10× mais rápidos.
  5. O som faz parte do filme. scripts/sfx.py sintetiza o kit (hit, boom, whoosh ×3, riser, pop, tick, chime, bed); as cues ficam na configuração do filme e são mixadas e com loudness ajustado pelo renderizador. O pico do hit cai no quadro da revelação.

Modelos: films/brand-sting (revelação de logo de 3–7 s, cinco registros, 16:9 / 9:16 / 1:1) e films/launch (15 s: gancho → problema → revelação → prova → CTA, três formatos, 9:16 dentro da área segura das plataformas, ênfase com *palavra*). Use-os como ponto de partida; mude a estrutura quando o briefing precisar.

Doutrina (tempos, suavização por função, escalonamento, tamanhos de tipo, cor, transições com causa, os looks genéricos a evitar e os testes que os pegam): references/motion.md.

Regras que sempre se aplicam

  • Recodifique cada corte. Cortes com stream-copy encaixam em keyframes.
  • Taxa de quadros constante em tudo que for entregue; H.264 + yuv420p + AAC + +faststart.
  • Loudness por medição: -14 LUFS / ≤ -1 dBTP para web e redes sociais, -16 para podcasts.
  • Texto dentro de áreas seguras: em 9:16 nada no topo 288 px, fundo 672 px ou direita 192 px (em 1080×1920). Tipo ≥ 28 px em 1080.
  • Conteúdo honesto: logotipos reais, números reais com fontes, UI de produto real; diga quando música, voz ou material foram gerados.
  • Música licenciada apenas. Nunca extraia áudio de vídeos ou serviços de streaming.
  • Pronto significa verificado: qa.py passa, a folha foi examinada e qualquer coisa que não pôde ser verificada é dita claramente.

Arquivos

CaminhoO quê
scripts/transcribe.pywords.json com tempos de palavra (faster-whisper / whisper / whisper.cpp)
scripts/plan_cuts.pyEDL: pausas, preenchimentos, retomadas removidas, com razões
scripts/captions.pySRT, ASS estilizado e JSON de cues na linha do tempo editada
scripts/render.pyEDL → vídeo finalizado (presets, redimensionamento, legendas, música, loudness)
scripts/qa.pyformato, duração, preto, congelamento, ar morto, loudness, palavras, folha de contato
scripts/sfx.pykit de som sintetizado
scripts/render_film.mjsHTML do filme → MP4 (rascunho, master com motion blur, stills, pôster)
scripts/doctor.pyo que está instalado e o que está faltando
assets/film.jsmotor de movimento determinístico + pré-visualização no navegador com scrubber
films/modelos brand-sting e launch
references/edição, movimento, intro de marca, som, plataformas, ffmpeg, remotion

Habilidades Relacionadas