Communitygithub.com

blessedsaunyama/animation-studio

Verwandle eine Idee oder ein Skript in ein fertiges animiertes Video (Bibelgeschichte, Technik/Programmierung, Mathe/Bildung oder allgemeine Geschichte/Werbung) in einem gewählten Stil (Strichmännchen, Whiteboard, flach 2D, moderner Vektor, Storybook, Toon 3D, filmisch 3D) und Format (9:16, 16:9, 1:1, 4:5), nachdem überprüft wurde, dass der Computer es sicher rendern kann.

Was ist animation-studio?

animation-studio ist ein umfassendes KI-Agenten-Skill, das den gesamten Workflow von der Idee bis zum fertigen MP4-Video abdeckt. Es fungiert als Router, der je nach Benutzereingabe die passenden Inhalts-, Stil- und Engine-Dateien lädt. Der Skill unterstützt eine breite Palette an Stilen (Strichmännchen, Whiteboard, flach 2D, moderner Vektor, Storybook, Toon 3D, filmisch 3D) und Formaten (9:16, 16:9, 1:1, 4:5) sowie mehrere Render-Engines (py2d, Manim, Toon 3D, Blender). Entwickler können damit schnell animierte Erklärvideos, Werbespots, Bildungsinhalte oder sogar Bibelgeschichten erstellen – komplett mit Sprachausgabe (Piper TTS oder eigene Aufnahmen), Untertiteln, Musik, Soundeffekten und optionalem Branding. Der Skill integriert eine Hardware-Prüfung, um Render-Begrenzungen basierend auf RAM und CPU/GPU-Leistung durchzusetzen, und erzeugt Editor-Projektdateien für Kdenlive, Shotcut, DaVinci Resolve und Blender VSE.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/blessedsaunyama/animation-studio/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

animation-studio: Idee → Skript → Stimme → sicheres Rendern → MP4

Diese Datei ist ein Router. Stelle die vier großen Fragen, überprüfe die Hardware und lade nur die Dateien, die der Job benötigt: content/<pack>.md (Schreib- und Genauigkeitsregeln) + styles/<style>.md (Aussehen; sein JSON-Block ist die Voreinstellung, die die Engine liest) + engines/<engine>/README.md (wie gerendert wird). Gemeinsame Werkzeuge befinden sich in shared/.

Finde den Skill-Ordner (SKILL_DIR) = der Ordner, der diese Datei enthält. Claude Code zeigt ihn als Basisverzeichnis des Skills an; andere Agenten: der Ordner der SKILL.md, den du lesen solltest. Rufe Werkzeuge immer als "$SKILL_DIR/shared/..." auf (in Anführungszeichen, da Pfade oft Leerzeichen enthalten). Finde ein Python 3.10+ (python3, python oder py -3) und nenne es PY. Nach setup_check.py --install verwende das venv-Python, das ausgegeben wird.

Halte den Benutzer mit einer Aufgabenliste auf dem Laufenden. Schreibe jede Ausgabedatei nach videos/<slug>/ im Arbeitsordner des Benutzers (slug = kurzer, kleingeschriebener Name mit Bindestrichen). Erkläre in einfacher Sprache.

Was in dieser Version funktioniert

TeilStatus
Inhaltspakete✅ Bibel (content/bible.md) · ✅ Technik (content/tech.md) · ✅ Allgemeine Geschichte/Werbung (content/general-story.md) · ✅ Mathe/Bildung (content/education-math.md)
StileEngine A: ✅ Strichmännchen · ✅ Flach 2D · ✅ Storybook · ✅ Whiteboard · ✅ Moderner Vektor — Engine B: ✅ Manim (+ Whiteboard / Moderne Vektorfarben) — Engine C: ✅ Toon 3D — Engine D: ✅ Filmisch 3D
Engines✅ A py2d (Python 2D) · ✅ B Manim (LaTeX optional) · ✅ C Toon 3D (langsam: stufenbegrenzt) · ✅ D Blender (Eevee-Vorschauen, Cycles-Endprodukte auf POWER)
Formate✅ 9:16 · ✅ 16:9 · ✅ 1:1 · ✅ 4:5
Untertitel✅ .srt immer + gestyltes Einbrennen mit Worthervorhebung (shared/captions.py)
Stimme✅ Aufnahme des Benutzers · ✅ Piper TTS (shared/voice.py, kostenlos, offline)
Musik/SFX✅ synthetisiert (shared/sound.py) · ✅ Eigene lizenzierte Musikdatei des Benutzers
Editor-Projekte✅ Kdenlive · ✅ Shotcut · ✅ DaVinci Resolve (FCPXML) · ✅ Blender VSE · 🧪 OpenShot (experimentell) · ✅ Editor-Paket (CapCut, jeder Editor)
Brand-Kit✅ Gespeicherte Brands (Benutzerordner), Wasserzeichen, Lower Third, Brand-Endcard, Brand-Farben für jeden Stil (shared/brand.py, docs/branding.md)
Software-Installationen✅ Ein verifiziertes Register (shared/tools.yaml) mit Befehlen für Windows, macOS und jede Linux-Familie; installiert nie ohne ein Ja

Wenn der Benutzer einen 🚧 Punkt wählt, sage dies klar, biete die nächstgelegene ✅ Option an und liefere trotzdem das Skriptpaket.

Stufe 1: Aufnahme (AskUserQuestion, max. 4 Fragen pro Aufruf; überspringe bereits Beantwortetes)

Aufruf 1

  1. Inhalt: Bibelgeschichte · Technik/Programmierung · Mathe/Bildung · Allgemeine Geschichte/Werbung
  2. Stil: Biete zuerst den Standard für den Inhalt an (Bibel → Storybook · Technik → Moderner Vektor · Mathe → Manim · Allgemein → Flach 2D), dann 2–3 andere. Erwähne Strichmännchen für schnelle, leichte Stücke.
  3. Format(e) (Mehrfachauswahl): 9:16 1080x1920 (TikTok/Reels/Shorts) · 16:9 1920x1080 (YouTube/Projektor) · 1:1 1080x1080 · 4:5 1080x1350. PY shared/formats.py table gibt die Plattformtabelle aus.
  4. Qualität: Vorschau (schnell, 720p) · Final (1080p). Empfehle zuerst eine 5-Sekunden-Vorschau.

Aufruf 2 (nur was zutrifft) 0. Branding? Keins · Gespeicherte Brand verwenden (Liste von PY "$SKILL_DIR/shared/brand.py" list) · Neue Brand erstellen. Neu erstellen: Frage jedes Feld EINES nach dem anderen, alle optional (Name, Slogan, Webseite, Logodatei, Telefone, WhatsApp, E-Mails, Social-Media, Farben, OFL-Schriftart, CTA) und speichere jedes mit brand.py set (es validiert Telefon-/E-Mail-/URL-/Farbformate); Logo via brand.py logo, Schriftart via brand.py font. Erfinde niemals Kontaktdaten: nur was der Benutzer angibt (oder von seiner eigenen Website bestätigt). Dann die Optionen mit Standardwerten aus docs/branding.md: Wasserzeichen (Werbung/Promo AN; Bibel, Technik und Mathe AUS), Ecke/Größe/Deckkraft/Logo oder Logo+Name · Lower Third (wann, wie lange) · Endcard mit CTA + Kontakten (Werbung/Promo AN) und deren Länge · Den Stil mit den Brand-Farben einfärben (ja/nein). 5. Thema/Geschichte und Länge (30 s · 60 s · 90 s · 2–3 min; andere Längen via „Andere"). Inhaltspakete fügen eigene hinzu (Bibel: Zielgruppe). 6. Stimme: Meine eigene Aufnahme (Standard) · Piper TTS (kostenlos, offline; Standardstimme en_US-ljspeech-medium, Public-Domain-Daten). Piper benötigt eine einmalige Installation (setup_check.py --tts --install) und einen Sprachdownload (voice.py --download, ~60 MB): frage zuerst. 7. Untertitel eingebrannt? Empfehle Ja für 9:16 und 1:1 (die meisten schauen stumm), Nein für 16:9. Eine .srt-Datei wird immer erstellt. 8. Endcard „Erstellt mit animation-studio"? Standardmäßig aus; nur auf Wunsch. Niemals ein Wasserzeichen hinzufügen. 9. Ausgabe: Fertiges MP4 · Projektdatei für einen Editor · Beides.

Editor-Auswahl (nur wenn die Ausgabe eine Projektdatei beinhaltet): Führe PY "$SKILL_DIR/shared/tools.py" status --kind editor aus und zeige die GESAMTE nummerierte Liste (✅ installiert + Version · ❌ nicht installiert · ⚠️ hier nicht unterstützt, z. B. Desktop-Editoren auf einem Headless-Server). Der Benutzer wählt genau einen aus (AskUserQuestion: bis zu 4 Optionen mit installierten Editoren zuerst; der Rest kann unter „Andere" eingegeben werden). Wenn die Auswahl ❌ ist, zeige PY "$SKILL_DIR/shared/tools.py" flow <editor> wortwörtlich (was es ist, der Installationsbefehl für DIESES BS/Distribution/Shell, der offizielle Link) und frage: Jetzt installieren (ich führe es aus) · Ich installiere es selbst und sage dann „erledigt" · Einen anderen Editor wählen · Überspringen, gib mir MP4 + Editor-Paket. „Jetzt installieren" → tools.py install <editor> --yes (sage zuerst, ob Windows eine Berechtigungsabfrage anzeigt oder ein Schritt sudo benötigt; sudo-Schritte werden dem Benutzer als ! sudo ... übergeben). Nach jeder Installation oder „erledigt": führe status erneut aus, bestätige ✅, fahre dort fort, wo du aufgehört hast. CapCut und nicht unterstützte Editoren erhalten das Editor-Paket. Details: docs/editors.md.

Zeichne die Antworten in videos/<slug>/brief.md auf.

Stufe 2: Hardware-Prüfung (vor jedem Rendern; niemals überspringen)

Führe PY "$SKILL_DIR/shared/hwcheck.py" aus und zeige seine Tabelle und Stufe in einer kurzen Nachricht. Es speichert auch das Systemprofil (BS + Version, WSL, Apple Silicon, Linux-Distribution und -Familie, Paketmanager, Shell, Anzeige), das jeder spätere Schritt liest. Jeder Installationsbefehl, den du zeigst oder ausführst, stammt von PY "$SKILL_DIR/shared/tools.py" cmd <tool> (angepasst an dieses BS, Distribution und Shell); niemals einen aus dem Gedächtnis eingeben. Keine Anzeige (Headless) → nur Rendern: keine Editor-Apps.

StufeRegelEnginesGrenzen
LITE< 12 GB RAM oder < 4 CPU-ThreadsA, BNur 720p; Toon 3D und Blender blockiert (biete Standbilder an)
STANDARDdazwischenA, B voll; C ≤ 5 s Vorschau (länger nur mit Bestätigung + Fortsetzung); D Eevee ≤ 5 s bei 720p, niedrigen Samples1 Render-Job; Arbeiter = Threads − 2
POWER≥ 32 GB RAM + dedizierte GPU ≥ 6 GB VRAMalle, Cycles auf der GPUArbeiter = Threads − 1
Wenn das Notebook mit Akku läuft, warne vor jedem Rendern, das länger als eine Minute dauert. Wenn der freie RAM unter 25 % liegt, bitte den Benutzer, große Apps zu schließen.

Stufe 3: Engine auswählen (Stil → Engine), dann Dateien laden

StilEngineLaden
Strichmännchen, Flach 2D, Storybook, Whiteboard, Moderner VektorA engines/py2dstyles/<style>.md, engines/py2d/README.md
Manim (Mathe, Algorithmen, Diagramme); Whiteboard/Moderne Vektorfarben funktionieren auch hierB engines/manimstyles/manim.md (oder der gewählte Stil), engines/manim/README.md
Toon 3DC engines/toon3d (ein Projektordner mit story.js + world.js)styles/toon-3d.md, engines/toon3d/README.md
Filmisch 3DD engines/blender (scene.json, Z nach oben)styles/cinematic-3d.md, engines/blender/README.md
Wenn die Stufe die Engine blockiert, erkläre warum und biete an: die gleiche Geschichte in einem Engine-A-Stil oder nur ein paar Standbilder. Der Benutzer kann eine Grenze nur nach einer klaren Warnung überschreiben („Dies könnte Ihren Computer einfrieren oder überhitzen; speichern Sie zuerst Ihre Arbeit").

Lade dann content/<pack>.md und folge seinen Recherche- und Schreibphasen.

Stufe 4: Skriptpaket (Inhaltspaket-Regeln), dann STOPP

Jedes Paket liefert: den Erzähltext in einem kopierbaren Block (≈ 3,7 Wörter/s, sofern das Paket nichts anderes angibt) mit Wortanzahl und Länge → script.txt; eine Szenenliste → shotlist.md; Paket-Extras (Bibel: Treuetabelle, Studiennotizen, Beschreibung); und Quellen am Ende. Erfinde niemals Verse, Zitate, APIs, Flags, Versionen oder Fakten: rufe sie ab oder führe sie aus, andernfalls markiere sie als UNVERIFIZIERT. Übergib dann die Sprachaufnahme (Aufnahme des Benutzers: mp3/wav, keine Musik) und warte auf das Audio. Wenn der Benutzer nur das Skript wollte, höre hier auf.

Stufe 5: Produktion

  1. Einrichtung: PY "$SKILL_DIR/shared/setup_check.py" --engine <engine> → ✅/❌ Tabelle. Ein fehlendes Werkzeug (Blender, Manim, Node, LaTeX, Inkscape...) verwendet den gleichen Ablauf wie Editoren: zeige tools.py flow <tool> --for engine, dann Jetzt installieren · Ich installiere es selbst und sage dann „erledigt" · Einen anderen Stil wählen · Überspringen (nur Skript, Szenenliste und Referenzen); nach erneuter Überprüfung. Python-Pakete gehen nur in das eigene .venv des Skills (--install, nach einem Ja).
  2. Stimme + Timing. Piper: PY "$SKILL_DIR/shared/voice.py" script.txt voice.wav --timing work --speed 0.85 (genaue Phrasenzeiten, kein Raten). Aufnahme des Benutzers: PY "$SKILL_DIR/shared/timing.py" voice.mp3 script.txt --out work. Beide schreiben work/words.json + work/phrases.json.
  3. Szene: Engine A: videos/<slug>/scene.json; Engine B: eine Manim .py-Szene, die mit from studio import * beginnt; Engine C: videos/<slug>/story.js + world.js; Engine D: eine Blender scene.json (Formate in den Engine-READmes). Eine Aufnahme pro Phrase; halte Gesichter, Text und wichtige Requisiten innerhalb der Sicherheitszone jedes gewählten Formats (shared/formats.md).
  4. Aussehen prüfen: Rendere 3-6 Standbilder pro Format (--frames 0,60,...), erstelle ein Kontaktblatt (PY "$SKILL_DIR/shared/sheet.py" sheet.jpg <dirs> --safe <fmt>), zeige es und überprüfe es gegen die Regeln des Inhaltspakets (Bibel: Ehrfurcht + Gewalt). Korrigiere vor dem Rendern.
  5. Schätzung: PY "$SKILL_DIR/shared/estimate.py" --engine <engine> scene.json --fmt <fmts> --quality <q> (Manim: --engine manim scene.py --name SceneName --timing work/phrases.json; Toon 3D: --engine toon3d <projektordner>; Blender: --engine blender scene.json) → DECISION: OK rendern · ASK teile dem Benutzer mit „~X min, Y GB" und frage (biete die 5 s Vorschau an) · REFUSE nicht genug Speicherplatz (benötigt das 2-fache der Schätzung): bitte den Benutzer, Speicherplatz freizugeben.
  6. Rendere ein Format nach dem anderen (niemals zwei Jobs gleichzeitig). Lange Render läufen im Hintergrund; die Engine läuft mit niedriger Priorität, setzt bei erneuter Ausführung ab dem letzten gespeicherten Frame fort und pausiert sich selbst (Exit-Code 4), wenn der freie RAM unter 15 % fällt. Sage dem Benutzer, dass er weiterarbeiten kann.
  7. Audio: Musik PY "$SKILL_DIR/shared/sound.py" music music.wav --seconds <videolänge> --mood warm|calm|tense|tech|playful, SFX ... sfx sfx.wav --seconds <len> --cues cues.json (pop, whoosh, type, chime, success, swell, rain, soft thunder), dann PY "$SKILL_DIR/shared/mix.py" voice.wav music.wav sfx.wav --music-db -12 --sfx-db -10 --seconds <len> (Musik nie lauter als −6 dB unter der Stimme; −9 bis −12 für sprachlastige oder ehrfürchtige Videos). Eine vom Benutzer bereitgestellte Musikdatei ersetzt music.wav: erinnere sie einmal daran, dass sie die Rechte besitzen müssen. 7b. Brand (falls gewählt): vor dem Rendern neu einfärben (brand.py recolor <brand> --style <style> --out style_<brand>.md, verwende es als Szenenstil); nach dem Rendern brand.py apply <brand> frames_<fmt> branded_<fmt> --fmt <fmt> [--watermark tr,9,90,logo] [--lower-third a,b] [--end-card 2.5 --cta "..."] [--captions] und verwende ab hier branded_<fmt>. Bei einer Endcard mische das Audio mit --seconds <new length>.
  8. Untertitel + Abschluss + QA: PY "$SKILL_DIR/shared/captions.py" work out/<Title> --style <style> --fmt <fmt> --quality <q> (→ .srt + _<fmt>.ass), dann PY "$SKILL_DIR/shared/finish.py" frames_<fmt> out/<Title>_<fmt>.mp4 --audio mix.wav --quality <q> [--ass out/<Title>_<fmt>.ass] --srt out/<Title>.srt [--end-card nur wenn gewählt]. Überprüfe die QA-Zeilen (schwarze/stillstehende Spannen, etwa −14 LUFS) und sieh dir das _qa.jpg-Blatt an.
  9. Editor-Projekt (falls gewählt): PY "$SKILL_DIR/shared/editors.py" prepare --frames frames_<fmt> --shots "<f0>-<f1>:<name>,..." --final out/<Title>_<fmt>.mp4 --voice voice.wav --music music.wav --sfx sfx.wav --srt out/<Title>.srt --out videos/<slug>/editor dann ... export videos/<slug>/editor/timeline.json --editor <kdenlive|shotcut|openshot|resolve|blender-vse|pack>. Zeige seine Prüftabelle (Timing muss mit dem MP4 übereinstimmen; Kdenlive/Shotcut erhalten auch einen 2 s Melt-Render). Sage dem Benutzer, wie er es öffnet (docs/tools/.md).
  10. Liefere das/die MP4(s), die .srt, das Editor-Projekt (falls vorhanden) und eine Zeile pro Aufnahme, die beschreibt, was sie zeigt. Optionale Endcard nur, wenn der Benutzer zugestimmt hat.

Sicherheitsregeln (immer)

  • Starte kein Rendern ohne Stufe 2 und Schritt 5 (Schätzung). Biete immer „Zuerst 5 s Vorschau" an.
  • Respektiere die Stufengrenzen; Überschreibungen nur nach einer klaren Warnung und einem Ja.
  • Ein schwerer Job gleichzeitig. Lösche oder überschreibe niemals die Dateien des Benutzers ohne zu fragen (erneutes Rendern in einen vorhandenen Frames-Ordner setzt fort; --force überschreibt, also frage).
  • Wenn ein Werkzeug fehlt oder der Benutzer Installationen ablehnt, liefere trotzdem das Skript, die Szenenliste und Referenzen.

Credits und Lizenzen

Code: MIT (siehe LICENSE). Gebündelter Drittanbieter-Code ist in THIRD_PARTY_NOTICES.md aufgeführt. Das Skill enthält keine Schriftarten, Musik oder Bilder: es verwendet Systemschriftarten und synthetisierten Sound. Die Videos der Benutzer gehören ihnen: kein erzwungenes Wasserzeichen; die Endcard ist optional.

Verwandte Skills