Cartoon-3D-Geschichten-Kurzfilm (three.js + Remotion)
Befehle werden vom Projektstammverzeichnis aus in Bash (nicht PowerShell) ausgeführt. references/ und templates/ sind relativ zu dieser Fertigkeit; SK = .claude/skills/cartoon-3d-short.
Fertige Kurzfilme in src/videos/ werden niemals bearbeitet. Lies sie nicht, um den Code zu lernen: references/API.md ist die Karte.
references/STYLE_BIBLE.md und references/reports/ sind Studienmaterial aus einem anderen Kanal. Kopiere niemals Skripte, Figuren oder Einstellungen von diesem Kanal und nenne ihn in einer Sprachausgabe oder Beschreibung nicht.
Regeln
- Keine Untertitel oder Beschriftungen. Nur Englisch. Ein gleichbleibender Sprachton. Witze sind recherchierte echte Fakten.
- Jede Einstellung verdeckt den Horizont hinter Gebäuden, Bäumen mit 2-3 m hohen Büschen in den Stammzwischenräumen oder einem fernen Hügel. Fülle nur das, was die Kamera sieht. Sets sind reichhaltig: dichte Menschenmengen, Ornamente, Texturen, Fahnen.
- Finaler Export ist 1080x1920 bei 30 fps, niemals
--scale. - Mischung: Sprache, freie CC0-Soundeffekte etwa 6 dB leiser, szenenbasierte Musikeinsätze (nie eine durchgehende Spur) unter der Sprache, gesamte Mischung bei -15 LUFS.
- Stehende Genehmigung für freie, urheberrechtsfreie Soundeffekte und 3D-Modelle: Überprüfe die Lizenz auf der Dateiseite, überspringe Namensnennung / nicht-kommerziell / Weitergabe unter gleichen Bedingungen, protokolliere sie in
_sfx/LICENSES.md, gib an, was du abgerufen hast und wie groß es ist. Frage vor Logins, Zahlungen, anderen Downloads oder der Ausführung eines nicht installierten Pakets. - Checkliste für Standbilder (
references/QA.md): Opus-medium-Agent beim ersten vollständigen Satz und noch einmal vor dem Rendern, deine eigenen Nachprüfungen dazwischen, dann genehmigt der Benutzer die Standbilder. Kein absoluter Wert ist eine Hürde. - Korrekturen rendern nur die geänderten Blöcke neu (
--redo), niemals das gesamte Video. - Nach jedem Schritt speichern. Zwei Stopps für den Benutzer: Skriptgenehmigung und Genehmigung der finalen Standbilder vor dem endgültigen Rendern. Ansonsten bis zur Auslieferung ohne Nachfragen arbeiten.
Pipeline
- Thema und Fakten. Eine überraschende wahre Geschichte mit einem visuellen, physikalischen Ursache-Wirkungs-Zusammenhang und einer alltäglichen Analogie. Fakten mit Quellen stehen oben in
src/videos/<name>/SCRIPT.md. - Skript. Die Länge folgt der Geschichte. Wortanzahl = Sekunden × Wörter/s, gemessen anhand eines Ein-Satz-Samples der gewählten Stimme (kein Sample: von 3 ausgehen und nach dem Take prüfen). Beats: Aufhänger (absurde Tatsache, ein Satz), Setting (Jahr, Ort, Stolz), Handlung (3-4 eskalierende Beats), Knackpunkt, trocken („Zum Glück … / Unglücklicherweise …“), Erklärung (eine Idee, alltägliche Analogie), Konsequenz, Wendung. Niemals beschreiben, was der Zuschauer bereits sieht. Nur Layout:
templates/SCRIPT_example.md. Stoppe hier, bis der Benutzer das Skript genehmigt. - Sprachaufnahme. Der Benutzer generiert den Take in
_voiceover/<name>/voice_raw.wav. Dannpython scripts/voice_trim.py _voiceover/<name>/voice_raw.wav _voiceover/<name>/voice.wavundpython scripts/words_whisper.py _voiceover/<name>/voice.wav _voiceover/<name>/words.json. Alles ist aufwords.jsongetaktet: Lies es niemals, gib es alsword@frameaus und korrigiere falsche Wörter mit einem kurzen Skript. Handle diekept pauses-Zeile (references/GOTCHAS.md„Sprache“). - Video-Ordner. Kopiere die vier Dateien aus
templates/starter/insrc/videos/<name>/, benenneShort.tsxin<Name>.tsxundStarterShort/STARTER_FRAMESdarin um, registriere die Komposition insrc/Root.tsx. Sie enthalten nur Geschichtsdaten plus eine mitEXAMPLEmarkierte 2-Einstellungs-Demo; die Engine ist insrc/shared/. Liesreferences/API.mdvor dem Bearbeiten. Wennsrc/shared/oderscripts/fehlt oder eine Datei fehlt, kopiere sie austemplates/shared/odertemplates/scripts/. - Prop-Durchsicht. Grep für jeden Beat
public/kenney/INDEX.txtund tabelliere die Auswahl insrc/videos/<name>/PROPS.md. Fehlendes Prop: Lade ein freies CC0-Paket (references/GOTCHAS.md) inpublic/kenney/<pack>/, hänge es anINDEX.txtan, füge<pack>/<model>zuKENNEYinworld.tshinzu. - Einstellungsplan in
story.ts:TOTAL= ceil(Sprachsekunden × 30), dannSHOTS,XFADE,FLASH_AT,CAMS,KICKS,DOF_V2. Visuelle Reaktionen landen 0-3 Frames vor ihrem Wort. Jedes Standbild schleicht sich an. Jede sich wiederholende Bewegung erhält eine explizite Wechselzeit. - Erstelle die Einstellungen, indem du die
EXAMPLE-Teile ersetzt. Der Haus-Look ist in die Engine integriert (references/LOOK.md); bearbeitesrc/shared/niemals für ein einzelnes Video.- Welt (
world.ts): Sets, Props, Materialien, bewegte Props inpose(). Himmel, Lichter, Stadt, Hafen, Sonne und Sichtlinien-Culling kommen von der Engine. Übergibkeep = trueanprop()für Helden-Pros. - Figuren (
cast.ts): Outfits und einstage()-Fall pro Inszenierung. Karten, Umrisse, Blinzeln und Schatten kommen von der Engine. - Komposition (
<Name>.tsx): Name undpoolShotsnur. Die Nachbearbeitungskette (Tinte, Linsenschärfe, Bloom, Tonemapping, Grading) ist in der Engine.
- Welt (
- Standbild-Prüfung, vor jedem langen Render (
references/QA.md): Mitte-Frame-Standbild jeder Einstellung, automatisierte Checks, Agenten-Check, Korrektur und Selbstcheck, zweiter Agenten-Check, Korrektur und Selbstcheck. Stoppe hier, bis der Benutzer die Standbilder genehmigt. - Tonvorbereitung (
references/SOUND.md): SFX-Ereignisse in_sfx/<name>_events.json, Musikeinsätze in_sfx/<name>_music_cues.json. - Finaler Render (
references/RENDER.md):REMOTION_TMP=C:/remotion-tmp node scripts/render_chunks.mjs <Comp> out/<name>/video.mp4 <TOTAL>. - Mischung und QA. Erstelle die Musik (
music_cues.py, siehereferences/SOUND.md), dann schreibtpython SK/templates/audio/build_mix.py _voiceover/<name>/voice.wav out/<name>/video.mp4 out/<name> _sfx/<name>_events.json [_sfx/<name>_music.wav]die Dateivideo_final.mp4. Dannpython scripts/bridge_shots.py src/videos/<name>/story.ts out/<name>/shots.jsonundpython scripts/short_qa.py out/<name>/video_final.mp4 out/<name>/qa out/<name>/shots.json --voice _voiceover/<name>/voice.wav, das mit Exitcode 0 beenden muss. Korrigiere mitrender_chunks.mjs ... --redo A-B,C-D, dann erneut mischen und QA. Benutzeranmerkungen zum finalen Video:references/QA.md„Benutzerkontrolle“. - Auslieferung. Sende
video_final.mp4(bei über 30 MB: eine kleinere Vorschau plus den Pfad), lösche die Bundle-Ordner dieses Kurzfilms inC:/remotion-tmp, aktualisiere den Speicher.
Referenzdateien
| Datei | Lies sie, wenn … |
|---|---|
references/QA.md | Standbild-Prüfung, Checklisten-Aufforderung, short_qa |
references/SOUND.md | SFX-Bibliotheken, Musikeinsätze, Mischung |
references/RENDER.md | Render-Einstellungen, Patch-Schleife, Fortsetzen |
references/API.md | vor dem Bearbeiten der Starter-Dateien: was wohin gehört, Funktionssignaturen |
references/GOTCHAS.md | Sprache, Props und Sets, Bildausschnittsfallen, dieser PC |
references/LOOK.md | Haus-Look-Werte, Kamera- und Figurenregeln |
references/LOOK_MATCH.md | nur für den ursprünglichen Referenz-Look oder einen Look-Match-Durchlauf |
references/house/GRADER_PROMPT.md | paarweise A/B, nur bei Änderungen des Looks |
Änderung der Fertigkeit selbst (Dokumentation, Starter, Engine, Skripte): Lies zuerst MAINTAINING.md.