Was macht Duo Sketch Reel (Nerd + Claude)?
Ein 3D-Sketch, in dem der Nerd in Panik gerät und Claude (der orangene Roboter) todernst antwortet. Alles ist prozedural in Blender: das Set, beide Rigs, die Acting-, Licht-, Kamera-, Monitor-, Overlay-, Musik- und Soundeffekte werden aus einer Datei pro Episode, storyboard.json, erstellt. Eine neue Episode ist Daten, kein Code. Es wird keinerlei Bild- oder Videogenerierung verwendet.
Eine Episode ist ein Ordner: <beliebig>/<YYYY-MM-DD>_<slug>/ mit storyboard.json und research.md. Die Pipeline schreibt alles andere hinein (assets/, project/, renders/, final.mp4, cover.png, qa/). Zwei fertige Episoden liegen im examples/-Verzeichnis des Repos: eine davon kopieren und bearbeiten.
Workflow (in der Reihenfolge, nichts überspringen)
- Thema (5 Min.). Ein nachvollziehbarer Dev/AI-Schmerz und EIN Tipp, den ein Entwickler noch heute anwenden kann. Der Witz dreht sich darum, was der Zuschauer mit seiner KI macht, nicht um ein Tool. Regeln und Ideen-Sammlung:
references/retention.md. - Recherche →
research.md: jede Tatsache, die auf dem Bildschirm / in der Stimme / im Untertitel erscheint, mit URL + geprüftem Datum, Primärquellen (offizielle Doku, README, Quellcode). Ein separater Abschnitt „Fiction“ für die erfundenen Geschichtselemente des Sketches (Zeiten, Zahlen, Namen). Nicht überprüfbare Angaben weglassen und dies vermerken. - Skript + Storyboard →
storyboard.json(ein Beispiel kopieren und umschreiben). Schema und Vokabular:references/storyboard.md. Ziel: 30–40 s, 10–14 Zeilen, erstes Wort ≤ 0,5 s, ein Schnitt alle 1,5–3 s, Nerd eröffnet, Claude schließt, das letzte Bild schneidet zurück auf das erste. - Kostenloser Vorentwurf (macOS):
pipeline.sh <episode> --say stills(Systemstimmen, keine Credits).renders/stills/sheet.jpgansehen (ein Bild pro Beat-Ende). Rahmen-/Overlay-Kollisionen korrigieren, erneut ausführen. Nicht auf macOS?--sayweglassen: zuerst die Takes aufnehmen oder generieren (Schritt 5), dannstillsausführen. - Stimmen. Eine Audiodatei pro Zeile unter
assets/audio/dialogue_raw/<beat id>.mp3(L01.mp3, …). Die Referenz-Episoden verwenden ElevenLabseleven_v4mit zwei Bibliotheksstimmen – Nerd = „Quinn - Soft Nerd Boy“, Claude = „Sarcastic Nigel“ – und Audio-Tags in jedem Beat-tts(z. B.[deadpan] It was ugly.). Mit dem ElevenLabs-Connector in Claude: zunächst eine Zeile schätzen (≈ 1 Credit pro Zeichen inkl. Tags), dann eine Generierung pro Zeile, jeden Take von seinercontent_urlherunterladen. Eine 11–14-zeilige Episode entspricht ≈ 700–900 Credits. Auch eigene Aufnahmen sind möglich: gleiche Dateinamen. - Echter Build + Stills:
pipeline.sh <episode> stills.project/whisper_check.txtlistet Skript vs. Gehörtes pro Zeile (Verhältnis < 0,8 = anhören). Takes sind länger als dersay-Entwurf: das Blatt erneut prüfen. - Final:
pipeline.sh <episode> final(16 Samples, 3 Worker ≈ 3 s pro Frame auf einem M-Series-Mac: ein 38 s Reel ≈ 1 h; im Hintergrund laufen lassen). Es rendertfinal.mp4, die B-Hook-Variantefinal_b.mp4,cover.pngund führtqa.pyaus →qa/report.md(muss „Blocking: none“ anzeigen).
Harte Regeln
- Charaktere: Nerd und Claude nicht umdesignen (
engine/scene/nerd.py,mascot.py). Claude hat keinen Mund: es „spricht“ mit Körperstauchung, Hüpfern, Augen und Armen. - Ein Sketch darf seine Geschichte erfinden (das ist Comedy), niemals eine Produktfunktion, Zahl, Benchmark oder ein Zitat.
- Payoffs (Stempel, Tasten, Häkchen) 0,2–0,3 s vor dem Wort platzieren, das sie illustrieren, niemals auf dem letzten Wort.
- Kostenloser Entwurf vor kostenpflichtigen Stimmen; Stills vor dem finalen Render.
Dateien
pipeline.sh <episode> [--say] [build|stills|draft|final]engine/scene/Blender-Seite:build_scene.py(Einstieg),animate.py(Acting/Licht/Kameras aus dem Storyboard),env.pySet,nerd.py,mascot.py,lights.py,tl.py(Ankerpunkte, gemeinsam mit Skripten).engine/scripts/:build_timeline.py(Takes → Timeline + Whisper-Wörter + Lipsync),make_screens.py(Monitor-Vorlagen),make_overlay.py(Hook, Untertitel, Items, Titelcard, captions.srt),make_audio.py+synth.py(Musik/Soundeffekte),master_audio.py(-14 LUFS),stills.py,draft.sh,render_final.sh,encode.sh,make_cover.py,cover_title.py,qa.py,make_textures.py.- Tools und Pfade (Umgebungsvariablen, macOS-Standardeinstellungen):
BLENDER(Blender 5.x-Binary),DUO_PYTHON(ein Python mit numpy, scipy, soundfile, pillow; Standard~/.venvs/duo-reel/bin/python),WHISPER_MODEL(whisper.cpp-Modell, Standard~/whisper-models/ggml-medium.en.bin),whisper-cliundffmpegim PATH, SchriftartenDUO_FONT_DISPLAY/DUO_FONT_MONO/DUO_FONT_SANS/DUO_FONT_EMOJI. references/storyboard.md(Schema, jede Voreinstellung),references/retention.md(Hook/Struktur/Themen),references/lessons.md(Dinge, die einmal schiefgelaufen sind).