Communitygithub.com

visalnaqvi/video-generator-skill

Finaliza un video en este estudio: selecciona o genera música acorde al estado de ánimo del guion gráfico, coloca cada efecto de sonido en su fotograma, añade subtítulos palabra por palabra, mezcla con loudness social (-14 LUFS), renderiza el MP4 y la imagen de portada, y ejecuta un control de calidad automático.

¿Qué es video-generator-skill?

Este skill automatiza la etapa final de producción de video en el estudio: la renderización completa con música, efectos de sonido, subtítulos y mezcla profesional. Está diseñado para ser usado cuando la voz en off ya está aprobada y el usuario desea el video final. Funciona con guiones gráficos (storyboard.json) y scripts de voz que ya incluyen tiempos. El skill prioriza herramientas gratuitas: selecciona pistas musicales de la biblioteca local o genera música y efectos de sonido mediante código. Solo usa música paga (generada por IA) cuando el usuario lo solicita o aprueba un presupuesto. Soporta plataformas como Claude Code, Cursor y Codex, y se integra en un pipeline de estudio de 5 etapas (escribir → guion gráfico → voz en off → renderizar). No modifica visuales ni palabras; solo se encarga del audio, subtítulos y exportación final. Incluye pasos detallados para cada tarea: selección de música, mapeo de efectos de sonido a partir de claves textuales, mezcla con sidechain, renderizado de subtítulos con resaltado de marca, exportación MP4/cover y control de calidad automático (resolución, tasa de fotogramas, loudness). El usuario puede aprobar o solicitar cambios menores en música/sonido/subtítulos, pero cambios visuales requieren volver a etapas anteriores del pipeline.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/visalnaqvi/video-generator-skill/tree/HEAD/.claude/skills/render

Preguntar en tu IA favorita

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

Documentación

Render — música, sonido, subtítulos, exportación final

Entrada: videos/<video>/ con un storyboard.json aprobado (ajustado a la voz: tiene audio y timing) y un audio/voice-script.json aprobado. Salida:

audio/music.wav        música seleccionada o generada
audio/mix.wav          banda sonora final (voz + música con ducking + SFX), -14 LUFS
audio/mix.json         cada evento de sonido (toma, cue, archivo, tiempo) para verificar
render/final.mp4       1080x1920 (según formato), 30 fps, H.264 + AAC
render/cover.png       portada / miniatura a resolución completa
render/qc.json         informe de control de calidad

Esta etapa no modifica visuales ni palabras. Animación o tiempos incorrectos → habilidades de guión gráfico / voz en off. Gratuito por defecto: música de biblioteca o generada por código, efectos de sonido generados por código. Música paga (generación por IA) solo si el usuario lo solicita o aprueba un presupuesto.

Paso 1 — Música

  1. Lee el music.mood / notes del guión gráfico y la duración del video.
  2. Busca en studio/library/music/ (index.json lista pistas con etiquetas de estado de ánimo, bpm, licencia). Selecciona la mejor coincidencia; si ninguna encaja, indícalo.
  3. Sin coincidencia → genera el respaldo gratuito, con el "drop" al inicio del shot de revelación (tiempo de inicio de la escena — calculado a partir de duraciones/transiciones): node studio/scripts/make-music.mjs --out videos/<video>/audio/music.wav --duration <s> --mood upbeat|calm|cinematic|tense --bpm <n> --drop <s> [--silence <from>-<to>] (tense: tonalidad menor, pulso de latido, final irresuelto; --silence silencia una ventana antes de un sonido de revelación — en modo tense un tictac lo sigue). Video de universo: sigue universe.json → music / sfx. Pistas de biblioteca: copia/convierte a audio/music.wav; el recorte, fundido y ducking ocurren en la mezcla.
  4. Regístralo en storyboard.json → music.file, music.source (pista + licencia, o "code-generated"), opcional music.db (por defecto -16 dB antes del ducking).

Paso 2 — Efectos de sonido

Las claves ya viven en sfx de cada toma (palabras simples, ancladas a fotogramas o palabras habladas por la etapa de voz en off). El mezclador mapea palabras → sonidos mediante studio/library/sfx/index.json (generado por node studio/scripts/make-sfx.mjs; los sonidos personalizados van en custom, se verifica primero). repeat + every reproducen una clave varias veces; syncEnd: true la coloca al final de la toma; los risers terminan en su clave. Los whooshes de transición son opcionales (--auto-whoosh) — el usuario prefiere sonido contenido: solo momentos clave (≈ 1 clave por cada 2 s como máximo, ninguna en la mayoría de las transiciones). Si un guión gráfico tiene muchas más claves que eso, redúcelas a los momentos clave antes de mezclar e indícalo. Corrige cualquier línea de "No sound matched" del mezclador agregando palabras clave o un sonido personalizado — nunca cambiando el diseño del guión gráfico.

Paso 3 — Mezcla

node studio/scripts/mix.mjs videos/<video> (--dry para previsualizar el conteo de eventos primero)

La voz se mantiene al frente; la música se atenúa por la voz (sidechain) y se desvanece al final; SFX a -12 dB (--sfx-db, o storyboard.sfxDb); master limitado y normalizado a -14 LUFS / -1.5 dBTP. Establece storyboard.finalAudio. Vuelve a ejecutar después de cualquier cambio de audio.

Paso 4 — Subtítulos

Activados por defecto para formatos sociales. En storyboard.json: "captions": { "enabled": true, "y": 83, "size": 50, "skipLines": ["L11"] }

  • Las frases (≤ 4 palabras, equilibradas, divididas en pausas) provienen de los tiempos de voz; la palabra hablada se resalta en el color de resalto de la marca.
  • skipLines: líneas de VO cuyas palabras ya están en pantalla (números de teléfono, URLs).
  • Por toma: captionY (% del fotograma) para moverlos, captions: false para ocultarlos donde las mismas palabras están en pantalla (por ejemplo, un nombre en tercio inferior).
  • Mantenlos dentro de la zona segura (83% por defecto) y fuera de elementos de diseño importantes.

Verifica con una hoja de contacto (los subtítulos se muestran en fotogramas donde alguien habla): node studio/scripts/render.mjs videos/<video>/storyboard.json --sheet --scale 0.25 --out <scratchpad>/captions-sheet.png Mira una vez; corrige colisiones con captionY / captions: false.

Paso 5 — Render final, portada, QC

node studio/scripts/render.mjs videos/<video>/storyboard.json --final
node studio/scripts/render.mjs videos/<video>/storyboard.json --cover
node studio/scripts/qc.mjs videos/<video>

El QC debe pasar: resolución, tasa de fotogramas, códecs, duración = guión gráfico, loudness -14 ±1.5 LUFS. Advertencias (pico verdadero, silencios, fotogramas negros) → explicar o corregir. No veas el MP4; envía render/final.mp4 (y la portada) al usuario con el resumen del QC y lo que contiene la mezcla (fuente de música, número de eventos de sonido, subtítulos activados/desactivados).

Paso 6 — Aprobar

Usuario satisfecho → "status": "final" en storyboard.json → render, listo. Cambios: ajustes de música/sonido/subtítulos → Pasos 1–5 aquí; cambios visuales o de tiempos → habilidad de guión gráfico / voz en off, luego vuelve a ejecutar esta etapa.

Individual skills in this repo

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

Skills relacionados