homelab-brain/redakteur/STATE.md
root 3ce2304e41 fuenfvoracht: Board-Interaktivität + Redakteur Sprint-Plan
FünfVorAcht:
- Redaktionsplan zeigt jetzt mehrere Artikel pro Tag
- Umplanen-Button (Inline-Panel mit Slot-Prüfung, 15-Min-Raster)
- Löschen-Button mit Sicherheitsabfrage
- STATE.md aktualisiert (Changelog 26.02.2026)

Redakteur:
- STATE.md mit vollständigem Sprint-Plan angelegt
- Übernommene Komponenten aus FünfVorAcht dokumentiert
- 4 Sprints: Infrastruktur → WP-Anbindung → Editor → Polish

Made-with: Cursor
2026-02-27 06:38:44 +07:00

171 lines
5.5 KiB
Markdown

# STATE: Redakteur
**Stand: 26.02.2026**
---
## Status
🗓️ **In Planung — Umsetzung ab sofort**
---
## Konzept
KI-gestützter WordPress-Artikel-Generator mit Dashboard.
Eigenständiges System, unabhängig von FünfVorAcht (CT 112).
Basis: ~70% Code-Übernahme aus FünfVorAcht, angepasst für WordPress statt Telegram-Kanal.
---
## Geplante Infrastruktur
| CT | Dienst | Host | IP geplant | Status |
|----|--------|------|-----------|--------|
| 113 | Redakteur | pve-hetzner | 10.10.10.113 | ⏳ Noch nicht erstellt |
- **Stack:** Python/Flask + Docker (wie CT 112)
- **Dashboard:** `https://redakteur.orbitalo.net` (Cloudflare Tunnel)
- **Lokal:** `http://[Tailscale-IP]:8080`
- **Repo:** `git.orbitalo.net/orbitalo/redakteur`
- **Ziel-WordPress:** CT 101 (arakava-news-2.orbitalo.net)
---
## Was aus FünfVorAcht übernommen wird
### Direkt kopieren (0 Änderungen)
| Datei | Beschreibung |
|-------|-------------|
| `logger.py` | Strukturiertes JSON-Logging |
| `openrouter.py` | OpenRouter API-Wrapper |
| `Dockerfile.web` | Tailwind self-hosted, Gunicorn |
| `requirements-web.txt` | Flask, APScheduler, pytz, ... |
### Stark übernehmen, leicht anpassen
| Datei | Was übernommen wird | Was sich ändert |
|-------|---------------------|-----------------|
| `database.py` | articles, settings, reviewers, prompts | Neue Felder: wp_post_id, category, featured_image, seo_* |
| `app.py` | Auth, Settings, Prompt-Verwaltung, Scheduling-Logik | WordPress REST API Routen statt Bot-Routen |
| `settings.html` | Reviewer-Management, API-Key | WP URL + Application Password |
| `prompts.html` | Prompt-Editor | Neue Variablen: Ton, SEO, Kategorie |
| `history.html` | Post-Historie | Spalte WP-URL statt Telegram-ID |
| `hilfe.html` | Struktur + Layout | Neue Inhalte für WP-Workflow |
### Komplett neu bauen
| Was | Warum neu |
|-----|-----------|
| `templates/index.html` | Zwei-Spalten-Editor, Medien-Manager, WP-Vorschau |
| `wordpress.py` | WordPress REST API Client (Artikel, Kategorien, Medien) |
| Telegram-Notifier | Nur Post-Bestätigung nach Veröffentlichung, kein Bot-Scheduler |
---
## Funktionsumfang
### Dashboard
| Feature | Status |
|---------|--------|
| KI-Artikel generieren (OpenRouter) | ✅ übernommen |
| Prompt-System (anpassbar) | ✅ übernommen |
| Zwei-Spalten-Editor: Markdown links, WP-Vorschau rechts | 🆕 neu |
| Ton wählbar: Informativ / Meinungsstark / Reportage | 🆕 neu |
| SEO automatisch mitgeneriert (Meta-Title, Description, Keyword) | 🆕 neu |
| Featured Image: og:image aus Quell-URL oder manuell | 🆕 neu |
| YouTube: als Hero oder im Text einbindbar | 🆕 neu |
| WP-Kategorien zuweisbar | 🆕 neu |
| Kalender-Ansicht (Nächste 7 Tage, mehrere Slots) | ✅ übernommen |
| Umplanen / Löschen im Board | ✅ übernommen |
| Redakteure-Verwaltung (Telegram-Benachrichtigung) | ✅ übernommen |
| Strukturiertes JSON-Logging | ✅ übernommen |
| Fehler-Alarm per Telegram | ✅ übernommen |
| Anleitung (/hilfe) | ✅ übernommen |
### Veröffentlichung
| Option | Details |
|--------|---------|
| Sofort | POST an WordPress REST API → direkt live |
| Entwurf | Speichern als WP-Entwurf, kein Publish |
| Geplant | Datum + Uhrzeit → WP scheduled post oder lokaler Scheduler |
### Telegram-Benachrichtigung (nach Veröffentlichung)
- Kein Freigabe-Workflow wie bei FünfVorAcht
- Nur Bestätigungs-Ping: "✅ Artikel veröffentlicht: [Titel] → [URL]"
---
## WordPress REST API
- **Endpoint:** `https://arakava-news-2.orbitalo.net/wp-json/wp/v2/`
- **Auth:** Application Password (in Settings-UI konfigurierbar)
- **Operationen:**
- Artikel erstellen/aktualisieren (POST/PUT `/posts`)
- Kategorien abrufen (GET `/categories`)
- Featured Image hochladen (POST `/media`)
- Artikel-Status: `draft`, `publish`, `future` (geplant)
---
## Sprint-Plan
### Sprint 1 — Infrastruktur + Grundgerüst
| Prio | Task |
|------|------|
| 1 | CT 113 auf pve-hetzner erstellen (wie CT 112) |
| 2 | Forgejo-Repo `redakteur` anlegen |
| 3 | `logger.py`, `openrouter.py`, Dockerfiles, requirements kopieren |
| 4 | `database.py` mit WP-Feldern ableiten |
| 5 | `app.py` Grundstruktur + Auth übernehmen |
| 6 | MOTD + Tailscale + Cloudflare Tunnel einrichten |
### Sprint 2 — WordPress-Anbindung
| Prio | Task |
|------|------|
| 7 | `wordpress.py` — REST API Client (Artikel, Kategorien, Medien-Upload) |
| 8 | Settings-UI: WP URL + Application Password konfigurierbar |
| 9 | Publish-Workflow: Sofort / Entwurf / Geplant |
| 10 | Telegram-Bestätigungs-Ping nach Veröffentlichung |
### Sprint 3 — Editor + Medien
| Prio | Task |
|------|------|
| 11 | Zwei-Spalten-Editor mit Echtzeit-WP-Vorschau |
| 12 | SEO-Felder (Meta-Title, Description, Keyword) automatisch aus KI |
| 13 | Featured Image aus og:image oder manuell eingeben |
| 14 | YouTube-Einbindung (Hero oben / im Text) |
| 15 | WP-Kategorien zuweisbar |
### Sprint 4 — Polish
| Prio | Task |
|------|------|
| 16 | Ton-Auswahl (Informativ / Meinungsstark / Reportage) |
| 17 | Mehrere Quellen kombinierbar für einen Artikel |
| 18 | Zweite Instanz vorbereiten (Contabo USA/Singapur, eigene .env) |
---
## Abhängigkeiten
- CT 101: WordPress REST API muss erreichbar sein
- CT 111: Forgejo für Code-Verwaltung
- OpenRouter API Key (aus credentials.md)
- Telegram Bot Token für Benachrichtigungen
---
## Logging
Identisch mit FünfVorAcht (`logger.py`):
```json
{"ts": "2026-02-26T14:00:00Z", "level": "INFO", "event": "article_published", "wp_post_id": 1234, "url": "https://..."}
```
Events: `article_generated`, `article_saved`, `article_published`, `article_failed`, `media_uploaded`, `wp_error`