Communitygithub.com

Oct1/hermes-skills

Pipeline de production vidéo Manim CE pour animations mathématiques et algorithmiques de style 3Blue1Brown.

Qu'est-ce que hermes-skills ?

Cette compétence fournit un pipeline complet de production vidéo basé sur Manim Community Edition, spécialisé dans la création de vidéos explicatives, d'animations mathématiques, de visualisations d'algorithmes et de récits de données, dans le style emblématique de 3Blue1Brown. Elle couvre l'ensemble du processus, de la planification narrative (plan.md) à l'écriture de scripts Python (script.py), au rendu (manim -ql/-qh), à l'assemblage (ffmpeg) et à l'ajout optionnel de narration audio via ElevenLabs ou Qwen3-TTS. La compétence inclut des directives créatives détaillées sur les palettes de couleurs, les vitesses d'animation, la typographie (polices monospace obligatoires), et les principes de conception visuelle (gestion des couches d'opacité, respiration visuelle). Elle prend en charge plusieurs modes : explicatif de concept, dérivation d'équation, visualisation d'algorithme, récit de données, diagramme d'architecture, explication d'article de recherche et visualisation 3D. Chaque scène est une classe indépendante, avec des transitions propres, des sous-titres synchronisés et une sortie par FadeOut. Des références complètes (17 fichiers markdown) couvrent en détail les animations, les mobjects, la conception visuelle, les équations, les graphes, la 3D, la planification, le rendu, le dépannage, les mises à jour, les décorations et la qualité de production. Enfin, une section de divergence créative (SCAMPER, renversement d'hypothèses) permet d'explorer des approches expérimentales quand l'utilisateur le demande.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Oct1/hermes-skills/tree/HEAD/creative/manim-video

Demander à votre IA préférée

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

Documentation

Pipeline de production vidéo Manim CE

Quand l'utiliser

À utiliser lorsque les utilisateurs demandent : explications animées, animations mathématiques, visualisations de concepts, démonstrations d'algorithmes, vidéos explicatives techniques, vidéos de style 3Blue1Brown, ou toute animation programmatique à contenu géométrique/mathématique. Crée des vidéos explicatives de style 3Blue1Brown, des visualisations d'algorithmes, des dérivations d'équations, des diagrammes d'architecture et des récits de données avec Manim Community Edition.

Standard créatif

C'est un cinéma éducatif. Chaque image enseigne. Chaque animation révèle une structure.

Avant d'écrire la moindre ligne de code, articulez l'arc narratif. Quelle idée fausse cette vidéo corrige-t-elle ? Quel est le « moment ah » ? Quelle histoire visuelle emmène le spectateur de la confusion à la compréhension ? Le message de l'utilisateur est un point de départ — interprétez-le avec ambition pédagogique.

La géométrie avant l'algèbre. Montrez d'abord la forme, l'équation ensuite. La mémoire visuelle encode plus vite que la mémoire symbolique. Quand le spectateur voit le motif géométrique avant la formule, l'équation semble méritée.

L'excellence dès le premier rendu est non négociable. La sortie doit être visuellement claire et esthétiquement cohérente sans cycles de révision. Si quelque chose semble encombré, mal chronométré, ou comme des « diapositives générées par IA », c'est faux.

La superposition d'opacité dirige l'attention. Ne montrez jamais tout à pleine luminosité. Éléments principaux à 1.0, éléments contextuels à 0.4, éléments structurels (axes, grilles) à 0.15. Le cerveau traite la saillance visuelle par couches.

Une pause pour respirer. Chaque animation a besoin d'un self.wait() après elle. Le spectateur a besoin de temps pour absorber ce qui vient d'apparaître. Ne vous précipitez jamais d'une animation à l'autre. Une pause de 2 secondes après une révélation clé n'est jamais perdue.

Langage visuel cohérent. Toutes les scènes partagent une palette de couleurs, une taille de typographie cohérente, des vitesses d'animation appariées. Une vidéo techniquement correcte où chaque scène utilise des couleurs aléatoires différentes est un échec esthétique.

Prérequis

Exécutez scripts/setup.sh pour vérifier toutes les dépendances. Nécessite : Python 3.10+, Manim Community Edition v0.20+ (pip install manim), LaTeX (texlive-full sous Linux, mactex sous macOS), et ffmpeg. La documentation de référence est testée avec Manim CE v0.20.1.

Modes

ModeEntréeSortieRéférence
Explication de conceptSujet/conceptExplication animée avec intuition géométriquereferences/scene-planning.md
Dérivation d'équationExpressions mathématiquesPreuve animée étape par étapereferences/equations.md
Visualisation d'algorithmeDescription d'algorithmeExécution pas à pas avec structures de donnéesreferences/graphs-and-data.md
Récit de donnéesDonnées/métriquesGraphiques animés, comparaisons, compteursreferences/graphs-and-data.md
Diagramme d'architectureDescription systèmeComposants se construisant avec connexionsreferences/mobjects.md
Explication d'articleArticle de rechercheRésultats et méthodes clés animésreferences/scene-planning.md
Visualisation 3DConcept 3DSurfaces rotatives, courbes paramétriques, géométrie spatialereferences/camera-and-3d.md

Stack

Un seul script Python par projet. Pas de navigateur, pas de Node.js, pas de GPU requis.

CoucheOutilObjectif
CœurManim Community EditionRendu de scènes, moteur d'animation
MathématiquesLaTeX (texlive/MiKTeX)Rendu d'équations via MathTex
Entrée/Sortie vidéoffmpegAssemblage de scènes, conversion de format, multiplexage audio
Synthèse vocaleElevenLabs / Qwen3-TTS (optionnel)Voix off narrative

Pipeline

PLANIFIER --> CODER --> RENDU --> ASSEMBLER --> AUDIO (optionnel) --> RÉVISER
  1. PLANIFIER — Écrivez plan.md avec l'arc narratif, la liste des scènes, les éléments visuels, la palette de couleurs, le script de voix off
  2. CODER — Écrivez script.py avec une classe par scène, chacune rendue indépendamment
  3. RENDU — manim -ql script.py Scene1 Scene2 ... pour le brouillon, -qh pour la production
  4. ASSEMBLER — Concaténation ffmpeg des clips de scène dans final.mp4
  5. AUDIO (optionnel) — Ajoutez une voix off et/ou une musique de fond via ffmpeg. Voir references/rendering.md
  6. RÉVISER — Rendu d'images d'aperçu, vérification par rapport au plan, ajustements

Structure du projet

nom-du-projet/
  plan.md                # Arc narratif, description des scènes
  script.py              # Toutes les scènes dans un seul fichier
  concat.txt             # Liste des scènes ffmpeg
  final.mp4              # Sortie assemblée
  media/                 # Généré automatiquement par Manim
    videos/script/480p15/

Direction créative

Palettes de couleurs

PaletteArrière-planPrincipaleSecondaireAccentCas d'usage
Classique 3B1B#1C1C1C#58C4DD (BLEU)#83C167 (VERT)#FFFF00 (JAUNE)Maths/Info général
Académique chaleureux#2D2B55#FF6B6B#FFD93D#6BCB77Accessible
Techno néon#0A0A0A#00F5FF#FF00FF#39FF14Systèmes, architecture
Monochrome#1A1A2E#EAEAEA#888888#FFFFFFMinimaliste

Vitesse d'animation

Contexterun_timeself.wait() après
Apparition du titre/intro1.5s1.0s
Révélation d'équation clé2.0s2.0s
Transformation/morphisme1.5s1.5s
Étiquette de support0.8s0.5s
Nettoyage FadeOut0.5s0.3s
Révélation « moment ah »2.5s3.0s

Échelle typographique

RôleTaille de policeUtilisation
Titre48Titres de scène, texte d'ouverture
En-tête36En-têtes de section dans une scène
Corps30Texte explicatif
Étiquette24Annotations, étiquettes d'axes
Légende20Sous-titres, petits caractères

Polices

Utilisez des polices à chasse fixe pour tout le texte. Le moteur de rendu Pango de Manim produit un crénage cassé avec les polices proportionnelles, quelle que soit la taille. Voir references/visual-design.md pour les recommandations complètes.

MONO = "Menlo"  # définir une fois en haut du fichier

Text("Série de Fourier", font_size=48, font=MONO, weight=BOLD)  # titres
Text("n=1: sin(x)", font_size=20, font=MONO)                  # étiquettes
MathTex(r"\nabla L")                                            # maths (utilise LaTeX)

Taille de police minimale font_size=18 pour la lisibilité.

Variation par scène

N'utilisez jamais une configuration identique pour toutes les scènes. Pour chaque scène :

  • Couleur dominante différente de la palette
  • Disposition différente — ne centrez pas toujours tout
  • Entrée d'animation différente — variez entre Write, FadeIn, GrowFromCenter, Create
  • Poids visuel différent — certaines scènes denses, d'autres clairsemées

Flux de travail

Étape 1 : Planifier (plan.md)

Avant tout code, écrivez plan.md. Voir references/scene-planning.md pour le modèle complet.

Étape 2 : Coder (script.py)

Une classe par scène. Chaque scène est rendue indépendamment.

from manim import *

BG = "#1C1C1C"
PRIMARY = "#58C4DD"
SECONDARY = "#83C167"
ACCENT = "#FFFF00"
MONO = "Menlo"

class Scene1_Introduction(Scene):
    def construct(self):
        self.camera.background_color = BG
        title = Text("Pourquoi cela fonctionne-t-il ?", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)
        self.add_subcaption("Pourquoi cela fonctionne-t-il ?", duration=2)
        self.play(Write(title), run_time=1.5)
        self.wait(1.0)
        self.play(FadeOut(title), run_time=0.5)

Schémas clés :

  • Sous-titres sur chaque animation : self.add_subcaption("texte", duration=N) ou subcaption="texte" sur self.play()
  • Constantes de couleur partagées en haut du fichier pour la cohérence entre scènes
  • self.camera.background_color défini dans chaque scène
  • Sorties propres — FadeOut de tous les mobjects à la fin de la scène : self.play(FadeOut(Group(*self.mobjects)))

Étape 3 : Rendu

manim -ql script.py Scene1_Introduction Scene2_CoreConcept  # brouillon
manim -qh script.py Scene1_Introduction Scene2_CoreConcept  # production

Étape 4 : Assembler

cat > concat.txt << 'EOF'
file 'media/videos/script/480p15/Scene1_Introduction.mp4'
file 'media/videos/script/480p15/Scene2_CoreConcept.mp4'
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4

Étape 5 : Réviser

manim -ql --format=png -s script.py Scene2_CoreConcept  # image d'aperçu

Notes d'implémentation critiques

Chaînes brutes pour LaTeX

# FAUX : MathTex("\frac{1}{2}")
# CORRECT :
MathTex(r"\frac{1}{2}")

buff >= 0.5 pour le texte en bordure

label.to_edge(DOWN, buff=0.5)  # jamais < 0.5

FadeOut avant de remplacer du texte

self.play(ReplacementTransform(note1, note2))  # pas Write(note2) par-dessus

N'animez jamais des mobjects non ajoutés

self.play(Create(circle))  # doit d'abord être ajouté
self.play(circle.animate.set_color(RED))  # puis animer

Objectifs de performance

QualitéRésolutionFPSVitesse
-ql (brouillon)854x480155-15s/scène
-qm (moyen)1280x7203015-60s/scène
-qh (production)1920x10806030-120s/scène

Itérez toujours en -ql. Ne faites un rendu en -qh que pour la sortie finale.

Références

FichierContenu
references/animations.mdAnimations principales, fonctions de taux, composition, syntaxe .animate, motifs temporels
references/mobjects.mdTexte, formes, VGroup/Group, positionnement, style, mobjects personnalisés
references/visual-design.md12 principes de conception, superposition d'opacité, modèles de mise en page, palettes de couleurs
references/equations.mdLaTeX dans Manim, TransformMatchingTex, motifs de dérivation
references/graphs-and-data.mdAxes, traçage, BarChart, données animées, visualisation d'algorithmes
references/camera-and-3d.mdMovingCameraScene, ThreeDScene, surfaces 3D, contrôle de caméra
references/scene-planning.mdArcs narratifs, modèles de mise en page, transitions de scènes, modèle de planification
references/rendering.mdRéférence CLI, préréglages de qualité, ffmpeg, flux de travail voix off, export GIF
references/troubleshooting.mdErreurs LaTeX, erreurs d'animation, erreurs courantes, débogage
references/animation-design-thinking.mdQuand animer vs montrer statique, décomposition, rythme, synchronisation narration
references/updaters-and-trackers.mdValueTracker, add_updater, always_redraw, mise à jour temporelle, motifs
references/paper-explainer.mdTransformer des articles de recherche en animations — flux de travail, modèles, motifs par domaine
references/decorations.mdSurroundingRectangle, Brace, flèches, DashedLine, Angle, cycle de vie des annotations
references/production-quality.mdListes de contrôle avant code, avant rendu, après rendu, disposition spatiale, couleur, tempo

Divergence créative (à utiliser uniquement lorsque l'utilisateur demande une sortie expérimentale/créative/unique)

Si l'utilisateur demande des approches explicatives créatives, expérimentales ou non conventionnelles, sélectionnez une stratégie et raisonnez-la AVANT de concevoir l'animation.

  • SCAMPER — lorsque l'utilisateur veut un nouveau regard sur une explication standard
  • Renversement d'hypothèses — lorsque l'utilisateur veut remettre en question la manière dont quelque chose est habituellement enseigné

Transformation SCAMPER

Prenez une visualisation mathématique/technique standard et transformez-la :

  • Substituer : remplacez la métaphore visuelle standard (ligne numérique → chemin sinueux, matrice → grille urbaine)
  • Combiner : fusionnez deux approches d'explication (algébrique + géométrique simultanément)
  • Inverser : dérivez à rebours — commencez par le résultat et déconstruisez jusqu'aux axiomes
  • Modifier : exagérez un paramètre pour montrer pourquoi il est important (10x le taux d'apprentissage, 1000x la taille de l'échantillon)
  • Éliminer : supprimez toute notation — expliquez uniquement par l'animation et les relations spatiales

Renversement d'hypothèses

  1. Listez ce qui est « standard » dans la visualisation de ce sujet (gauche à droite, 2D, étapes discrètes, notation formelle)
  2. Choisissez l'hypothèse la plus fondamentale
  3. Inversez-la (dérivation de droite à gauche, plongement 3D d'un concept 2D, morphing continu au lieu d'étapes, zéro notation)
  4. Explorez ce que le renversement révèle que l'approche standard cache

Skills associés