# 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`