Instalación del plugin: Antes de ejecutar comandos de configuración o actualización, siga las reglas de ejecución del plugin cuando este skill esté dentro de un plugin de HyperFrames. Las instalaciones independientes conservan las instrucciones de actualización a continuación.
Primero, mantenga este skill actualizado — confirme con el usuario antes de ejecutar:
npx hyperframes skills update motion-graphics. Es una operación rápida y sin cambios cuando todo está actualizado; de lo contrario, actualiza este skill y los skills del dominio central de los que depende antes de que usted confíe en ellos.
fuente figma: Si el logotipo/activo/animación a construir proviene de una URL de figma.com, ejecute
/figmaprimero — exportación de activos, tokens de marca y traducción Motion→GSAP si el gráfico es una importación de Figma Motion — luego construya a partir de su salida. No maneje Figma directamente con herramientas MCP sin procesar: eso omite la sanitización de SVG, la procedencia de.media/manifest.jsonly la vinculaciónvar()de los tokens de marca, por lo que un cambio posterior de marca no se puede propagar sin una reimportación completa.
motion-graphics — punto de entrada
La puerta principal es
/hyperframes. Este skill crea un gráfico en movimiento corto, con diseño, sin narración (el movimiento es el mensaje; ~menos de 10s, sin voz en off). Cualquier cosa más larga, narrada o de varias escenas — o cualquier incertidumbre → lea/hyperframesprimero: la capa de intención es dueña de cada decisión de ruta.
Este flujo de trabajo es autónomo por diseño — como máximo una pregunta aclaratoria (agents/director.md), luego construye hasta la verificación sin revisión intermedia. La capa de intención (/hyperframes → references/intent-interview.md) enruta aquí directamente sin preguntas sobre la forma de ejecución; un guion gráfico y una sesión complementaria aportan poco a una pieza tan corta. El renderizado sigue estando controlado por el usuario: después de que las comprobaciones y las capturas de prueba pasen, haga la pregunta canónica "¿vista previa o renderizar?" de ../hyperframes/references/brief-contract.md. Cuando exista un BRIEF.md, léalo antes de la pregunta del director.
Un gráfico en movimiento corto con diseño. Primero los activos: decida la estrategia de activos y obtenga material real antes de diseñar la toma, luego diseñe la toma en torno a lo que tiene, luego componga reutilizando las capacidades del catálogo. Todos los artefactos van a PROJECT_DIR = videos/<project-name>/ (creado en el Paso 0); todas las rutas a continuación son relativas a él.
| Fase | Ejecución | Artefacto principal | Flujo detallado |
|---|---|---|---|
| init | Bash | hyperframes.json | Paso 0 |
| plan | subagente — ¿decidir búsqueda? + clasificar + estrategia de activos | shot-plan.json (borrador: categoría, consultas asset_needs, brief) | agents/director.md (Parte 1) |
| fuente ◇ | Bash — resolución de medios (omitir si asset_needs está vacío) | assets/ + assets/index.md | phases/source/guide.md |
| diseño | subagente — diseño de toma en torno a los activos resueltos | shot-plan.json (final: bloque(s) + diseño + movimiento + posiciones) | agents/director.md (Parte 2) |
| build | subagente — composición con reutilización primero | compositions/index.html | agents/builder.md |
| verificar | Bash — lint, check, capturas de prueba; reparar en caso de error | snapshots/contact-sheet.jpg | Paso 5 |
| aprobar | Preguntar vista previa o renderizar; esperar la respuesta | aprobación explícita del renderizado | Paso 6 |
| render | Bash — hyperframes render (MP4, o --format webm/mov para superposición) | renders/video.mp4 o superposición transparente | Paso 6 |
◇ fuente solo se ejecuta cuando la categoría elegida declara activos. Las categorías de solo código/texto (por ejemplo, kinetic-type, la mayoría de charts/stat) tienen asset_needs: [] y pasan directamente del plan al diseño.
Categorías — divididas por la decisión de búsqueda
La primera decisión de plan es: ¿esto necesita una búsqueda? Esa bifurcación divide las categorías en dos grupos; luego se elige la categoría específica — para las basadas en búsqueda, por el tipo de contenido que devuelve la búsqueda. Cada categoría es un categories/<id>/module.md (sus reglas de planificación + construcción); el vocabulario de movimiento compartido vive en references/motion-vocabulary.md (→ reglas/planos de hyperframes-animation + bloques del registro).
Categorías de formulario — sin búsqueda; el usuario proporciona el contenido:
| Categoría | Intención | Se apoya en |
|---|---|---|
kinetic-type | línea/ cita / título impactante, texto con movimiento como prioridad | bloques caption-* + reglas de animación |
stat | número heroico único / contador + anillo | apple-money-count / rules/{counting-dynamic-scale, stat-bars-and-fills} |
charts | gráfico de barras / líneas / circular / carrera / % a partir de datos | bloque data-chart |
logo-reveal | stinger de logotipo / bloque de marca (logotipo del usuario) | logo-outro / rules/svg-path-draw |
lower-thirds | barras de nombre / título, llamadas, superposiciones sociales | caption-* + bloques de superposición del registro |
maps | movimiento geográfico — resaltar regiones, conectar lugares, acercar a una ubicación (capa vectorial o capa de mapa base horneada) | familia us-map / world-map + bake-basemap.mjs |
Categorías basadas en búsqueda — buscar primero, luego animar por tipo de contenido (la ruta RWA):
| Contenido devuelto | Categoría | Animación |
|---|---|---|
| página web / enlace | webpage | Animación de página web / UI (desplazamiento, revelación, cursor, llamadas) |
| artículo de noticias | news | Revelación de titular + tarjeta de fuente + llamadas de datos clave |
| tuit | tweet | Tarjeta de tuit animada |
| imagen / entidad | asset-fusion | La geometría del activo se convierte en el gráfico (fusión diegética RWA) |
Orden de construcción: uno a la vez, priorizando la cobertura (lo aproximado está bien). kinetic-type portado del prototipo; el resto sigue.
Requisitos previos
macOS Apple Silicon o Linux x64. Herramientas del sistema: brew install node ffmpeg. npx hyperframes doctor una vez. Renderizado con GPU en macOS: export PRODUCER_BROWSER_GPU_MODE=hardware.
Claves opcionales (fallos locales si no se configuran) — solo necesarias para categorías que obtienen/generan activos a través de media-use:
| Clave | Usada para | Fallback |
|---|---|---|
GEMINI_API_KEY / GOOGLE_API_KEY | generación de imágenes (resolución media-use) | omitir generar / solo búsqueda |
| (proveedores de búsqueda asset_scout) | búsqueda de activos reales para webpage/news/tweet + asset-fusion | la categoría se degrada a sin activos |
Flujo
Paso 0 — Inicializar
cwd es la raíz del espacio de trabajo del agente; escriba todos los artefactos bajo PROJECT_DIR = videos/<project-name>/. <project-name>: use el directorio que el usuario proporcionó, si no, un nombre corto en kebab-case a partir de la intención (<subject>-motion). No el nombre base del espacio de trabajo ni una marca de tiempo.
Solo cuando $PROJECT_DIR/hyperframes.json está ausente:
PROJECT_DIR="${MOTION_GRAPHICS_DIR:-videos/<project-name>}"
mkdir -p "$(dirname "$PROJECT_DIR")"
npx hyperframes init "$PROJECT_DIR" --non-interactive --example=blank --skill=motion-graphics
init verifica los skills instalados contra los últimos en GitHub y actualiza el conjunto global si alguno está desactualizado.
Restricciones: nunca ejecute hyperframes init en la raíz del espacio de trabajo; nunca anide otro hyperframes/ dentro de PROJECT_DIR; cada comando Bash (maestro + subagentes) es un sub-shell (cd "$PROJECT_DIR" && ...) — nunca cd desnudo.
Paso 1 — Planificar (subagente: Director Parte 1)
Despache un subagente. prompt = agents/director.md completo + ## Contexto de despacho (SKILL_DIR / PROJECT_DIR / la solicitud del usuario / Schema: <SKILL_DIR>/references/shot-plan-ir.md). Debe:
- Decidir: ¿esto necesita una búsqueda? (la primera bifurcación)
- No → elegir una categoría de formulario (kinetic-type / stat / charts / logo-reveal / lower-thirds); el contenido lo proporciona el usuario;
asset_needs: []. - Sí → emitir un plan de búsqueda en
asset_needs[](noticias / web / tuit / imagen; consultas de dos polos). La categoría basada en búsqueda específica (webpage / news / tweet / asset-fusion) se confirma por el tipo de contenido devuelto en el Paso 2 y se finaliza en el Paso 3.
- No → elegir una categoría de formulario (kinetic-type / stat / charts / logo-reveal / lower-thirds); el contenido lo proporciona el usuario;
- Escribir un borrador de
shot-plan.json(envoltorio + categoría de formulario elegida o intención de búsqueda +asset_needs+ un breve resumen de la toma de un párrafo). Esquema:references/shot-plan-ir.md.
Validación: [ -s "$PROJECT_DIR/shot-plan.json" ] && echo ok || echo missing.
Paso 2 — Fuente ◇ (Bash: media-use, condicional)
Si shot-plan.json.asset_needs no está vacío, resolver activos (buscar / generar / obtener → rutas locales congeladas del proyecto + registro). Consulte phases/source/guide.md (envuelve media-use resolve; las categorías basadas en búsqueda usan la búsqueda de noticias/web/tuit/imagen). Si asset_needs está vacío, saltar al Paso 3.
# ilustrativo — consulte phases/source/guide.md
(cd "$PROJECT_DIR" && node <SKILL_DIR>/phases/source/resolve.mjs --plan ./shot-plan.json --out ./assets)
Degradar con elegancia: si un motor de búsqueda/proveedor no está disponible, la categoría retrocede a sin activos (anótelo en context.log).
Paso 3 — Diseñar (subagente: Director Parte 2)
Despache un subagente (prompt = agents/director.md Parte 2 + contexto de despacho que incluya el assets/index.md resuelto si el Paso 2 se ejecutó + catalog-map.md). Diseña la toma en torno a los activos disponibles: elija el/los bloque(s) del catálogo + las reglas/planos de hyperframes-animation, el diseño, el movimiento, los tiempos y (para asset-fusion) las element_positions + la paleta del cuentagotas. Finaliza shot-plan.json (content.block + content.customize + contenido por categoría).
Paso 4 — Construir (subagente: Constructor, reutilizar primero)
Despache un subagente. prompt = agents/builder.md completo + contexto de despacho (shot-plan.json, catalog-map.md, el module.md de la categoría, references/motion-vocabulary.md, references/builder-contract.md). Reutilizar primero: npx hyperframes add <block> + personalizar en el lugar; escribir a mano solo los huecos + la funcionalidad de fusión de activos. Salida compositions/index.html respetando el contrato HF (línea de tiempo de GSAP pausada en window.__timelines, class="clip" + ids estables, tl.seek(0), determinista).
Paso 5 — Verificar (Bash → subagente de reparación en caso de error)
(cd "$PROJECT_DIR" && npx hyperframes lint .)
(cd "$PROJECT_DIR" && npx hyperframes check .)
(cd "$PROJECT_DIR" && npx hyperframes snapshot --at <proof-times>)
Elija tiempos de prueba que muestren el estado inicial, el movimiento característico y la pausa final. Inspeccione la hoja de contactos o capturas generada antes de continuar. En caso de error de lint, check o captura, despache el subagente de reparación (agents/finalize.md) para una pasada de corrección en el lugar, luego vuelva a ejecutar la compuerta fallida. Nunca cambie una duración fija solo para ocultar un defecto.
Paso 6 — Aprobar y renderizar (Bash)
Haga una pregunta: "¿vista previa o renderizar?" Si el usuario elige vista previa, abra Studio y regrese a la misma compuerta de aprobación después de las revisiones:
(cd "$PROJECT_DIR" && npx hyperframes preview --background)
Renderizar solo después de una respuesta explícita de renderizado:
(cd "$PROJECT_DIR" && npx hyperframes render . --skill=motion-graphics -q high -o ./renders/video.mp4)
# variante de superposición transparente: --format webm (o mov)
Verifique que la salida exista, no esté vacía y tenga la duración prevista. La entrega final nombra el artefacto, la duración real, el id de la composición o fotograma, los tiempos de prueba y la hoja de contactos o capturas inspeccionada. Las banderas viven en /hyperframes-cli → references/preview-render.md.
Tabla de reanudación
| Estado | Continuar desde |
|---|---|
no hay shot-plan.json | Paso 1 (planificar) |
shot-plan.json tiene asset_needs, no hay assets/ | Paso 2 (fuente) |
shot-plan.json final, no hay compositions/index.html | Paso 3/4 (diseñar+construir) |
compositions/index.html existe, faltan capturas de prueba | Paso 5 (verificar) |
| comprobaciones y capturas de prueba pasan, sin renderizado aprobado | Paso 6 (aprobación) |
| el renderizado aprobado existe | verificar salida, luego informar |
Notas de diseño (mantenedores — la ejecución no lee esto)
- Razón de ser de "activos primero": la obtención se carga al frente e informa el diseño de la toma (el flujo RWA: analizar → buscar → revisar → c
…
[truncado para traducción]