Communitygithub.com

Moh4696/freecut

Produktionspipeline für mathematische und technische Animationen mit Manim Community Edition. Erstellt 3Blue1Brown-artige Erklärvideos, Algorithmenvisualisierungen, Gleichungsherleitungen, Architekturdiagramme und Datengeschichten. Verwenden Sie diese, wenn Benutzer animierte Erklärungen, Mathe-Animationen, Konzeptvisualisierungen, Algorithmen-Walkthroughs, technische Erklärer, Videos im Stil von 3Blue1Brown oder programmatische Animationen mit geometrischem/mathematischem Inhalt anfragen.

Was ist freecut?

Diese Pipeline ist ein strenger, produktionsorientierter Workflow zur Erstellung hochwertiger Bildungsanimationen unter Verwendung von Manim Community Edition. Sie wurde von den visuellen Prinzipien von 3Blue1Brown inspiriert und legt den Schwerpunkt auf pädagogische Erzählkunst, geometrische Intuition vor algebraischer Notation und makellose visuelle Ästhetik. Die Pipeline unterstützt mehrere Modi wie Konzepterklärer, Gleichungsherleitungen, Algorithmenvisualisierungen, Datengeschichten, Architekturdiagramme, Paper-Erklärer und 3D-Visualisierungen. Sie erfordert Python 3.10+, Manim CE v0.20+, LaTeX und ffmpeg und läuft als einzelnes Python-Skript pro Projekt. Der Workflow folgt einem strengen Ablauf: Planen, Codieren, Rendern, Zusammenfügen, Audio (optional), Überprüfen. Besonderes Augenmerk liegt auf Konsistenz – Farbpaletten, typografische Skalierung, Animationsgeschwindigkeiten und Per-Szene-Variation sind im SKILL.md-Dokument detailliert definiert. Die Pipeline enthält auch einen Kreativmodus (SCAMPER und Annahmenumkehrung) für experimentelle Erklärungen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Moh4696/freecut/tree/main/skills/manim-video

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Manim Video-Produktionspipeline

Kreativstandard

Dies ist pädagogisches Kino. Jeder Frame lehrt. Jede Animation enthüllt Struktur.

Bevor Sie eine einzige Zeile Code schreiben, artikulieren Sie den Erzählbogen. Welches Missverständnis korrigiert dies? Was ist der „Aha-Moment“? Welche visuelle Geschichte führt den Betrachter von Verwirrung zu Verständnis? Die Anfrage des Benutzers ist ein Ausgangspunkt – interpretieren Sie sie mit pädagogischem Ehrgeiz.

Geometrie vor Algebra. Zeigen Sie zuerst die Form, dann die Gleichung. Visuelles Gedächtnis kodiert schneller als symbolisches Gedächtnis. Wenn der Betrachter das geometrische Muster vor der Formel sieht, fühlt sich die Gleichung verdient an.

Exzellenz beim ersten Rendern ist nicht verhandelbar. Die Ausgabe muss visuell klar und ästhetisch kohärent sein, ohne Überarbeitungsrunden. Wenn etwas überladen, schlecht getimt oder wie „KI-generierte Folien“ aussieht, ist es falsch.

Deckkraftschichtung lenkt die Aufmerksamkeit. Zeigen Sie niemals alles in voller Helligkeit. Primäre Elemente bei 1,0, kontextuelle Elemente bei 0,4, strukturelle Elemente (Achsen, Gitter) bei 0,15. Das Gehirn verarbeitet visuelle Auffälligkeit in Schichten.

Atempause. Jede Animation benötigt danach self.wait(). Der Betrachter braucht Zeit, um das eben Erscheinende aufzunehmen. Hetzen Sie niemals von einer Animation zur nächsten. Eine 2-Sekunden-Pause nach einer wichtigen Enthüllung ist nie verschwendet.

Kohärente visuelle Sprache. Alle Szenen teilen eine Farbpalette, konsistente Typografiegrößen und passende Animationsgeschwindigkeiten. Ein technisch korrektes Video, in dem jede Szene zufällige, unterschiedliche Farben verwendet, ist ein ästhetisches Versagen.

Voraussetzungen

Führen Sie scripts/setup.sh aus, um alle Abhängigkeiten zu überprüfen. Erforderlich: Python 3.10+, Manim Community Edition v0.20+ (pip install manim), LaTeX (texlive-full auf Linux, mactex auf macOS) und ffmpeg. Referenzdokumentation getestet mit Manim CE v0.20.1.

Modi

ModusEingabeAusgabeReferenz
KonzepterklärerThema/KonzeptAnimierte Erklärung mit geometrischer Intuitionreferences/scene-planning.md
GleichungsherleitungMath-AusdrückeSchritt-für-Schritt-animierter Beweisreferences/equations.md
AlgorithmenvisualisierungAlgorithmusbeschreibungSchritt-für-Schritt-Ausführung mit Datenstrukturenreferences/graphs-and-data.md
DatengeschichteDaten/MetrikenAnimierte Diagramme, Vergleiche, Zählerreferences/graphs-and-data.md
ArchitekturdiagrammSystembeschreibungKomponenten, die mit Verbindungen aufgebaut werdenreferences/mobjects.md
Paper-ErklärerForschungsarbeitAnimierte Hauptergebnisse und Methodenreferences/scene-planning.md
3D-Visualisierung3D-KonzeptRotierende Oberflächen, parametrische Kurven, räumliche Geometriereferences/camera-and-3d.md

Stack

Ein einzelnes Python-Skript pro Projekt. Kein Browser, kein Node.js, keine GPU erforderlich.

EbeneWerkzeugZweck
KernManim Community EditionSzenen-Rendering, Animations-Engine
MathematikLaTeX (texlive/MiKTeX)Gleichungs-Rendering über MathTex
Video-E/AffmpegSzenenzusammenfügung, Formatkonvertierung, Audio-Muxing
TTSElevenLabs / Qwen3-TTS (optional)Sprachausgabe (Voiceover)

Pipeline

PLAN --> CODE --> RENDER --> STITCH --> AUDIO (optional) --> REVIEW
  1. PLAN — Schreiben Sie plan.md mit Erzählbogen, Szenenliste, visuellen Elementen, Farbpalette, Voiceover-Skript
  2. CODE — Schreiben Sie script.py mit einer Klasse pro Szene, jede unabhängig renderbar
  3. RENDER — manim -ql script.py Scene1 Scene2 ... für Entwurf, -qh für Produktion
  4. STITCH — ffmpeg concat der Szenenclips zu final.mp4
  5. AUDIO (optional) — Fügen Sie Voiceover und/oder Hintergrundmusik via ffmpeg hinzu. Siehe references/rendering.md
  6. REVIEW — Rendern Sie Vorschaustandbilder, überprüfen Sie gegen den Plan, passen Sie an

Projektstruktur

project-name/
  plan.md                # Erzählbogen, Szenenaufteilung
  script.py              # Alle Szenen in einer Datei
  concat.txt             # ffmpeg Szenenliste
  final.mp4              # Zusammengefügte Ausgabe
  media/                 # Automatisch von Manim erstellt
    videos/script/480p15/

Kreative Richtlinien

Farbpaletten

PaletteHintergrundPrimärSekundärAkzentAnwendungsfall
Classic 3B1B#1C1C1C#58C4DD (BLAU)#83C167 (GRÜN)#FFFF00 (GELB)Allgemein Mathe/Informatik
Warm academic#2D2B55#FF6B6B#FFD93D#6BCB77Einladend
Neon tech#0A0A0A#00F5FF#FF00FF#39FF14Systeme, Architektur
Monochrome#1A1A2E#EAEAEA#888888#FFFFFFMinimalistisch

Animationsgeschwindigkeit

Kontextrun_timeself.wait() danach
Titel/Einführung erscheinen1,5s1,0s
Schlüsselgleichung enthüllen2,0s2,0s
Transformieren/Morphen1,5s1,5s
Unterstützende Beschriftung0,8s0,5s
FadeOut-Bereinigung0,5s0,3s
„Aha-Moment“-Enthüllung2,5s3,0s

Typografische Skalierung

RolleSchriftgrößeVerwendung
Titel48Szenentitel, Eröffnungstext
Überschrift36Abschnittsüberschriften innerhalb einer Szene
Fließtext30Erklärender Text
Beschriftung24Anmerkungen, Achsenbeschriftungen
Untertitel20Untertitel, Kleingedrucktes

Schriftarten

Verwenden Sie Monospace-Schriftarten für den gesamten Text. Manims Pango-Renderer erzeugt bei proportionalen Schriftarten aller Größen gebrochenes Kerning. Siehe references/visual-design.md für vollständige Empfehlungen.

MONO = "Menlo"  # einmal am Anfang der Datei definieren

Text("Fourier-Reihe", font_size=48, font=MONO, weight=BOLD)  # Titel
Text("n=1: sin(x)", font_size=20, font=MONO)                  # Beschriftungen
MathTex(r"\nabla L")                                            # Mathematik (verwendet LaTeX)

Minimale font_size=18 für Lesbarkeit.

Szeneninterne Variation

Verwenden Sie niemals identische Konfiguration für alle Szenen. Für jede Szene:

  • Andere dominante Farbe aus der Palette
  • Anderes Layout – nicht immer alles zentrieren
  • Anderer Animationseintritt – variieren Sie zwischen Write, FadeIn, GrowFromCenter, Create
  • Anderes visuelles Gewicht – manche Szenen dicht, andere spärlich

Arbeitsablauf

Schritt 1: Planen (plan.md)

Schreiben Sie vor jeglichem Code plan.md. Siehe references/scene-planning.md für die umfassende Vorlage.

Schritt 2: Codieren (script.py)

Eine Klasse pro Szene. Jede Szene ist unabhängig renderbar.

from manim import *

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

class Scene1_Einfuehrung(Scene):
    def construct(self):
        self.camera.background_color = BG
        title = Text("Warum funktioniert das?", font_size=48, color=PRIMARY, weight=BOLD, font=MONO)
        self.add_subcaption("Warum funktioniert das?", duration=2)
        self.play(Write(title), run_time=1.5)
        self.wait(1.0)
        self.play(FadeOut(title), run_time=0.5)

Wichtige Muster:

  • Untertitel bei jeder Animation: self.add_subcaption("Text", duration=N) oder subcaption="Text" in self.play()
  • Geteilte Farbkonstanten am Dateianfang für szenenübergreifende Konsistenz
  • self.camera.background_color in jeder Szene setzen
  • Saubere Ausgänge — FadeOut aller Mobjects am Szenenende: self.play(FadeOut(Group(*self.mobjects)))

Schritt 3: Rendern

manim -ql script.py Scene1_Einfuehrung Scene2_Kernkonzept  # Entwurf
manim -qh script.py Scene1_Einfuehrung Scene2_Kernkonzept  # Produktion

Schritt 4: Zusammenfügen (Stitch)

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

Schritt 5: Überprüfen (Review)

manim -ql --format=png -s script.py Scene2_Kernkonzept  # Vorschaustandbild

Kritische Implementierungshinweise

Raw Strings für LaTeX

# FALSCH: MathTex("\frac{1}{2}")
# RICHTIG:
MathTex(r"\frac{1}{2}")

buff >= 0,5 für Randtext

label.to_edge(DOWN, buff=0.5)  # niemals < 0,5

FadeOut vor dem Ersetzen von Text

self.play(ReplacementTransform(notiz1, notiz2))  # nicht Write(notiz2) darüber

Niemals Nicht-hinzugefügte Mobjects animieren

self.play(Create(kreis))  # muss zuerst hinzugefügt werden
self.play(kreis.animate.set_color(RED))  # dann animieren

Leistungsziele

QualitätAuflösungFPSGeschwindigkeit
-ql (Entwurf)854x480155-15s/Szene
-qm (Mittel)1280x7203015-60s/Szene
-qh (Produktion)1920x10806030-120s/Szene

Immer bei -ql iterieren. Nur für die endgültige Ausgabe bei -qh rendern.

Referenzen

DateiInhalt
references/animations.mdKernanimationen, Rate-Funktionen, Komposition, .animate-Syntax, Timing-Muster
references/mobjects.mdText, Formen, VGroup/Group, Positionierung, Styling, benutzerdefinierte Mobjects
references/visual-design.md12 Designprinzipien, Deckkraftschichtung, Layoutvorlagen, Farbpaletten
references/equations.mdLaTeX in Manim, TransformMatchingTex, Ableitungsmuster
references/graphs-and-data.mdAchsen, Plotten, BarChart, animierte Daten, Algorithmenvisualisierung
references/camera-and-3d.mdMovingCameraScene, ThreeDScene, 3D-Oberflächen, Kamerasteuerung
references/scene-planning.mdErzählbögen, Layoutvorlagen, Szenenübergänge, Planungsvorlage
references/rendering.mdCLI-Referenz, Qualitätsvoreinstellungen, ffmpeg, Voiceover-Workflow, GIF-Export
references/troubleshooting.mdLaTeX-Fehler, Animationsfehler, häufige Fehler, Debugging
references/animation-design-thinking.mdWann animieren vs. statisch zeigen, Zerlegung, Tempo, Synchronisation mit Erzählung
references/updaters-and-trackers.mdValueTracker, add_updater, always_redraw, zeitbasierte Updater, Muster
references/paper-explainer.mdForschungsarbeiten in Animationen umwandeln – Workflow, Vorlagen, Domänenmuster
references/decorations.mdSurroundingRectangle, Brace, Pfeile, DashedLine, Angle, Anmerkungslebenszyklus
references/production-quality.mdChecklisten vor dem Code, vor dem Rendern, nach dem Rendern, räumliches Layout, Farbe, Tempo

Kreative Abweichung (nur verwenden, wenn der Benutzer experimentelle/kreative/einzigartige Ausgabe anfordert)

Wenn der Benutzer nach kreativen, experimentellen oder unkonventionellen Erklärungsansätzen fragt, wählen Sie eine Strategie und denken Sie darüber nach, BEVOR Sie die Animation entwerfen.

  • SCAMPER – wenn der Benutzer eine neue Perspektive auf eine Standarderklärung wünscht
  • Annahmenumkehrung – wenn der Benutzer hinterfragen möchte, wie etwas normalerweise gelehrt wird

SCAMPER-Transformation

Nehmen Sie eine standardmäßige mathematische/technische Visualisierung und transformieren Sie sie:

  • Ersetzen (Substitute): Ersetzen Sie die standardmäßige visuelle Metapher (Zahlenstrahl → gewundener Pfad, Matrix → Stadtgitter)
  • Kombinieren (Combine): Verschmelzen Sie zwei Erklärungsansätze (algebraisch + geometrisch gleichzeitig)
  • Umkehren (Reverse): Leiten Sie rückwärts ab – beginnen Sie beim Ergebnis und dekonstruieren Sie zu Axiomen
  • Modifizieren (Modify): Übertreiben Sie einen Parameter, um zu zeigen, warum er wichtig ist (10-fache Lernrate, 1000-fache Stichprobengröße)
  • Eliminieren (Eliminate): Entfernen Sie jegliche Notation – erklären Sie rein durch Animation und räumliche Beziehungen

Annahmenumkehrung

  1. Listen Sie auf, was „Standard“ daran ist, wie dieses Thema visualisiert wird (von links nach rechts, 2D, diskrete Schritte, formale Notation)
  2. Wählen Sie die grundlegendste Annahme
  3. Kehren Sie sie um (von rechts nach links Herleitung, 3D-Einbettung eines 2D-Konzepts, kontinuierliches Morphen statt Schritte, Null Notation)
  4. Erkunden Sie, was die Umkehrung offenbart, was der Standardansatz verbirgt

Verwandte Skills