Communitygithub.com

motion-graphics

Esta habilidad se utiliza cuando el usuario desea crear videos animados a partir de código — gráficos en movimiento, tipografía cinética, videos explicativos o de lanzamiento de productos, títulos animados, tercios inferiores, secuencias de logotipos, gráficos y estadísticas animados, clips para Reels/Shorts/TikTok, o cualquier solicitud de 'haz que esto se mueva'. Ofrece una selección de 16 estilos visuales, construye la película como escenas HTML, la renderiza fotograma a fotograma en MP4/WebM/MOV/GIF (con transparencia si es necesario) y verifica el resultado. También dirige a Remotion, HyperFrames, Manim, Motion Canvas o Lottie cuando una de estas se adapta mejor. Para editar material existente, presentaciones de diapositivas o trabajo simple con ffmpeg, usa la habilidad video-making.

¿Qué es motion-graphics?

Esta habilidad te permite actuar como director, diseñador y editor para crear cortometrajes animados a partir de código, utilizando una única herramienta (`scripts/mg.py`) y un tiempo de ejecución pequeño (`assets/mg.js`). La película se define como una página HTML de escenas, donde cada fotograma se calcula únicamente a partir del tiempo, lo que garantiza renders idénticos en cada ejecución. El flujo de trabajo guía al usuario a través de una conversación para definir el mensaje, el formato, la duración y la marca, seguido de la selección de uno de los 16 estilos visuales. Luego se escribe un storyboard estructurado (JSON), se genera la película, se previsualiza en vivo con un depurador, se ajusta manualmente usando atributos `data-*` y callbacks, y finalmente se renderiza en formatos como MP4, WebM, MOV o GIF, incluyendo opciones con canal alfa para superposiciones transparentes. La habilidad incluye pasos de linting, hoja de contacto (contact sheet) y verificación final para garantizar calidad, y también ofrece una guía para elegir otros motores como Remotion, HyperFrames, Manim, Motion Canvas o Lottie cuando el proyecto lo requiera. Está diseñada para entornos de desarrollo con Python 3.8+, Playwright, Pillow y ffmpeg.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SahilRakhaiya05/Father-Using-This-Skills/tree/HEAD/private/motion-graphics

Preguntar en tu IA favorita

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

Documentación

Gráficos en Movimiento

Eres el director, el diseñador y el editor. El trabajo es un cortometraje que se ve intencional: un estilo, una historia clara, movimiento que significa algo y un archivo que se reproduce en todas partes.

Todo se maneja con una herramienta, scripts/mg.py, y un pequeño tiempo de ejecución, assets/mg.js. Una película es una página HTML de escenas; cada fotograma se calcula únicamente a partir del tiempo, por lo que un render es idéntico en cada ejecución.

Requiere Python 3.8+, pip install playwright pillow, python -m playwright install chromium y ffmpeg. Verifica esto primero; pregunta antes de instalar cualquier cosa.

El flujo de trabajo

Sigue los pasos en orden. Los pasos 1 y 2 son una conversación; no renderices antes de que el estilo y el storyboard estén acordados, a menos que el usuario diga «solo hazlo».

1. Briefing: pregunta solo lo que falte

DecisiónValor predeterminado si no se indica
Mensaje: lo único que el espectador debe recordarpreguntar; nunca adivinar esto
Dónde se reproduce → formato16:9 para YouTube/web/diapositivas · 9:16 para Reels/Shorts/TikTok · 1:1 o 4:5 para feeds
Duración15–30 s redes sociales · 30–60 s lanzamiento · 60–90 s explicativo
Marca: colores, fuentes, logotipoelegir un estilo, luego modificar su acento
Sonido: música, locución, silencioborrador en silencio primero; debe funcionar sin sonido de todas formas

2. Estilo: deja que el usuario elija

python scripts/mg.py styles                          # los 16 estilos, con su personalidad de movimiento
python scripts/mg.py pick styles.png --format 9:16 --title "Su titular"

pick renderiza el propio titular del usuario en todos los estilos en una sola hoja. Muéstrala y pregunta cuál quiere. Si no tiene opinión, recomienda uno de esta tabla y di por qué en una frase.

La película es…Comienza con
Lanzamiento de producto o función, interfazsaas-glass, clean-minimal, sunset-gradient
Clip social basado en gancho, hype, palabras grandesbold-kinetic, neo-brutal, sunset-gradient
Números, informe, resumen del añodata-story, corporate
Historia, ensayo, cita, documentaleditorial, cinematic-dark, paper-craft
Herramienta para desarrolladores, CLI, arquitecturamono-terminal, blueprint, neon-cyber
Marca premium, invitación, propiedadluxury, cinematic-dark
Infantil, educativo, celebraciónplayful, paper-craft
Retro, videojuegos, músicaretro-vhs, neon-cyber

Un estilo es color + tipografía + cómo se mueven las cosas (entrada, easing, velocidad, transición). Mezclar dos estilos en una misma película parece un error. Para una apariencia de marca, escribe un pequeño JSON que extienda un estilo; consulta references/styles.md.

3. Storyboard: escríbelo antes de cualquier HTML

Escribe storyboard.json: una lista ordenada de escenas. Una idea por escena, 12 palabras o menos en pantalla, la primera escena es el gancho.

{"scenes": [
  {"type": "title",   "kicker": "Semana de lanzamiento", "title": "Despliega más rápido con *Orbit*", "subtitle": "Despliegues que a tu equipo le gustarán"},
  {"type": "bullets", "title": "Tres cosas cambian", "items": ["Un comando", "Rollbacks de 4 segundos", "Previsualizaciones por rama"]},
  {"type": "stat",    "kicker": "Despliegue mediano", "value": 4.2, "suffix": " s", "label": "bajó de 3 minutos"},
  {"type": "bars",    "title": "Despliegues por semana", "items": [{"label": "Antes", "value": 12}, {"label": "Después", "value": 58}]},
  {"type": "cards",   "title": "Construido para equipos", "items": [{"title": "Seguro", "text": "SSO y registro de auditoría"}]},
  {"type": "quote",   "text": "Dejamos de temer los *viernes*. ", "by": "Jefe de Plataforma"},
  {"type": "end",     "title": "Prueba *Orbit* hoy", "cta": "orbit.example"}
]}

*palabra* marca la palabra acentuada. La duración de la escena se calcula a partir de las palabras a menos que indiques "dur". Cualquier escena puede ser {"type": "html", "html": "…", "dur": 4} para marcado personalizado. Muestra el storyboard al usuario como una tabla breve (escena · en pantalla · segundos) y obtén una confirmación.

4. Construir

python scripts/mg.py new film --style saas-glass --format 16:9 --storyboard storyboard.json --accent "#ff5a1f"

Esto escribe film/index.html, film/theme.css y film/mg.js. Abre index.html en un navegador para una vista previa en vivo con un secuenciador. Luego edita el HTML manualmente para dirigirlo: reordena beats, cambia una entrada, agrega un gráfico o SVG. La referencia de atributos — animaciones, easings, transiciones, movimientos de cámara, bucles, código de canvas personalizado — está en references/authoring.md. Léeala antes de editar a mano.

Reglas que mantienen un render exacto (el linter las aplica):

  • El movimiento proviene solo de atributos data-* o callbacks MG.frame(t) / MG.scene(). Sin transition/animation CSS, sin temporizadores, sin Date.now(), sin Math.random() — usa MG.rand(seed).
  • Las fuentes, imágenes y scripts residen en la carpeta del proyecto. Un render que necesita la red no es repetible.
  • El metraje no se renderiza aquí. Renderiza gráficos con --alpha y superponlos sobre el clip (paso 6).

5. Mira antes de renderizar

python scripts/mg.py lint film                 # determinismo, nombres desconocidos, tiempo de lectura, pausas largas
python scripts/mg.py sheet film sheet.png      # hoja de contacto + informe de texto fuera de cuadro / recortado / superpuesto

Abre la hoja y mírala. Compárala con references/motion-craft.md (jerarquía, áreas seguras, un foco por fotograma). Corrige, vuelve a ejecutar, repite. Renderizar es el paso lento; la hoja toma segundos.

6. Renderizar

python scripts/mg.py render film draft.mp4 --scale 0.5            # borrador rápido para juzgar el ritmo
python scripts/mg.py render film draft.mp4 --scale 0.5 --range 4-9  # solo la parte que cambiaste
python scripts/mg.py render film final.mp4 --audio music.mp3      # calidad completa, música con fade out al final
python scripts/mg.py render film lower-third.mov --alpha          # ProRes 4444 transparente (o .webm)
python scripts/mg.py render film loop.gif --scale 0.4             # GIF para chat y documentación

Muestra el borrador, toma notas, cambia, vuelve a renderizar el rango modificado. Un solo render de calidad completa al final. Para poner gráficos transparentes sobre metraje:

ffmpeg -i clip.mp4 -i lower-third.mov -filter_complex "[0][1]overlay=0:0:enable='between(t,2,7)'" -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a copy out.mp4

Sonido, sincronización de locución y subtítulos: python scripts/mg.py cues film cues.json lista cada escena y tiempo de inicio de animación; úsalo para colocar efectos de sonido y subtítulos con precisión. Consulta references/sound-and-captions.md.

7. Verificar, luego entregar

python scripts/mg.py check final.mp4 --project film

Confirma el tamaño, la velocidad de fotogramas, la duración, el códec y el formato de píxeles según el proyecto, y advierte sobre pausas muertas (sin movimiento), fotogramas negros, recortes o audio casi silencioso. Entrega solo después de que aparezca OK. Dale al usuario el archivo, una línea de datos (duración, tamaño, estilo) y qué puede pedir cambiar.

Nivel de calidad: verifica cada película con esto

  1. Gancho en los primeros 2 segundos. Algo legible y en movimiento antes del fotograma 15.
  2. Un foco por fotograma. Si dos cosas entran juntas, son un solo grupo.
  3. Legible sin sonido, en un teléfono. El texto del cuerpo ≥ 4% del lado corto; mantenerse ≈ 0.4 s + 0.16 s por palabra después de la última entrada.
  4. Nada permanece completamente inmóvil durante más de ~2.5 s — las escenas llevan un movimiento de cámara lento por defecto; consérvalo.
  5. Las entradas son rápidas, las salidas más rápidas, las pausas honestas. Entrar 0.3–0.8 s, salir aproximadamente el 70% de eso.
  6. Escalonar, no estampida. 0.04–0.1 s entre elementos hermanos; escalonamiento total por debajo de ~0.8 s.
  7. Un lenguaje de transición por película; un segundo solo para el gran momento.
  8. Áreas seguras. 5% desde cada borde; en 9:16 mantener el 20% inferior y el 12% superior libres de texto.
  9. Termina en la acción — el fotograma final nombra qué hacer a continuación y se mantiene ≥ 1.5 s.

Cuando otro motor se adapta mejor

mg.py cubre tipografía, diseño, gráficos, estilo de interfaz y superposiciones transparentes sin paso de compilación. Cambia cuando el trabajo sea otra cosa: references/engines.md tiene los comandos, licencias y compensaciones:

NecesidadUsa
Componentes React, lotes basados en datos, un proyecto Remotion existenteRemotion (ten en cuenta su licencia de empresa)
Líneas de tiempo GSAP, clips de video/audio dentro de la composición, HTML orientado a agentesHyperFrames (Apache-2.0)
Matemáticas, ecuaciones, geometría, visualizaciones algorítmicasManim Community
Animación TypeScript creada a mano con un editorMotion Canvas
Animación que se integra dentro de una app o sitioLottie / CSS / GSAP — no un video
Escenas 3D, shadersThree.js controlado desde MG.frame(t), o Blender
Cortar metraje, presentaciones, subtítulos en un clipla habilidad video-making

Nunca migres un proyecto funcional a otro motor sin que te lo pidan.

Archivos de referencia: carga solo lo que la tarea necesite

ArchivoLéelo cuando
references/authoring.mdeditar escenas a mano; cualquier atributo, easing o nombre de transición; código de canvas/SVG personalizado
references/styles.mdelegir, mezclar o crear un estilo; colores y fuentes de marca
references/motion-craft.mdjuzgar una hoja de contacto o borrador; ritmo, jerarquía, tipografía, errores comunes
references/sound-and-captions.mdmúsica, efectos de sonido, sincronización de locución, subtítulos, volumen
references/engines.mdRemotion, HyperFrames, Manim, Motion Canvas, Lottie, 3D
references/recipes.mdpatrones listos: tercio inferior, secuencia de logotipo, línea de letras cinética, carrera de gráficos, maqueta de interfaz, cuenta atrás, tarjeta final

Límites honestos

  • Las fuentes recurren a lo que tenga la máquina. Para una coincidencia exacta, coloca los archivos de la fuente en el proyecto y declara @font-face (verifica primero la licencia de la fuente).
  • Un borrador a --scale 0.5 juzga el ritmo, no la nitidez.
  • Las comprobaciones detectan fallos mecánicos; el gusto aún necesita ojos. Mira siempre la hoja y el borrador tú mismo y di lo que viste, no lo que supones.
  • Usa solo recursos que el usuario posea o que estén licenciados para su uso; anota la fuente y la licencia de todo lo que incorpores.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados