homelab-brain/fuenfvoracht/README.md
root e607b1fba0 docs: STATE.md Updates - FuenfVorAcht Review-Schritt entfernt, Redakteur RSS-Integration, Flugpreisscanner
- fuenfvoracht/STATE.md: Review-Flow entfernt, direkt approved, neuer Changelog
- arakava-news/STATE.md: Aktualisiert
- redax-wp/STATE.md + src/app.py: Aktualisiert
- flugpreisscanner/STATE.md: Aktualisiert
- infrastructure/STATE.md: Aktualisiert
- fuenfvoracht READMEs und Kurzuebersichten hinzugefuegt

Made-with: Cursor
2026-02-27 21:24:31 +07:00

231 lines
7.3 KiB
Markdown

# FünfVorAcht
> KI-gestützter Telegram-Kanal-Poster mit Dashboard — selbst gehostet, Docker-basiert.
FünfVorAcht automatisiert die tägliche Bespielung eines Telegram-Kanals. Artikel werden per KI generiert, im Dashboard redigiert, zeitgenau eingeplant und automatisch gepostet.
---
## Was kann FünfVorAcht?
| Feature | Beschreibung |
|---------|-------------|
| ✍️ KI-Artikel | Artikel per KI generieren (OpenRouter / GPT-4o, Claude, Mistral...) |
| 📅 Zeitplanung | 15-Minuten-Zeitslots, mehrere Artikel pro Tag möglich |
| 🗓️ Redaktionskalender | 7-Tage-Übersicht mit Umplanen & Löschen direkt im Board |
| 👥 Multi-Reviewer | Mehrere Redakteure erhalten Review-Anfragen parallel |
| ✅ Bot-Review | Artikel per Telegram freigeben oder zur Bearbeitung zurückgeben |
| ⏰ Morgen-Briefing | Täglich 10:00 Uhr: Tagesplan + Ausblick 3 Tage |
| 🔔 Nachmittags-Reminder | 18:00 Uhr: Warnung wenn Artikel noch nicht freigegeben |
| 🚨 Fehler-Alarm | Sofortbenachrichtigung bei Posting-Fehlern |
| 🏷️ Markenzeichen | Wird automatisch unter jeden Beitrag angehängt |
| 📚 Prompt-Bibliothek | Mehrere KI-Stile verwaltbar (Sarkastisch, Humorvoll, Sachlich...) |
| 📊 JSON-Logging | Strukturiertes Logging aller Ereignisse |
| 🐳 Docker | Kompletter Stack per Docker Compose |
---
## Schnellstart
```bash
# 1. Repository klonen
git clone https://github.com/Orbitalo/F-nf-vor-Acht.git fuenfvoracht
cd fuenfvoracht
# 2. Konfiguration anlegen
cp .env.example .env
nano .env # Pflichtfelder ausfüllen
# 3. Stack starten
docker compose up -d --build
```
---
## Voraussetzungen
| Software | Version |
|----------|---------|
| Docker | 24+ |
| Docker Compose | 2.x |
| Telegram Bot | Via [@BotFather](https://t.me/BotFather) erstellen |
| OpenRouter Account | [openrouter.ai](https://openrouter.ai) |
---
## Konfiguration (.env)
```bash
cp .env.example .env
```
### Pflichtfelder
| Variable | Beschreibung |
|----------|-------------|
| `TELEGRAM_BOT_TOKEN` | Bot-Token von [@BotFather](https://t.me/BotFather) |
| `TELEGRAM_CHANNEL_ID` | Kanal-ID (z.B. `-1001234567890`) |
| `REVIEW_CHAT_IDS` | Chat-IDs der Redakteure (kommagetrennt) |
| `OPENROUTER_API_KEY` | API-Key von [openrouter.ai](https://openrouter.ai) |
| `AUTH_USER` | Dashboard-Benutzername |
| `AUTH_PASS` | Dashboard-Passwort |
### Optionale Felder
| Variable | Standard | Beschreibung |
|----------|---------|-------------|
| `POST_TIME` | `19:55` | Standard-Posting-Zeit (HH:MM) |
| `TIMEZONE` | `Europe/Berlin` | Zeitzone |
| `DB_PATH` | `/data/fuenfvoracht.db` | Datenbankpfad |
### Eigene Chat-ID herausfinden
Nachricht an [@userinfobot](https://t.me/userinfobot) senden — er antwortet mit der Chat-ID.
### Kanal-ID herausfinden
Den Bot zum Kanal als Admin hinzufügen, dann eine Nachricht senden und die Kanal-ID aus der Telegram API auslesen (beginnt mit `-100`).
---
## Architektur
```
┌─────────────────────────────────────────────────┐
│ Docker Stack │
│ │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ fuenfvoracht-web │ │ fuenfvoracht-bot │ │
│ │ Flask :8080 │ │ python-telegram-bot │ │
│ │ Dashboard │ │ APScheduler │ │
│ └────────┬─────────┘ └──────────┬───────────┘ │
│ │ │ │
│ └──────────┬─────────────┘ │
│ ▼ │
│ SQLite Datenbank │
│ /data/fuenfvoracht.db │
└──────────────────────┬──────────────────────────┘
┌────────┴────────┐
▼ ▼
Telegram Bot Telegram Kanal
(Review) (Posting)
```
---
## Workflow
```
1. Quelle/Thema im Dashboard eingeben
2. KI generiert Artikel (OpenRouter)
3. Redigieren + Telegram-Vorschau
4. Einplanen: Datum + 15-Min-Slot + Review-Zeit
5. Bot schickt Review an alle Redakteure
[✅ Freigeben] [✏️ Bearbeiten]
6. Scheduler postet automatisch zum geplanten Zeitpunkt
7. Markenzeichen wird automatisch angehängt
```
---
## Bot-Befehle
| Befehl | Funktion |
|--------|---------|
| `/start` | Übersicht & alle Befehle |
| `/heute` | Alle geplanten Slots des heutigen Tages |
| `/queue` | Nächste 3 Tage mit Slots |
| `/skip` | Hauptslot heute überspringen |
---
## Dashboard-Seiten
| Seite | URL | Funktion |
|-------|-----|---------|
| Studio | `/` | Artikel generieren, redigieren, einplanen |
| History | `/history` | Alle Posts der letzten 30 Tage |
| Prompts | `/prompts` | KI-Prompt Bibliothek verwalten |
| Einstellungen | `/settings` | Kanal, Reviewers, Posting-Zeit |
| Hilfe | `/hilfe` | Ausführliche Anleitung |
---
## Verzeichnisstruktur
```
fuenfvoracht/
├── docker-compose.yml ← Docker Stack Definition
├── .env.example ← Konfigurationsvorlage
├── README.md ← Diese Datei
├── .gitignore ← .env, data/, logs/ ausgeschlossen
└── src/
├── app.py ← Flask Dashboard
├── bot.py ← Telegram Bot + APScheduler
├── database.py ← SQLite Datenbankschicht
├── openrouter.py ← KI-API Client
├── logger.py ← JSON-Logging
├── requirements.txt ← Python-Abhängigkeiten
├── Dockerfile.web ← Dashboard Container
├── Dockerfile.bot ← Bot Container
└── templates/ ← HTML-Templates (Jinja2)
├── index.html ← Studio
├── history.html
├── prompts.html
├── settings.html
└── hilfe.html
```
---
## Öffentlicher Zugang via Cloudflare Tunnel
Für Zugriff ohne offene Firewall-Ports:
1. **[Cloudflare Zero Trust](https://one.dash.cloudflare.com)** → Networks → Tunnels → Create
2. Hostname: `fuenfvoracht.example.com`
3. Service: `http://localhost:8080`
4. Den `docker run cloudflare/cloudflared ...`-Befehl ausführen
---
## Bekannte Hinweise
**Tailscale + Docker DNS:** Falls der Host Tailscale verwendet, kann der Bot `api.telegram.org` nicht auflösen. Die `docker-compose.yml` enthält bereits den Fix:
```yaml
dns:
- 8.8.8.8
- 8.8.4.4
```
---
## Datensicherung
```bash
# Datenbank sichern
cp data/fuenfvoracht.db backups/fuenfvoracht_$(date +%Y%m%d).db
# Komplettes Verzeichnis sichern
tar -czf fuenfvoracht_backup_$(date +%Y%m%d).tar.gz data/ logs/ .env
```
---
## Lizenz
MIT — frei verwendbar, anpassbar und weitergabe erlaubt.
---
## Entwickelt von
[Orbitalo](https://github.com/Orbitalo) — Homelab & Automatisierungsprojekte