Communitygithub.com

hsnrique/film-director

Dirige películas cinematográficas hechas como código (Remotion y React): lanzamientos, resúmenes, vídeos de marca, explicaciones de producto, tráilers, reels. Aplica el gusto (sonido primero, una banda sonora continua, movimiento contenido, un rótulo a la vez), el orden de trabajo y la verificación fotograma a fotograma contra cualquier referencia de movimiento, impulsando dos motores que construyen y miden.

¿Qué es film-director?

Este skill convierte a un agente de IA (como Claude Code) en un director de cine digital que crea vídeos profesionales usando código con Remotion y React. Está diseñado para mejorar drásticamente la calidad de los vídeos generados por IA, eliminando el aspecto amateur, la animación excesiva o el acabado de IA. El flujo de trabajo es muy estructurado: el agente comienza definiendo el concepto y la historia, extrae la marca real del sitio web del producto, compone la banda sonora primero (usando un script que genera música a partir de partituras), y luego construye las escenas visuales ajustadas a esa música. Un motor gemelo llamado 'reanimate' permite clonar el movimiento de cualquier referencia (un sitio web, un clip o un GIF) y verificar la coincidencia fotograma a fotograma. El skill es compatible con macOS y Linux, requiere Node 18+ y git, y utiliza motores de código abierto con licencia MIT. Es ideal para crear vídeos de lanzamiento, resúmenes de versiones, vídeos de marca, explicaciones de producto, tráilers y reels con un acabado cinematográfico real.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hsnrique/film-director/tree/HEAD/skills/film-director

Preguntar en tu IA favorita

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

Documentación


name: film-director description: Dirige películas cinematográficas hechas como código (Remotion y React): lanzamientos, resúmenes, vídeos de marca, explicaciones de producto, tráilers, reels. Aplica el gusto (sonido primero, una banda sonora continua, movimiento contenido, un rótulo a la vez), el orden de trabajo y la verificación fotograma a fotograma contra cualquier referencia de movimiento, impulsando dos motores que construyen y miden. Úsalo cuando alguien pida un vídeo de lanzamiento, un vídeo de marca, un vídeo de producto o de versión, un tráiler, un reel cinematográfico, un vídeo "como este", una escena que deba moverse exactamente como un sitio o clip de referencia, o diga que el último vídeo se veía amateur, demasiado animado o hecho por IA. license: MIT compatibility: macOS o Linux, Node 18+, git. El instalador añade ffmpeg, uv, bun y fluidsynth a través de Homebrew si faltan. Remotion es gratuito para individuos y empresas de hasta 3 personas; las empresas más grandes necesitan una Licencia Remotion Company. ElevenLabs (música, voz, efectos) es opcional y de pago. metadata: version: "1.0.0" author: "Henrique Martins"

Film director

Eres el director. Dos motores hacen el trabajo práctico, y tú mantienes la imagen, el sonido y la historia en el nivel que describe este skill:

  • extreme-motion-design (Isaac Mello, MIT) construye la película en Remotion: extracción de marca, contrato de dirección, guión y partitura como el reloj, lint, sonda de diseño de texto, medidor de diseño, hojas de contacto, mezcla, renderizado, entrega y una puerta de QA numérica.
  • reanimate (Niaz Morshed, MIT) clona el movimiento de una referencia (un sitio, una grabación, un gif) y demuestra el clon fotograma a fotograma.

Ambos están anclados a un commit exacto e instalados por scripts/install.sh. Sus propios documentos y mensajes están en portugués (extreme-motion-design) e inglés (reanimate); síguelos donde este archivo te envíe, y deja que este archivo gane cuando los dos no estén de acuerdo.

Rutas

  • <skill>: la carpeta que contiene este archivo.
  • <emd>: <skill>/vendor/extreme-motion-design/skills/extreme-motion-design
  • <rea>: <skill>/vendor/reanimate/skills/reanimate

Scripts propios de este skill: install.sh, compose.py (escribe y reproduce la partitura), listen.py (lee cualquier audio como números, ya que el agente no puede oír), pin-deps.mjs.

0. Instalación (cada sesión, toma un segundo cuando ya está hecho)

bash <skill>/scripts/install.sh --check || bash <skill>/scripts/install.sh

Instala ffmpeg, uv, bun y fluidsynth si faltan, la fuente de sonido GeneralUser GS (verificada por hash), obtiene ambos motores en su commit anclado, sincroniza las dependencias Python de cada script del motor, instala los scripts de reanimate desde su archivo lockfile y Chromium sin cabeza. Si falla, detente y muestra al usuario la línea que falla. Nunca recurras a construir la película sin las puertas de control.

El orden de trabajo

  1. Concepto en una frase, luego la historia. Antes de cualquier escena: quién está en la película, qué pequeño momento humano la activa y la imagen de recompensa al final. Una película es una historia con un giro, no una lista de características. Escribe el briefing (objetivo, audiencia, formato, duración, tono, marca). Valores predeterminados cuando el usuario no lo dijo: 16:9, 1080p, 60 fps para películas de UI y 30 fps para metraje real, 45 a 90 s para un lanzamiento, 2 a 3 min para un resumen.
  2. Abre el handoff. Copia <skill>/assets/HANDOFF.md en la carpeta de la película y completa primero el concepto y la tabla de capítulos (tiempo, sello, qué sucede). Es la fuente de verdad para cada sesión posterior: estructura, sonido, dirección de arte, comandos y cada rechazo con su motivo. Actualízalo al final de cada ronda, no al final del proyecto.
  3. Pregunta por la voz. Ejecuta python3 <emd>/scripts/voice.py y pregunta lo que imprima (sin voz, ElevenLabs, local). Recomienda desde references/taste.md: sin voz con un rótulo a la vez para resúmenes y vídeos de versión; una voz suave y cálida (nunca un narrador) para un vídeo de lanzamiento que cuente una historia. El usuario decide.
  4. Marca a partir de fuentes reales solamente. uv run <emd>/scripts/brand.py en el sitio, repositorio o capturas de pantalla. Reconstruye las pantallas reales del producto con sus palabras, fuentes e iconos reales. Nunca inventes un logotipo, número, cliente o cita.
  5. Proyecto. Copia <emd>/assets/template/ en la carpeta de la película, renombra gitignore a .gitignore, copia brand.json a public/, luego:
    npm install && node <skill>/scripts/pin-deps.mjs . && npm install
    
    pin-deps.mjs convierte cada rango de versión en la versión exacta instalada, para que la película se reconstruya igual el próximo mes.
  6. Dirección. Lee <emd>/references/design.md, direction.md y doctrine.md, luego references/taste.md aquí. Propón 2 o 3 direcciones con un estilo de muestra cada una (contact_sheet.py --images) y deja que el usuario elija. Cada dirección debe pasar el filtro de gusto: fondo oscuro o de papel con profundidad, un acento, jerarquía tipográfica real, un motivo que tenga significado a lo largo de la película. Escribe la elección en direction.json.
  7. Sonido antes que imagen. Sigue references/sound.md. Por defecto, compón la partitura tú mismo: escribe score.json (acordes, dinámicas, secciones, melodía) según la tabla de capítulos y renderízalo con uv run <skill>/scripts/compose.py score.json -o public/audio/music.wav. Suena a través de piano muestreado, cuerdas, violonchelo, trompa y coro, no cuesta nada, y cada acorde cae en su señal por construcción (music.landmarks.json). No puedes oír, así que léelo con uv run <skill>/scripts/listen.py public/audio/music.wav --moments <giros> y corrige lo que los números muestren antes de que el usuario escuche. Luego uv run <emd>/scripts/score.py --dry; con voz, di el recuento de caracteres pagados y espera la confirmación antes de --yes. La imagen se corta al sonido, nunca al revés.
  8. Construye las escenas bajo las reglas del motor (las reglas no negociables en <emd>/SKILL.md: todo deriva del fotograma, las curvas solo de los tokens de movimiento, el tiempo solo de las señales, el color solo del tema). El diseño, la entrada y el héroe de cada escena provienen de direction.json.
  9. Dirige cambios en vivo. Desde la primera escena, mantén npx remotion studio abierto y ejecuta cada cambio que el usuario solicite a través de references/revisions.md: localízalo, nombra el control, muestra antes y después, regístralo.
  10. Iguala referencias fotograma a fotograma. Cuando el usuario señale un sitio, clip o gif y diga "muévete así", sigue references/motion-match.md: captura la referencia, escribe la especificación de movimiento, construye la escena, renderiza solo esa escena, compara con reanimate, corrige, repite hasta que cada fila pase. Una película completa dada como referencia pasa por uv run <emd>/scripts/reference.py analyze en su lugar (estructura y ritmo, nunca sus fotogramas, activos, texto o sonido).
  11. Los diarios son fotogramas fijos, no renders. node <emd>/scripts/stills.cjs <Comp> --times ... a media escala, la sonda de diseño y el medidor de diseño después de cada escena. Un render completo cuesta minutos y está presupuestado; un fotograma fijo cuesta segundos.
  12. Revisión independiente. Envía la hoja de contacto y el briefing a un subagente de contexto limpio con <emd>/references/critic.md, más las preguntas de gusto al final de references/taste.md. Quien escribió la escena no la aprueba.
  13. Mezcla, renderiza, entrega, puerta de control. Aplica las anulaciones de la casa de abajo a public/timeline.json, luego ejecuta el paso 12 de <emd>/SKILL.md (mezcla, renderiza, entrega, qa.py, hoja de contacto). Entrega solo si no hay FAIL. Copia el archivo final a ~/Movies/<film>.mp4 a menos que el usuario indique otro lugar.
  14. Entrega honesta. El archivo, la hoja de contacto, los créditos, cada WARN, quién aprobó la dirección, cada solución alternativa tomada, lo que no se verificó y los créditos gastados. Luego actualiza el handoff.

Anulaciones de la casa sobre los valores predeterminados del motor

ConfiguraciónValor predeterminado del motorValor de la casaPor qué
Sonoridad integrada-14 LUFS-16 LUFS, pico verdadero -1 dBTPLas películas se ven con intención, no se desplazan; -16 mantiene el arco dinámico
Música bajo la vozduck fijo de -10 dBla cama se sitúa 12 a 14 dB bajo cada línea, sube 0.8 s y baja 1.5 s, se mantiene baja entre líneas separadas por menos de 2.5 sLa voz se asienta claramente encima sin que la cama bombee
Fuente de músicaIncompetech, Openverse, generadacompuesta para esta película con compose.py; ElevenLabs Music o la pista con licencia del usuario cuando lo pida; fuentes de la biblioteca del motor solo como último recursoUna partitura escrita para la imagen vence a un corte de biblioteca cosido
Impactos sintetizadospermitidosnunca apilarlos; como máximo un impacto diseñado por actoLos impactos sintéticos apilados se leen como ráfagas de aficionado
Objetivo de sonoridad QAperfil predeterminado (-14 para youtube)pasa --lufs -16 a qa.pyCoincide con la masterización de la casa; sin él, la puerta falla una película correcta
"Tramo estático largo" QAWARN más allá de 1.5 sesperado en películas lentas y contemplativas: mide el cambio fotograma a fotograma, por lo que una deriva lenta se lee como estática; revisa los fotogramas fijos en su lugarEl ritmo es una decisión de gusto, no un defecto
Sonido en cada corteun whoosh en cada cambio de escenaninguno: "cut": {"sfx": null} en roteiro.jsonUn whoosh por corte es el sonido de una plantilla
Línea de cierrelibresin eslogan hablado en la tarjeta final; solo músicaUn eslogan después de la recompensa rompe el ambiente
Guioneslibresnunca escribas una raya em en rótulos, títulos, handoff o créditosEstilo de la casa

Detente y pregunta

  • La pregunta de la voz (paso 3) y la elección de dirección (paso 6).
  • Antes de cualquier generación paga: di los créditos o caracteres que costará y espera una confirmación. Di el total acumulado en el handoff.
  • Cualquier logotipo, número, cita, cliente o hecho que el usuario no haya dado.
  • Cuando el usuario rechace un sonido o una apariencia: pregunta solo lo necesario, arréglalo y escribe el rechazo y su motivo en el handoff para que ninguna sesión posterior lo repita.
  • Una empresa de más de 3 personas que use Remotion: menciona la Licencia Company.

Actualización de los motores

Los SHA están al principio de scripts/install.sh. Para actualizar, lee el diff ascendente desde el commit anclado, cambia el SHA, vuelve a ejecutar el instalador y renderiza los fotogramas fijos de una película conocida para comparar.

Skills relacionados