# STATE: Redax-WP (Redakteur) **Stand: 02.03.2026** --- ## Status ✅ **Vollständig in Betrieb — Multi-Publish, KI-Chat, KI-Serie** --- ## Container | CT | Dienst | Host | Tailscale | Status | |----|--------|------|-----------|--------| | 113 | Redax-WP | pve-hetzner | 100.69.243.16 | ✅ Läuft | --- ## Zugang | Was | URL | |-----|-----| | Dashboard | https://redax.orbitalo.net | | Lokal | http://100.69.243.16:8080 | | Login | admin / astral66 | | Repo (Forgejo) | http://100.89.246.60:3000/orbitalo/homelab-brain | | Repo (GitHub) | https://github.com/Orbitalo/homelab-brain | --- ## Stack (CT 113) ``` /opt/redax-wp/ ├── docker-compose.yml ├── src/ │ ├── app.py Flask-App, Scheduler, alle Routes │ ├── wordpress.py WordPressClient + WordPressMirrorClient │ ├── database.py SQLite Schema + Helpers │ ├── openrouter.py OpenRouter API (generate + generate_chat für KI-Chat) │ ├── rss_fetcher.py RSS Feed Parser │ ├── logger.py JSON Logging │ ├── Dockerfile.web Docker Image Build │ ├── requirements.txt │ └── templates/ Jinja2 Templates (index, history, ...) ├── wordpress/ WP-Daten (Plugins, Themes, Uploads) └── data/ ├── redax.db SQLite Hauptdatenbank └── mysql/ MySQL-Daten ``` Docker Container: ``` redax-web Flask Dashboard (:8080) redax-wordpress WordPress + Apache (:80 intern) redax-db MySQL 8 ``` --- ## Funktionsumfang ### KI-Artikel - Quelle eingeben → Ton wählen → KI generiert Artikel + SEO-Felder automatisch - Zwei-Spalten-Editor: Markdown links / WordPress-Vorschau rechts (große Designfläche 50vh/75vh) - **KI-Chat** unter Editor: Freie Texteingabe an die KI, Artikelkontext wird automatisch mitgegeben, max. 6 Nachrichtenpaare History, Button „In Editor übernehmen“ bei Änderungsvorschlägen - Featured Image aus og:image der Quelle automatisch - Kategorie + Tags aus WordPress live geladen - Publish / Entwurf / Einplanen (15-Minuten-Slots) - Nach Publish → Telegram-Teaser an konfigurierten Kanal - **Prompt-Bibliothek** mit anpassbarem Default-Prompt (inkl. ESP32-Serie-Prompt) ### Multi-Publish (neu) - **Primäres Ziel:** `WP_URL` (Arakava News) - **Mirror-Ziele:** bis zu n weitere WordPress-Instanzen konfigurierbar - Toggle pro Ziel direkt im Dashboard (Checkbox → sofort aktiv/inaktiv) - Duplikat-Schutz: Vor Mirror-Publish wird Titel auf Ziel geprüft - Ergebnisse pro Ziel in `mirror_posts` Tabelle gespeichert - Credentials (User/PW) direkt im Dashboard sichtbar - WP-Admin Direktzugang via socat-Proxy (bypass Cloudflare WAF) ### Redaktionsplan - **Layout:** Unten (volle Breite), nach Scrollen sichtbar — Studio nimmt oben gesamte Breite - 7-Tage-Kalender mit KI + RSS gemeinsam - Badge: 🤖 KI / 📡 RSS - **Drag & Drop** zum Umplanen zwischen Tagen - Artikel-Karten mit Titel + SEO-Beschreibung sichtbar - Direkt-Buttons: ✏️ Bearbeiten / 🌐 WP-Editor / 👁 Vorschau / 🗓 Umplanen / 🗑 Löschen - **Entwürfe ohne Datum** in separater Sektion sichtbar - WP-Editor-Link für Arakava News via socat-Proxy: `http://100.88.230.59:8101/wp-admin/` ### Entwurf-Speicher - Zwei Links nach Push: **Im WP-Editor bearbeiten** (WP_ADMIN_DIRECT_URL) + **Vorschau ansehen** - Publish-Ziele (WP-Targets) einklappbar, Standard eingeklappt ### RSS-Feeds - Beliebig viele Feeds konfigurierbar - Modi: Manuell / Auto-Publish (Teaser) / KI-Rewrite + Publish - Duplikat-Schutz via GUID - Werbeartikel-Blacklist (konfigurierbar pro Feed) - RSS-Artikel erscheinen nie auf Telegram ### Telegram - Nur KI-Artikel → Teaser-Post (Titel + SEO-Desc + WP-Link) - Morgen-Briefing täglich 10:00 Uhr - Fehler-Alarm bei WP-Publish-Fehler ### Weitere Features - Post-History (alle veröffentlichten Artikel) - Einstellungen + WP-Verbindungstest - Hilfe-Seite (/hilfe) - Tool-Switcher zu FünfVorAcht in der Nav - Strukturiertes JSON-Logging (/logs/redax.log) - Automatischer DB-Cleanup jeden Sonntag 03:00 Uhr --- ## WP-Admin Direktzugang (bypass Cloudflare) **Problem:** Cloudflare WAF blockiert `/wp-login.php` auf Arakava News public domain. **Lösung:** socat-Proxy auf pve-hetzner + WordPress mu-plugin ```bash # socat Service auf pve-hetzner (läuft als systemd) # /etc/systemd/system/wp101-proxy.service # Proxy: http://100.88.230.59:8101 → 10.10.10.101:80 # mu-plugin auf CT 101 (/var/www/html/wp-content/mu-plugins/proxy-admin.php) # → Setzt WP_HOME/WP_SITEURL auf HTTP-Proxy wenn Zugriff via 100.88.230.59 ``` Direkt-URL: `http://100.88.230.59:8101/wp-admin/` --- ## Pfade | Was | Pfad | |-----|------| | App | /opt/redax-wp/ | | Datenbank | /opt/redax-wp/data/db/redax.db | | WordPress-Dateien | /opt/redax-wp/data/wordpress/ | | MySQL-Daten | /opt/redax-wp/data/mysql/ | | Logs | /opt/redax-wp/logs/ | | .env | /opt/redax-wp/.env | --- ## Umgebungsvariablen (.env) ```env # Primäres WordPress WP_URL=https://arakava-news-2.orbitalo.net WP_USERNAME=admin WP_APP_PASSWORD=... WP_ADMIN_PASSWORD=... WP_ADMIN_DIRECT_URL=http://100.88.230.59:8101 # Mirror 1 (DeutschlandBlog o.ä.) WP_MIRROR_URL=https://... WP_MIRROR_USERNAME=admin WP_MIRROR_APP_PASSWORD=... WP_MIRROR_ENABLED=true WP_MIRROR_ADMIN_PASSWORD=... # OpenRouter OPENROUTER_API_KEY=... # Telegram TELEGRAM_BOT_TOKEN=... TELEGRAM_CHANNEL_ID=... ``` --- ## Datenbankschema (Wichtigste Tabellen) | Tabelle | Inhalt | |---------|--------| | `articles` | KI-Artikel (Entwürfe + geplante) | | `prompts` | Prompt-Bibliothek | | `settings` | Key-Value Config (inkl. target_disabled_*) | | `feed_items` | RSS-Artikel | | `post_history` | Alle veröffentlichten Posts | | `mirror_posts` | Multi-Publish Ergebnisse pro Ziel | --- ## Changelog ### 02.03.2026 — KI-Chat + Layout - **KI-Chat** unter Editor: Freie Texteingabe, Artikelkontext, History (6 Paare), „In Editor übernehmen“ - **API** `/api/chat` + `openrouter.generate_chat(messages)` - **Layout:** Redaktionsplan nach unten (volle Breite), Studio oben volle Breite - **Publish-Ziele** einklappbar - **Editor + Vorschau** größer (50vh / 75vh) - **Entwurf:** Zwei Links (WP-Editor bearbeiten + Vorschau) ### 28.02.2026 — ESP32-Serie Teil 2 + Animiertes Hydraulikschema - **ESP32-Serie Teil 2** als WP-Entwurf erstellt (Post 1340 auf Arakava News) - Titel: "70 Euro gegen Heizungschaos: Die Hardware für mein Smart-Home-Projekt" - Status: Entwurf — wartet auf echte Fotos (Hardware liegt in DE, Einbau ab April) - **Animiertes Fließschaltbild** (interaktives SVG-Hydraulikschema) in Teil 2 eingebaut - Quelle: `seafile-assets/Fließschaltbild v4 HTML.md` (original von Claude 4.6) - WordPress-kompatibel: scoped CSS `#hz-schaltbild-2026`, keine Theme-Konflikte - 4 Betriebsmodi: Solar / Holzvergaser / Ölkessel / Alle Quellen - Einbauposition: nach "Die Verkabelung"-Sektion → erklärt warum 8 Sensoren nötig ### 27.02.2026 — Multi-Publish + Dashboard-Verbesserungen - **WordPressMirrorClient** implementiert (wordpress.py) - **Mirror-Targets** im Dashboard toggle-bar mit Credentials angezeigt - **WP-Admin Direktzugang** via socat-Proxy + mu-plugin (bypass Cloudflare WAF) - **Drag & Drop** im Redaktionsplan implementiert - **Artikel-Karten** vergrößert (Titel + SEO-Snippet sichtbar) - **Entwürfe ohne Datum** in separater Sektion - **DB-Cleanup-Job** jeden Sonntag 03:00 Uhr ### 27.02.2026 — ESP32-Serie Teil 1 veröffentlicht - Artikel "Vier Heizungen, ein Pufferspeicher" live (Post 1209, Arakava News) - Seafile-Assets lokal gespeichert: `/root/homelab-brain/arakava-news/artikel/seafile-assets/` - ESP32-Serie Prompt als Standard-Prompt gesetzt ### 27.02.2026 — Grundsystem - DB-Cleanup, Scheduler Lock, Telegram HTML-Modus, Werbeartikel-Blacklist ### 20.03.2026 — Rubriken + OpenRouter Key + Telegram - **WordPress-Kategorien** umbenannt (vorher Rubrik 1-4): | ID | Vorher | Nachher | |----|--------|---------| | 2 | Rubrik 1 | Politik | | 3 | Rubrik 2 | Technik | | 4 | Rubrik 3 | Gesundheit | | 5 | Rubrik 4 | Eigenversorgung | | 8 | — (neu) | Good Morning PP | - **OpenRouter Key** auf "Michael" (unlimited) umgestellt - **Telegram** konfiguriert (Mutter-Bot Token + Chat-ID) - Docker-Service neugestartet, alle Container laufen