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
171 lines
5.5 KiB
Markdown
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`
|