Communitygithub.com

Moh4696/freecut

Pipeline de production d'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. À utiliser lorsque les utilisateurs demandent : explications animées, animations mathématiques, visualisations de concepts, démonstrations d'algorithmes, vidéos techniques explicatives, style 3Blue1Brown, ou toute animation programmatique à contenu géométrique/mathématique.

Qu'est-ce que freecut ?

Ce pipeline de production vidéo est un outil professionnel pour créer des animations éducatives de haute qualité avec Manim Community Edition. Il est spécialement conçu pour les développeurs et créateurs de contenu qui souhaitent produire des vidéos explicatives de type 3Blue1Brown, des visualisations d'algorithmes, des dérivations mathématiques, des diagrammes d'architecture et des histoires de données interactives. Le pipeline fonctionne entièrement en Python, ne nécessite ni navigateur, ni Node.js, ni GPU, et s'appuie sur Manim, LaTeX et ffmpeg. Il propose sept modes de production (explication de concept, dérivation d'équation, visualisation d'algorithme, histoire de données, diagramme d'architecture, explication d'article, visualisation 3D) avec des directives créatives complètes incluant des palettes de couleurs, des vitesses d'animation, une échelle typographique et des patrons de codage. Le flux de travail suit six étapes : planification, codage, rendu, assemblage, audio et révision. Chaque projet est un simple script Python avec une classe par scène, et le rendu peut se faire en brouille (854×480, 15 ips) ou en production (1920×1080, 60 ips). Le pipeline met l'accent sur l'excellence au premier rendu, l'utilisation de polices monospace, et des techniques de superposition d'opacité pour guider l'attention du spectateur. Il inclut également des stratégies de divergence créative (SCAMPER et inversion d'hypothèses) pour des approches expérimentales.

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

Pipeline 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 une seule ligne de code, articulez l'arc narratif. Quelle idée fausse cela corrige-t-il ? Quel est le « moment eurêka » ? Quelle histoire visuelle emmène le spectateur de la confusion à la compréhension ? L'invite de l'utilisateur est un point de départ — interprétez-la 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. La sortie doit être visuellement claire et esthétiquement cohérente sans cycles de révision. Si quelque chose semble encombré, mal synchronisé 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 en couches.

L'air de respiration. Chaque animation a besoin de self.wait() après elle. Le spectateur a besoin de temps pour assimiler ce qui vient d'apparaître. Ne 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 typographique cohérente, 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 sous Linux, mactex sous macOS), et ffmpeg. Documentation de référence 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 étape par étape 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 du 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

Script Python unique 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'équation via MathTex
Vidéo I/OffmpegAssemblage de scènes, conversion de format, mixage audio
TTSElevenLabs / Qwen3-TTS (optionnel)Voix off de narration

Pipeline

PLANIFIER --> CODER --> RENDRE --> 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 indépendamment rendue
  3. RENDRE — manim -ql script.py Scene1 Scene2 ... pour le brouillon, -qh pour la production
  4. ASSEMBLER — Concaténer ffmpeg des clips de scènes en final.mp4
  5. AUDIO (optionnel) — Ajouter voix off et/ou musique de fond via ffmpeg. Voir references/rendering.md
  6. RÉVISER — Prévisualiser des images de rendu, vérifier par rapport au plan, ajuster

Structure du Projet

nom-du-projet/
  plan.md                # Arc narratif, décomposition des scènes
  script.py              # Toutes les scènes dans un 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

PaletteFondPrimaireSecondaireAccentCas d'usage
Classique 3B1B#1C1C1C#58C4DD (BLEU)#83C167 (VERT)#FFFF00 (JAUNE)Mathématiques/CS général
Académique chaleureux#2D2B55#FF6B6B#FFD93D#6BCB77Accessible
Néon techno#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 d'équation clé2.0s2.0s
Transformation/morphose1.5s1.5s
Étiquette de support0.8s0.5s
Nettoyage FadeOut0.5s0.3s
Révélation « moment eurêka »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 monospace pour tout le texte. Le rendu Pango de Manim produit un crénage cassé avec les polices proportionnelles à toutes les tailles. 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ématiques (utilise LaTeX)

Minimum font_size=18 pour la lisibilité.

Variation par Scène

N'utilisez jamais la même configuration 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 épuré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 indépendamment rendable.

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)

Patrons 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 : Rendre

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  # prévisualisation statique

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

Ne Jamais Animer des Mobjects Non Ajoutés

self.play(Create(circle))  # doit d'abord ajouter
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 rendez en -qh que pour la sortie finale.

Références

FichierContenu
references/animations.mdAnimations de base, fonctions de vitesse, composition, syntaxe .animate, patrons de timing
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, patrons 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 disposition, 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 de narration
references/updaters-and-trackers.mdValueTracker, add_updater, always_redraw, mises à jour basées sur le temps, patrons
references/paper-explainer.mdTransformer des articles de recherche en animations — flux de travail, modèles, patrons de 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 souhaite un regard neuf sur une explication standard
  • Inversion d'Hypothèses — lorsque l'utilisateur souhaite 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 (droite numérique → chemin tortueux, 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 est important (10x le taux d'apprentissage, 1000x la taille de l'échantillon)
  • Éliminer : retirez toute notation — expliquez uniquement par l'animation et les relations spatiales

Inversion d'Hypothèses

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

Skills associés