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,95 @@
|
||||
# Kopie als config/config.yaml anlegen. Secrets gehoeren in .env, nicht hierher.
|
||||
|
||||
channel:
|
||||
login: abdulive_
|
||||
userId: "" # wird beim ersten `pnpm auth` gefuellt
|
||||
language: de
|
||||
timezone: Europe/Berlin
|
||||
|
||||
bot:
|
||||
login: abdulive_bot
|
||||
|
||||
ingest:
|
||||
viewerPollSeconds: 60
|
||||
chattersPollSeconds: 300
|
||||
sessionGapMinutes: 5 # kuerzere Luecken gelten als derselbe Stream
|
||||
spike:
|
||||
windowSeconds: 15
|
||||
baselineMinutes: 10
|
||||
factor: 3
|
||||
minDelta: 4
|
||||
cooldownSeconds: 60
|
||||
armed: false # erst nach Kalibrierung auf true
|
||||
laughEmotes: [KEKW, LUL, OMEGALUL, PogChamp, Pog]
|
||||
|
||||
obs:
|
||||
url: ws://127.0.0.1:4455
|
||||
replayBufferSeconds: 90
|
||||
chapterScenes: [Gameplay, "Just Chatting", Startbildschirm]
|
||||
|
||||
clipper:
|
||||
enabled: true
|
||||
source: obs-replay # obs-replay | twitch
|
||||
alsoCreateTwitchClip: true
|
||||
maxDurationSeconds: 60
|
||||
renderWhileLive: false # true = sofort rendern, false = erst nach Streamende
|
||||
whisper:
|
||||
binary: whisper-cli # whisper.cpp, im Image enthalten
|
||||
model: ggml-small.bin
|
||||
language: de
|
||||
threads: 4
|
||||
ffmpeg:
|
||||
preset: veryfast
|
||||
crf: 20
|
||||
encoder: libx264 # keine NVIDIA-GPU da, QSV aus WSL2 unzuverlaessig
|
||||
niceness: 15 # Encoding laeuft nachrangig zum Stream
|
||||
triggers:
|
||||
chatCommand: "!clip"
|
||||
hotkeyName: SaveReplay
|
||||
onSpike: false
|
||||
|
||||
broadcaster:
|
||||
enabled: true
|
||||
mode: draft # draft | live
|
||||
delaySecondsAfterOnline: 60
|
||||
cooldownHours: 6
|
||||
platforms:
|
||||
discord: true
|
||||
bluesky: true
|
||||
mastodon: false
|
||||
instagramStoryImage: true
|
||||
|
||||
community:
|
||||
greetings:
|
||||
enabled: true
|
||||
minSecondsBetween: 20
|
||||
maxPerStream: 10
|
||||
returningAfterDays: 21
|
||||
milestones: [5, 10, 25, 50, 100]
|
||||
suppressWhileStreamerSpeaking: true
|
||||
overlayHint: true
|
||||
|
||||
raidScout:
|
||||
minViewers: 5
|
||||
maxViewers: 30
|
||||
minUptimeMinutes: 30
|
||||
maxUptimeMinutes: 300
|
||||
languages: [de]
|
||||
topN: 5
|
||||
|
||||
recap:
|
||||
enabled: true
|
||||
delayMinutesAfterOffline: 10
|
||||
minStreamMinutes: 20
|
||||
hideViewerNumbersIfWeak: true
|
||||
topChatters: 3
|
||||
topClips: 2
|
||||
|
||||
loyalty:
|
||||
enabled: false # spaetere Ausbaustufe
|
||||
overlay:
|
||||
port: 4791
|
||||
dashboard:
|
||||
port: 4792
|
||||
ingestServer:
|
||||
port: 4790
|
||||
Reference in new issue
Block a user