# 5 — VOD-Kapitel (`apps/vod-chapters`) **Wirkrichtung:** Steuerung und ein wenig Reichweite (YouTube-Zweitverwertung). ## Was aufgezeichnet wird Während des Streams sammelt der Ingest ohnehin schon: | Signal | Quelle | wird Kapitel? | |---|---|---| | Kategoriewechsel | EventSub `channel.update` | immer | | Titelwechsel | EventSub `channel.update` | wenn Kategorie gleich bleibt | | OBS-Szenenwechsel | obs-websocket | nur bei Szenen aus der Whitelist | | Stream-Marker | `POST /helix/streams/markers` | immer | | erstellter Clip | `clips` | als Kapitel-Kandidat | OBS-Szenen sind das rauschendste Signal — ein Wechsel auf "BRB" und zurück sind zwei Wechsel, die kein Kapitel sind. Deshalb Whitelist in `config/obs-scenes.yaml` plus Mindestabstand von 5 Minuten zwischen Kapiteln; kürzere Segmente werden mit dem vorherigen verschmolzen. ## Ausgabe Nach `stream.offline`: VOD über `GET /helix/videos?user_id=&type=archive&first=1` holen, Zeitstempel relativ zu `streams.started_at` umrechnen, Text erzeugen: ``` 00:00 Start & Begrüßung 00:14 Elden Ring — Malenia, Versuch 40 01:32 Pause 01:47 Elden Ring — sie ist tot 02:55 Just Chatting — Community-Fragen ``` Format wählbar: Twitch-VOD-Beschreibung, YouTube-Kapitel (identisch, muss aber bei `00:00` beginnen und mindestens drei Einträge mit je mindestens 10 s haben, sonst zeigt YouTube keine Kapitel an), Discord-Nachricht. Twitch erlaubt kein Setzen der VOD-Beschreibung über die API — der Text landet deshalb in `data/vods//chapters.txt` und wird per Push-Nachricht zugestellt, plus als Block im Recap-Post. Einfügen dauert zehn Sekunden. ## Kapitel-Titel Der Rohtitel ist der Twitch-Titel bzw. der Kategoriename. Optional (Ausbaustufe 2) eine Verdichtung aus dem Chat: die häufigsten Substantive im Segment als Zusatz. Erst sinnvoll, wenn genug Chat-Volumen da ist. ## Abnahmekriterien - Ein Testtream mit zwei Kategoriewechseln und drei Szenenwechseln erzeugt genau die erwarteten Kapitel. - Zeitstempel weichen vom VOD um weniger als 5 s ab. - Kein Kapitel unter 5 Minuten Länge.