Communitygithub.com

raymond9703/AgentMotion

Crea vídeos MP4 con código puro, fotograma a fotograma, sin素材 ni modelos de IA de vídeo. Un marco unificado para generar vídeos deterministas con código.

¿Qué es AgentMotion?

AgentMotion es un marco unificado de generación de vídeos puramente basados en código que permite transformar una simple descripción en un archivo MP4 completamente dibujado mediante código. No requiere素材 externo, ni modelos de IA de vídeo tradicionales (como Wan, Hunyuan, LTX); cada fotograma es una función pura del número de fotograma `f(t)`, lo que garantiza renderizado determinista y paralelo. Soporta dos motores de renderizado: HTML Canvas (para animaciones estilizadas sin素材) y React+Remotion (para vídeos data-driven, con subtítulos y gráficos 3D). Incluye 15 recetas de estilos comerciales, un flujo de trabajo completo con storyboard, y un ciclo de control de calidad de dos rondas. Es ideal para desarrolladores que quieran crear vídeos explicativos, promocionales, de datos o animaciones artísticas sin herramientas de edición de vídeo tradicionales.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add raymond9703/AgentMotion

Preguntar en tu IA favorita

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

Documentación

AgentMotion — Marco unificado de generación de vídeos con código puro

Convierte "una frase" en un MP4 dibujado completamente con código. Esta habilidad es la capa de orquestación: te ayuda a elegir el backend, el estilo, el flujo de trabajo y pasar el control de calidad; el conocimiento de dibujo específico está en references/ y styles/.

Invariantes centrales (compartidos por todos los backends)

Cada fotograma es una función pura del número de fotograma: frame = f(t). No uses Math.random() (usa aleatoriedad con semilla), no uses Date.now(), no uses acumulación de estado en rAF. Esta es la premisa que permite el renderizado determinista, la generación paralela de fotogramas y la autoinspección fotograma por fotograma. Violarlo hará que el renderizado y la vista previa no coincidan.

Primer paso: Elegir backend (árbol de decisión)

EscenarioBackendReferencia
Cortometraje (≤60s), sin素材 externos, ilustración / dibujo a mano / estilizadoHTML Canvas de un solo archivoreferences/backends.md §1
Data-driven, personalización por lotes (un vídeo por dato), subtítulos / narración incrustados, ecosistema de gráficos 3D / diagramasReact + Remotionreferences/backends.md §2
Animación interactiva para reproducción directa en navegador (no necesita MP4)HTML de un solo archivo, entrega HTML en lugar de renderizadoreferences/backends.md §3

Si no estás seguro, elige Canvas de un solo archivo: mínimas dependencias, el agente tiene más probabilidades de escribirlo correctamente a la primera.

Segundo paso: Elegir estilo

Consulta styles/recipes.md (15 recetas de estilos comerciales: paletas de colores / técnicas centrales / patrones de movimiento / trampas a evitar). Cuando el usuario no especifique un estilo, pídele que elija o recomiéndale según el tema; por defecto no reutilices el mismo conjunto visual y banda sonora para dos vídeos diferentes.

Tercer paso: Flujo de trabajo estándar (no pares a preguntar)

  1. Leer el problema: Deduce del input del usuario el tipo de vídeo (historia / explicativo / recopilatorio / bucle / datos), duración (por defecto 15-20s), formato (por defecto 1920×1080; para vídeos de datos usa 1080×1920). El idioma de los subtítulos sigue el idioma del input del usuario.
  2. Storyboard: Primero define el BPM y los datos de las secciones (SECTIONS/SHOTS/EVENTS). La imagen y la banda sonora leen los mismos datos de tiempo, asegurando una sincronización natural (ver references/storyboard.md).
  3. Armar el esqueleto: Copia desde templates/starter.html (para Canvas backend), reemplaza la paleta de colores y el dibujo del mundo. Mantén el contrato: la página expone window.C2V = { fps, frames, width, height, draw(frame) }, donde draw es una función pura.
  4. Autoinspección y renderizado (el orden no se puede invertir):
node scripts/render.mjs film.html sheet.jpg --sheet 1          # 1 fotograma/segundo en mosaico, stepping off cuts
node scripts/render.mjs film.html still.png --stills 0,90,300  # Fotogramas estáticos en momentos específicos
node scripts/env-check.mjs                                      # Verificación del entorno
node scripts/render.mjs film.html out.mp4 --audio music.mp3     # Renderizado completo del vídeo (banda sonora opcional)
node scripts/probe.mjs out.mp4 1920x1080 30                     # Afirmar parámetros de codificación
  1. Dos rondas de inspección visual (references/qc.md): ① Coincidencia del storyboard — captura fotogramas en los puntos de acción de cada toma y compáralos con las filas del storyboard; ② Ronda del director — revisa el contact sheet, evalúa ritmo / diversidad de planos / fotogramas muertos / si cada acción tiene sonido. Al menos dos rondas; solo re-renderiza los fotogramas que se modifican.
  2. Entrega: MP4 + HTML (el HTML se puede reproducir directamente en el navegador). Al final, ofrece opciones de cambio: cambiar estilo, cambiar banda sonora, modificar duración.

Para el backend de Remotion, la renderización y verificación se hacen con npx remotion still → inspección visual → npx remotion render (ver references/backends.md §2).

Reglas para evitar fallos (los fracasos más comunes)

  • Función pura. Cualquier acumulación de estado causará errores de fotogramas en el renderizado paralelo.
  • Las líneas dibujadas a mano deben "hervir", no "temblar": cambia la semilla de wobble cada 4 fotogramas (≈7.5 veces/segundo); cambiar en cada fotograma se percibe como ruido.
  • Usa elipses y rectángulos redondeados para el cuerpo, evita polígonos con muchos puntos que parecen señales de tráfico.
  • El orden de dibujo debe ser explícitamente de atrás hacia adelante; la mayoría de los casos de "cara tapada" son problemas de orden de dibujo.
  • El texto nunca debe colisionar: asigna espacios (claim) a bloques de texto y objetos clave; revisa el diseño fotograma por fotograma antes de la entrega.
  • Los puntos de corte y acción deben caer en el compás, y los saltos de volumen ≤ +6dB; de lo contrario, se percibirán como sobresaltos (ver references/audio.md).

Mapa de archivos

ArchivoContenido
scripts/render.mjsNúcleo de renderizado determinista: MP4 / fotograma estático / contact sheet, paralelo con múltiples workers
scripts/env-check.mjs / probe.mjsVerificación del entorno / Afirmación de codificación MP4
templates/starter.htmlEsqueleto de fotograma = f(t): contrato, aleatoriedad con semilla, easing, cámara, compás
styles/recipes.md15 recetas de estilos a nivel de código
references/*.mdFlujo de trabajo / Storyboard / Técnicas / Control de calidad / Banda sonora / Selección de backend
examples/hello-drop.htmlEjemplo mínimo ejecutable de inmediato

Dependencias

Node 18+, ffmpeg (accesible en PATH), Chrome o Edge; npm i playwright-core (instálalo en el directorio de tu proyecto, no en el directorio de esta habilidad).

Skills relacionados