GPT Hand-Zeichen-Fähigkeit für Codex
Erstelle ein funktionierendes Animationsprojekt und die angeforderte MP4-Datei oder Loop. Frames sind deterministische Funktionen der Zeit, gemalt von p5.brush in Chrome und kodiert von FFmpeg. Keine Claude-Laufzeit, keine kostenpflichtige API und kein Bildgenerierungsmodell erforderlich. Clawd ist ein optionaler Built-in-Charakter; folge der vom Benutzer gewählten Besetzung und dem gewählten Stil.
Ein Projekt starten
Ermittle das Verzeichnis dieser Fähigkeit aus dem geladenen SKILL.md-Pfad. Hardcore kein Claude-Verzeichnis. Führe aus:
python "<skill-dir>/scripts/new_project.py" "<project-dir>"
Der plattformübergreifende Initialisierer kopiert template/, trennt die Demo, installiert gesperrte Abhängigkeiten mit npm ci und meldet Werkzeuge. Verwende --keep-demo nur für eine Demo oder Engine-Überprüfung, --skip-install nur für das Gerüst, oder --npm-cli /path/to/npm-cli.js, wenn Node verfügbar ist, npm aber nicht im PATH liegt. NPM_CLI_JS ist ein gleichwertiger Umgebungs-Override. Er überschreibt kein nicht leeres Projekt.
Lies die generierte ANIMATION_GUIDE.md vollständig, bevor du entwirfst. Überprüfe docs/emotions.jpg und docs/views.jpg mit einem verfügbaren Bildbetrachter (z. B. view_image über die Ausführungswerkzeuge). Die Anleitung enthält die Engine- und Charakter-API. Lies references/music-video.md für MVs oder Videos länger als etwa 20 Sekunden. Lies references/codex-runtime.md für Laufzeitprobleme, Plattformbefehle und Renderer-Einschränkungen.
Planen und bauen
Verwende die vorhandenen Entscheidungen des Benutzers. Frage nur nach fehlenden Informationen, die die Arbeit maßgeblich beeinflussen; wiederhole keine beantworteten Fragen. Sammle für ein MV die Audio- und Timing-Quelle. Ein Lyric-Video benötigt bereitgestellte Liedtexte mit LRC oder äquivalenten Zeitstempeln; erfinde keine fehlenden Liedtexte. Ein instrumentales MV benötigt kein LRC. Wenn die kreative Richtung fehlt, kann eine optionale Frage Story, Stimmung, wiederkehrende Bilder und Dinge, die vermieden werden sollten, abdecken. Wenn der Benutzer die Regie delegiert, schlage eine kohärente Interpretation vor und fahre damit fort.
Messe Musik mit python "<skill-dir>/scripts/beat_grid.py" song.mp3 --from=0 --to=30 --lrc=song.lrc (erfordert NumPy und FFmpeg). Behandle das Tempo als Schätzung mit Halb-/Doppelzeit-Mehrdeutigkeit; bereitgestelltes Audio und Zeitstempel definieren das Timing. LRC timt normalerweise Zeilen, daher ist die karaokeartige zeichenweise Füllung eine Annäherung, sofern keine Wort-für-Wort-Timings bereitgestellt werden. Gib keine erzwungene Ausrichtung an.
Schreibe STORYBOARD.md: Logline, Welt- und Palettenbogen, visuelles Motiv, emotionaler Bogen und Einstellungen mit Zeitbereichen, Aktion, Betrachterwahrnehmung und Übergängen. Teile die Richtung zur Überprüfung, wenn nützlich; wenn der Benutzer dich gebeten hat, fortzufahren, mache weiter. Das vollständige Arbeitsbeispiel ist examples/xiaozhen/STORYBOARD.md, mit den dazugehörigen Szenendateien.
Setze duration, bpm, offset und optional audio in src/config.js. Implementiere Szenen als IIFEs in src/scenes/, registriere shots([[t0, fn], ...]) und binde ihre Skripte in studio.html ein. Blockiere zuerst lesbare Posen. Verwende eine gemeinsame Besetzung, Palette und wiederkehrende Motive über die Einstellungen hinweg.
Rendern und überprüfen
Rendere vom Projektverzeichnis aus bei Bedarf ausgewählte Frames, einen kurzen Bewegungsstreifen und Details:
node render.mjs --sheet=0.1,0.8,1.6,2.4 --cols=4 --w=480 --out=out/check/poses.jpg
node render.mjs --strip=2.1:2.6 --out=out/check/motion.jpg
node render.mjs --sheet=2.3 --crop=760,420,500,400 --w=500 --out=out/check/face.jpg
Öffne die generierten Bilder. Überprüfe das Ereignis und die Lesezeit jeder Einstellung, Gesichter, Requisitenkontakt, Charaktergröße, Übergänge und Palette. Überprüfe die Bewegung um Schlüsselaktionen und Nähte. Behebe beobachtete Probleme und überprüfe dann die betroffenen Frames erneut. Ein Kontaktbogen überprüft Posen und Kontinuität; überprüfe eine kurze codierte Vorschau auf wichtiges Bewegungs-Timing. Behaupete keine visuelle Überprüfung allein aus dem Quellcode.
Verwende gemessene ms/Frame und Frame-Anzahl, um die endgültigen Kosten abzuschätzen. Diese Desktop-Umgebung ist lokal: Eine Anfrage zum Erstellen eines Videos autorisiert normalerweise das lokale Rendern. Respektiere eine explizite lokale/Cloud-Wahl; füge kein obligatorisches Standortgenehmigungsgate hinzu und verwende keinen kostenpflichtigen/Cloud-Dienst ohne Autorisierung. Wenn die Arbeit tatsächlich remote ist und der Renderort wesentlich ist, kläre dies vor einem vollständigen Render. Bewahre ein ausführbares Projekt und Vorschauen auf, wenn der Benutzer nur Quellcode oder lokale Befehle anfordert.
node render.mjs --clip --out=out/video.mp4
node render.mjs --frames --workers=4
node render.mjs --encode --audio=assets/song.mp3 --out=out/video.mp4
Verwende die gleichen --fps beim Frame-Rendering und der Kodierung. Framedateien sind fortsetzbar, aber zwischengespeicherte Frames müssen für geänderte Zeitbereiche vor dem erneuten Rendern entfernt werden. --encode verbraucht ab Null beginnende Frames; ein Teilbereich, der später beginnt, benötigt seine eigene FFmpeg-Startnummer und passenden Audio-Trim (siehe Laufzeitreferenz).
Überprüfe die codierte Dauer, Auflösung, fps und Audio mit ffprobe und überprüfe das Ergebnis. Gib die Video- und Projektpfade, gemessene Leistung und alle realen Einschränkungen zurück. Halte node_modules, Frame-Caches und temporäre Dateien aus portablen Quellarchiven heraus.
Visuelle und Engine-Invarianten
- Male mit
paint()undinkLine(); verwendeglow()für additives Licht. Flache 2D gezeichnete Schlüsselansichten, weiche Palette, kochende Tinte. Dies sind Stilstandardeinstellungen; explizite Benutzeranforderungen haben Vorrang. - Vermeide unnötigen Text; Lyric-Karaoke und angeforderte Beschriftung werden unterstützt. Lade
src/karaoke.jsnachtimeline.js, fülleLYund halte die Aktion über dem unteren Bereich. Überprüfe die tatsächliche Schriftart und chinesische Zeichen. - Jede Einstellung benötigt ein Ereignis, Ursache gefolgt von Reaktion und eine lesbare gehaltene Bedeutung. Anime Gesichter durch
emotions()und Leerlauf durchfeel(). Passe Übergänge an die Geschichte an und verbinde gegebenenfalls das Ende mit dem Anfang. - Jeder Frame ist eine reine Funktion von
t: keine akkumulierte Simulation, kein ungeseederMath.random()und keine Abhängigkeit von der Render-Reihenfolge. Verwendehash()für stabile Variation undboilSeed(key)pro unabhängigem Element. - Halte Helfer in Szenen-IIFEs, um p5-globale Namenskollisionen zu vermeiden. Schütze vor degenerierter Geometrie und NaN. Maskiere Tür-/Fensterinhalte mit Vordergrundrahmen; reduziere das Konturgewicht bei engem Zoom.
- Die Leistung hängt von Pinselfüllungen und Strichen ab. Messe einige repräsentative Frames, bevor die Auflösung erhöht wird; reduziere übermäßige Geometrie und Worker-Anzahl, wenn der GPU-Speicher knapp wird.
--soft-glist ein langsamer Fallback, keine Standardoptimierung. - Implementiere Kapitel sequenziell, es sei denn, der Benutzer fragt explizit nach Agenten. Parallele Render-Worker sind ein Renderer-Feature und erfordern keine Unteragenten.
Quelle und Lizenz: references/upstream.md. Behalte beide gebündelten MIT-Hinweise bei der Weiterverteilung der Engine oder Fähigkeit.