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:
commit
d09e2b945a
98 files changed
+3273
No files matched your search
@@ -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.
|
||||
Reference in new issue
Block a user