Communitygithub.com

zroeschen/Video-Production-Factory

Agente 1 del pipeline de edición de video. Elimina silencios y espacios muertos de una grabación de alguien hablando a cámara. Úsalo para cortar silencios, recortar pausas, eliminar espacios muertos o ajustar el ritmo de un video en bruto, dado un transcripción a nivel de palabra. Produce una lista de edición (EDL), una transcripción con tiempos reajustados para los agentes posteriores y, opcionalmente, el video cortado mediante ffmpeg. NO corta errores, repeticiones ni falsos comienzos; eso es tarea del agente de corte de errores.

¿Qué es Video-Production-Factory?

Este agente es el primer paso del pipeline de edición automatizada de video. Su función es eliminar exclusivamente los silencios y espacios muertos de una grabación en bruto, utilizando su transcripción a nivel de palabra. Recorta el silencio inicial y final, así como las pausas entre palabras que superan un umbral configurable, reduciéndolas a una duración que simula una respiración natural. No modifica ni elimina las palabras del hablante, dejando los errores, repeticiones y tartamudeos para el agente especializado en cortar errores (Agente 2). El agente está diseñado para funcionar de manera determinista y guiada por la transcripción, lo que garantiza que su salida (`*.silence-transcript.json`) pueda ser utilizada sin problemas por los siguientes agentes del pipeline y por el validador de sincronización de ritmo. Soporta plataformas locales basadas en Node.js y ffmpeg. Su funcionamiento implica analizar la transcripción, calcular los rangos de silencio a eliminar siguiendo reglas específicas (como mantener una respiración natural en pausas largas o al final de oraciones) y generar una lista de edición (EDL), una transcripción con tiempos reajustados y, opcionalmente, el video cortado mediante un filtro de ffmpeg. Esto lo hace ideal como primer paso en flujos de trabajo de edición de videos de formato largo, como conferencias, tutoriales o contenido para YouTube.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Cortar Silencios (Agente 1 del Pipeline)

Primer paso de la edición automatizada. Toma una grabación en bruto junto con su transcripción a nivel de palabra y elimina únicamente el silencio: espacio muerto antes de la primera palabra y después de la última, además de pausas entre palabras que superan un umbral (recortadas a una respiración natural, nunca a un espacio cero absoluto). No altera las palabras del hablante: los falsos comienzos, las retomas y los tartamudeos son trabajo del agente cortar-errores (Agente 2).

Este agente es determinista y está guiado por la transcripción, por lo que su salida (*.silence-transcript.json) se integra sin problemas en los siguientes agentes y en el validador de sincronización de ritmo.

Cuándo usarlo

  • "cortar los silencios", "recortar las pausas", "eliminar espacios muertos", "ajustar el ritmo"
  • Como la primera etapa del flujo de trabajo de edición maestro, justo después de la transcripción.

Prerrequisitos

Un JSON de transcripción a nivel de palabra. Ya sea el formato de ElevenLabs Scribe ({ words: [{ text, start, end, type }], audio_duration_secs }) o uno genérico { words: [{ text, start, end }] }. Genere uno con el transcriptor del espacio de trabajo:

node scripts/transcribe-elevenlabs.mjs ruta/a/bruto.mp4    # -> ruta/a/bruto.json

Uso

# 1) Solo planificar — calcular el corte, escribir EDL + transcripción con tiempos reajustados (sin tocar el video)
node .agents/skills/cut-silences/scripts/cut-silences.mjs <transcripcion.json> \
  --out-dir video-projects/<slug>/assets

# 2) Con un video — también escribir el comando ffmpeg (aún no se renderiza)
node .agents/skills/cut-silences/scripts/cut-silences.mjs <transcripcion.json> \
  --video video-projects/<slug>/assets/bruto.mp4 --out-dir video-projects/<slug>/assets

# 3) Renderizar el video cortado (ffmpeg local, recodificar, A/V sincronizados)
#    agregar --apply para ejecutar ffmpeg realmente
node .agents/skills/cut-silences/scripts/cut-silences.mjs <transcripcion.json> \
  --video video-projects/<slug>/assets/bruto.mp4 --apply \
  --output video-projects/<slug>/assets/editado-silencios.mp4

Opciones

BanderaValor por defectoSignificado
--video <ruta>—Video fuente; habilita el comando ffmpeg / renderizado
--out-dir <dir>junto a la transcripciónDirectorio donde se escriben las salidas
--output <ruta><nombre-video>.silenciado.mp4Ruta del video cortado
--gap <s>0.55Pausa mínima considerada como silencio recortable
--head-pad <s>0.22Silencio mantenido antes de la primera palabra
--tail-pad <s>0.34Silencio mantenido después de la última palabra
--applydesactivadoEjecutar ffmpeg realmente para renderizar el corte

Cómo decide (las reglas de silencio)

  • Las pausas por debajo de --gap (0,55s) no se tocan — ritmo natural del habla.
  • Para una pausa recortada, se mantiene una respiración natural, escalada según el contexto: 0,24s para pausas largas (≥2s), 0,20s después de un final de oración (. ! ?), 0,14s en otros casos. La respiración mantenida se sesga ligeramente hacia el final de la frase anterior.
  • El espacio muerto inicial/final se recorta a --head-pad / --tail-pad.
  • Los rangos de eliminación se fusionan; los rangos de conservación son el complemento. El corte se renderiza con un gráfico de filtros ffmpeg trim/atrim + concat (escrito en un script *.silence-filter.txt y pasado mediante -/filter_complex), por lo que el video y el audio permanecen sincronizados.

Salidas (escritas en --out-dir)

ArchivoPropósito
<nombre>.silence-edl.jsonRangos de conservar/eliminar, duraciones, parámetros — la lista de edición
<nombre>.silence-transcript.jsonPalabras con tiempos reajustados a la línea de tiempo editada (alimenta al Agente 2 + ritmo)
<nombre>.silence-decisions.mdResumen legible por humanos + las pausas más grandes recortadas
<nombre>.silence-filter.txtEl gráfico de filtros ffmpeg (solo con --video)
<nombre-video>.silenciado.mp4El video cortado (solo con --apply)

El resumen JSON impreso en stdout incluye removed, removedPct, conteos de rangos y rutas de salida — útil para que el flujo de trabajo maestro registre y encadene.

Notas de ajuste

  • El valor predeterminado para videos de cabezas parlantes de YouTube (--gap 0.55) elimina aproximadamente el 15-20% de una toma en bruto típica como silencio puro. Reduzca --gap para un corte más rápido y enérgico; auméntelo para conservar más espacio natural para respirar.
  • Si un corte se siente demasiado agresivo en los límites de las oraciones, aumente la respiración al final de la oración, o aumente --gap.

Entrega al siguiente agente

Pase <nombre>.silence-transcript.json (y el silenciado.mp4 si se renderizó) al agente cortar-errores. Debido a que las marcas de tiempo ya están en la línea de tiempo editada, la sincronización del ritmo posterior y scripts/validate-beat-sync.mjs funcionan sin necesidad de ajustes adicionales.

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.

Skills relacionados