Communitygithub.com

ErtanLabs Motion

Dirige, renderiza y verifica gráficos en movimiento con un pipeline determinista de HTML a video. Cada pieza toma prestada su gramática visual de un artefacto del 'mundo real', registra cada decisión en un libro de decisiones, planifica el tiempo en una hoja de ritmos numerada por fotogramas, renderiza MP4, ProRes (con alfa) o WebM exactos al fotograma a través de un renderizador paralelo integrado, y es medida por un verificador integrado para pausas, volumen, destellos, etiquetas de color y zonas seguras de la plataforma.

¿Qué es ErtanLabs Motion?

ErtanLabs Motion es una habilidad para agentes de IA que permite crear, renderizar y verificar gráficos en movimiento de manera determinista y trazable. Combina un pipeline HTML a video con un estricto control de calidad, obligando a que cada decisión visual (tipografía, color, animación) tenga una fuente documentada en un 'mundo fuente' real. Esto evita la uniformidad genérica y asegura que cada pieza sea única y con propósito. La habilidad soporta los backends Remotion y HyperFrames, pero por defecto usa su propio renderizador basado en HTML y Node.js. El flujo de trabajo se divide en tres fases: Decidir (explorar el brief, encontrar el artefacto fuente, documentar decisiones en un ledger), Hacer (planificar tiempos por fotogramas, animar elementos con clases de peso, probar el fotograma héroe) y Probar (medir pausas, volumen, destellos, colores y zonas seguras con un script de verificación). Es ideal para piezas como tipografía cinética, videos explicativos al estilo 'Vox', ensayos visuales, documentales estilo collage de papel, secuencias de títulos, gráficos animados, mapas, rutas de vuelo, promociones de productos, tercios inferiores, verticales para redes sociales y superposiciones para editores.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ErtanLabs/ertanlabs-motion/tree/HEAD/skills/ertanlabs-motion

Preguntar en tu IA favorita

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

Documentación

¿Qué hace ErtanLabs Motion?

El trabajo de motion graphics se vuelve genérico de una manera predecible: cada decisión que un brief deja abierta se llena con lo más común, y un video ensamblado a partir de decisiones comunes es indistinguible de miles de otros. Esta habilidad hace explícitas las decisiones abiertas, les da a cada una una fuente trazable, renderiza de manera determinista y mide el archivo antes de que nadie lo vea.

Regla de la casa: cada elección visible tiene un dueño. Si no puedes señalar de dónde vino una fuente, un color, una curva o un sonido, nadie la eligió.

La ruta

FasePasoDeja atrás
A · DecidirA1 Sondear la máquinaResultado de --doctor, backend elegido
A2 Desglosar el briefLogline, lienzo, inventario, banda sonora, barreras de seguridad, suposiciones etiquetadas
A3 Encontrar el mundo fuenteEl artefacto cuya gramática toma prestada la pieza, dispositivo narrativo, beat héroe
A4 Escribir lo predeterminado, luego anularloLa versión más común y sus reemplazos
A5 Mantener el libro de decisionesledger.md junto a la composición
B · HacerB1 Planificar en fotogramasHoja de ritmos con pausas planificadas
B2 Pesar cada elementoClases de peso, líder y seguidor
B3 Dejar que el mundo establezca tipo, color, sonidoFilas del libro de decisiones completadas desde la fuente
B4 Probar, luego renderizarFotogramas héroe inspeccionados, luego el archivo
C · ProbarC1 Medir y observarInforme de check.py, hoja de contactos, índice de pistas
C2 Etiquetar afirmaciones y entregarEntrega agrupada por evidencia

Modos de trabajo

  • Sprint (piezas cortas de una sola idea, o 'solo hazlo'): elige tú mismo el mundo fuente, escribe un libro de decisiones de cinco líneas (logline, mundo, beat héroe, tres valores predeterminados reemplazados, lienzo), construye. La prueba y la medición aún se ejecutan.
  • Estudio (trabajo de marca, piezas más largas, briefs poco claros): renderiza el fotograma héroe para dos mundos fuente candidatos con --stills y muestra las dos imágenes una al lado de la otra; la gente juzga las imágenes más rápido que las descripciones. El usuario elige; si no hay nadie disponible, quédate con aquel cuyo fotograma héroe sobreviva al escrutinio de la miniatura (C1) y anota por qué en el libro de decisiones.
  • Serie (episodios para un canal o campaña): primero lee cada ledger.md anterior en el proyecto. Un nuevo episodio no puede repetir tanto el mundo fuente anterior como la estructura de beat héroe anterior; las constantes de marca llevan una etiqueta fixed y están exentas.
  • Revisión (notas sobre una pieza entregada): mapea cada nota a filas de la hoja de ritmos y escribe el cambio como un diff de la hoja de ritmos, fila antigua → fila nueva. Ejemplo: 'demasiado lento al inicio' → grid 6-30 → 4-16, hold 30-60 → 16-40, cada fila posterior se desplaza −20 fotogramas. Renderiza solo el rango cambiado (--range) para revisión, luego la pieza completa, y agrega el diff al libro de decisiones.
  • Explicador narrado (videoensayos, documentales, historia, dinero, crimen o historias científicas impulsadas por voz en off, looks de collage de papel): la narración es el reloj y cada oración se convierte en un beat. Dos reglas llevan la mayor parte de la calidad: una pausa termina con su oración, y cada hecho en pantalla se habla o se obtiene de una nota adhesiva. Lee references/paper-collage-explainer.md y comienza desde assets/collage-template.html.

Nivel de producción

Independientemente del modo, cada pieza tiene un nivel, escrito en el libro de decisiones:

  • Gráfico (predeterminado): la gramática del mundo fuente sobre un lienzo plano. Adecuado para superposiciones, tercios inferiores, piezas de UI, datos impactantes y cualquier cosa que un editor componga.
  • Película: el artefacto en su lugar, visto a través de una cámara, iluminado por una fuente que el mundo explica, con materiales, vida entre los beats, tres o cuatro escenas y sonido diseñado con música. Adecuado para carretes de muestra, páginas de aterrizaje y páginas principales de repositorios, películas de marca, lanzamientos, exhibiciones de mapas y rutas, y cada vez que alguien pide 'cinematográfico', 'animado', 'premium' o 'menos plano'. Lee references/film-level.md antes de planificar; agrega una lista de escenas encima de la hoja de ritmos y sus propias comprobaciones.

Fase A · Decidir

A1 Sondear la máquina

node scripts/render.mjs --doctor

La salida decide el backend: Node, Playwright o un Chrome/Edge instalado, ffmpeg, ffprobe, NVENC. Reportarlo al usuario en una línea. Si la ruta HTML no está disponible, B4 enumera las alternativas; si el usuario ya tiene un proyecto de Remotion o HyperFrames, trabaja dentro de él.

A2 Desglosar el brief

  1. Logline: la oración única que dice el video. Sin una, la pieza se convierte en decoración; redacta una y confírmala.
  2. Lienzo: relación de aspecto, duración, fps, destino. Tamaños y zonas seguras: references/formats-and-safe-zones.md.
  3. Inventario: metraje, capturas de pantalla, logotipos, fotos, datos, placas de IA. El material existente da forma al concepto en lugar de superponerse a él.
  4. Banda sonora: voz en off, música o ninguna. Con VO o música, el audio establece el tiempo (references/sound-and-sync.md). El audio que el usuario proporciona es definitivo: nunca agregues ni elimines pausas, cortes, estiramientos o cambies el tiempo sin el consentimiento del usuario; ajusta la imagen en su lugar.
  5. Barreras de seguridad: fuentes y colores de marca, elementos requeridos y prohibidos, fecha límite.

Las incógnitas se convierten en suposiciones en el libro de decisiones, etiquetadas assumed. Haz una pregunta solo cuando la respuesta cambiaría el mundo fuente.

A3 Encontrar el mundo fuente

No elijas 'un estilo'. Elige un artefacto real del mundo del tema y toma prestada su gramática: una tabla de mareas, un prospecto de farmacia, un tablero de salidas de aletas divididas, un rollo de sismógrafo, un dossier censurado, un escritorio de editor con recortes. Un artefacto resuelve varias decisiones juntas – el tipo en el que está configurado, las tintas y materiales que dan la paleta, la forma en que las cosas cambian en él (voltear, imprimir, sellar, rellenar, trazar), su superficie – para que las decisiones concuerden entre sí.

  1. Enumera cinco artefactos que las personas que viven con el tema realmente manejan o leen.
  2. Prefiere aquel que tenga movimiento incorporado: algo que se voltea, imprime, rellena, traza, sella o se desplaza por sí mismo.
  3. Toma prestadas reglas, no imágenes. No una foto de un boleto detrás del texto, sino la lógica del boleto: una perforación separa, un número de serie cuenta, un sello cancela.

references/source-worlds.md describe 31 mundos agrupados por la forma en que se mueven. Trátalo como calibración; el mejor mundo para un trabajo a menudo no está en la lista.

Nombra dos cosas más:

  • Dispositivo narrativo: una oración sobre cómo el logline se vuelve visible ('la curva de marea traza y el agua en el marco sigue la pluma').
  • Beat héroe: el beat que lleva el logline. Obtiene la pausa planificada más larga y el cambio más grande de estado o escala en la pieza. Después del renderizado, la pausa más larga que mide check.py debería ser la del héroe; si no lo es, el énfasis está en el lugar equivocado. Bajo una voz en off, la pausa aún termina con su oración y la pausa después de ella. Si el héroe necesita más tiempo, pide una pausa más larga mientras la voz aún se está escribiendo o grabando; con una voz en off terminada, haz que la pausa encaje, y nunca mantengas la imagen sobre la siguiente línea.

A4 Escribir lo predeterminado, luego anularlo

La primera idea suele ser la más común. Hazla visible, luego reemplázala:

  1. Escribe la versión predeterminada de este video en una línea honesta: lo que un modelo promedio haría a partir de esta indicación.
  2. Elige al menos tres decisiones en esa línea (tipo, paleta, diseño, entrada, transición, sonido) y escribe un reemplazo para cada una con su fuente: el mundo fuente, el material, los datos o la banda sonora.
  3. Un valor predeterminado que no puedas reemplazar con una razón puede quedarse; va al libro de decisiones marcado owned default.

A5 Mantener el libro de decisiones

Llénalo antes de construir, muéstralo y guárdalo como ledger.md junto a la composición. También es la memoria para el próximo episodio.

LEDGER · <proyecto> · <fecha>
Logline:
Lienzo: 1080×1920 · 30 fps · 8 s · Reels · zona segura: vertical
Mundo fuente:
Dispositivo narrativo:
Beat héroe (fotogramas):
Versión predeterminada (una línea):

| Capa       | Decisión                  | Fuente / razón                 | Valor predeterminado que reemplaza |
|-------------|---------------------------|--------------------------------|-------------------------------------|
| Tipo       |                           |                                |                                     |
| Paleta     | valores hex + trabajo de cada | muestreado de ...            |                                     |
| Diseño     |                           |                                |                                     |
| Base de tiempo | fps, clases de peso, pausas |                            |                                     |
| Textura    |                           |                                |                                     |
| Sonido     |                           |                                |                                     |
| Transiciones |                         |                                |                                     |

Derechos (fuentes, música, datos, imágenes):
Suposiciones:

Fase B · Hacer

B1 Planificar en fotogramas

Una hoja de ritmos es una hoja de exposición compacta: movimiento escrito como datos antes del código. Los rangos son [entrada, salida) en fotogramas; las pausas tienen sus propias filas.

HOJA DE RITMOS · 30 fps · 240 fotogramas (8 s) · 1080×1920
| Beat | Fotogramas | Elemento     | Clase     | Acción                          | Carga         | Sonido        |
|------|------------|--------------|-----------|---------------------------------|---------------|---------------|
| 1    | 6-30       | cuadrícula   | marca     | las líneas trazan, escalonadas  | entra         | pluma         |
| 1    | 30-60      | -            |           | PAUSA                           |               |               |
| 2    | 60-168     | curva de marea | pieza clave | traza; el agua sigue la punta | enlaza        | oleaje bajo   |
| 2    | 168-198    | -            |           | PAUSA (héroe)                   |               | silencio      |
| 3    | 198-200    | titular      | sello     | aterriza en el agua             | aterriza      | un golpe      |
PAUSAS: 30-60, 168-198, 200-240 → proporción de pausas planificadas 42%

Carga nombra lo que el espectador gana: un elemento entra, dos cosas se enlazan, un estado cambia, o un beat aterriza en la banda sonora. Una celda de Carga vacía marca decoración; córtala.

Proporción de pausas es la parte de los fotogramas en los que nada significativo se mueve. Los explicadores y títulos suelen estar alrededor del 20-35%, los montajes con corte musical más bajos, las piezas contemplativas más altas. El grano y la deriva lenta de menos de 2 px son textura, no movimiento. check.py mide la proporción para que se pueda comparar el plan y el resultado.

Con VO o música, convierte las marcas de tiempo de palabras y beats a números de fotograma y escríbelos en la hoja. Bajo una voz en off, cada beat también obtiene una señal, su primera palabra acentuada: el elemento principal del beat está en su lugar para la señal, y ninguna pausa se extiende a la siguiente oración.

B2 Pesar cada elemento

Dale a cada elemento una clase de peso; la clase elige su curva y duración del conjunto en references/motion-and-timing.md, para que las duraciones difieran porque las masas difieren, no por gusto.

ClaseElementos típicosLlegaSaleCurva
atrezopuntos, etiquetas, números pequeños6-12 f4-8 fsettle entrada, launch salida
paneltítulos, tarjetas, bloques de gráficos14-24 f10-16 fheavy
pieza clavecámara, planos de agua, mapas, campos grandes30-90 f20-45 fheavy; linear para maquinaria
marcalíneas, rutas, subrayados, escritura a manolongitud ÷ ~30 px por fotogramase desvanecepen
sellocancelaciones, valores finales, cortes1-2 f-step
  • Líder y seguidor. En cualquier momento, un movimiento lidera; cualquier otro movimiento es causado por él (la pluma alcanza el extremo, por lo que su etiqueta se abre).
  • Orden de dependencia. Un elemento aparece solo después de que aquello de lo que depende está en pantalla: un eje antes de sus datos, una ruta antes de su marcador.
  • Fotograma de póster. El fotograma 0 suele ser la miniatura, así que compónlo como una imagen terminada y legible y deja que el movimiento crezca a partir de él.
  • Puro en fotogramas. Cada valor se calcula únicamente a partir del número de fotograma: nada de CSS de tiempo real, temporizadores o aleatoriedad sin semilla (references/composition-contract.md).

B3 Dejar que el mundo establezca tipo, color, sonido

  • Tipo se hereda del mundo fuente. El énfasis debe sobrevivir al escrutinio de la miniatura (C1): una palabra marcada solo por tono desaparece en tamaño pequeño en escala de grises, así que enfatiza con tamaño, peso, colocación o tiempo. Establece <html lang> y usa mayúsculas sensibles a la configuración regional; render.mjs prueba los glifos del texto realmente en la página. Detalles: references/typography.md.
  • Color: cada color tiene un trabajo nombrado (fondo, tipo, señal, una serie de datos). Un color sin trabajo se elimina. Muestra valores en lugar de inventarlos: python scripts/check.py --palette reference.jpg. Detalles: references/color-and-texture.md.
  • Declaraciones de sonido solo son 'Medido' o 'No verificado', porque el audio no se puede inspeccionar visualmente. Cada entrada en la columna de Sonido apunta a una causa visible o al lecho. Detalles: references/sound-and-sync.md.

B4 Probar, luego renderizar

BackendCuándo
HTML + render.mjsPredeterminado siempre que --doctor pase. Comienza desde assets/composition-template.html (o assets/collage-template.html para explicadores narrados); contrato en references/composition-contract.md.
Remotion / HyperFramesEl usuario ya trabaja en uno. Mismo libro de decisiones y hoja de ritmos, sintaxis diferente: references/backends.md.
Vista previa de artefactoSolo si el entorno ofrece un tipo de artefacto de movimiento o video, y solo como vista previa; un entregable sigue siendo un archivo renderizado.
PlacasToma que el código no puede dibujar de manera convincente (personas, lugares reales en movimiento) provienen de metraje o un modelo de video como placas sin texto; todo lo tipográfico permanece en la composición. references/backends.md.

Mapas, globos y rutas: también lee references/maps.md (§7a para rutas de exhibición).

Prueba el beat héroe antes de construir el resto:

node scripts/render.mjs comp/index.html --stills 0,170,last             # póster, héroe, fotograma final
node scripts/render.mjs comp/index.html --range 150-210 --scale 0.5     # beat héroe a la mitad de tamaño
node scripts/render.mjs comp/index.html -o comp/out.mp4                  # renderizado completo
node scripts/render.mjs comp/index.html --alpha -o comp/overlay.mov     # ProRes 4444 con alfa

Abre las imágenes de prueba con tu herramienta...

Skills relacionados