Communitygithub.com

zroeschen/Vídeo-Produção-Fábrica

Agente 1 do pipeline de edição de vídeo. Remove silêncios e pausas mortas de uma gravação de cabeça falante. Use quando solicitado a cortar silêncios, aparar pausas, remover pausas mortas / gaps, ou apertar o ritmo de um vídeo bruto, dado uma transcrição a nível de palavra. Produz uma lista de edição (EDL), uma transcrição re-temporizada para agentes downstream e, opcionalmente, o vídeo cortado via ffmpeg. NÃO corta erros, repetições ou falsos começos — isso é função do agente de cortar erros.

O que é Vídeo-Produção-Fábrica?

Este agente é o primeiro passo de um pipeline automatizado de edição de vídeo, projetado para remover silêncios e pausas mortas de gravações de cabeça falante. Ele processa uma gravação bruta e sua transcrição a nível de palavra, cortando o silêncio antes da primeira palavra, após a última palavra e pausas entre palavras que excedem um limite configurável (padrão de 0.55 segundos). O agente mantém uma respiração natural em vez de criar cortes abruptos e não altera o conteúdo das palavras, deixando a remoção de falsos começos e repetições para o agente de 'cortar erros' (Agente 2). Ele é determinístico e baseado em transcrição, gerando uma lista de edição (EDL), uma transcrição re-temporizada e, opcionalmente, o vídeo cortado via ffmpeg. O agente suporta transcrições no formato ElevenLabs Scribe ou genérico, e oferece múltiplos modos de uso: apenas planejamento, geração de comandos ffmpeg sem renderização, e renderização final do vídeo cortado. Suas saídas são formatadas para alimentar diretamente os próximos agentes do pipeline, garantindo que a sincronização de áudio e vídeo seja mantida.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zroeschen/Video-Production-Factory/tree/HEAD/.agents/skills/cut-silences

Perguntar na sua IA favorita

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

Documentação

Cortar Silêncios (Agente 1 do Pipeline)

Primeira etapa da edição automatizada. Pega uma gravação bruta + sua transcrição a nível de palavra e remove apenas silêncio: pausas mortas antes da primeira palavra e após a última palavra, mais pausas entre palavras maiores que um limite (aparadas até uma respiração natural, nunca um gap zero absoluto). Deixa as palavras do falante intactas — falsos começos, retomadas e gaguejos são trabalho do agente de cortar erros (Agente 2).

Este agente é determinístico e orientado por transcrição, portanto sua saída (*.silence-transcript.json) alimenta de forma limpa os próximos agentes e o validador de sincronização de batidas.

Quando usar

  • "cortar os silêncios", "aparar as pausas", "remover pausas mortas", "apertar o ritmo"
  • Como o primeiro estágio do fluxo de edição mestre, logo após a transcrição.

Pré-requisitos

Um JSON de transcrição a nível de palavra. Ou no formato ElevenLabs Scribe ({ words: [{ text, start, end, type }], audio_duration_secs }) ou um genérico { words: [{ text, start, end }] }. Gere um com o transcritor do workspace:

node scripts/transcribe-elevenlabs.mjs caminho/para/bruto.mp4    # -> caminho/para/bruto.json

Uso

# 1) Apenas planejamento — calcular o corte, escrever EDL + transcrição re-temporizada (nenhum vídeo tocado)
node .agents/skills/cut-silences/scripts/cut-silences.mjs <transcricao.json> \
  --out-dir video-projects/<slug>/assets

# 2) Com um vídeo — também escreve o comando ffmpeg (ainda não renderiza)
node .agents/skills/cut-silences/scripts/cut-silences.mjs <transcricao.json> \
  --video video-projects/<slug>/assets/bruto.mp4 --out-dir video-projects/<slug>/assets

# 3) Renderizar o vídeo cortado (ffmpeg local, re-codificar, A/V mantido em sincronia)
#    adicione --apply para realmente executar ffmpeg
node .agents/skills/cut-silences/scripts/cut-silences.mjs <transcricao.json> \
  --video video-projects/<slug>/assets/bruto.mp4 --apply \
  --output video-projects/<slug>/assets/editado-silencio.mp4

Opções

FlagPadrãoSignificado
--video <caminho>—Vídeo de origem; habilita o comando / renderização ffmpeg
--out-dir <dir>próximo à transcriçãoOnde as saídas são escritas
--output <caminho><video-stem>.silenced.mp4Caminho do vídeo cortado
--gap <s>0.55Pausa mínima tratada como silêncio cortável
--head-pad <s>0.22Silêncio mantido antes da primeira palavra
--tail-pad <s>0.34Silêncio mantido após a última palavra
--applydesligadoExecutar realmente ffmpeg para renderizar o corte

Como decide (as regras de silêncio)

  • Pausas abaixo de --gap (0,55s) são deixadas como estão — ritmo natural da fala.
  • Para uma pausa cortada, uma respiração natural é mantida, escalada pelo contexto: 0,24s para pausas longas (≥2s), 0,20s após um terminador de frase (. ! ?), 0,14s caso contrário. A respiração mantida é levemente deslocada para o final da frase anterior.
  • A pausa morta no início/fim é cortada para --head-pad / --tail-pad.
  • Os intervalos de exclusão são mesclados; os intervalos de manutenção são o complemento. O corte é renderizado com um grafo de filtros ffmpeg trim/atrim + concat (escrito em um script *.silence-filter.txt e passado via -/filter_complex), de modo que vídeo e áudio permaneçam sincronizados.

Saídas (escritas em --out-dir)

ArquivoFinalidade
<stem>.silence-edl.jsonIntervalos de manter/excluir, durações, parâmetros — a lista de edição
<stem>.silence-transcript.jsonPalavras re-temporizadas na linha do tempo editada (alimenta Agente 2 + batidas)
<stem>.silence-decisions.mdResumo legível por humanos + maiores pausas cortadas
<stem>.silence-filter.txtO grafo de filtros ffmpeg (apenas com --video)
<video-stem>.silenced.mp4O vídeo cortado (apenas com --apply)

O resumo JSON impresso no stdout inclui removed, removedPct, contagens de intervalo e caminhos de saída — útil para o fluxo de trabalho mestre registrar e encadear.

Notas de ajuste

  • Padrão para YouTube de cabeça falante (--gap 0.55) remove aproximadamente 15-20% de uma gravação bruta típica como silêncio puro. Reduza --gap para um corte mais rápido e enérgico; aumente para preservar mais espaço natural para respiração.
  • Se um corte parecer muito agressivo nos limites de frases, aumente a respiração na quebra de frase, ou aumente --gap.

Entrega para o próximo agente

Passe <stem>.silence-transcript.json (e o silenced.mp4 se renderizado) para o agente de cortar erros. Como os timestamps já estão na linha do tempo editada, o tempo das batidas downstream e o scripts/validate-beat-sync.mjs funcionam sem ajustes adicionais.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

zroeschen/Video-Production-Factory

Agent 2 of the video editing pipeline. Finds and removes spoken mistakes — stutters, repeated words, false starts, and retakes (re-recorded lines) — from a talking-head recording. Use after cut-silences, when asked to cut mistakes, remove stutters / repeats / filler restarts, clean up flubs, or keep the best take. Works review-gated: it proposes every cut with context and a reason for approval, then renders only the approved cuts via ffmpeg. Requires a word-level transcript.

zroeschen/Video-Production-Factory

Edit a raw talking-head video through transcription, silence trimming, mistake review, visual storytelling, motion graphics, and verified HyperFrames rendering. Use for a complete edit; route a single requested operation directly to its specialist skill.

zroeschen/Video-Production-Factory

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

zroeschen/Video-Production-Factory

HyperFrames CLI tool — hyperframes init, lint, preview, render, transcribe, tts, doctor, browser, info, upgrade, compositions, docs, benchmark. Use when scaffolding a project, linting or validating compositions, previewing in the studio, rendering to video, transcribing audio, generating TTS, or troubleshooting the HyperFrames environment.

Habilidades Relacionadas