motion-graphics — entrée de répartition
Confirmez la route avant l'étape 0. Cette compétence crée une animation graphique courte, centrée sur le design, sans narration (le mouvement est le message ; ~moins de 10s, pas de voix-off). Un traitement plus long, multi-scène ou narré →
/general-video; une vidéo narrée d'un site web →/website-to-video; un sujet explicatif →/faceless-explainer; une promotion de produit →/product-launch-video; sous-titres sur des séquences existantes →/embedded-captions. Hors périmètre : données en direct / au moment du rendu, ou séquences qu'elle ne peut pas capturer. Vous hésitez entre une pièce courte centrée sur le mouvement ou une pièce narrée ? Lisez/hyperframesd'abord.
Une animation graphique courte centrée sur le design. Priorité aux ressources : décidez de la stratégie de ressources et procurez-vous du matériel réel avant de concevoir le plan, puis concevez le plan autour de ce que vous avez, et enfin composez en réutilisant les capacités du catalogue. Tous les artefacts vont dans PROJECT_DIR = videos/<project-name>/ (créé à l'étape 0) ; tous les chemins ci-dessous sont relatifs à ce répertoire.
| Phase | Exécution | Artefact principal | Déroulement détaillé |
|---|---|---|---|
| init | Bash | hyperframes.json | Étape 0 |
| plan | sous-agent — décider de la recherche ? + classifier + stratégie de ressources | shot-plan.json (brouillon : catégorie, requêtes asset_needs, brief) | agents/director.md (Partie 1) |
| source ◇ | Bash — résolution média (Ignorer si asset_needs est vide) | assets/ + assets/index.md | phases/source/guide.md |
| design | sous-agent — conception du plan autour des ressources résolues | shot-plan.json (final : bloc(s) + layout + mouvement + positions) | agents/director.md (Partie 2) |
| build | sous-agent — composition priorisant la réutilisation | compositions/index.html | agents/builder.md |
| render | Bash — hyperframes render (MP4, ou --format webm/mov pour superposition) | renders/video.mp4 | Étape 5 |
| verify | Bash — lint / inspect -> sous-agent de réparation en cas d'échec | (corrections sur place) | agents/finalize.md |
◇ source s'exécute uniquement lorsque la catégorie choisie déclare des ressources. Les catégories de code/texte pur (par exemple kinetic-type, la plupart des charts/stat) ont asset_needs: [] et passent directement de la planification à la conception.
Catégories — divisées par la décision de recherche
La première décision du plan est : cela nécessite-t-il une recherche ? Cette bifurcation divise les catégories en deux groupes ; ensuite, la catégorie spécifique est choisie — pour celles pilotées par la recherche, selon le type de contenu renvoyé par la recherche. Chaque catégorie est un categories/<id>/module.md (ses règles de planification + construction) ; le vocabulaire de mouvement partagé se trouve dans references/motion-vocabulary.md (→ règles/plans hyperframes-animation + blocs de registre).
Catégories de formulaire — pas de recherche ; l'utilisateur fournit le contenu :
| Catégorie | Intention | S'appuie sur |
|---|---|---|
kinetic-type | ligne / citation / titre percutant, texte animé | blocs caption-* + règles d'animation |
stat | nombre héroïque unique / compteur + anneau | apple-money-count / rules/{counting-dynamic-scale, stat-bars-and-fills} |
charts | barres / courbes / camembert / course / % à partir de données | bloc data-chart |
logo-reveal | logo sting / bloc de marque (logo utilisateur) | logo-outro / rules/svg-path-draw |
lower-thirds | barres de nom / titre, appels, superpositions sociales | caption-* + blocs de superposition du registre |
Catégories pilotées par la recherche — recherchez d'abord, puis animez par type de contenu (le chemin RWA) :
| Contenu renvoyé | Catégorie | Animation |
|---|---|---|
| page web / lien | webpage | animation de page web / UI (défilement, révélation, curseur, appels) |
| article de presse | news | révélation de titre + carte source + appels aux faits clés |
| tweet | tweet | carte tweet animée |
| image / entité | asset-fusion | la géométrie de la ressource devient le graphique (fusion diégétique RWA) |
Ordre de construction : un par un, priorité à la couverture (l'esquisse est acceptable). kinetic-type porté depuis le prototype ; les autres suivent.
Prérequis
macOS Apple Silicon ou Linux x64. Outils système : brew install node ffmpeg. npx hyperframes doctor une fois. Rendu GPU macOS : export PRODUCER_BROWSER_GPU_MODE=hardware.
Clés optionnelles (valeurs de repli locales si non définies) — nécessaires uniquement pour les catégories qui recherchent/génèrent des ressources via la résolution média :
| Clé | Utilisée pour | Valeur de repli |
|---|---|---|
GEMINI_API_KEY / GOOGLE_API_KEY | génération d'images (résolution média) | ignorer génération / recherche uniquement |
| (fournisseurs de recherche asset_scout) | recherche de ressources réelles webpage/news/tweet + asset-fusion | la catégorie se dégrade en version sans ressource |
Déroulement
Étape 0 — Initialisation
Le répertoire de travail courant est la racine de l'espace de travail de l'agent ; écrivez tous les artefacts sous PROJECT_DIR = videos/<project-name>/. <project-name> : utilisez le répertoire donné par l'utilisateur, sinon un nom court en kebab-case dérivé de l'intention (<sujet>-motion). Pas le nom de base de l'espace de travail ou un horodatage.
Uniquement lorsque $PROJECT_DIR/hyperframes.json est absent :
PROJECT_DIR="${MOTION_GRAPHICS_DIR:-videos/<project-name>}"
mkdir -p "$(dirname "$PROJECT_DIR")"
npx hyperframes init "$PROJECT_DIR" --non-interactive --skip-skills --example=blank
Contraintes : ne jamais hyperframes init dans la racine de l'espace de travail ; ne jamais imbriquer un autre hyperframes/ à l'intérieur de PROJECT_DIR ; chaque commande Bash (maître + sous-agents) est un sous-shell (cd "$PROJECT_DIR" && ...) — jamais de cd nu.
Étape 1 — Planification (sous-agent : Directeur Partie 1)
Lancez un sous-agent. invite = agents/director.md complet + ## Contexte de répartition (SKILL_DIR / PROJECT_DIR / la demande de l'utilisateur / Schéma : <SKILL_DIR>/references/shot-plan-ir.md). Il doit :
- Décider : cela nécessite-t-il une recherche ? (la première bifurcation)
- Non → choisir une catégorie de formulaire (kinetic-type / stat / charts / logo-reveal / lower-thirds) ; le contenu est fourni par l'utilisateur ;
asset_needs: []. - Oui → émettre un plan de recherche dans
asset_needs[](news / web / tweet / image ; requêtes bipolaires). La catégorie pilotée par la recherche spécifique (webpage / news / tweet / asset-fusion) est confirmée par le type de contenu renvoyé à l'étape 2, et finalisée à l'étape 3.
- Non → choisir une catégorie de formulaire (kinetic-type / stat / charts / logo-reveal / lower-thirds) ; le contenu est fourni par l'utilisateur ;
- Écrire un brouillon
shot-plan.json(enveloppe + catégorie de formulaire choisie ou intention de recherche +asset_needs+ un brief de plan d'un paragraphe). Schéma :references/shot-plan-ir.md.
Validation : [ -s "$PROJECT_DIR/shot-plan.json" ] && echo ok || echo missing.
Étape 2 — Source ◇ (Bash : résolution média, conditionnelle)
Si shot-plan.json.asset_needs n'est pas vide, résoudre les ressources (recherche / génération / récupération → chemins locaux figés dans le projet + registre). Voir phases/source/guide.md (encapsule media-use resolve ; les catégories pilotées par la recherche utilisent la recherche news/web/tweet/image). Si asset_needs est vide, passer à l'étape 3.
# illustratif — voir phases/source/guide.md
(cd "$PROJECT_DIR" && node <SKILL_DIR>/phases/source/resolve.mjs --plan ./shot-plan.json --out ./assets)
Dégrader avec élégance : si un moteur de recherche / fournisseur est indisponible, la catégorie revient à une version sans ressource (le noter dans context.log).
Étape 3 — Conception (sous-agent : Directeur Partie 2)
Lancez un sous-agent (invite = agents/director.md Partie 2 + contexte de répartition incluant le assets/index.md résolu si l'étape 2 a été exécutée + catalog-map.md). Il conçoit le plan autour des ressources disponibles : choisir le(s) bloc(s) du catalogue + les règles/plans hyperframes-animation, la disposition, le mouvement, les battements et (pour asset-fusion) les element_positions + la palette de pipette. Finalise shot-plan.json (content.block + content.customize + contenu par catégorie).
Étape 4 — Construction (sous-agent : Constructeur, priorité à la réutilisation)
Lancez un sous-agent. invite = agents/builder.md complet + contexte de répartition (shot-plan.json, catalog-map.md, le module.md de la catégorie, references/motion-vocabulary.md, references/builder-contract.md). Priorité à la réutilisation : npx hyperframes add <block> + personnaliser sur place ; n'écrire à la main que les lacunes + l'affordance de fusion des ressources. Sortie compositions/index.html respectant le contrat HF (timeline GSAP en pause sur window.__timelines, class="clip" + identifiants stables, tl.seek(0), déterministe).
Étape 5 — Rendu (Bash)
(cd "$PROJECT_DIR" && npx hyperframes render . -q draft -o ./renders/video.mp4)
# variante superposition transparente : --format webm (ou mov)
Étape 6 — Vérification (Bash → sous-agent de réparation en cas d'échec)
(cd "$PROJECT_DIR" && npx hyperframes lint . && npx hyperframes inspect .)
exit 0 → terminé. En cas d'erreurs de lint/inspect, lancer le sous-agent de réparation (agents/finalize.md : QA instantané + un passage de correction sur place + nouveau rendu). Ne jamais changer une durée fixe pendant la réparation.
Rapport + aperçu optionnel
Rapporter la sortie finale (renders/video.mp4, ou la variante de superposition .webm / .mov) + la durée. Ne pas ouvrir d'aperçu pendant l'exécution. N'en proposer un que sur demande, démarré après le rendu afin qu'il serve le fichier final :
(cd "$PROJECT_DIR" && npx hyperframes preview) # Interface utilisateur Studio ; ou `npx hyperframes play` pour un lien partageable
Les indicateurs se trouvent dans la compétence hyperframes-cli (references/preview-render.md).
Tableau de reprise
| État | Continuer à partir de |
|---|---|
pas de shot-plan.json | Étape 1 (planification) |
shot-plan.json a asset_needs, pas de assets/ | Étape 2 (source) |
shot-plan.json final, pas de compositions/index.html | Étape 3/4 (conception+construction) |
compositions/index.html existe, pas de renders/video.mp4 | Étape 5 (rendu) + Étape 6 |
renders/video.mp4 existe | Rapport + arrêt |
Notes de conception (mainteneurs — l'exécution ne lit pas ceci)
- Justification de la priorité aux ressources : la recherche de sources est effectuée en amont et informe la conception du plan (le flux RWA : analyser → rechercher → examiner → composer). Les catégories pilotées par la recherche (
webpage/news/tweet) etasset-fusions'appuient toutes deux sur la recherche média (news/web/tweet/image), qui est la lignée RWA documentée de la résolution média. - Priorité à la réutilisation : l'analogue intra-écosystème des modèles générés par LLM est « composer des blocs de catalogue + règles
hyperframes-animation». La timeline GSAP en pause de HF ≙useCurrentFramede Remotion. - Contrat de module de catégorie : un
categories/<id>/module.md(planification + construction), partageantreferences/motion-vocabulary.md(+ évaluation optionnelle). Ajouter une catégorie = déposer le dossier + enregistrer sa ligne de classificateur dansagents/director.md+ sa ligne danscatalog-map.md; le pipeline de phase est inchangé. - Structure du répertoire :
videos/<project-name>/ hyperframes.json context.log shot-plan.json # le RI (sortie du Directeur) assets/ assets/index.md # sortie de la résolution média (si recherchée) compositions/index.html # sortie du Constructeur renders/video.mp4 - Enregistrement : dans le routeur
hyperframes— ajouter l'intention « animation graphique courte centrée sur le design » + la description du Workflow ; retirer les déclencheurs motion-graphics de/general-video; ajouter les arêtes inverses « NE PAS UTILISER ». Voirmotion-graphics-genre.md§5-7.