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
This commit is contained in:
ZeasyAlexandClaude Opus 5 committed 2026-09-09 08:56:09 +02:00
commit d09e2b945a
98 files changed
+3273

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
# 3 — Raid- und Netzwerk-Tool (`apps/raid-scout`)
**Wirkrichtung:** Reichweite über Menschen statt über Algorithmen. In dieser
Kanalgröße die zuverlässigste Quelle für neue Stammzuschauer.
## Kandidaten finden
`GET /helix/streams?game_id=<aktuelle Kategorie>&first=100&language=de`,
seitenweise bis die Viewerzahl unter die Untergrenze fällt (Twitch sortiert
absteigend, also von hinten interessant). Filter:
- Viewer zwischen `min` und `max` (Default 5–30, konfigurierbar)
- Sprache `de`
- Uptime mindestens 30 min und höchstens 5 h — wer gerade erst angefangen hat,
verliert durch einen Raid nichts, wer gleich aufhört, kann nichts damit
anfangen
- nicht auf der Sperrliste (`config/raid-blocklist.yaml`)
## Bewertung
```
score = 0.35 * viewerNaehe (Ziel: aehnliche Groesse wie wir)
+ 0.25 * kategorieUeberlapp (gleiche Kategorie > gleiche Sparte)
+ 0.20 * beziehung (schon mal Kontakt gehabt? zurueckgeraidet?)
+ 0.10 * frische (lange nicht mehr geraidet)
+ 0.10 * uptimeFenster
```
`beziehung` kommt aus der `raids`-Tabelle: Wer uns geraidet hat und noch keinen
Raid zurückbekommen hat, steht ganz oben. **Das ist der eigentliche Kern des
Tools** — nicht das Finden von Fremden, sondern das Nicht-Vergessen von
Leuten, die schon Kontakt aufgenommen haben.
## Oberfläche
- **Chat-Command `!raidziel`** (nur Mods/Broadcaster): Bot postet die Top 3 mit
Login, Viewerzahl und Kategorie in den Chat.
- **Overlay-Panel**, das Abdu am Streamende einblenden kann: Top 5 als Karten,
Klick kopiert `/raid <login>` in die Zwischenablage. Bewusst **kein
automatisches Auslösen** — ein Raid ist eine soziale Geste, die einen
Menschen braucht.
- **Dashboard-Seite** mit der vollständigen Raid-Historie.
## Netzwerk-Gedächtnis
Für jeden Kanal, mit dem es je Kontakt gab:
| Feld | Quelle |
|---|---|
| Raids rein / raus, mit Datum und Viewerzahl | `channel.raid` EventSub |
| erwidert ja/nein | berechnet |
| Notizen | manuell im Dashboard |
| letzter Kontakt | berechnet |
Wöchentliche Erinnerung im Dashboard: "Diese 3 haben dich geraidet, du sie noch
nicht."
## Abnahmekriterien
- `!raidziel` liefert im laufenden Stream innerhalb von 3 s drei plausible
Kanäle in der aktuellen Kategorie.
- Ein eingehender Raid landet automatisch in `raids` mit `direction='in'`.
- Ein ausgehender Raid (manuell in Twitch ausgelöst) wird ebenfalls erfasst.
- Kanäle auf der Sperrliste tauchen nie auf.