Files
abdulive/docs/projects/analytics.md
T
ZeasyAlexandClaude Opus 5 d09e2b945a Struktur, Doku und S0-Toolchain fuer das abdulive-Toolkit
Monorepo-Geruest fuer neun Streamer-Tools plus den Ingest-Daemon, der
unter sechs davon liegt. Enthaelt:

- docs/: Ueberblick, Architektur, Twitch-Integration, Datenmodell,
  Roadmap, Setup, Hebel-Analyse und den MVP-Plan "Clip-Knopf"
- docs/projects/: je eine Spezifikation pro Tool
- docs/decisions/: vier ADRs (TS-Monorepo, SQLite, EventSub/IRC, Docker)
- docker/: Image mit ffmpeg und whisper.cpp, abhaengigkeitsfreier
  Entrypoint mit check-env, fetch-model und calibrate
- config/layout.yaml: aus einem VOD-Screenshot eingemessener
  Facecam-Ausschnitt (440x330 oben links, Chat-Overlay ab x=1270)

Noch kein Anwendungscode - Scheibe S0 aus docs/07-mvp-plan.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VTGjd92LsDDWF3frd9FTB
2026-09-09 08:56:09 +02:00

2.7 KiB
Raw Permalink Blame History

4 — Analytics-Dashboard (apps/dashboard)

Wirkrichtung: Steuerung. Beantwortet die Frage "was funktioniert eigentlich", die Twitch selbst nicht beantwortet.

Läuft auf http://localhost:4792. Vite + Preact + uPlot, liest direkt aus SQLite. Keine Authentifizierung, weil nur lokal erreichbar.

Seiten

Stream-Zeitachse (die wichtigste)

Eine gemeinsame X-Achse (Stream-Laufzeit), darauf übereinander:

  • Viewerzahl (Linie, aus viewer_samples)
  • Chat-Nachrichten pro Minute (Balken)
  • unterschiedliche Chatter pro 5 min (Linie)
  • Marker: Kategoriewechsel, Titelwechsel, Raids rein/raus, Clips, Follows, Subs

Damit sieht man direkt: An welcher Stelle kamen Leute rein, an welcher gingen sie, und war der Chat da tot oder wach. Zusammenhang von Viewerzahl und Chat-Aktivität ist die Kernfrage — 15 Zuschauer mit stillem Chat sind weniger wert als 8 mit lebendigem.

Abgangs-Analyse

Aus viewer_samples: Ableitung über die Zeit, die stärksten Abfälle markiert und mit dem gleichzeitigen stream_segments-Eintrag und den Chat-Nachrichten der Minute davor angereichert. Antwort auf "wann gehen die Leute".

Wichtige Einschränkung, die im UI stehen muss: viewer_samples ist eine Momentaufnahme der Gesamtzahl, keine Ein-/Austrittsliste. Twitch liefert das nicht. Ein Abfall von 12 auf 8 kann vier Abgänge oder sechs Abgänge plus zwei Zugänge bedeuten. Für Chatter ist es exakt (über user_streams), für stille Zuschauer geschätzt.

Titel- und Kategorie-Performance

Aggregation über stream_segments: pro Titel/Kategorie die durchschnittliche Viewerzahl, der Nettozufluss während des Segments, Chat-Rate, gewonnene Follower pro Stunde. Sortierbar. Mit Hinweis auf die Stichprobengröße — bei drei Streams pro Titel ist jede Zahl Rauschen, und das Dashboard sagt das, statt eine Rangliste vorzutäuschen.

Chatter: neu vs. wiederkehrend

Pro Stream ein Stapelbalken: Erstchatter / wiederkehrend (1–4 Streams) / Stammgast (5+). Dazu eine Kohorten-Tabelle: Von den Erstchattern aus Stream N, wie viele waren in N+1, N+2, N+3 wieder da. Das ist die Zahl, die tatsächlich über Wachstum entscheidet.

Betriebsstatus

GET /health vom Ingest, letzte Fehler aus logs/, Größe der DB, Clip-Warteschlange.

Clip-Freigabe

Zusätzlich hostet das Dashboard die Freigabe-Ansicht für die Clip-Pipeline (siehe clip-shorts.md): Kandidatenliste mit Videovorschau, Score, Chat-Ausschnitt und den Knöpfen Übernehmen / Verwerfen.

Abnahmekriterien

  • Die Zeitachse eines abgeschlossenen Streams lädt in unter 2 s.
  • Alle Marker liegen zeitlich korrekt (Abgleich gegen das VOD).
  • Die Kohorten-Tabelle stimmt mit einer manuellen SQL-Auszählung überein.