Communitygithub.com

akachandan1/studio-de-video

Añade subtítulos sincronizados palabra por palabra con estilo (y un gancho opcional que llame la atención) a un video de una persona hablando. El usuario proporciona un video; tú lo transcribes, muestras cada estilo de subtítulo renderizado en su propio metraje, ellos eligen un estilo y un gancho, y tú renderizas el MP4 con subtítulos. Úsalo cuando el usuario suba/proporcione un video y diga "pon subtítulos", "añadir subtítulos", "hacer subtítulos", "estilos de subtítulos", "añadir un gancho" o invoque /caption-video.

¿Qué es studio-de-video?

Esta habilidad permite añadir subtítulos estilizados y sincronizados palabra por palabra a videos de personas hablando, todo ejecutándose localmente con HyperFrames y sin necesidad de After Effects. El usuario proporciona un video, luego se transcribe con WhisperX y se le muestran todos los estilos de subtítulos disponibles renderizados en su propio metraje para que elija. La habilidad también genera opcionalmente un "gancho" (hook) al inicio del video usando frases clave del discurso para captar la atención. Soporta plataformas de IA como Claude Code, Cursor y Codex, y el flujo incluye pasos para pulir el video (recorte, gradación de color, mejora de audio y música de fondo), construir y renderizar el MP4 final. Los subtítulos se almacenan en `videos/captions/<nombre>/` y los videos terminados en `out/captions/<nombre>.mp4`.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/akachandan1/video-studio/tree/HEAD/.claude/skills/caption-video

Preguntar en tu IA favorita

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

Documentación

Subtitular un video

El usuario proporciona un video de una persona hablando. Elige del catálogo de estilos de subtítulos, que se previsualizan en su propio metraje, y tú entregas el MP4 subtitulado. Todo se ejecuta localmente con HyperFrames. After Effects nunca es necesario.

Kit: .claude/skills/caption-video/kit/ dentro del repositorio del estudio. Los proyectos se crean en videos/captions/<nombre>/ y los videos terminados van a out/captions/<nombre>.mp4 (ambos relativos a la raíz del estudio).

Desde la raíz del estudio, establece K="$PWD/.claude/skills/caption-video/kit" y ejecuta python3 "$K/caption.py" … (pon las rutas entre comillas; las carpetas pueden contener espacios). Usa el python del venv del estudio (.venv/bin/python) si faltan numpy/scipy en el python del sistema — setup/setup.sh lo crea.

Flujo

1. Obtener el video

Si no se proporcionó una ruta de video, pide una. Verifica que exista y que tenga una persona hablando. Ejecuta:

python3 "$K/caption.py" new "<ruta del video>" <nombre-corto>

Esto copia el video, lo recodifica a H.264 y lo transcribe palabra por palabra con WhisperX. La primera ejecución después de un tiempo puede tomar un minuto. Los videos largos tardan aproximadamente el tiempo real ÷ 4.

2. Mostrar la transcripción

Imprime la transcripción de la salida del comando en un bloque legible. Señala cualquier error probable, especialmente nombres de marca y jerga (nombres de productos, "HyperFrames", siglas), y pide al usuario que confirme o los corrija. Las correcciones van en --fix "mal=bien,…" al momento de la construcción. Si la transcripción parece sinsentido, o el audio no tiene voz, detente y dilo. No subtitules palabras inventadas.

3. Mostrar cada estilo en su metraje

Ejecuta python3 "$K/caption.py" styles para la lista y python3 "$K/caption.py" preview <nombre> para la hoja visual. La hoja está en videos/captions/<nombre>/previews/styles.png. Mírala tú mismo, luego envíala con SendUserFile (muestra render). Junto a ella, da la lista numerada con la línea "mejor para" de cada estilo:

  1. Lime Hook: el aspecto de plantilla (Anton mayúsculas, palabra hablada en lima)
  2. Karaoke Pop: ráfagas grandes de 2 palabras, palabra hablada en amarillo
  3. One Word: una palabra gigante a la vez
  4. Clean Box: texto oscuro sobre una tarjeta blanca, resaltador en la palabra hablada
  5. Editorial: mayúscula y minúscula calmada, palabras clave en cursiva serif
  6. Subtitle: subtítulos pequeños de oraciones completas
  7. Neon: resplandor cian en la palabra hablada

Recomienda uno en una sola línea basado en el contenido: hype o social → 1 o 2, explicativo o anuncio → 4, historia de fundador o premium → 5, entrevista o podcast → 6, tecnología o IA → 7. Luego pídeles que elijan un número. Si el catálogo en caption.py ha cambiado, lista lo que imprima styles en lugar de esta copia.

4. Gancho (opcional)

Sugiere 3 ganchos tomados de lo que el hablante realmente dice. Lidera con el número, resultado o contradicción más sorprendente, usa de 4 a 8 palabras y mantén el remate en una palabra grande. Dale formato a cada uno en sintaxis de gancho, luego pregunta con AskUserQuestion: tres opciones de gancho más "Sin gancho" (el usuario también puede escribir el suyo propio).

La sintaxis de gancho usa una línea por |, cada una comenzando con su estilo:

  • s: introducción en cursiva serif ("Cómo", "Por qué")
  • c: configuración en condensada mayúscula blanca
  • b: la palabra o número grande con aro (1–2 palabras)
  • l: giro en lima mayúscula
  • r: etiqueta pequeña en cursiva

Ejemplo: s:Cómo|c:Llegué|b:300k+|l:sin anuncios|r:vistas. El gancho debe coincidir con lo que el video entrega en sus primeros 10 segundos.

4b. Pulido (ofrécelo; ejecútalo cuando pidan corrección de color, audio más limpio, recorte o música)

python3 "$K/polish.py" <nombre> [--grade clean|cinematic|none] [--music calm|none] [--music-level 1.0] [--denoise 100]
  • Recortar: corta el silencio antes de la primera palabra y después de la última (mantiene 0.3 s y 0.9 s), y ajusta la transcripción en consecuencia.
  • Corrección de color: clean (predeterminado) da piel cálida y saludable, contraste suave y una viñeta suave. cinematic es más profundo y frío. Antes de elegir, compara un fotograma de cada uno contra el original y míralo.
  • Voz: eliminación de ruido DeepFilterNet3 (~/.venvs/dfn, creado por setup.sh; nunca lo instales globalmente, necesita numpy<2), luego un filtro paso alto, realce de presencia, de-esser y compresión suave.
  • Música: una base sintetizada de piano y pad calmados. En nivel 1 se sitúa unos 20 dB por debajo de la voz en las pausas y unos 25 dB por debajo mientras hablan. Usa --music-level 0.6 para más silencioso o 1.5 para más presente.
  • Los originales se guardan como source_orig.mp4 / transcript_orig.json, por lo que el pulido se puede volver a ejecutar con cualquier configuración. Después de pulir, ejecuta build y render nuevamente.
  • Menciona cualquier tropiezo o falso comienzo en la apertura ("en el presente, en el momento…"). Cortarlos hace un pequeño corte abrupto, así que pregunta antes de hacerlo.

5. Construir, verificar, renderizar

python3 "$K/caption.py" build <nombre> --style <clave> [--hook "…"] [--hot "palabra,palabra"] [--fix "a=b"]
cd "videos/captions/<nombre>" && npx --yes [email protected] check
python3 "$K/caption.py" render <nombre>
  • --hot lista las palabras que permanecen en el color de acento. Elige 2–5 palabras de remate; los números se marcan como hot automáticamente.
  • check las advertencias de contraste en el momento de desvanecimiento del gancho son esperadas. Corrige cualquier error real antes de renderizar.
  • Antes de renderizar un gancho, haz una captura instantánea (npx --yes [email protected] snapshot . --at 1.6 --no-end --describe false) y verifica que no cubra la cara. Cuando la cara esté alta en el encuadre (persona sentada o plano medio), mueve el gancho al pecho con --hook-y 0.43; el sombreado lo sigue automáticamente.
  • Antes de enviar, extrae 3–4 fotogramas de out/captions/<nombre>.mp4 y míralos. Los subtítulos no deben cubrir la boca ni los ojos. Si lo hacen, reconstruye con --cap-y (número más alto = más abajo en la pantalla).
  • El metraje filmado de lado (una cámara girada de lado, sin metadatos de rotación) muestra a la persona acostada de lado en la hoja de contactos. Gíralo primero (ffmpeg -vf transpose=2 = 90° antihorario, o transpose=1 = horario; verifica un fotograma) dentro de videos/_caption-inputs/, luego ejecuta new en ese archivo.
  • Envía el MP4 con SendUserFile y da su ruta como enlace.

6. Revisiones

La configuración persiste en videos/captions/<nombre>/caption.json, por lo que una revisión es solo build <nombre> --<opción> … seguido de render <nombre>. Solicitudes comunes:

  • Estilo diferente: --style.
  • Más grande o más pequeño: --size 1.2.
  • Más arriba o más abajo: --cap-y 0.7.
  • Menos palabras por subtítulo: --words 2.
  • Color diferente: --accent "#FF4D3D".
  • Cambiar el gancho: --hook; --hook "" lo elimina.
  • Longitud del gancho: --hook-dur 3.5.

También pueden abrirlo en HyperFrames Studio ellos mismos con cd videos/captions/<nombre> && npm run dev.

Datos de configuración (si algo falla)

  • La transcripción llama a ~/.claude/skills/embedded-captions/scripts/transcribe.cjs con HYPERFRAMES_ROOT=~/.hyperframes-root, una instalación de HyperFrames CLI 0.8.147 con un enlace simbólico packages/cli/dist/cli.js. Si falta alguno, reinstala: npx hyperframes skills update embedded-captions, luego reconstruye ~/.hyperframes-root (npm install [email protected] y enlaza simbólicamente node_modules/hyperframes/dist/cli.js a packages/cli/dist/cli.js).
  • Las fuentes están en kit/fonts/ (todas SIL OFL) y se copian en cada proyecto.
  • setup/doctor.sh verifica cada componente debajo; setup/setup.sh los repara.
  • Los subtítulos que van detrás de la persona son posibles con el flujo de trabajo /embedded-captions, pero es mucho más lento (aproximadamente 4 minutos por cada 10 segundos) y necesita HYPERFRAMES_ROOT configurado. Ofrécelo solo si te lo piden.

Individual skills in this repo

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

akachandan1/video-studio

Painterly and illustrated animation — Kurzgesagt-style flat science explainers ("what's inside", scale, mechanisms), art-history styles (Van Gogh, Monet, Lichtenstein, Kusama, Matisse, cubism, ink wash, 8-bit, Roman mosaic, cave painting, Persian miniature…). Uses the huashu-art-motion canvas engine with CUSTOM scenes, renders MP4s, and assembles/scores them in HyperFrames. Also the claude-animation plugin for hand-drawn 2D.

akachandan1/video-studio

Fast CapCut-style chop-cut reel with a story — showreels, hype edits, launch teasers, "make it punchy". One canvas engine on a beat grid (punch-ins on cuts, flash frames, impact shakes, whip pans, speed ramps, freeze frames) rendered in HyperFrames, in 16:9 and 9:16 from one edit, with an original synthesized score locked to the cuts.

akachandan1/video-studio

Guided studio for narrated, fact-checked explainer videos in a Vox-style editorial look (bold collage, flat colour fields, marker annotations, big numbers) or a paper-diorama documentary look. One idea in → sourced script in 10-second blocks → style key + per-scene prompts (or free code-built collage scenes) → offline voiceover fitted to each block → HyperFrames cut with captions, animated number callouts and an original score, in 16:9 and/or 9:16. Use for "Vox-style video", "explainer", "animated explainer", "data-driven video", "make a video about X", "why does X happen".

akachandan1/video-studio

Apple / OpenAI-style product launch film or premium spec ad (30–60 s) — minimal supers, big product moments, signature transition, piano/pulse score, end-card lockup. Shots come from code (HyperFrames scenes), Higgsfield AI image→video, or real product footage, all assembled and rendered in HyperFrames. Includes the fold-cut builder (shots hinge shut/open on the centre line).

Skills relacionados