homelab-brain/redax-wp/STATE.md

8.2 KiB

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

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

# 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