Communitygithub.com

jindratilk/ae-motion-graphics

Créez et recréez des graphiques animés natifs et modifiables dans Adobe After Effects via des scripts. Utilisez-le pour les animations After Effects, les films produits, les animations UI, les promos et les recréations de vidéos de référence.

Qu'est-ce que ae-motion-graphics ?

Ce skill permet de créer et recréer des graphiques animés entièrement natifs et modifiables dans Adobe After Effects, en utilisant une approche orientée script. Il est conçu pour les développeurs, les motion designers et les agents IA qui souhaitent automatiser la production de films d'animation professionnels pour des marques, des produits, ou des recréations 1:1 de vidéos de référence. Le skill supporte les modes 'RECREATE' (analyse et mesure d'une référence vidéo pour la reproduire fidèlement) et 'CREATE' (développement original via recherche, concept, storyboard et réalisation). Il fonctionne exclusivement avec After Effects (sur macOS et Windows) en pilotant une instance dédiée via des scripts ExtendScript (JSX) et Python, évitant toute interaction avec l'interface graphique. Le processus inclut le lancement sécurisé d'une instance AE, la construction de compositions natives (textes, formes, calques 3D, caméras), l'animation par courbes Bézier continues, et le rendu final via aerender ou des helpers Python. Les règles d'animation clés (peu de keyframes, courbes lisses, caméra unique, typographie native) garantissent des résultats fluides, modifiables et professionnels.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/jindratilk/claude-skill-ae-motion-graphics/tree/HEAD

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Graphiques animés de niveau mondial dans After Effects : le processus

Suivez les bases partagées, puis le mode approprié, et terminez par l'assurance qualité et la livraison :

  1. Partie A – Connexion à After Effects. Établissez un contrôle fiable de votre propre instance AE.
  2. Partie B – Règles qui s'appliquent toujours. Lisez les règles d'animation et de modification partagées avant de construire.
  3. Partie C – Processus RECREATE. Reproduisez une référence par analyse, mesure et comparaison.
  4. Partie D – Processus CREATE. Développez un film original par recherche, concept, histoire et construction.
  5. Partie E – Finition. Vérifiez le rendu final et préparez les livrables demandés.

Modes de travail

ModeObjectifComment ça commence
RECREATEReproduire une vidéo de référence 1:1 en termes de timing, disposition, mouvement et apparence, reconstruit de manière native.Analyser et mesurer la référence ; elle définit l'histoire.
CREATECréer un film original pour une marque ou un produit.Recherche, concept, histoire et moodboard, suivis de la construction.

Partie A – Connexion à After Effects

L'objectif est une instance After Effects privée, fiable, scriptable qu'aucun autre agent ne peut perturber, et que vous pouvez piloter sans toucher à l'interface graphique.

A1. Lancez votre propre instance

  1. Enregistrez les PIDs des AE en cours d'exécution : pgrep -f "Contents/MacOS/After Effects".
  2. Lancez une nouvelle instance :
    open -n "/Applications/Adobe After Effects 2026/Adobe After Effects 2026.app" --args -m
    
    Un petit lanceur Swift (NSWorkspace.openApplication avec createsNewApplicationInstance=true et les arguments -m -ApplePersistenceIgnoreState YES) peut faire la même chose et renvoyer le PID directement.
    • Ne pas démarrer le binaire brut via subprocess.Popen. Ce processus n'est pas enregistré dans le bundle et ne peut pas recevoir d'AppleEvents.
  3. Différenciez les listes de PIDs et conservez le nouveau PID pour les commandes suivantes.
    • AE peut se relancer sous un nouveau PID après le démarrage. Prenez le PID qui possède la fenêtre principale "Adobe After Effects" (Quartz CGWindowListCopyWindowInfo).
    • L'ID du bundle est com.adobe.AfterEffects.application.
  4. Fermez les boîtes de dialogue de démarrage (Crash Repair → Continue). Une fenêtre de connexion Adobe dans ces instances est un problème d'affichage connu : ignorez-la, ne saisissez jamais d'identifiants et ne remontez pas le problème à l'utilisateur.
  5. ensure_ae.py automatise tout cela : il relance l'instance lorsque le PID est mort, confirme les petites boîtes de dialogue, détecte le PID relancé, et rouvre le projet.

A2. Communiquez avec elle uniquement par PID

  • tell application "Adobe After Effects 2026" cible n'importe quelle instance, y compris celles des autres agents. Ne l'utilisez jamais.
  • aedo (Swift) envoie l'AppleEvent misc/dosc (DoScript) à un seul PID.
  • ae.py script.jsx ou ae.py -e "code" encapsule chaque script :
    • inclut le polyfill ES3 JSON (json.jsx);
    • appelle app.beginSuppressDialogs();
    • exécute $.evalFile dans un bloc try/catch;
    • écrit {ok, value, error, line, file, ms} dans un fichier de résultat. Les valeurs de retour des AppleEvents sont peu fiables, lisez donc toujours le fichier.
  • Garde d'identité du projet : avant tout script modifiant, vérifiez le PID cible et app.project.file par rapport au projet en cours d'édition. Ne fermez ni ne quittez jamais une instance que vous n'avez pas vérifiée comme étant la vôtre.
  • Exécutez un script AE à la fois. Les scripts ne sont souvent pas idempotents, donc sauvegardez ou enregistrez sous avant les modifications en masse.

A3. Vérification de l'état avant le travail réel

Avec un seul script, lisez :

  • app.version et si le projet est le vôtre;
  • le moteur de rendu de la composition (ADBE Advanced 3d est nécessaire pour les calques de modèle 3D et les lumières d'environnement);
  • les polices : app.fonts.getFontsByPostScriptName(name).length doit être supérieur à 0 pour chaque police que vous prévoyez d'utiliser;
  • qu'un saveFrameToPng de test apparaît sur le disque.

Définissez également la préférence qui permet aux scripts d'écrire des fichiers et d'accéder au réseau (Pref_SCRIPTING_FILE_NETWORK_SECURITY).

A4. Le pipeline de construction : données → projet natif

Utilisez les assistants de construction disponibles ou implémentez des équivalents ; les noms des assistants ci-dessous décrivent leurs rôles.

  1. Python décrit le film sous forme de données. Un DSL kit.py fournit :

    • K() des clés éparses avec des easings nommés;
    • shape, text, precomp, null, camera, model, L (calques);
    • effets par matchName, masques, caches de piste, expressions, marqueurs, notes, étiquettes.

    Combinez les spécifications de scène en une seule spécification de construction.

  2. kit.jsx construit les calques natifs à partir de la spécification.

    • Il crée les calques de bas en haut, donc ils sont déjà dans l'ordre final. Évitez le réordonnancement en masse avec moveTo, qui peut bloquer AE.
    • Ensuite, il applique le parentage, les effets, les masques, les transformations, les easings, les caches et le câblage des lumières d'environnement.
  3. build.py spec.json --new --only "A|B" --stills "Comp:t1,t2" --save output.aep

    • --new ferme le projet actuel sans sauvegarder d'abord (CloseOptions.DO_NOT_SAVE_CHANGES). Sinon, newProject() ouvre une boîte de dialogue "Enregistrer sous" et se bloque.
  4. Images fixes : stills.py "Comp" t1,t2 prefix.

    • saveFrameToPng est asynchrone (interrogez jusqu'à ce que le fichier existe) et écrit des PNG en 16 bits (divisez par 257 pour un affichage 8 bits).
  5. Rendus de mouvement ciblés : render.py "Comp" start end out.mp4 [--half] [--hq], ou aerender avec -s/-e.

  6. Rendus complets : aerender_job.py "Comp" out.mp4 [--half] [--hq].

    • Il sauvegarde une copie du travail et exécute aerender -project job.aep -rqindex 1 -sound ON dans un processus séparé.
    • C'est plus rapide que la file d'attente intégrée, et un crash ne peut pas faire tomber l'instance de travail.
  7. Fiches contacts : contact.py (images d'une vidéo) et sheet.py (images fixes, conserve les proportions). Réduisez toujours les images avant de les visualiser.

A5. Règles ExtendScript (ES3)

  • Pas de JSON et pas de Array.indexOf : utilisez le polyfill ou des boucles. Lisez le JSON avec eval('('+text+')').
  • N'utilisez jamais d'opérateurs ternaires enchaînés (a?x:b?y:z évalué incorrectement). Utilisez if/else.
  • Adressez les propriétés par matchName. Les recherches par nom d'affichage ont une limite de 39 octets et sont localisées.
  • Une caméra n'est pas threeDLayer : testez matchName==='ADBE Camera Layer'.
  • Normalisez les dimensions des valeurs : transmettez des scalaires aux dimensions séparées et des tableaux de 3 éléments aux propriétés 3D.
  • shutterPhase doit être un entier.
  • Définissez applyFill=true avant de définir la couleur de remplissage d'un texte.
  • Créez un nouveau TextDocument par calque. Appelez resetCharStyle()/resetParagraphStyle() avant de styliser.
  • Une erreur "property or parent is hidden" signifie que la propriété ne s'applique pas là. Exemple : la rotation Y d'une lumière d'environnement ne peut pas être définie ; animez plutôt sa carte source.
  • Les couleurs de remplissage de forme dégradée ne peuvent pas être scriptées. Utilisez un effet Gradient Ramp ou des groupes de lumière superposés.

A6. Coexistence avec d'autres agents

  • D'autres agents peuvent quitter AE "par nom", ce qui affecte également votre instance. Sauvegardez souvent et gardez ensure_ae.py prêt.
  • Appuyer sur Échap sur une boîte de dialogue "Enregistrer les modifications ?" déclenchée par une commande quitter fait quitter AE.
  • Les outils d'utilisation de l'ordinateur et d'accessibilité peuvent ne voir que les fenêtres d'autres instances. Diagnostiquez vos propres fenêtres avec une liste de fenêtres Quartz filtrée par PID plus screencapture -l <windowId>. Fermez-les via System Events sur votre PID (code touche 36 = Retour, 53 = Échap).
  • Divulguez toute interférence accidentelle avec une autre instance AE.

Partie B – Règles qui s'appliquent toujours

Appliquez ces règles dans les deux modes pour que le mouvement soit fluide et le projet modifiable.

B1. Images clés : aussi peu que possible

  • Utilisez aussi peu d'images clés que possible pour obtenir un mouvement fluide. Dix clés avec des courbes valent mieux que mille clés plates.
  • Un geste nécessite 2 à 4 clés : début, fin, et une vraie pause ou un vrai extrême (pic, creux, changement de phase).
  • Limitez chaque propriété à environ 7 à 12 clés. Plus de clés signifie généralement que le mouvement n'est pas conçu.
  • Ne figez jamais le mouvement sous forme de clés linéaires par image (ou 2 par image). Un éditeur ne peut pas le modifier, et cela semble mécanique.
  • Lorsque le mouvement provient de mesures ou de données héritées, ajustez-le (voir B3). Ne collez jamais d'échantillons.

B2. Courbes : un arc lisse dans le graphique de vitesse

  • Ouvrez le graphique de vitesse de chaque propriété animée.

    • Une courbe en cloche ou arc lisse signifie un mouvement fluide.
    • Un graphique anguleux, en escalier (chaque clé a un easy ease à zéro) signifie que le mouvement saccade.
    • Un pic signifie une secousse, sauf s'il s'agit d'un accent intentionnel.
  • Les clés intérieures d'un seul geste continu ne doivent pas s'arrêter.

    • Utilisez des clés Bézier continues.
    • Définissez la vitesse intérieure comme la moyenne harmonique des pentes voisines, 2ab/(a+b) lorsque les deux ont le même signe, sinon 0, avec une influence d'environ 33,3.
    • N'appliquez jamais d'Easy Ease global à un geste continu : cela crée les escaliers.
  • Vocabulaire des easings (influence de sortie de la clé précédente / influence d'entrée de cette clé) :

    NomInfluence
    ease33/33
    smooth70/70
    inout82/82
    out12/88
    expo6/94
    snap3/97
    in88/12
    soft45/75

    Un easy personnalisé est {'o':[speed,inf],'i':[speed,inf]}. Un léger retrait, par exemple : {'o':[0,55],'i':[0,92]}.

  • Les tangentes spatiales sont par défaut à zéro, ce qui évite les dépassements de chemin. Utilisez les arcs uniquement avec un objectif précis.

  • Un mouvement trop court avec un début expo agressif est perçu comme une secousse. Allongez-le (0,5 → 0,8 s) et adoucissez l'easing plutôt que d'ajouter des clés.

  • Superposez les sous-mouvements en un seul geste. Un pliage puis un retournement puis une poussée, effectués séparément, donnent un mouvement stop-and-go. Commencez le mouvement suivant avant la fin du précédent.

B3. Ajustement des courbes à partir de données

Mode recréation, ou lors de la conversion de données denses :

  1. Échantillonnez le mouvement cible de manière dense (50–200 Hz) avec valueAtTime ou à partir de mesures.

  2. Fixez les nœuds au début et à la fin, aux pauses exactes (vitesse zéro) et aux extrema significatifs (pente nulle sur cet axe).

  3. Résolvez les vitesses et les influences par moindres carrés par rapport aux échantillons : vitesses sous contrainte de signe, influences comprises entre 0,04 et 0,94.

  4. Ajoutez un nœud uniquement lorsque l'erreur dépasse la tolérance :

    PropriétéTolérance
    Position2–3 px (caméra 3 px)
    Échelle0,4–0,65
    Opacité0,5–2,5
    Flou~1
    Rotation0,4
  5. Pour les propriétés vectorielles, fusionnez les temps des nœuds sur tous les axes en divisant la courbe de Bézier (de Casteljau). Assurez-vous que la vitesse entrante est égale à la vitesse sortante à chaque clé intérieure.

  6. Conservez tels quels, avec une raison écrite : expressions, time remap, cadence de frappe, commutateurs de pause intentionnels, inversions de visibilité d'une image.

B4. Une seule caméra 3D par scène

  • Chaque scène a une CAMERA • scene (un nœud, NO_AUTO_ORIENT, X/Y/Z séparés). La caméra porte le cadrage, les panoramiques, les travellings et les zooms.

  • N'animez pas la Position/Échelle sur chaque élément pour simuler un mouvement de caméra.

  • Pour déduire une caméra d'un mouvement UI enregistré (position du calque principal P, échelle s, centre de la composition C, zoom Z0) :

    • camera XY = C + (C − P)/s
    • camera Z = −Z0/s

    Ensuite, réexprimez tout ce qui bouge par lui-même en termes locaux.

  • La caméra raconte l'histoire : arrivée → action → accélération → pause lisible, et macro-détail → découverte en arrière-plan.

  • L'animation locale reste locale : un chemin de curseur, un clic, un défilement, un retournement de carte. Les pulsations de clic parentées à l'intérieur du composant, donc elles le suivent sous la perspective.

  • Les titres vivent sur un plan 2D stable au-dessus du monde 3D, afin que les poussées de la caméra ne les coupent jamais. Vérifiez avec une vérification des limites de texte projeté.

B5. Flou de mouvement, netteté et profondeur

  • Le flou de mouvement de la composition est activé (obturateur 135–180°, 12–16 échantillons).
    • Réduisez l'obturateur à 45–90° pour les retraits très rapides, ou les bavures d'interface.
    • Désactivez le flou de mouvement sur les calques où il double le texte.
  • Gardez les grands zooms d'interface nets : un précomp de rendu suréchantillonné 2–4× qui contient l'interface vectorielle modifiable, et pas d'effondrement sur les scènes de caméra.
  • Moteur de rendu Advanced 3D : gardez ≥ 4 unités entre les plans parallèles, sinon ils se combattent en profondeur et montrent des coutures.
  • L'opacité d'un nul n'affecte pas ses enfants. Propaguez l'opacité à tous les descendants.
  • Les lueurs floues doivent avoir Répéter les bords des pixels DÉSACTIVÉ, sinon elles montrent des limites rectangulaires. Les rampes radiales plein cadre créent les meilleurs champs de lumière.

B6. Transitions : continuité, pas d'effets

  • Une transition doit être motivée :

    • Coupe franche sur correspondance : la dernière image de A est égale à la première image de B. Mesurez la pose dans le rendu.
    • Morphose : une forme anime sa taille, son arrondi, sa couleur et sa position pour devenir l'élément suivant.
    • Transfert d'objet : un élément est extrait et devient le héros de la scène suivante.
    • Plongée de caméra dans un élément sombre, de sorte que la scène suivante émerge du noir.
    • Disque lumineux ou sombre révélant derrière le produit via un cache de piste.
  • Interdit :

    • flashs blancs ou gris plein cadre;
    • fondus entre des scènes sombres et claires, qui produisent des images gris moyen;
    • le même wipe sur chaque coupe;
    • bandes "balayage" de fond gris.

    Placez les flashs là où ils appartiennent physiquement : sur un écran, avec un bloom coloré derrière l'objet.

  • Utilisez au maximum 2 à 3 wipes d'occultation plein cadre par film.

B7. Natif uniquement, toujours modifiable

  • Téléchargements d'actifs : Téléchargez tous les actifs nécessaires à la tâche sans demander d'abord à l'utilisateur, y compris les logos, icônes, polices, modèles 3D, textures, images, vidéos de référence, musique et effets sonores. Préférez les sources officielles ou fiables, conservez l'attribution de licence requise et appliquez les règles de projet natif ci-dessous lors de l'utilisation des actifs dans AE.
  • Natif signifie texte, formes, masques, effets, précompositions, caméras, lumières et calques de modèle 3D natifs (GLB/OBJ). L'audio peut être importé.
    • N'importez jamais de captures d'écran, de recadrages de référence, de pré-rendus, de boucles de webcam ou de substituts raster pour les calques natifs.
    • Auditez chaque élément de métrage avant de prétendre qu'il est "natif".
  • Modifiable signifie texte en direct, curseurs pour les contrôles, noms de calques clairs et précompositions de composants réutilisables qui propagent les modifications partout où ils sont utilisés.
  • Gardez le texte centré après les modifications avec une expression de point d'ancrage provenant de sourceRectAtTime.

B8. Typographie

  • Texte en direct uniquement, avec les vraies polices de la marque. Vérifiez avec getFontsByPostScriptName, et installez des instances statiques sous un nom de famille unique si nécessaire.
  • Les titres sont courts, gras, en casse de phrase, avec un point final. Crénage −20 à −40.
  • Révélation par caractère ou mot : opacité 0, flou 20–24, y +14–26, ease-out sur 0,45–0,55 s. La sortie imite l'entrée : 0,25–0,35 s, flou vers le haut.
  • Mesurez les largeurs par rapport au TTF réel (PIL à 4× suréchantillonnage) afin que les soulignements, les pastilles et les

...

Skills associés