239 lines
8.2 KiB
Markdown
239 lines
8.2 KiB
Markdown
# 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
|