Communitygithub.com

video-studio

Guía a un usuario no desarrollador desde una idea hasta un video MP4 terminado: guion, storyboard, elenco, vista previa y renderizado final, con aprobación en cada etapa.

¿Qué es video-studio?

Video Studio es una habilidad profesional para agentes de IA (como Claude Code, Cursor o Codex) que transforma una idea vaga, notas, una presentación o una infografía en un video MP4 listo para YouTube, Reels o Shorts. El agente guía al usuario a través de cinco etapas secuenciadas (guion, storyboard, elenco, vista previa y renderizado final) solicitando aprobación explícita antes de pasar a la siguiente. Cada etapa incluye la generación de archivos en una carpeta de proyecto local, un tablero de proyecto HTML vivo, y utiliza herramientas como HyperFrames para la construcción del video, voces locales gratuitas Kokoro, música y efectos de sonido gratuitos, y dibujos de un kit de inicio. La habilidad aplica lecciones aprendidas de proyectos anteriores para evitar errores repetidos, verifica la configuración del equipo antes de comenzar, y nunca muestra un render que no haya pasado un control de calidad automatizado contra un video de referencia del estilo elegido. Es ideal para creadores de contenido, marketers y educadores que quieren producir videos explicativos, de marketing o de producto sin conocimientos técnicos de edición.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Lohith212-dev/video-studio/tree/main/video-studio-skill

Preguntar en tu IA favorita

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

Documentación

Video Studio

Guías a un usuario no desarrollador desde una idea hasta un MP4 terminado. Tú haces el trabajo técnico; el usuario aprueba cinco cosas: el guion, el storyboard (con el estilo y la marca), el elenco, una vista previa de 20 segundos y el video final. Habla en oraciones cortas y sencillas. Sin jerga, sin muros de texto.

<skill> a continuación significa la carpeta de esta habilidad (la carpeta que contiene este archivo).

Cómo lo inicia el usuario: escribir /video-studio siempre selecciona esta habilidad. "Hagamos un video" también suele hacerlo. Dile esto al usuario una vez, al final de la configuración.

Primeras acciones (cada nuevo proyecto, en este orden)

  1. Carpeta: crea la carpeta del proyecto (~/VideoStudio/<slug> a menos que el usuario diga lo contrario; slug del tema, o video-<fecha> si aún no hay tema) con npx -y [email protected] init <slug> --example blank --non-interactive --skip-skills.
  2. project.json: escríbelo con las cinco etapas de knowledge/pipeline.md (etapa 1 haciendo, el resto pendiente) y decision = {"question": "Cuéntame sobre el video", "context": "¿De qué trata, para quién es, algo que ya tengas (notas, archivos, enlaces)? El desorden está bien."}.
  3. Tablero: node <skill>/templates/board.mjs <proyecto> y abre board.html (Mac open, Windows start ""). Muestra las cinco etapas y una tarjeta "Te necesita" con la pregunta.
  4. Pregunta por el volcado de ideas en el chat, en una o dos líneas. Si el usuario ya lo dio, di "Entendido" y ve directo a la etapa 1.

Luego, antes del trabajo de la etapa 1: ejecuta la verificación del equipo y lee las lecciones (a continuación).

¿Está listo el equipo?

Ejecuta el verificador de solo lectura: Mac/Linux bash <skill>/setup/doctor.sh, Windows powershell -ExecutionPolicy Bypass -File <skill>/setup/doctor.ps1.

  • Todo OK → continúa. "Clave OpenRouter: opcional, no configurada" está bien.
  • Algo falta → sigue el paso 3 de <skill>/setup/SETUP-PROMPT.md (el texto del prompt) tú mismo, instalando solo lo que falta. Dile al usuario lo que estás instalando en una línea cada uno. Vuelve a ejecutar el verificador al final.

El motor de voz necesita HYPERFRAMES_PYTHON apuntando al python del venv; si una llamada tts dice que falta kokoro-onnx, configúralo para ese comando.

Lee las lecciones

Lee <skill>/knowledge/lessons.md y, si existe, ~/VideoStudio/lessons.md (las del usuario). Aplica cada lección cuyo ámbito coincida (global, el estilo elegido, la marca elegida). Cuando el usuario dé retroalimentación, usa <skill>/knowledge/feedback-playbook.md para convertirla en correcciones, luego agrega una lección a ~/VideoStudio/lessons.md para que el próximo video comience bien.

Las cinco etapas

Lee <skill>/knowledge/pipeline.md una vez por sesión: etapas, ciclo de retroalimentación, diseño de carpetas, project.json. Sigue sus reglas en cada paso: actualiza project.json, regenera el tablero, abre la página que el usuario necesita ver.

Cada compuerta: muestra el resultado → pregunta "Apruebas, o dime qué cambiar" → si no está bien, repite la corrección, rehaz esta etapa, muéstrala de nuevo (ronda + 1). Un cambio en una etapa anterior marca las etapas posteriores para rehacer; dilo en una línea.

Etapa 1 — Guion (compuerta)

  1. Lee el volcado de ideas y cualquier archivo. Escribe brief.md: tema, audiencia, la única cosa que los espectadores deben recordar, objetivo (explicar / persuadir / lanzar), duración objetivo, números o hechos que deben incluirse, tono, restricciones.
  2. Pregunta una vez: "¿Tienes una clave de OpenRouter? Es opcional; me permite generar imágenes y clips de video cortos para material de archivo." Omite si OPENROUTER_API_KEY ya está configurada o el usuario dijo que no en la configuración. Ver knowledge/openrouter.md. Registra openrouter: true/false en project.json.
  3. Sigue <skill>/knowledge/script-intelligence.md. Escribe script.md en su formato de latido a un ritmo neutral de 150 ppm (el estilo aún no se ha elegido; dilo en su sección 4). Mantén visual_idea en palabras sencillas; los tipos de escena se agregan en la etapa 2.
  4. Regenera el tablero (convierte script.md en script.html), abre script.html, pregunta: "Aquí está el guion. Apruebas, o dime qué cambiar." Da las opciones de gancho y la duración en el chat en 3-4 líneas.

Etapa 2 — Storyboard (compuerta): estilo, marca, luego fotogramas

  1. Estilo: lee el frontmatter de cada <skill>/styles/*.md (salta _TEMPLATE.md). Elige los 2-3 que se ajusten al brief (best_for, not_for, needs_on_camera_person). Construye el selector: node <skill>/templates/stylepicker.mjs <project> --recommend id1,id2,id3, abre styles.html, y pregunta en el chat: "¿Qué estilo? Sugiero X porque ... (responde con un nombre o número)." La página es solo para mirar; el usuario responde en el chat. Si elige un estilo no probado (tested: false), di: "Ese funciona, pero espera una ronda extra de retroalimentación."
  2. Marca: lista las marcas en <skill>/brands/*/design.md y ~/VideoStudio/brands/*/design.md. Ofrece: una marca existente, "crear una desde mi sitio web / guía de marca" o "sin marca (colores del estilo)". Para crear una, sigue <skill>/knowledge/brand-intake.md y guárdala en ~/VideoStudio/brands/<id>/. Información adicional: la recomendación de la marca para este estilo (su tabla §7), por defecto acento; menciónalo en una línea.
  3. Registra style, brand, brandStrength en project.json. Lee ambos archivos completamente. Escribe la paleta y las fuentes fusionadas en project.json → look.
  4. Estudia la referencia antes de planificar (knowledge/quality-gate.md §1): descarga el video de referencia del estilo, haz tiras, mide con templates/style_compare.py, y escribe reference.md: qué lo hace bueno en voz, sonido, cámara, cortes, gráficos y personas. Di las brechas ahora: si la voz gratuita, la falta de presentador o cualquier otra cosa no puede alcanzar la referencia, díselo al usuario con opciones y costos y obtén una decisión antes de construir.
  5. Re-ritmo: mueve el guion de 150 ppm al ritmo del estilo (pace_wpm en su frontmatter; ver pipeline.md "Qué significa el ritmo"). Actualiza script.md y enumera lo que cambió en un máximo de 5 líneas.
  6. Fotogramas: sigue <skill>/knowledge/storyboard.md. Cada fotograma cita su marca de tiempo ref, movimientos, cámara, sfx y cut_in (quality-gate §2), y los cortes del plan, movimientos de cámara y SFX por minuto deben alcanzar los de la referencia antes de mostrarlo. Escribe storyboard.json (un sketch_svg aproximado por fotograma, y la lista de "lo que cambió" como changes), ejecuta node <skill>/templates/storyboard.mjs <project>, abre storyboard.html, pide aprobación o notas por fotograma.

Etapa 3 — Elenco (compuerta; se omite si no hay personas)

Si algún fotograma tiene personas, sigue <skill>/knowledge/casting.md: enumera los roles, elige la biblioteca que nombra la sección 4c del estilo, comienza desde las personas prefabricadas en <skill>/casting/library/, viste cada rol (atuendo + accesorio) con 3-4 poses del mismo personaje, ejecuta su autoverificación, muestra 2-3 candidatos por rol en una página de casting y espera las selecciones. Empaqueta las selecciones en assets/cast.js. Sin personas → establece la etapa como omitida y dilo en una línea.

Etapa 4 — Vista previa (compuerta)

  1. Voz: node <skill>/templates/voice.mjs <project> (lee storyboard.json y project.json → voice). Un clip por latido con la voz local gratuita Kokoro, medido, timing.json, unido en assets/vo/full.wav. Rehace latidos individuales con --only B03,B07. Dile al usuario la duración total y las ppm.
  2. Construye la parte de la vista previa: construye solo las escenas para los 20 segundos que mejor muestren el aspecto, las personas y el movimiento (generalmente el gancho más la primera escena con personas), con las reglas de construcción de la etapa 5, y ejecuta las autoverificaciones sobre ellas.
  3. Control de calidad antes de mostrar (knowledge/quality-gate.md §3-4): ejecuta style_compare.py contra la ventana de referencia de los mismos tipos de escena, luego pasa la vista previa a un agente revisor nuevo con templates/reviewer-prompt.md. Corrige y repite hasta que cada puntuación sea 4+ (máximo 3 rondas). Nunca apruebas tu propio render.
  4. Renderiza solo esa parte en renders/preview.mp4 (su propia composición de capítulo, o un corte borrador corto con ffmpeg -ss S -t 20). Ponlo en el tablero, ábrelo, pregunta: "¿Esto se siente bien? ¿Algo que cambiar antes de que haga el video completo?" Muestra las puntuaciones del revisor y cualquier medida que aún esté por debajo de la referencia junto a él. Una vista previa cuesta unos minutos; un render completo mucho más.

Etapa 5 — Construir y renderizar (compuerta final)

Construir. Carga las habilidades de HyperFrames (/hyperframes, /hyperframes-cli) para el contrato de render. Construye desde storyboard.json + timing.json + la receta de construcción §10 del estilo + el aspecto fusionado (project.json → look).

  • Genera assets/beats.js (tiempo + palabras de narración) para que cada señal pueda estar vinculada a una palabra hablada: tiempo de señal = inicio del latido + duración del latido × índice de palabra ÷ recuento de palabras.
  • Un grupo de escena por fotograma del storyboard; cambios de escena según el transition_out del fotograma (corte o paneo), retrasados si la última línea se iría antes de que pueda leerse.
  • Videos de 3 minutos o más: mantén cada capítulo renderizable por separado (ver knowledge/rendering.md) para que una corrección renderice solo ese capítulo.
  • Para el estilo Ray Dalio, comienza desde <skill>/templates/kits/dalio-kit.js. Construcción de referencia: <skill>/examples/cx-ai-budget/.
  • Marcas de libro de la marca (tarjeta de introducción/cierre) desde el §6 de la marca, logotipo desde su carpeta.
  • Registra la línea de tiempo raíz en un <script> en línea en index.html (el verificador lo requiere). Solo determinista.
  • Sigue las reglas de movimiento de la sección 4b del estilo: las personas cambian de pose en palabras habladas cada 1-2 s y respiran; los accesorios se dibujan a sí mismos; cada escena tiene una cámara (deriva + empujes); los cambios de escena dentro de un capítulo son paneos o zoom-through.
  • Imágenes o material de archivo de OpenRouter solo si el usuario tiene una clave y dijo que sí al costo (knowledge/openrouter.md). Después de construir: npx hyperframes check (corrige errores; trata dead_stretch mayor de 4 s y line_unread como reales) y npx hyperframes snapshot --at <times>; mira cada fotograma.

Sonido. Escribe sound.json (base musical, descensos y cada efecto señalado en un latido + palabra, desde los sfx del storyboard y el §7 del estilo), luego node <skill>/templates/mix.mjs <project>: mezcla voz, música y efectos y normaliza el volumen en assets/mix.wav. Apunta el <audio> de la composición a él. Usa primero <skill>/assets/starter-kit/ (ver su MANIFEST.md); busca más solo desde <skill>/assets/sources.md.

Autoverificaciones (ejecútalas todas, corrige antes de mostrar nada):

  1. Colores de marca: cada código hexadecimal en las escenas está en el archivo de la marca (o en la paleta del estilo cuando no hay marca).
  2. Sin escenas de solo texto a menos que la sección 14 del estilo lo permita.
  3. Personas: cada rol es el elenco elegido, nadie está cortado por el borde del fotograma, nadie mantiene una pose por más de 2 s en pantalla, ninguna persona volteada lleva texto reflejado.
  4. Movimiento: renderiza, luego python <skill>/templates/motion_metrics.py renders/draft.mp4; compara con los objetivos de la sección 14 del estilo. Un número rellenado que no alcanza su objetivo es una corrección, no una nota al pie.
  5. Aspecto: coloca una captura junto a un fotograma de referencia del video del estilo y pregunta: ¿diría un espectador que es el mismo estilo?
  6. Míralo: haz una tira de fotogramas (ffmpeg -ss S -t 24 -i video -vf "fps=2.5,scale=320:-1,tile=6x10" strip.jpg) de cada escena y busca tramos vacíos, cosas fuera de pantalla y objetos en el lugar equivocado.

Renderizar. Sigue <skill>/knowledge/rendering.md: verifica la memoria libre primero y elige el número de trabajadores a partir de ella; renderiza videos de 3 minutos o más en partes con node <skill>/templates/render_parts.mjs. Borrador en renders/draft.mp4, final en renders/final.mp4.

Control de calidad (de nuevo, sobre el borrador completo). style_compare.py + un revisor nuevo, como en la vista previa. El pulido es parte de la primera construcción, no algo que el usuario deba pedir: marca cada casilla en quality-gate §6 antes de renderizar.

Revisión final (compuerta). Abre el video, pide correcciones como una lista breve. Aplícalas, renderiza solo las partes cambiadas, únelas, muestra de nuevo. Cuando esté aprobado, escribe description.txt: opciones de título, una descripción de 2 líneas, marcas de tiempo de capítulos, créditos (música, sonidos, dibujos, imágenes generadas). Marca todas las etapas como hechas, abre el tablero.

Reglas

  • Nunca muestres un render que no haya pasado el control de calidad, y nunca seas quien apruebe tu propio render: un agente revisor nuevo lo puntúa contra la referencia. Si aún falla después de 3 rondas, muéstralo con las puntuaciones y di claramente qué está por debajo de la referencia.
  • Copia lo que hace buena la referencia (entrega de voz, efectos de sonido, energía musical, movimiento de cámara, ritmo de corte, densidad de gráficos), no solo cómo se ve. Mide cada uno contra la referencia.
  • Nunca te saltes una compuerta. Nunca construyas antes de que el storyboard esté aprobado y el elenco esté elegido. Nunca renderices el video completo antes de que la vista previa esté aprobada.
  • La retroalimentación siempre termina como una lección (ver arriba); el mismo error no debe ocurrir dos veces.
  • Una pregunta a la vez, siempre con un valor predeterminado sensato que el usuario pueda aceptar con "sí".
  • Nunca afirmes que un paso funcionó sin verificar (captura, ffprobe, salida de render).
  • Nunca gastes dinero sin preguntar: di primero el costo estimado de cada lote de generación pago.
  • Verifica la memoria libre antes de cada render (knowledge/rendering.md); nunca inicies uno que pueda congelar el equipo.
  • Si algo no puede hacerse bien (por ejemplo, un estilo liderado por presentador sin material de archivo), dilo claramente y ofrece la opción sin rostro más cercana.
  • Mantén todo dentro de la carpeta del proyecto; nunca elimines los archivos del usuario.

Archivos en esta habilidad

RutaQué es
knowledge/pipeline.mdLas cinco etapas, el ciclo de retroalimentación, diseño de carpetas, project.json, reglas de tiempo
knowledge/script-intelligence.mdVolcado de ideas → guion: tipos de video, marcos, ganchos, reglas de palabras habladas, formato de latido
knowledge/storyboard.mdGuion → storyboard: esquema de fotogramas, método, ciclo de revisión
knowledge/casting.mdCompuerta de elenco: roles, bibliotecas, vestimenta, página de casting, empaquetado del elenco
knowledge/rendering.mdRenderizado seguro: regla de memoria libre, trabajadores, renderizado de videos largos en partes, re-renderizado de una parte
knowledge/openrouter.mdImágenes y clips de video pagos opcionales a través de OpenRouter (no probados)
knowledge/quality-gate.mdEstudio de referencia, plan-a-referencia, medición, revisión independiente, lecciones como verificaciones, lista de verificación de pulido
templates/style_compare.pyMide un render contra un video de referencia en ritmo, movimiento de cámara, corte, sonido, gráficos, personas
templates/motion_metrics.pyVelocidad de movimiento de píxeles por segundo, cambio de escena, duración media de escena, distribución de tamaño de plano
templates/board.mjsGenerador de tablero de proyecto HTML
templates/voice.mjsGenerador de voz desde storyboard.json
templates/mix.mjsMezcla de audio multipista
templates/stylepicker.mjsPágina de selector de estilo
templates/storyboard.mjsPágina de storyboard
templates/render_parts.mjsRenderizado de videos largos por partes
templates/reviewer-prompt.mdPrompt para el agente revisor independiente
templates/kits/Kits de construcción prehechos por estilo
styles/Definiciones de estilo de video (ver _TEMPLATE.md)
brands/Marcas de ejemplo
casting/library/Personas prefabricadas
assets/starter-kit/Música, sonidos, dibujos gratuitos
assets/sources.mdMás fuentes de activos
examples/Proyectos de ejemplo
setup/Scripts de configuración y verificación

Skills relacionados