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
| Teil | Status |
|---|---|
| Inhaltspakete | ✅ Bibel (content/bible.md) · ✅ Technik (content/tech.md) · ✅ Allgemeine Geschichte/Werbung (content/general-story.md) · ✅ Mathe/Bildung (content/education-math.md) |
| Stile | Engine 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
- Inhalt: Bibelgeschichte · Technik/Programmierung · Mathe/Bildung · Allgemeine Geschichte/Werbung
- 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.
- Format(e) (Mehrfachauswahl): 9:16 1080x1920 (TikTok/Reels/Shorts) · 16:9 1920x1080 (YouTube/Projektor) · 1:1 1080x1080 · 4:5 1080x1350.
PY shared/formats.py tablegibt die Plattformtabelle aus. - 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.
| Stufe | Regel | Engines | Grenzen |
|---|---|---|---|
| LITE | < 12 GB RAM oder < 4 CPU-Threads | A, B | Nur 720p; Toon 3D und Blender blockiert (biete Standbilder an) |
| STANDARD | dazwischen | A, B voll; C ≤ 5 s Vorschau (länger nur mit Bestätigung + Fortsetzung); D Eevee ≤ 5 s bei 720p, niedrigen Samples | 1 Render-Job; Arbeiter = Threads − 2 |
| POWER | ≥ 32 GB RAM + dedizierte GPU ≥ 6 GB VRAM | alle, Cycles auf der GPU | Arbeiter = 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
| Stil | Engine | Laden |
|---|---|---|
| Strichmännchen, Flach 2D, Storybook, Whiteboard, Moderner Vektor | A engines/py2d | styles/<style>.md, engines/py2d/README.md |
| Manim (Mathe, Algorithmen, Diagramme); Whiteboard/Moderne Vektorfarben funktionieren auch hier | B engines/manim | styles/manim.md (oder der gewählte Stil), engines/manim/README.md |
| Toon 3D | C engines/toon3d (ein Projektordner mit story.js + world.js) | styles/toon-3d.md, engines/toon3d/README.md |
| Filmisch 3D | D 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
- 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: zeigetools.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.venvdes Skills (--install, nach einem Ja). - 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 schreibenwork/words.json+work/phrases.json. - Szene: Engine A:
videos/<slug>/scene.json; Engine B: eine Manim.py-Szene, die mitfrom studio import *beginnt; Engine C:videos/<slug>/story.js+world.js; Engine D: eine Blenderscene.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). - 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. - 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: OKrendern ·ASKteile dem Benutzer mit „~X min, Y GB" und frage (biete die 5 s Vorschau an) ·REFUSEnicht genug Speicherplatz (benötigt das 2-fache der Schätzung): bitte den Benutzer, Speicherplatz freizugeben. - 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.
- 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), dannPY "$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 Rendernbrand.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 hierbranded_<fmt>. Bei einer Endcard mische das Audio mit--seconds <new length>. - Untertitel + Abschluss + QA:
PY "$SKILL_DIR/shared/captions.py" work out/<Title> --style <style> --fmt <fmt> --quality <q>(→.srt+_<fmt>.ass), dannPY "$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. - 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>/editordann... 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). - 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.