Communitygithub.com

munna-68/animation-video-skill

Verwandle eine Geschichte, Idee oder ein Voiceover-Skript in einen fertigen, handanimierten 2D-Cartoon-Kurzfilm (vertikal 1080x1920 mp4, etwa 35-45 s) mit Charakteranimation, einem VoiceStudio-Voiceover, eingebrannten Untertiteln, Soundeffekten und Musik sowie einer Instagram-Bildunterschrift.

Was ist animation-video-skill?

Dieses Skill ermöglicht es einem KI-Agenten, einen vollständigen animierten Kurzfilm von der Geschichte bis zum fertigen MP4 zu erstellen, ohne dass der Benutzer eingreifen muss. Es unterstützt die Plattformen Claude Code und Codex. Der Workflow ist vollständig automatisiert: Der Agent schreibt ein JavaScript-Filmfile (`film.js`), das jede Bildschirmaktion zu einem bestimmten Zeitpunkt beschreibt, und rendert es Frame für Frame in einem headless Chrome. Das Voiceover wird zuerst Zeile für Zeile generiert, sodass die visuellen Elemente perfekt mit der Sprachausgabe synchron sind. Ein bereitgestelltes Kit enthält vorgefertigte Engine-Funktionen, zwei einzigartige Kunststile (Tinte und Papier) sowie 25 getestete Animationsrezepte, um einen konsistenten, handanimierten Look zu gewährleisten. Das Skill ist ideal für die Erstellung ansprechender vertikaler Kurzfilme für soziale Medien, Erklärvideos oder Werbeinhalte mit Charakter und visuellem Flair.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/munna-68/animation-video-skill/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Animationsvideo

Du erstellst einen kurzen Zeichentrickfilm aus einer Geschichte. Der Benutzer gibt dir eine Geschichte, eine Logline, eine Szenenliste oder ein Drehbuch. Du lieferst ein fertiges MP4 und eine Instagram-Bildunterschrift. Du führst jeden Schritt selbst aus und hältst nicht an, um unterwegs um Zustimmung zu bitten.

Die Filme, die dieses Skill erstellt, sehen handanimiert aus: Charaktere, die quetschen, strecken, blinzeln und reagieren, eine Kamera, die niemals stillsteht, eine Papier-und-Tinte-Textur, und Bilder, die exakt zur Stimme passen. Sie dürfen NICHT wie eine Diashow aus statischen Bildern mit Text aussehen. Alles in diesem Skill dient dazu, dieses Ergebnis zuverlässig zu erzielen, also befolge die Schritte der Reihe nach und verwende das Kit anstatt dein eigenes System zu erfinden.

SK unten bedeutet den Ordner dieses Skills: ~/.claude/skills/animation-video.

So funktioniert es (einmal lesen)

  • Der gesamte Film ist eine JavaScript-Datei, film.js, die du schreibst. Sie beschreibt, was zu jeder Zeit t auf dem Bildschirm ist. Ein Skript rendert sie Bild für Bild in headless Chrome und ffmpeg erstellt das MP4. Es gibt keinen Videoredakteur und keine Bildgenerierung.
  • Das Voiceover wird zuerst Zeile für Zeile generiert. Seine tatsächlichen Timings werden in timeline.js geschrieben. Jeder Moment im Film wird dann relativ zur Stimme definiert (z. B. "0,2 s vor Zeile 4 Beginn"), sodass Bild und Stimme nicht auseinanderdriften können.
  • Ein Kit bietet dir die schwierigen Teile fertig an: eine Engine (Easing, Kamera, Szenen, Untertitel), zwei vollständige Kunststile mit Charakteren, Posen und Requisiten sowie 25 getestete Animationsrezepte.
  • Du überprüfst deine Arbeit, indem du Standbilder renderst und sie dir ansiehst. Das ist nicht optional. Du kannst einen Film nicht beurteilen, den du nicht angesehen hast.

Die Schritte

Erstelle die Aufgabenliste aus diesen Schritten und arbeite sie der Reihe nach ab.

#SchrittErgebnis
0Preflightalle Werkzeuge vorhanden, VoiceStudio läuft
1Geschichte lesen, Stil auswählenEntscheidungen getroffen, Projektordner erstellt
2Drehbuch schreibenvo/script.json, maximal 130 gesprochene Wörter
3Stimme generiereneine geprüfte WAV-Datei pro Zeile
4Timeline erstellentimeline.js, Filmlänge 35-45 s
5Einstellungen planenein Einstellungsplan-Kommentar am Anfang von film.js
6Film schreibenfilm.js, Szene für Szene, dabei Standbilder überprüfen
7Gesamten Film überprüfenKontaktbögen angesehen, Fehler behoben
8Exportierendas MP4
9LiefernMP4 + Drehbuch als gesprochen + Instagram-Bildunterschrift + ehrliche Notizen

Schritt 0 - Preflight

bash ~/.claude/skills/animation-video/scripts/preflight.sh

Jede Zeile muss OK sagen. Wenn VoiceStudio FEHLT, bitte den Benutzer, die VoiceStudio-App zu öffnen und zu warten; verwende niemals eine andere Stimme oder überspringe das Voiceover. Behebe alles andere mit dem Befehl, den das Skript ausgibt.

Schritt 1 - Geschichte lesen und Stil auswählen

Stelle dem Benutzer keine Fragen, es sei denn, es gibt überhaupt keine Geschichte. Entscheide diese selbst:

  1. Stil. Es gibt zwei. Sieh dir SK/references/characters-ink.jpg und characters-paper.jpg an (verwende das Lesetool für die Bilder), um sie zu sehen.
    • ink: dicke wackelige Tintenkonturen, klobige Serifen-Schilder, warmer Retro-Cartoon. Am besten für Geschichten mit einem Bösewicht, Slapstick, Läden, Straßen, physischen Gags.
    • paper: Collage aus ausgeschnittenem Papier, keine Konturen, weiche Schatten, elegante Serifen. Am besten für Geschichten über Telefone, Apps, Links, Natur, weichere oder modernere Stimmungen.
    • Wenn der Benutzer nach einem Stil gefragt hat, verwende ihn. Ansonsten, wenn der Arbeitsordner bereits eine frühere Episode hat, verwende den ANDEREN Stil (führe head -3 */style.js 2>/dev/null aus, um zu sehen, welcher verwendet wurde). Ansonsten wähle nach der Geschichte.
  2. Besetzung. Wer ist der Held (der Kleinunternehmer oder Hauptcharakter)? Wer oder was ist das Hindernis (ein Bösewicht, ein verwirrter Kunde, ein Labyrinth)? Zwei Hauptcharaktere sind völlig ausreichend.
  3. Projektordner. Ein kurzer Name aus der Geschichte, im Arbeitsordner des Benutzers.
bash ~/.claude/skills/animation-video/scripts/new_project.sh "./film-<kurzer-name>" ink    # oder paper

Dadurch wird das Projekt mit einem funktionierenden Starter film.js erstellt. Lies diese Starterdatei jetzt: sie ist kurz und zeigt die genaue Struktur, die du beibehalten wirst.

Schritt 2 - Drehbuch schreiben

Lies zuerst SK/references/story.md. Es enthält die Struktur, das Wortbudget und ausgearbeitete Beispiele. Die Regeln, die am wichtigsten sind:

  • Maximal 130 gesprochene Wörter insgesamt. Die Stimme spricht etwa 3,2 Wörter pro Sekunde, also 130 Wörter sind etwa 43 s. Wenn das Drehbuch des Benutzers länger ist, kürze es selbst, behalte seine besten Zeilen und die Reihenfolge der Geschichte. Frage nicht; teile ihm am Ende mit, was du gekürzt hast. Ein kurzer Film, der sich bewegt, ist immer besser als ein langer, der sich zieht.
  • Eine Zeile pro Beat, 5-16 Wörter jeweils, IDs l01, l02, ... Jede Zeile wird zu einem Audio-Clip und normalerweise einer visuellen Idee.
  • Schreib für das Ohr: Zahlen als Wörter ("vierzig", nicht "40"), kein Emoji, keine Symbole, Markennamen so buchstabiert, wie sie klingen ("Site-Keep" für SiteKeep).
  • Die letzte Zeile ist ein Haken, der die Zuschauer bittet, zu kommentieren (siehe Marken-Standards unten).

Schreibe es nach <project>/vo/script.json:

{"l01": "Lerne Maya kennen. Sie stellt hausgemachte Leckereien von Grund auf her.",
 "l02": "Also eröffnete sie einen Laden in einem riesigen Online-Marktplatz."}

Schritt 3 - Stimme generieren

python3 ~/.claude/skills/animation-video/scripts/voice.py "./film-<kurzer-name>"

Dies dauert etwa 20 s pro Zeile (4-5 Minuten für ein vollständiges Drehbuch): führe es mit einem 10-Minuten- Timeout aus. Wenn es zwischendurch stoppt, führe denselben Befehl erneut aus; bereits vertonte Zeilen werden behalten. Es generiert jede Zeile mit der Stimme des Benutzers (Profil 3a02464e, "ep1 D sample-locked", Englisch, Schritte 16, Geschwindigkeit 1.0, kein Instruktionstext; dies sind die Standardeinstellungen, ändere sie nicht, es sei denn, der Benutzer sagt es), hört es sich noch einmal an und gibt für jede Zeile OK oder DIFF mit dem Gehörten aus.

Lies jede DIFF-Zeile und entscheide:

  • In Ordnung: dieselben Wörter anders geschrieben ("SiteKeep" / "Site Keep", "40" / "vierzig", "zwei" / "zu", Satzzeichen).
  • Nicht in Ordnung: Ein Wort fehlt, wurde hinzugefügt oder ist ein anderes Wort ("ihre Karte" gehört als "unsere Karte"). Generiere nur diese Zeilen neu: voice.py <project> --only l05 l11. Wenn eine Zeile auch nach zwei weiteren Versuchen fehlschlägt, formuliere diese Zeile in script.json leicht um und generiere sie neu.

Versende niemals eine Zeile mit einem fehlenden, hinzugefügten oder falschen Wort.

Schritt 4 - Timeline erstellen

python3 ~/.claude/skills/animation-video/scripts/audio.py timeline "./film-<kurzer-name>"

Es gibt die Gesamtlänge sowie die Startzeit und Dauer jeder Zeile aus. Passe dann die Pausen in <project>/film.json an und führe es erneut aus:

{"lead": 0.55, "gap": 0.4, "tail": 1.6, "gaps": {"l04": 0.7, "l09": 0.9}}
  • gap ist die Standardpause nach einer Zeile. Gib einen längeren Abstand (0.6-0.9) nach einer Zeile, deren visuelle Darstellung Raum zum Ausspielen braucht: ein Gag, ein Sturz, eine große Enthüllung, die Wendung der Geschichte.
  • Verwende 0.25-0.35 zwischen Zeilen, die ein Gedanke sind.
  • tail ist, wie lange die Endkarte nach dem letzten Wort gehalten wird (1.4-1.8).
  • Ziel insgesamt: 35-45 s. Über 46 s: eine Zeile aus dem Drehbuch streichen und die Schritte 3-4 dafür wiederholen.

Wenn du später eine Zeile neu vertonst, führe audio.py timeline erneut aus. Da jeder Cue relativ zur Stimme ist, synchronisiert sich der Film von selbst neu.

Schritt 5 - Einstellungen planen

Lese den Abschnitt "Vom Drehbuch zu den Einstellungen" in SK/references/story.md. Schreibe dann den Plan als Kommentarblock am Anfang von film.js (kein separates Dokument). Eine Zeile pro Szene:

/* EINSTELLUNGSPLAN
   A  l01-l02  Straße, Tag      Maya taucht hinter ihrem Stand auf, winkt. Kamera: langsamer Zoom.
   B  l03-l04  gleiche Straße   Der Schatten des Vermieters fällt auf sie, Schild KNALLT herunter (Erschütterung, Staub). Sie springt.
   C  l05      Keller           Falltür öffnet sich, sie hängt in der Luft, fällt. Kamera folgt nach unten.
   ...
   Z  l12      Endkarte         Kreisblende. Frage + "hinterlasse einen Kommentar". Held guckt herein.
*/

Ein guter Plan hat: 5-8 Szenen; mindestens alle 6 s ein anderes Bild; einen klaren visuellen Gag oder eine Überraschung in jeder Szene; jede abstrakte Idee in etwas Physisches verwandelt (eine Gebühr wird zu einer Mautstelle, ein Algorithmus zu einer Falltür, ein verwirrender Link zu einem Dschungel); die Stimmung schlägt von Ärger in Erleichterung bei der Lösung um; und eine Endkarte.

Schritt 6 - Film schreiben

Lies vor dem Schreiben diese (sie sind kurz und sie sind der Unterschied zwischen einem guten Film und einem kaputten):

  1. SK/references/engine.md - jede Funktion, die du aufrufen kannst.
  2. SK/references/kit-ink.md oder kit-paper.md - die Charaktere, Posen, Requisiten deines Stils.
  3. SK/references/recipes.js - 25 getestete Bewegungen zum Kopieren. Sieh dir auch recipes-<stil>.jpg an.
  4. SK/references/craft.md - die Timing-Zahlen und Regeln, die es handanimiert wirken lassen.

Schreibe dann film.js in den vier Abschnitten des Starters: Einstellungen, Cue-Zeiten, Sound-Cues, Szenen.

Arbeite eine Szene nach der anderen. Schreibe Szene A, rendere zwei oder drei Standbilder daraus, sieh sie dir an, behebe sie, dann gehe zu Szene B über:

node ~/.claude/skills/animation-video/scripts/render.mjs "./film-<kurzer-name>" stills 1.2 3.5 6.0

Öffne dann <project>/check/sheet-1.jpg mit dem Lesetool. Wenn der Befehl PAGE ERROR ausgibt, hat der Film einen JavaScript-Fehler: behebe den ersten gedruckten und führe ihn erneut aus.

Die zehn Regeln von film.js (jede verhindert einen Fehler, der tatsächlich passiert ist):

  1. Bearbeite nur film.js (und bei Bedarf Farben in style.js). Bearbeite niemals engine.js oder index.html.
  2. Gib niemals eine rohe Zeit ein. Jeder Cue wird aus der Stimme aufgebaut: L('l04') (Zeileneinsatz), E('l04') (Zeilenende), wt('l04', 'drei rival') (wann eine Phrase gesprochen wird), plus oder minus einem kleinen Offset. Gib jedem einen Namen: const tSlam = L('l04') + 0.25;
  3. Beginne eine Aktion 0.1-0.3 s VOR ihrem Wort, damit sie AUF dem Wort landet.
  4. Posen und Objekte verwenden q (Zeit, 12 Mal pro Sekunde abgetastet: das handanimierte Gefühl). Kamera, Erschütterung und Blenden verwenden t (fließend).
  5. Nichts darf vor seinem Cue sichtbar sein. Verwende pop(...) oder if (q < tCue) ..., damit Dinge erscheinen, wenn die Stimme sie erwähnt, nicht vorher.
  6. Kein Math.random(), kein Date, kein CSS-Animation, kein setTimeout. Verwende h(n) für Zufälligkeit. Der Film muss für dasselbe t jedes Mal dasselbe Bild ergeben.
  7. Zeichne Hintergründe viel größer als den Bildschirm (z. B. x von -1000 bis 2080), damit Kamerabewegungen und Erschütterungen niemals eine leere Kante zeigen.
  8. Zeichenreihenfolge ist Tiefe: später gezeichnete Dinge sind vorne. Zuerst Hintergrund, dann entfernte Objekte, Charaktere, nahe Objekte, dann Effekte.
  9. Halte wichtige Dinge innerhalb von x 70-1010 und y 180-1400. Die Untertitel sitzen bei y 1420-1560 und die eigenen Schaltflächen von Instagram bedecken alles unterhalb von y 1600 und den rechten Rand.
  10. Jedes Geräusch gehört zu einem sichtbaren Ereignis und wird mit sfx(time, name) zur gleichen Cue-Zeit wie das Ereignis deklariert. Ein music(...)-Bett für den Problemteil, ein anderes für die Erleichterung.

Die Qualitätslatte. Bevor du eine Szene für fertig erklärst, muss sie all diese haben:

  • Leben in jedem Bild. Der Held blinzelt und atmet (POSE.idle(q)), etwas im Hintergrund bewegt sich (Wolke, Schwingendes Schild, schwebende Formen), und die Kamera hat mindestens einen langsamen Zoom. Ein Bild, in dem sich länger als eine Sekunde nichts bewegt, ist ein Fehler.
  • Eingänge und Ausgänge sind animiert, niemals ein einfacher Schnitt: erscheinen mit Überschwingen, fallen mit einem Aufprall, hineinhopfen, mit Antizipation wegflitzen (Rezepte 1-6).
  • Einschläge treffen auf ein Bild, gleichzeitig: Quetschen + Bildschirmerschütterung + Staub oder Explosion + ein Geräusch (Rezept 3). Dieses eine Ding tut mehr für das "Gefühl" als alles andere.
  • Charaktere handeln. Sie schauen auf das, was passiert (look), reagieren einen Tick NACHDEM es passiert (Rezept 9) und ändern Pose und Gesicht, wenn sich die Stimmung der Geschichte ändert. Lasse einen Charakter niemals für eine ganze Szene in einer Pose.
  • Ein Gag pro Szene, der die Idee physisch und ein bisschen lustig macht.
  • Lesbarer Text. Schilder und Beschriftungen sind mindestens 40 px hoch, 1-4 Wörter, hoher Kontrast, mindestens 1 s auf dem Bildschirm, niemals von einem Charakter oder den Untertiteln verdeckt.
  • Ein echter Übergang zwischen Szenen (Rezepte 19-20, oder eine schnelle Kamerafahrt innerhalb einer Welt), nicht nur ein Bild, das ein anderes ersetzt.

Schritt 7 - Gesamten Film überprüfen

node ~/.claude/skills/animation-video/scripts/render.mjs "./film-<kurzer-name>" check 36

Öffne beide Kontaktbögen (check/sheet-1.jpg, sheet-2.jpg) mit dem Lesetool. Jeder zeigt 18 Bilder in Zeitreihenfolge, von links nach rechts, von oben nach unten; die Zeiten werden vom Befehl ausgegeben. Gehe diese Liste bei jedem Bild durch und schreibe auf, was du findest, bevor du etwas behebst:

  • Text abgeschnitten, überlappend mit anderem Text oder von einem Charakter oder Requisit verdeckt
  • Untertitel bedecken etwas Wichtiges, oder ein Markenname ist geteilt oder falsch geschrieben (setze CAPTION.replace, oder bewege die Aktion nach oben)
  • Ein großer leerer Bereich (mehr als ein Drittel des Bildes mit nichts darin): zoome die Kamera hinein, oder bewege Dinge, oder füge Hintergrunddetails hinzu
  • Etwas sichtbar, bevor die Stimme es erwähnt hat, oder noch da, nachdem es weg sein sollte
  • Ein Charakter oder eine wichtige Requisite teilweise außerhalb des Bildschirms, winzig (unter 250 px groß) oder versteckt
  • Eine Hand, ein Arm oder ein Objekt geht durch etwas, vor oder hinter dem es sein sollte
  • Zwei Bilder hintereinander (2+ Sekunden auseinander), die identisch aussehen: füge Bewegung oder eine Kamerabewegung hinzu
  • Der falsche Gesichtsausdruck für diesen Moment in der Geschichte
  • Die Endkarte: Frage lesbar, Kommentaraufforderung sichtbar, nichts überlappend

Behebe, was du gefunden hast, und rendere dann Standbilder nur zu diesen Zeiten, um zu bestätigen (render.mjs <project> stills 4.2 11.8). Sieh dir einzelne Bilder in voller Größe an (check/f003.jpg), wenn ein Blatt zu klein ist, um es zu beurteilen. Mache maximal zwei vollständige Überprüfungsrunden; polieren Sie nicht ewig, aber überspringe auch nicht die Überprüfung.

Schritt 8 - Exportieren

bash ~/.claude/skills/animation-video/scripts/build.sh "./film-<kurzer-name>" "./<kurzer-name>.mp4"

Dies dauert 2-10 Minuten (Papierstil ist langsamer): führe es im Hintergrund oder mit einem 10-Minuten- Timeout aus. Es rendert jedes Bild, mischt Stimme + Soundeffekte + Musik und gibt eine Prüfung aus. Bestätige: h264 1080x1920 bei 30 fps mit aac-Audio, Dauer gleich dem Timeline-Gesamtwert, mittlere Lautstärke zwischen -16 und -19 dB. Wenn das Rendern PAGE ERROR ausgibt, behebe es und führe es erneut aus.

Schritt 9 - Liefern

Gib dem Benutzer in dieser Reihenfolge:

  1. Den Film. Sage dasselbe, was du beim mp4-Aufruf getan hast.
  2. Das Drehbuch als gesprochen. Eine Nachricht, die das Drehbuch Zeile für Zeile mit den Zeitstempeln aus der Timeline zeigt. Dies gibt dem Benutzer etwas, das er mit dem Voiceover vergleichen kann.
  3. Die Bildunterschrift. Eine Instagram-Bildunterschrift im Namen des Helden oder des Unternehmens (nicht in deinem). Sie sollte den Haken verstärken (l12), die Geschichte kurz in 1-2 Zeilen zusammenfassen und relevante Hashtags enthalten.
  4. Ehrliche Notizen. Eine kurze Liste mit allem, was du anders gemacht hast, als der Benutzer verlangt hat (gekürzte Zeilen, andere Pose, anderer Stil), und warum.

Verwandte Skills