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,76 @@
|
||||
# 6 — Community-Gedächtnis (`apps/community`)
|
||||
|
||||
**Wirkrichtung:** Bindung. Bei 10 Zuschauern der Unterschied zwischen
|
||||
"Zuschauer" und "Community".
|
||||
|
||||
Läuft als Modul im `overlay-server`, nicht als eigener Prozess — es braucht
|
||||
dieselbe Chat-Verbindung und denselben WS-Kanal zum Overlay.
|
||||
|
||||
## Datenlage
|
||||
|
||||
Alles Nötige liegt bereits in `users` und `user_streams` (siehe
|
||||
[`../03-data-model.md`](../03-data-model.md)). Dieses Tool ist überwiegend
|
||||
**Auswertung und Ausgabe**, kaum neue Datenerfassung — deshalb ist es billig,
|
||||
sobald der Ingest steht.
|
||||
|
||||
## Die drei Ausgaben
|
||||
|
||||
### 1. Chat-Begrüßung
|
||||
|
||||
Ausgelöst durch die erste Nachricht eines Users im laufenden Stream:
|
||||
|
||||
| Fall | Bedingung | Beispiel |
|
||||
|---|---|---|
|
||||
| **Erstchatter** | `first-msg`-Tag oder `users.message_count = 0` | "Oh, @name schreibt zum ersten Mal — willkommen!" |
|
||||
| **Rückkehrer** | letzter Besuch > 21 Tage her | "@name, lange nicht gesehen." |
|
||||
| **Meilenstein** | `streams_chatted` in {5, 10, 25, 50, 100} | "Stream Nummer 25 für @name." |
|
||||
| **Stammgast** | `streams_chatted >= 5` | individuelle Begrüßung aus `users.greeting` |
|
||||
| sonst | — | nichts |
|
||||
|
||||
Regeln, damit es nicht nervt: höchstens eine Begrüßung alle 20 s, höchstens
|
||||
zehn pro Stream, `muted_greeting` respektiert, und **keine Begrüßung, wenn Abdu
|
||||
in den letzten 15 s selbst gesprochen hat** (der Ingest weiß über OBS bzw. über
|
||||
eine Audiopegel-Schwelle, ob gerade geredet wird) — sonst redet der Bot dem
|
||||
Streamer ins Wort.
|
||||
|
||||
### 2. Overlay-Hinweis für Abdu
|
||||
|
||||
Kleines, nur für Abdu sichtbares Panel (eigene Browser-Source in der
|
||||
Studio-Ansicht oder zweiter Monitor). Wenn jemand schreibt:
|
||||
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ maxi_2k Stream 15 · Sub 3M │
|
||||
│ zuletzt: vor 2 Tagen │
|
||||
│ Notiz: studiert Maschinenbau, │
|
||||
│ spielt selbst Elden Ring │
|
||||
│ erste Nachricht: 04.03.2026 │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Das ist der eigentliche Wert.** Nicht der Bot, der etwas schreibt, sondern
|
||||
Abdu, der weiß, mit wem er redet. Ein Bot, der "willkommen zurück" sagt, ist
|
||||
Deko; ein Streamer, der "na, wie war die Klausur" sagt, bindet Menschen.
|
||||
|
||||
### 3. Notizen
|
||||
|
||||
Chat-Command für Abdu und Mods: `!notiz <name> <text>` hängt an `users.notes` an.
|
||||
Im Dashboard editierbar. Das ist die einzige Datenquelle, die Handarbeit
|
||||
braucht, und die mit dem höchsten Nutzen pro Aufwand.
|
||||
|
||||
## Datenschutz
|
||||
|
||||
Die DB enthält personenbezogene Daten (Chatverläufe, Notizen). Sie liegt lokal,
|
||||
wird nicht geteilt und nicht in ein Repo committet (`data/` ist in `.gitignore`).
|
||||
`!vergissmich` löscht auf Wunsch alle Daten eines Users bis auf die anonyme
|
||||
Aggregatstatistik. Notizen enthalten nichts, was man der Person nicht ins
|
||||
Gesicht sagen würde.
|
||||
|
||||
## Abnahmekriterien
|
||||
|
||||
- Ein Testkonto, das zum ersten Mal schreibt, wird als Erstchatter erkannt und
|
||||
genau einmal begrüßt.
|
||||
- Nach einem Namenswechsel des Testkontos bleibt die Historie erhalten
|
||||
(Verknüpfung über `user_id`, nicht `login`).
|
||||
- Das Overlay-Panel zeigt den Hinweis innerhalb von 500 ms nach der Nachricht.
|
||||
- Zwanzig Nachrichten in fünf Sekunden erzeugen höchstens eine Begrüßung.
|
||||
Reference in new issue
Block a user