- 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
231 lines
7.3 KiB
Markdown
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
|