/make-video — Schritte 2–4: Von der Auswahl bis zum gemergten Release
Eingabe: Auswahl des Benutzers aus der ideas-Datei dieser Worktree („/make-video N“ + Änderungen) oder ein vom Benutzer benanntes Objekt.
Ausgabe = DoD (AGENTS.md, „Konversationspipeline“): out/<ep>/release/ – Master <ep>_en_1080x1920p60.mp4 und
publish_en.md, zwei Dateien – dem Benutzer übergeben; visuelles QA akzeptiert; alles committet; Branch in main gemergt
(video_wt.py finish); Worktree entfernt.
Qualitätsmaßstab – docs/quality.md: Kino, keine Infografik; Fakten in Worten, Spektakel im Bild; Finale max. 6 h GPU.
Nur EN, Ziel 29–29,5 s, maximal 30,0 s (docs/shorts_format.md).
Links: Prozess – docs/pipeline.md; Freigabe – docs/approval.md; Paket – docs/publish.md; Workflows –
docs/workflows.md; Bibliothek – docs/spacekit.md; Zeit – docs/timings.md; Warteschlange – docs/render_queue.md;
Agenten, Commits, Stolpersteine – AGENTS.md. Befehle in Git Bash aus dem Stammverzeichnis der eigenen Worktree; <ep> = epNNN_<slug>.
Schritt 0 – Worktree, Warteschlange, Commits
- Branch
video/epNNN…nach/next-video– darin fortfahren. Chat in der Hauptkopie ohne/next-video–python tools/video_wt.py start→ ClaudeEnterWorktreemitpath/ Codexworkdir. - Blender, TTS, Musik, Zusammenbau – nur über die Warteschlange: Aufgabe gestellt – Chat setzt Textarbeit fort.
- Nach jedem Block – Commit
type(<ep>): …mit Modell-Trailer. Ende des Zuges – sauberer Baum.
Teil A – Bis zur Freigabe
- Episode.
python tools/video_wt.py claim <slug>(slug –[a-z0-9_], ≤ 16, nach Katalogname).episodes/_template/kopieren →episodes/<ep>/, inepisode.json–id= Ordnername,languages: ["en"](Pfadeframes_dir/audio_dirnicht setzen). An das Ende der ideas-Datei:Ausgewählt: N, <Datum>, Änderungen: …, Episode: <ep>. Commitfeat(<ep>): Episode aus Variante N. - Fakten: Rechercheur + Faktenprüfer (
docs/workflows.md) →facts.md(jede Zahl mit Link, visuelle Referenzen). Commit. - Visuelles Briefing
visual_brief.md(Rolle „Regisseur“): Referenzen, erster Frame, Money Shot, Palette, Licht, Kamera und Ereignis jedes Shots, Konventionen, Budget. Kritiker „Kino/Wow“ zum Briefing → Änderungen. Commit. - Drehbuch
script_9x16.json(EN): 6–8 Segmente, Ankerat(s), 29–29,5 s (≤ 30,0 strikt), ≈ 55–70 Wörter; erster Satz – Fakten-Haken; letzter führt zum Anfang zurück (Loop).en_cap– Ziffern,|– manuelle Umbrüche (docs/pipeline.md, „Titel und Untertitel“). Kanalstimme – Kokoroaf_heart×0,98. Commit. - Szene und Shots.
system.py(reale Parameter → Bildschirm, Konventionen – im Docstring); Fehlendes – Modulespacekit/(separater Commitfeat(spacekit): …, Regressiontools/imgdiff.py).shots_9x16.pynach Briefing: 6–10 Shots à 2–5 s, jeder mit ≥ 3 Tiefenebenen, Key + Kontrolle, Halo/Bloom, Kamerabewegung, Motion Blur, Hintergrund nicht leer (docs/quality.md).episode.json(Edit, Overlaysen, Untertitel in sicheren Zonen),music_cues.json(eigene Tonart/Modus/Tempo). Übergänge – Stoß-an-Stoß, auf Ereignissen; letzter Frame = erster. Σ Frames des Schnitts ≤ 1799 bei 60 fps.python tools/check_episode.py episodes/<ep>/episode.json. Commit. - Timing-Vorschau:
python tools/render_queue.py submit preview episodes/<ep>/episode.json --with-tts, Status –status --json. Blattout/<ep>/9x16/sheet_prev.png; kein Traceback/OVERRUN, es gibt FLASH/EVENT; Cue-Liste –python tools/cues.py episodes/<ep>/episode.json --logs out/<ep>/9x16/logs. - Hero-Frames: pro Shot
submit preview … --hero --shots vN --frames F,F+1,F+2(F = bester Moment des Shots; 100 %, ohne--samples– Samples aus dem Shot-Code, wie im Finale) →out/<ep>/9x16/hero/,sheet_hero.png. Kritikern und Eigentümer – Frame F; anhand Loghero_vN.log– s/Frame und ETA (docs/timings.md). Samples und schwere Effekte inshots_9x16.pyanpassen (Commit, Hero erneut), sodass das Finale 4–6 h dauert, nicht eine Stunde. - Kritik (
docs/workflows.md): „Kino/Wow“ (Bewertung Shots 1–10, < 8 – Überarbeitung, bis zu 3 Runden), Komposition, Rhythmus/Haken, Fakten (nur 4 Blockerdocs/quality.md); optional Einzigartigkeit, Ton. Änderungen → Wiederholung 6–7. Berichte als Dateien in der Episode, Commit pro Rundefix(<ep>): Änderungen nach Kritik, Runde K. - Rohvideo komplett (
docs/approval.md, 1a): Funktiondraftin Shots + Episoden-preview_movie.pyviasubmit task. Wird nicht zusammengebaut – zur Freigabe ohne es, mit Nachricht „Rohvideo: nein“. - Freigabe: Nachricht gemäß Vorlage
docs/approval.md+ Dateien (Hero-Frames, Rohvideo). Commit des Zustands. Anhalten und auf Antwort warten. Änderungen – zurück zum erforderlichen Schritt.
Teil B – Nach „ok“: bis DoD (keine Fragen, außer Stopps aus docs/approval.md)
- Freigabe im Verlauf. Abgestimmte Cue-Liste und
publish_en.mdnachdocs/publish.mdfertig (Konventionen – als Liste). Commitchore(<ep>): zur Freigabe gerendert(Benutzeränderungen – im Body). - Finale.
python tools/render_queue.py submit final episodes/<ep>/episode.json --approved 'Zustimmung des Benutzers: Datum, Chat-Kontext'. Das Flag zeichnet die bereits erhaltene Zustimmung auf, ersetzt sie nicht. Dem Benutzer – Aufgaben-ID, PC, ETA. Worker wählt selbst PC, rendert in Portionen zu 120 Frames und führt Framecheck, TTS, Musik, Mix, build_edit, Zusammenbau, maschinelles QA und Release durch. Chat kann geschlossen werden. - Status und Fehler.
status --json(Fortschritt –cursor/steps; Frames bis Aufgabenende liegen im Snapshotsnapshot, nicht inout/<ep>/).failed– Log des Schritts im Snapshot; temporärer Systemfehler –retry JOB; Code-/Skriptänderung –cancel JOB, Änderung in Worktree, ggf. neue Freigabe, neue Aufgabe. Framecheck FAIL – RERENDER analysieren, schlechte Frames im Snapshot löschen (und auf Remote),retry JOB --rerender-shots vN.pause/resume– zwischen Portionen. Oberes Bash nicht beenden. - Visuelles QA.
needs_review= maschinelle Prüfungen und Paket fertig. PNGout/<ep>/9x16/qa_en/und Master: nicht schlechter als Hero-Frames (Rauschen, Unschärfe, Überbelichtung, Flimmern), sichere Zonen, Untertitel, Lippensynchronität, Loop. Sauber –python tools/render_queue.py accept JOB; Defekt – Änderung und neue Aufgabe. - Übergabe. Beide Dateien
out/<ep>/release/dem Benutzer (Claude – SendUserFile). Quellen während des Renderings geändert – publish aus Snapshot und Schnitt-JSON vor Commit abgleichen. - Dokumentation.
episodes/INDEX.md(Shots, Techniken, Stimme, Tonart, Haken), Episodentabelle inREADME.md, ✅ Themen indocs/channel.md, Messungen s/Frame indocs/timings.md, Lektionen – in die entsprechenden Docs. Commitdocs(<ep>): Dokumentation und Lektionen(Episoden-Code,edit_9x16_en.json,publish_en.md; ohneout/). - Merge.
python tools/video_wt.py finish– sauber → release → accept →git merge main→ check_episode und Tests → ff main →out/<ep>/wird in die Hauptkopie übertragen. Konflikt – in Worktree lösen, Commit, wiederholen. Dann Worktree verlassen (Claude –ExitWorktreekeep) und aus der Hauptkopiepython tools/video_wt.py remove epNNN; Worktree der Anwendung (start --here) nicht entfernen. Erst jetzt – „fertig“.