¿Qué hace motion-graphics — entrada de despacho?
Confirma la ruta antes del Paso 0. Esta skill crea un motion graphic corto, de diseño y sin narración (el movimiento es el mensaje; ~menos de 10s, sin voz en off). Un tratamiento más largo, de varias escenas o narrado →
/general-video; un video narrado de un sitio web →/website-to-video; un explicador de temas →/faceless-explainer; una promoción de producto →/product-launch-video; subtítulos en material existente →/embedded-captions. Fuera de alcance: datos en vivo o renderizados en el momento, o material que no pueda capturar. ¿No estás seguro si es un motion-first o narrado? Lee primero/hyperframes.
Un motion graphic corto y de diseño. Primero los activos: define la estrategia de activos y obtén material real antes de diseñar el plano, luego diseña el plano en torno a lo que tienes y finalmente compón reutilizando capacidades del catálogo. Todos los artefactos van a PROJECT_DIR = videos/<nombre-del-proyecto>/ (creado en el Paso 0); todas las rutas siguientes 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, asset_needs consultas, brief) | agents/director.md (Parte 1) |
| source ◇ | Bash — resolver media-use (omitir si asset_needs está vacío) | assets/ + assets/index.md | phases/source/guide.md |
| design | subagente — diseño del plano alrededor de 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 |
| render | Bash — hyperframes render (MP4, o --format webm/mov para superposición) | renders/video.mp4 | Paso 5 |
| verify | Bash — lint / inspect -> subagente de reparación en fallo | (correcciones in situ) | agents/finalize.md |
◇ source se ejecuta solo cuando la categoría seleccionada declara activos. Las categorías puramente de código/texto (p. ej., kinetic-type, la mayoría de charts/stat) tienen asset_needs: [] y pasan directamente de plan a 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 impulsadas por búsqueda, según el tipo de contenido que devuelva la búsqueda. Cada categoría es un categories/<id>/module.md (sus reglas de planificación y construcción); el vocabulario de movimiento compartido reside en references/motion-vocabulary.md (→ reglas/blueprints de hyperframes-animation + bloques de registro).
Categorías de formulario — sin búsqueda; el usuario proporciona el contenido:
| Categoría | Intención | Se apoya en |
|---|---|---|
kinetic-type | línea contundente / cita / título, texto con movimiento | bloques caption-* + reglas de animación |
stat | número heroico único / conteo + anillo | apple-money-count / rules/{counting-dynamic-scale, stat-bars-and-fills} |
charts | barras / líneas / circulares / carrera / % a partir de datos | bloque data-chart |
logo-reveal | animación 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 |
Categorías impulsadas por búsqueda — buscar primero, luego animar según el tipo de contenido (la ruta RWA):
| Contenido devuelto | Categoría | Animación |
|---|---|---|
| página web / enlace | webpage | animación de página web / interfaz (desplazamiento, revelado, cursor, llamadas) |
| artículo de noticias | news | revelado de titular + tarjeta de fuente + llamadas de datos clave |
| tweet | tweet | tarjeta de tweet 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, primero la cobertura (lo aproximado está bien). kinetic-type portado del prototipo; el resto sigue.
Prerrequisitos
macOS Apple Silicon o Linux x64. Herramientas del sistema: brew install node ffmpeg. npx hyperframes doctor una vez. Renderizado GPU en macOS: export PRODUCER_BROWSER_GPU_MODE=hardware.
Claves opcionales (fallbacks locales si no se establecen) — solo las necesitan categorías que obtienen/generan activos a través de media-use:
| Clave | Usado para | Fallback |
|---|---|---|
GEMINI_API_KEY / GOOGLE_API_KEY | generación de imágenes (resolución media-use) | omitir generar / solo búsqueda |
| (asset_scout / proveedores de búsqueda) | búsqueda de activos reales en webpage/news/tweet + asset-fusion | la categoría se degrada a sin activos |
Flujo
Paso 0 — Inicializar
El cwd es la raíz del espacio de trabajo del agente; escribe todos los artefactos en PROJECT_DIR = videos/<nombre-del-proyecto>/. <nombre-del-proyecto>: usa el directorio que dio el usuario, si no, un nombre corto en kebab-case a partir de la intención (<asunto>-motion). No es 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/<nombre-del-proyecto>}"
mkdir -p "$(dirname "$PROJECT_DIR")"
npx hyperframes init "$PROJECT_DIR" --non-interactive --example=blank
init verifica las skills instaladas contra las más recientes en GitHub y actualiza el conjunto global si alguna está desactualizada.
Restricciones: nunca ejecutes hyperframes init en la raíz del espacio de trabajo; nunca anides otro hyperframes/ dentro de PROJECT_DIR; cada comando Bash (maestro + subagentes) es una subshell (cd "$PROJECT_DIR" && ...) — nunca cd directo.
Paso 1 — Planificar (subagente: Director Parte 1)
Despacha un subagente. prompt = contenido completo de agents/director.md + ## 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 / tweet / imagen; consultas de dos polos). La categoría impulsada por 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(sobre + categoría de formulario elegida o intención de búsqueda +asset_needs+ un breve de plano de un párrafo). Esquema:references/shot-plan-ir.md.
Validación: [ -s "$PROJECT_DIR/shot-plan.json" ] && echo ok || echo missing.
Paso 2 — Obtener ◇ (Bash: media-use, condicional)
Si shot-plan.json.asset_needs no está vacío, resuelve activos (buscar / generar / obtener → rutas locales congeladas del proyecto + registro). Ver phases/source/guide.md (envuelve media-use resolve; las categorías impulsadas por búsqueda usan la búsqueda de noticias/web/tweet/imagen). Si asset_needs está vacío, salta al Paso 3.
# ilustrativo — ver phases/source/guide.md
(cd "$PROJECT_DIR" && node <SKILL_DIR>/phases/source/resolve.mjs --plan ./shot-plan.json --out ./assets)
Degrada con elegancia: si una búsqueda/proveedor no está disponible, la categoría vuelve a un estado sin activos (anótalo en context.log).
Paso 3 — Diseñar (subagente: Director Parte 2)
Despacha un subagente (prompt = agents/director.md Parte 2 + contexto de despacho incluyendo el assets/index.md resuelto si se ejecutó el Paso 2 + catalog-map.md). Diseña el plano en torno a los activos disponibles: elige el/los bloque(s) del catálogo + las reglas/blueprints de hyperframes-animation, el diseño, el movimiento, los tiempos y (para asset-fusion) las element_positions + la paleta de cuentagotas. Finaliza shot-plan.json (content.block + content.customize + contenido por categoría).
Paso 4 — Construir (subagente: Builder, reutilización primero)
Despacha un subagente. prompt = contenido completo de agents/builder.md + contexto de despacho (shot-plan.json, catalog-map.md, el module.md de la categoría, references/motion-vocabulary.md, references/builder-contract.md). Reutilización primero: npx hyperframes add <block> + personalizar in situ; escribe a mano solo los huecos + la funcionalidad de fusión de activos. Salida compositions/index.html respetando el contrato HF (línea de tiempo GSAP pausada en window.__timelines, class="clip" + ids estables, tl.seek(0), determinista).
Paso 5 — Renderizar (Bash)
(cd "$PROJECT_DIR" && npx hyperframes render . --skill=motion-graphics -q draft -o ./renders/video.mp4)
# variante de superposición transparente: --format webm (o mov)
Paso 6 — Verificar (Bash → subagente de reparación en fallo)
(cd "$PROJECT_DIR" && npx hyperframes lint . && npx hyperframes inspect .)
salida 0 → listo. Si hay errores de lint/inspect, despacha el subagente de reparación (agents/finalize.md: instantánea de QA + una pasada de corrección in situ + re-renderizado). Nunca cambies una duración fija en la reparación.
Informe + vista previa opcional
Informa la salida final (renders/video.mp4, o la variante .webm / .mov de superposición) + duración. No abras una vista previa durante la ejecución. Ofrece una solo a petición, iniciada después del renderizado para que sirva el archivo final:
(cd "$PROJECT_DIR" && npx hyperframes preview) # Studio UI; o `npx hyperframes play` para un enlace compartible
Las banderas viven en la skill 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 (obtener) |
shot-plan.json final, no hay compositions/index.html | Paso 3/4 (diseñar+construir) |
compositions/index.html existe, no hay renders/video.mp4 | Paso 5 (renderizar) + Paso 6 |
renders/video.mp4 existe | Informar + detener |
Notas de diseño (mantenedores — la ejecución no lee esto)
- Justificación de primero los activos: la obtención se carga al frente e informa el diseño del plano (el flujo RWA: analizar → buscar → revisar → componer). Las categorías impulsadas por búsqueda (
webpage/news/tweet) yasset-fusionse apoyan en la búsqueda de media-use (noticias/web/tweet/imagen), que es el linaje RWA documentado de media-use. - Reutilización primero: el análogo dentro del ecosistema de las plantillas generadas por LLM es "componer bloques del catálogo + reglas de
hyperframes-animation". La línea de tiempo GSAP pausada de HF equivale auseCurrentFramede Remotion. - Contrato del módulo de categoría: un
categories/<id>/module.md(planificación + construcción), que compartereferences/motion-vocabulary.md(+ evaluación opcional). Agregar una categoría = soltar la carpeta + registrar su línea clasificadora enagents/director.md+ su fila encatalog-map.md; la canalización de fases no se toca. - Estructura de directorio:
videos/<nombre-del-proyecto>/ hyperframes.json context.log shot-plan.json # el IR (salida del Director) assets/ assets/index.md # salida de media-use (si se obtuvo) compositions/index.html # salida del Builder renders/video.mp4 - Registro: en el enrutador de
hyperframes— agregar la intención "motion graphic corto de diseño" + descripción del Workflow; tallar los disparadores de motion-graphics fuera de/general-video; agregar bordes inversos de NO-UTILIZAR. Vermotion-graphics-genre.md§5-7.