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 Zeittauf 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.jsgeschrieben. 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.
| # | Schritt | Ergebnis |
|---|---|---|
| 0 | Preflight | alle Werkzeuge vorhanden, VoiceStudio läuft |
| 1 | Geschichte lesen, Stil auswählen | Entscheidungen getroffen, Projektordner erstellt |
| 2 | Drehbuch schreiben | vo/script.json, maximal 130 gesprochene Wörter |
| 3 | Stimme generieren | eine geprüfte WAV-Datei pro Zeile |
| 4 | Timeline erstellen | timeline.js, Filmlänge 35-45 s |
| 5 | Einstellungen planen | ein Einstellungsplan-Kommentar am Anfang von film.js |
| 6 | Film schreiben | film.js, Szene für Szene, dabei Standbilder überprüfen |
| 7 | Gesamten Film überprüfen | Kontaktbögen angesehen, Fehler behoben |
| 8 | Exportieren | das MP4 |
| 9 | Liefern | MP4 + 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:
- Stil. Es gibt zwei. Sieh dir
SK/references/characters-ink.jpgundcharacters-paper.jpgan (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/nullaus, um zu sehen, welcher verwendet wurde). Ansonsten wähle nach der Geschichte.
- 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.
- 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 inscript.jsonleicht 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}}
gapist 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.
tailist, 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):
SK/references/engine.md- jede Funktion, die du aufrufen kannst.SK/references/kit-ink.mdoderkit-paper.md- die Charaktere, Posen, Requisiten deines Stils.SK/references/recipes.js- 25 getestete Bewegungen zum Kopieren. Sieh dir auchrecipes-<stil>.jpgan.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):
- Bearbeite nur
film.js(und bei Bedarf Farben instyle.js). Bearbeite niemalsengine.jsoderindex.html. - 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; - Beginne eine Aktion 0.1-0.3 s VOR ihrem Wort, damit sie AUF dem Wort landet.
- Posen und Objekte verwenden
q(Zeit, 12 Mal pro Sekunde abgetastet: das handanimierte Gefühl). Kamera, Erschütterung und Blenden verwendent(fließend). - Nichts darf vor seinem Cue sichtbar sein. Verwende
pop(...)oderif (q < tCue) ..., damit Dinge erscheinen, wenn die Stimme sie erwähnt, nicht vorher. - Kein
Math.random(), keinDate, kein CSS-Animation, keinsetTimeout. Verwendeh(n)für Zufälligkeit. Der Film muss für dasselbetjedes Mal dasselbe Bild ergeben. - 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.
- Zeichenreihenfolge ist Tiefe: später gezeichnete Dinge sind vorne. Zuerst Hintergrund, dann entfernte Objekte, Charaktere, nahe Objekte, dann Effekte.
- 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.
- Jedes Geräusch gehört zu einem sichtbaren Ereignis und wird mit
sfx(time, name)zur gleichen Cue-Zeit wie das Ereignis deklariert. Einmusic(...)-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:
- Den Film. Sage dasselbe, was du beim mp4-Aufruf getan hast.
- 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.
- 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. - 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.