Communitygithub.com

Chaîne de production vidéo Manim (Syammon02/VideoUse)

Chaîne de production pour animations mathématiques et techniques avec Manim Community Edition. Crée des vidéos explicatives style 3Blue1Brown, visualisations d'algorithmes, dérivations d'équations, diagrammes d'architecture et histoires de données.

Qu'est-ce que VideoUse) ?

Ce skill définit une chaîne de production complète pour créer des animations mathématiques et techniques de qualité cinématographique avec Manim Community Edition. Il guide l'utilisateur à travers un pipeline rigoureux en six étapes : planification, codage, rendu, assemblage, audio et révision. Le skill impose un standard créatif exigeant : chaque scène doit être intentionnelle, pédagogiquement ambitieuse et esthétiquement cohérente, avec des palettes de couleurs, des échelles typographiques et des vitesses d'animation prédéfinies. Il prend en charge sept modes de contenu (explication de concept, dérivation d'équation, visualisation d'algorithme, etc.) et fonctionne avec Python 3.10+, Manim CE v0.20+, LaTeX et ffmpeg. Le skill inclut des modèles de code, des conventions de style (utilisation exclusive de polices monospaces, superposition d'opacité), des directives de performance (rendu en brouillon en -ql, production en -qh) et une bibliothèque de références détaillées. Il permet également une divergence créative via les méthodes SCAMPER et l'inversion d'hypothèses pour les demandes expérimentales.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Syammon02/VideoUse/tree/HEAD/skills/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

Chaîne de production vidéo Manim

Standard créatif

C'est du 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 animation corrige-t-elle ? Quel est le "déclic" ? Quelle histoire visuelle emmène le spectateur de la confusion à la compréhension ? Le prompt 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 au premier rendu est non négociable. Le résultat doit être visuellement clair et esthétiquement cohérent sans cycles de révision. Si quelque chose semble encombré, mal rythmé, ou comme des "diapos 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 de structure (axes, grilles) à 0.15. Le cerveau traite la saillance visuelle par couches.

Du temps 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 précipitez jamais une animation vers la suivante. Une pause de deux 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, un dimensionnement typographique cohérent, des vitesses d'animation assorties. 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 sur Linux, mactex sur macOS), et ffmpeg. La documentation de référence a été 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
Histoire 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ène, moteur d'animation
MathématiquesLaTeX (texlive/MiKTeX)Rendu d'équations via MathTex
Vidéo I/OffmpegAssemblage de scènes, conversion de format, multiplexage audio
TTSElevenLabs / 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 rendable 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 fixes de prévisualisation, vérification par rapport au plan, ajustement

Structure du projet

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

Direction créative

Palettes de couleurs

PaletteArrière-planPrimaireSecondaireAccentCas 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 titre/intro1.5s1.0s
Révélation équation clé2.0s2.0s
Transformation/morphose1.5s1.5s
Étiquette de support0.8s0.5s
Nettoyage FadeOut0.5s0.3s
Révélation "déclic"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 monospaces pour tout le texte. Le 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")                                            # math (utilise LaTeX)

font_size=18 minimum 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
  • Animation d'entrée différente — variez entre Write, FadeIn, GrowFromCenter, Create
  • Poids visuel différent — certaines scènes denses, d'autres épurées

Flux de travail

Étape 1 : Planification (plan.md)

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

Étape 2 : Codage (script.py)

Une classe par scène. Chaque scène est rendable 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 ça marche ?", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)
        self.add_subcaption("Pourquoi ça marche ?", duration=2)
        self.play(Write(title), run_time=1.5)
        self.wait(1.0)
        self.play(FadeOut(title), run_time=0.5)

Motifs clés :

  • Sous-titres sur chaque animation : self.add_subcaption("texte", duration=N) ou subcaption="texte" dans 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 en fin de 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 : Assemblage

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évision

manim -ql --format=png -s script.py Scene2_CoreConcept  # image de prévisualisation

Notes d'implémentation critiques

Chaînes brutes pour LaTeX

# FAUX : MathTex("\frac{1}{2}")
# JUSTE :
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 animé

Objectifs de performance

QualitéRésolutionFPSVitesse
-ql (brouillon)854×480155-15s/scène
-qm (moyen)1280×7203015-60s/scène
-qh (production)1920×10806030-120s/scène

Itérez toujours en -ql. Ne rendez en -qh que pour le résultat final.

Références

FichierContenu
references/animations.mdAnimations de base, fonctions de taux, composition, syntaxe .animate, motifs de rythme
references/mobjects.mdTexte, formes, VGroup/Group, positionnement, style, mobjects personnalisés
references/visual-design.md12 principes de conception, superposition d'opacité, modèles de disposition, palettes de couleurs
references/equations.mdLaTeX dans Manim, TransformMatchingTex, motifs de dérivation
references/graphs-and-data.mdAxes, tracé, BarChart, données animées, visualisation d'algorithme
references/camera-and-3d.mdMovingCameraScene, ThreeDScene, surfaces 3D, contrôle de la caméra
references/scene-planning.mdArcs narratifs, modèles de disposition, transitions de scène, modèle de planification
references/rendering.mdRéférence CLI, préréglages de qualité, ffmpeg, flux de 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 de la 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 quand l'utilisateur demande un résultat expérimental/créatif/unique)

Si l'utilisateur demande une approche explicative créative, expérimentale ou non conventionnelle, sélectionnez une stratégie et raisonnez-la AVANT de concevoir l'animation.

  • SCAMPER — quand l'utilisateur souhaite une nouvelle interprétation d'une explication standard
  • Inversion d'hypothèses — quand l'utilisateur veut remettre en question la façon dont un sujet est généralement enseigné

Transformation SCAMPER

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

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

Inversion 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 droite-à-gauche, plongement 3D d'un concept 2D, morphose continue au lieu d'étapes, zéro notation)
  4. Explorez ce que l'inversion révèle que l'approche standard cache

Skills associés