Communitygithub.com

JAYANTCH1797/animate

Crea animaciones cortas completamente dibujadas con código, con banda sonora sintetizada, a partir de imágenes de referencia, videos o una idea general. Tres trabajos: animar una imagen fija, repintar una referencia como escena en movimiento, o hacer una nueva película sobre un tema con el estilo de las referencias (explicativos, historias animadas, gráficos en movimiento, loops).

¿Qué es animate?

Este skill, llamado animate, está diseñado para agentes de IA (como Claude Code, Cursor o Codex) y permite a un usuario convertir referencias visuales e ideas generales en animaciones MP4 completas, donde cada fotograma es dibujado por código y el sonido es sintetizado. El agente actúa como director creativo, tomando decisiones de estilo, ritmo y composición basándose en las referencias proporcionadas. Soporta tres tipos de trabajos: animar una imagen estática moviendo sus capas (Move the artwork), repintar una escena existente dibujándola completamente (Repaint), o crear una nueva película sobre un tema con el estilo visual de las referencias (New film). El proceso se divide en cinco fases: estudio de referencias (usando scripts para generar paletas y hojas de contacto), planificación de ritmos (en tabla beats.md), construcción visual con HTML/Canvas (piece.html), síntesis de sonido con score.json y scripts de audio, y renderizado final con control de calidad (qc.py). El skill incluye scripts auxiliares, plantillas y ejemplos completos (como el film de ejemplo en examples/bee-dance). Es ideal para crear explicativos, historias animadas, gráficos en movimiento o loops, evitando el fotorrealismo y enfocándose en estilos vectoriales, de líneas, texturas y collage.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/JAYANTCH1797/animate-skill/tree/HEAD

Preguntar en tu IA favorita

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

Documentación

¿Qué hace animate?

Convierte referencias y una idea general en un MP4 donde cada fotograma está dibujado por código y el sonido está sintetizado. El usuario aporta el gusto; tú haces la dirección. Un brief aproximado es suficiente, así que toma las decisiones creativas por ti mismo y pregunta solo sobre lo que cambiaría toda la pieza.

Todo vive dentro de animations/<slug>/:

refs/  study/  style.md  beats.md  piece.html  score.json  out/<slug>.mp4

Agrega scripts auxiliares o notas allí según sea necesario. examples/bee-dance/ en la carpeta de este skill es un film completo y funcionante.

En los comandos siguientes, $SKILL significa la carpeta de este skill. Ejecútalos desde el proyecto del usuario con $SKILL/.venv/bin/python si existe, de lo contrario python3. Si falta un paquete, consulta la configuración en README.md. Necesitan ffmpeg y Chrome.

Elegir el trabajo

El usuario quiereTrabajoCómo
"Animar esta imagen"Mover la obra de arteCortar la imagen en capas y moverlas. Lee references/move-an-image.md. Omite piece.html de las etapas 3-4; el render es un script en Python.
"Pintar esto", "recrear esta escena"RepintarDibuja toda la escena en piece.html, emparejando la referencia de cerca.
Un tema o historia "en este estilo"Nueva películaProceso completo a continuación. Las referencias establecen el aspecto; el tema es nuevo.

Si no indican una duración o formato, usa 15 segundos a 1080x1920 para una película y 5 segundos para una imagen en movimiento.

El código es fuerte en formas, líneas, degradados y texturas: vectorial plano, arte lineal, papel recortado, risografía, acuarela, fondos de anime, láminas botánicas. Es débil en fotorrealismo y en rostros con actuación. Si una referencia es fotorrealista, dilo antes de construir y propón una versión ilustrada de la misma.

Etapa 1: Estudiar cada referencia

El usuario puede darte muchas referencias, así que asigna a cada una un rol en lugar de promediarlas todo en una mezcla.

python3 $SKILL/scripts/study.py animations/<slug>/study <archivos o carpetas...>

Esto te da, por referencia, una hoja de contactos, una paleta y, para videos, los cortes y la curva de ritmo. Si solo una parte de un video importa, agrega su rango en segundos, como en "reel.mp4@0-12", o el material de cabezas parlantes sesgará los resultados. Luego observa las hojas tú mismo, y recorta donde la textura importe. Los números no pueden decirte por qué algo se siente bien.

Escribe style.md:

  • Qué nos da cada referencia, una línea cada una: textura de esta, tipo de aquella, ritmo de otra.
  • Lo que no copiaremos: poses, personajes, logotipos, firmas, composiciones exactas. Toma el estilo, no la obra; la excepción es un trabajo de Repintar o Mover sobre una imagen que el usuario pidió animar.
  • Paleta como valores hex, tipo (assets/fonts/ tiene dos para empezar, o copia cualquier fuente abierta), textura, sensación de movimiento.
  • Un dispositivo que une la pieza: una lente, una onda, una línea que nunca se rompe. Las películas sin uno parecen una presentación de diapositivas.

Agrega una tarjeta corta para cada nueva referencia a animations/library.md, para que sus lecciones sobrevivan a este proyecto. Reutiliza tarjetas cuando el usuario apunte a un estilo que ya haya usado antes, y extiende una solo cuando aprendiste algo nuevo.

Puerta: puedes decir en una oración cómo se ve esta pieza y por qué eso sirve al tema.

Etapa 2: Ritmos

Si hay datos en la pieza, verifícalos primero. Una afirmación incorrecta dibujada hermosamente sigue siendo incorrecta, y los "datos" populares a menudo son imprecisos. Anota cualquier cosa que hayas suavizado para el informe final.

Escribe beats.md como una tabla. Imagen y sonido se planifican juntos porque esa sincronía es lo que hace que se sienta costoso:

TiempoImagenSonido
0-1.5 sUna gota naranja cae y se expandeGoteo, floración húmeda, entra pad
1.5-3 sLínea de título, detalles aparecenPunteo por palabra, pequeños tics

Puerta: algo se mueve en el primer medio segundo; la forma es gancho, construcción, un respiro, recompensa; ningún tramo de más de 2 segundos sin una nueva idea visual; el final se sostiene unos 1.5 segundos para que pueda ser leído. Deja que la imagen lleve las ideas nuevas en lugar de las palabras: cada pie de foto necesita aproximadamente 1.5 segundos en pantalla, así que recorta los pies de foto antes de acortarlos. Mantén el texto fuera del 12% superior y 18% inferior de un marco vertical.

Etapa 3: Construir la imagen

Copia assets/piece-template.html a piece.html y dibuja en él. El contrato es window.PIECE más window.renderFrame(t).

renderFrame(t) debe depender solo de t, y puede ser asíncrono. Las imágenes fijas saltan directamente a cualquier tiempo, así que cualquier cosa recordada entre fotogramas, o cualquier Math.random() sin semilla, las rompe. Pinta capas estáticas costosas una vez dentro de window.ready, a partir de un generador con semilla, luego compón por fotograma.

Para mostrar otra película dentro de una pieza, extrae sus fotogramas a clips/ como JPEG numerados, carga el que necesites con un Image dentro de un renderFrame asíncrono, y dibújalo en el lienzo.

Lee references/styles.md antes de dibujar; tiene recetas funcionales (nubes cel, follaje, figuras caminando, agua, acuarela, papel) y los archivos fuente para copiar. La profundidad proviene de capas que se mueven a diferentes velocidades, la vida proviene de pequeños movimientos secundarios: balanceo, deriva, brillo, parpadeo.

Revisa las imágenes fijas temprano y a menudo, mucho antes de un render completo:

python3 $SKILL/scripts/render.py animations/<slug>/piece.html --stills 0.5 3 7 12

Míralas a tamaño completo, compáralas lado a lado con las referencias, y corrige lo que esté mal. Espera varias rondas. La primera imagen fija suele ser un borrador, y este bucle es de donde viene la calidad.

python3 $SKILL/scripts/compare.py animations/<slug>/out/compare.jpg <imágenes fijas e imágenes de referencia...>

Puerta: una imagen fija del medio parece hecha con los mismos materiales que las referencias: mismo papel, pintura, línea y color. El tema puede ser nuevo. Las versiones de clip-art de la referencia no pasan.

Etapa 4: Sonido

Escribe score.json con los mismos tiempos que beats.md. Consulta el encabezado de scripts/synth.py para los sonidos disponibles: punteos, campanas, pads, goteos, tics, crescendos, soplidos, impactos, patadas y bases de ruido.

python3 $SKILL/scripts/synth.py animations/<slug>/score.json animations/<slug>/out/score.wav

Mantente en una tonalidad. Haz que los golpes caigan en eventos de imagen, no en una cuadrícula. Deja un silencio real antes de la recompensa, porque el contraste es lo que la hace funcionar. Genera largas series de notas con unas pocas líneas de Python en lugar de escribirlas una por una.

No puedes oírlo, así que lee el informe de nivel que imprime synth.py: busca caídas que no planificaste, y que el sonido característico esté enterrado bajo el resto.

Si la pieza tiene narración

La narración va antes que la imagen, porque los tiempos de las palabras marcan cada ritmo. Grábala con la herramienta de voz que tenga el usuario, transcríbela con marcas de tiempo de palabras (faster-whisper funciona), luego construye los ritmos y pies de foto a partir de esos tiempos. Whisper puede empezar una palabra temprano en el silencio anterior, así que revisa la forma de onda antes de cortar una pausa.

Mezcla la voz sobre la partitura, luego renderiza con el resultado como --audio. La partitura baja bajo la voz, así que la música sube en las pausas:

python3 $SKILL/scripts/mix.py animations/<slug>/out/voice.wav animations/<slug>/out/score.wav animations/<slug>/out/mix.wav

Etapa 5: Renderizar, revisar, corregir

python3 $SKILL/scripts/render.py animations/<slug>/piece.html --audio animations/<slug>/out/score.wav
python3 $SKILL/scripts/qc.py animations/<slug>/out/<slug>.mp4

render.py escribe out/<slug>.mp4, masterizado a -14 LUFS. Muestra el progreso, y toma aproximadamente 1-2 minutos para 15 segundos de una pieza típica; ejecútalo en segundo plano si la pieza es pesada. Después de un cambio solo de sonido, agrega --remux para intercambiar el audio en segundos sin redibujar.

qc.py señala tramos muertos, fallos de un fotograma y volumen, y escribe una hoja de contactos. No puede juzgar si el movimiento se ve bien, así que lee también la hoja, luego recorre los momentos arriesgados fotograma a fotograma en recortes ampliados: transiciones, texto que entra y sale, donde las capas se superponen, y un ciclo completo de cualquier movimiento repetido. Corrige y vuelve a renderizar hasta que esté limpio.

Entregar

Informa en el lenguaje llano del usuario: qué hiciste, cómo se usó cada referencia, qué revisaste y qué no pudiste revisar. No puedes oír la partitura ni verla a velocidad, así que dilo. Agrega:

  • Un dato a tener en cuenta, si suavizaste una afirmación.
  • Ajustes fáciles: 3 o 4 cambios específicos que podrían pedir a continuación.
  • Si una referencia pertenece a otra persona y necesita consideración antes de uso comercial.

Skills relacionados