Communitygithub.com

Oct1/hermes-skills

Erstellung von 3Blue1Brown-inspirierten Erklärvideos mit Manim CE: Mathematische Animationen, Algorithmenvisualisierungen und technische Erklärstücke.

Was ist hermes-skills?

Dieses Skillpaket ermöglicht die Erstellung von professionellen Erklärvideos im Stil von 3Blue1Brown mithilfe von Manim Community Edition. Es deckt eine breite Palette ab: von mathematischen Animationen über Algorithmenvisualisierungen bis hin zu Architekturdiagrammen und Datenstorys. Besonderer Wert wird auf eine durchdachte narrative Struktur, ästhetische Konsistenz und pädagogische Wirksamkeit gelegt. Das Skill enthält detaillierte kreative Richtlinien zu Farbpaletten, Animationsgeschwindigkeiten, Typografie und Bildkomposition sowie klare technische Anweisungen für den gesamten Produktionsworkflow – von der Planung bis zum finalen Rendering. Es unterstützt mehrere Modi (Konzepterklärer, Gleichungsherleitung, Algorithmusvisualisierung u.v.m.) und bietet umfangreiche Referenzdokumentationen für spezifische Aspekte wie Animationen, Content-Erstellung und Fehlerbehebung.

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

In Ihrer bevorzugten KI fragen

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

Dokumentation

Manim Video-Produktions-Pipeline

Wann verwenden

Verwenden, wenn Nutzer Folgendes anfordern: animierte Erklärungen, mathematische Animationen, Konzeptvisualisierungen, Algorithmus-Walkthroughs, technische Erklärstücke, 3Blue1Brown-artige Videos oder jede programmatische Animation mit geometrischem/mathematischem Inhalt. Erstellt 3Blue1Brown-artige Erklärvideos, Algorithmusvisualisierungen, Gleichungsherleitungen, Architekturdiagramme und Datenstorys mit Manim Community Edition.

Kreativitätsstandard

Dies ist Bildungskino. Jeder Frame lehrt. Jede Animation offenbart Struktur.

Bevor eine einzige Zeile Code geschrieben wird, artikuliere den narrativen Bogen. Welches Missverständnis wird korrigiert? Was ist der „Aha-Moment"? Welche visuelle Geschichte führt den Zuschauer von Verwirrung zu Verständnis? Die Anfrage des Nutzers ist ein Ausgangspunkt – interpretiere sie mit pädagogischem Ehrgeiz.

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

Exzellenz im ersten Render 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. Zeige niemals alles in voller Helligkeit. Primäre Elemente auf 1.0, kontextuelle Elemente auf 0.4, strukturelle Elemente (Achsen, Gitter) auf 0.15. Das Gehirn verarbeitet visuelle Auffälligkeit in Schichten.

Atempause. Jede Animation benötigt self.wait() danach. Der Zuschauer braucht Zeit, um das eben Erschienene zu verarbeiten. Eile nie von einer Animation zur nächsten. Eine 2-sekündige Pause nach einer Schlüsselenthüllung ist niemals verschwendet.

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

Voraussetzungen

Führe 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 unter Linux, mactex unter macOS) und ffmpeg. Referenzdokumente getestet gegen Manim CE v0.20.1.

Modi

ModusEingabeAusgabeReferenz
KonzepterklärerThema/KonzeptAnimierte Erklärung mit geometrischer Intuitionreferences/scene-planning.md
GleichungsherleitungMathematische AusdrückeSchrittweise animierter Beweisreferences/equations.md
AlgorithmusvisualisierungAlgorithmusbeschreibungSchrittweise Ausführung mit Datenstrukturenreferences/graphs-and-data.md
DatenstoryDaten/MetrikenAnimierte Diagramme, Vergleiche, Zählerreferences/graphs-and-data.md
ArchitekturdiagrammSystembeschreibungKomponenten, die sich mit Verbindungen aufbauenreferences/mobjects.md
Paper-ErklärerForschungsarbeitZentrale Ergebnisse und Methoden animiertreferences/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.

SchichtWerkzeugZweck
KernManim Community EditionSzenen-Rendering, Animations-Engine
MathematikLaTeX (texlive/MiKTeX)Gleichungsrendering via MathTex
Video I/OffmpegSzenenverknüpfung, Formatkonvertierung, Audio-Multiplexing
TTSElevenLabs / Qwen3-TTS (optional)Sprachausgabe als Voiceover

Pipeline

PLANEN --> CODIEREN --> RENDERN --> VERKNÜPFEN --> AUDIO (optional) --> ÜBERPRÜFEN
  1. PLANEN — Schreibe plan.md mit narrativem Bogen, Szenenliste, visuellen Elementen, Farbpalette, Voiceover-Skript
  2. CODIEREN — Schreibe script.py mit einer Klasse pro Szene, jede unabhängig renderbar
  3. RENDERN — manim -ql script.py Szene1 Szene2 ... für Entwurf, -qh für Produktion
  4. VERKNÜPFEN — ffmpeg concat der Szenenclips zu final.mp4
  5. AUDIO (optional) — Füge Voiceover und/oder Hintergrundmusik via ffmpeg hinzu. Siehe references/rendering.md
  6. ÜBERPRÜFEN — Rendere Vorschaustandbilder, überprüfe gegen Plan, passe an

Projektstruktur

projektname/
  plan.md                # Narrativer Bogen, Szenenaufteilung
  script.py              # Alle Szenen in einer Datei
  concat.txt             # ffmpeg Szenenliste
  final.mp4              # Verknüpfte Ausgabe
  media/                 # Automatisch generiert von Manim
    videos/script/480p15/

Kreative Richtung

Farbpaletten

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

Animationsgeschwindigkeit

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

Typografie-Skala

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

Schriftarten

Verwende Nichtproportionalschriften für jeglichen Text. Manims Pango-Renderer produziert gebrochenes Kerning mit proportionalen Schriftarten bei allen Größen. Siehe references/visual-design.md für vollständige Empfehlungen.

MONO = "Menlo"  # einmalig 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.

Szenenvariation

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

  • Andere dominante Farbe aus der Palette
  • Anderes Layout — zentriere nicht immer alles
  • Anderer Animationseintritt — variiere zwischen Write, FadeIn, GrowFromCenter, Create
  • Anderes visuelles Gewicht — einige Szenen dicht, andere spärlich

Arbeitsablauf

Schritt 1: Planen (plan.md)

Vor jeglichem Code, schreibe 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 Szene1_Einleitung(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" bei self.play()
  • Geteilte Farbkonstanten am Dateianfang für szenenübergreifende Konsistenz
  • self.camera.background_color in jeder Szene gesetzt
  • Saubere Ausgänge — FadeOut aller Mobjects am Szenenende: self.play(FadeOut(Group(*self.mobjects)))

Schritt 3: Rendern

manim -ql script.py Szene1_Einleitung Szene2_Kernkonzept  # Entwurf
manim -qh script.py Szene1_Einleitung Szene2_Kernkonzept  # Produktion

Schritt 4: Verknüpfen

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

Schritt 5: Überprüfen

manim -ql --format=png -s script.py Szene2_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 Randtexte

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

FadeOut vor Textersetzung

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

Iteriere immer mit -ql. Rendere -qh nur für die endgültige Ausgabe.

Referenzen

DateiInhalt
references/animations.mdKernanimationen, Geschwindigkeitsfunktionen, 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, Herleitungsmuster
references/graphs-and-data.mdAchsen, Plotten, BarChart, animierte Daten, Algorithmusvisualisierung
references/camera-and-3d.mdMovingCameraScene, ThreeDScene, 3D-Oberflächen, Kamerasteuerung
references/scene-planning.mdNarrative Bö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, Erzählsynchronisation
references/updaters-and-trackers.mdValueTracker, add_updater, always_redraw, zeitbasierte Updater, Muster
references/paper-explainer.mdForschungspapiere in Animationen verwandeln – Arbeitsablauf, Vorlagen, Domänenmuster
references/decorations.mdSurroundingRectangle, Brace, Pfeile, DashedLine, Winkel, Anmerkungslebenszyklus
references/production-quality.mdVor-Code-, Vor-Render-, Nach-Render-Checklisten, räumliches Layout, Farbe, Tempo

Kreative Abweichung (nur verwenden, wenn Nutzer experimentelle/kreative/einzigartige Ausgaben anfordern)

Wenn der Nutzer nach kreativen, experimentellen oder unkonventionellen Erklärungsansätzen fragt, wähle eine Strategie und durchdenke sie VOR dem Design der Animation.

  • SCAMPER — wenn der Nutzer eine neue Perspektive auf eine Standarderklärung möchte
  • Annahmeumkehrung — wenn der Nutzer herausfordern möchte, wie etwas typischerweise gelehrt wird

SCAMPER-Transformation

Nimm eine Standard-Mathematik-/Technikvisualisierung und transformiere sie:

  • Substitute: ersetze die Standard-Visualmetapher (Zahlenstrahl → gewundener Pfad, Matrix → Stadtgitter)
  • Combine: kombiniere zwei Erklärungsansätze (algebraisch + geometrisch gleichzeitig)
  • Reverse: leite rückwärts her – beginne mit dem Ergebnis und dekonstruiere bis zu den Axiomen
  • Modify: übertreibe einen Parameter, um zu zeigen, warum er wichtig ist (10x die Lernrate, 1000x die Stichprobengröße)
  • Eliminate: entferne alle Notation – erkläre rein durch Animation und räumliche Beziehungen

Annahmeumkehrung

  1. Liste auf, was „Standard" ist, wie dieses Thema visualisiert wird (links-nach-rechts, 2D, diskrete Schritte, formale Notation)
  2. Wähle die grundlegendste Annahme
  3. Kehre sie um (rechts-nach-links-Herleitung, 3D-Einbettung eines 2D-Konzepts, kontinuierliches Verwandeln statt Schritte, Null Notation)
  4. Erkunde, was die Umkehrung offenbart, was der Standardansatz verbirgt

Verwandte Skills