7.7 KiB
7.7 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_postsTabelle 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
- Quelle:
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