147 lines
5.4 KiB
Markdown
147 lines
5.4 KiB
Markdown
# STATE: Redax-WP
|
|
**Stand: 03.03.2026**
|
|
|
|
---
|
|
|
|
## Status
|
|
|
|
✅ **Vollständig in Betrieb — 03.03.2026**
|
|
|
|
---
|
|
|
|
## Infrastruktur
|
|
|
|
| CT | Dienst | Host | IP | Status |
|
|
|----|--------|------|----|--------|
|
|
| 113 | Redax-WP Dashboard | pve-hetzner | 10.10.10.113 | ✅ Läuft |
|
|
| 113 | WordPress (DeutschlandBlog) | pve-hetzner | 10.10.10.113 | ✅ Läuft |
|
|
|
|
---
|
|
|
|
## Zugangsdaten
|
|
|
|
| Dienst | URL | Login |
|
|
|--------|-----|-------|
|
|
| Dashboard | https://redax.orbitalo.net | admin / astral66 |
|
|
| Arakava News (Primary) | https://arakava-news-2.orbitalo.net | — |
|
|
| Arakava News WP-Admin | https://arakava-news-2.orbitalo.net/wp-admin | admin / astral66 |
|
|
| Arakava News App PW | (REST API) | XPKjaHFiYb8LOo16BeRL3huF |
|
|
| DeutschlandBlog (Mirror) | https://deutschlandblog.orbitalo.net | — |
|
|
| DeutschlandBlog WP-Admin | https://deutschlandblog.orbitalo.net/wp-admin | admin / Redax2026! |
|
|
| DeutschlandBlog App PW | (REST API) | YJ7L4CFAxDPszGLXpamJmzl6 |
|
|
|
|
---
|
|
|
|
## Multi-Publish Architektur
|
|
|
|
```
|
|
WordPressMirrorClient (wordpress.py)
|
|
├── Primary: arakava-news-2.orbitalo.net (WP_URL)
|
|
└── Mirror 1: deutschlandblog.orbitalo.net (WP_MIRROR_URL)
|
|
|
|
Beim Publish (job_publish_due):
|
|
1. Artikel wird auf Primary veröffentlicht
|
|
2. Duplikat-Check auf Mirror (Titel-Vergleich vor dem Post)
|
|
3. Mirror erhält denselben Artikel
|
|
4. Ergebnis in mirror_posts Tabelle gespeichert
|
|
5. Dashboard zeigt Mirror-Status pro Artikel
|
|
|
|
Erweiterbar: WP_MIRROR2_URL, WP_MIRROR2_ENABLED, ... (bis Mirror9)
|
|
```
|
|
|
|
---
|
|
|
|
## .env Konfiguration (CT 113: /opt/redax-wp/.env)
|
|
|
|
| Variable | Wert |
|
|
|----------|------|
|
|
| `WP_URL` | `https://arakava-news-2.orbitalo.net` |
|
|
| `WP_USERNAME` | `admin` |
|
|
| `WP_APP_PASSWORD` | `XPKjaHFiYb8LOo16BeRL3huF` |
|
|
| `WP_ADMIN_PASSWORD` | `astral66` |
|
|
| `WP_MIRROR_URL` | `https://deutschlandblog.orbitalo.net` |
|
|
| `WP_MIRROR_USERNAME` | `admin` |
|
|
| `WP_MIRROR_APP_PASSWORD` | `YJ7L4CFAxDPszGLXpamJmzl6` |
|
|
| `WP_MIRROR_ADMIN_PASSWORD` | `Redax2026!` |
|
|
| `WP_MIRROR_ENABLED` | `true` |
|
|
| `OPENROUTER_API_KEY` | gesetzt |
|
|
| `DB_PATH` | `/data/redax.db` |
|
|
|
|
---
|
|
|
|
## Stack auf CT 113
|
|
|
|
```
|
|
Docker Container:
|
|
redax-db MySQL 8.0
|
|
redax-wordpress WordPress 6.9.1 + Apache (DeutschlandBlog)
|
|
redax-web Flask/Gunicorn Dashboard (Port 8080)
|
|
cloudflared Tunnel für redax.orbitalo.net
|
|
cloudflared-wp Tunnel für deutschlandblog.orbitalo.net
|
|
```
|
|
|
|
---
|
|
|
|
## Dashboard Features
|
|
|
|
| Feature | Beschreibung |
|
|
|---------|-------------|
|
|
| Artikel-Studio | KI-Generierung via OpenRouter (Ton wählbar) |
|
|
| Artikel-Studio | KI-Generierung via OpenRouter (Ton wählbar) |
|
|
| **Text-Import** | Quelle-Feld als Textarea — komplette Artikel einfügbar |
|
|
| **Markdown→HTML** | KI-Output zu WordPress-HTML konvertiert |
|
|
| **YouTube-Bilder** | YouTube-URL in Artikel → Thumbnail + Featured Image |
|
|
| **KI-Chat** | Freie Texteingabe mit Artikelkontext |
|
|
| WP-Entwurf | Artikel als Draft pushen |
|
|
| Redaktionsplan | 7-Tage-Kalender mit Drag & Drop |
|
|
| Multi-Publish | Primary + alle aktiven Mirrors |
|
|
| Publish-Ziele | Einklappbar mit Links zu Website & WP-Admin |
|
|
| Mirror-Status | Pro Artikel: welche Sites bespielt (✅/❌) |
|
|
| RSS-Queue | Feed-Artikel verwalten, KI-Rewrite, Auto-Publish |
|
|
| Duplikat-Schutz | Mirror überspringt existierende Artikel |
|
|
|
|
---
|
|
|
|
## Changelog
|
|
|
|
### 03.03.2026 (Latest)
|
|
- **Text-Import**: Quelle-Feld von `<input>` zu `<textarea>` — ganze Artikel einfügbar
|
|
- **Neuer Default-Prompt**: „Artikel formatieren & SEO" — formatiert Text UND URLs zu WP-tauglichem Markdown
|
|
- **Markdown→HTML**: `_to_html()` in `app.py` konvertiert KI-Output automatisch zu HTML beim WP-Push
|
|
- **YouTube-Thumbnail im Content**: YouTube-URL alleine in eigenem Absatz → anklickbares `<img>` Vorschaubild
|
|
- **YouTube als Featured Image**: YouTube-Thumbnail wird automatisch als Beitragsbild gesetzt (wenn kein anderes Bild vorhanden)
|
|
- **Gunicorn-Fix**: `generate()` + `generate_chat()` in `openrouter.py` auf `requests` umgestellt (kein asyncio-Timeout)
|
|
- `markdown==3.10.2` zu `requirements.txt` hinzugefügt
|
|
- `docker-compose.yml`: `openrouter.py` + `rss_fetcher.py` als Volume-mounts (persistente Änderungen)
|
|
|
|
### 02.03.2026
|
|
- **KI-Chat** implementiert (freie Promptwahl, Artikelkontext, Übernehmen-Button)
|
|
- Layout: Redaktionsplan unten, Studio volle Breite
|
|
- Publish-Ziele einklappbar
|
|
- Entwurf: WP-Editor-Link + Vorschau-Link
|
|
- Editor + Vorschau größer
|
|
|
|
### 28.02.2026
|
|
- Multi-Publish implementiert: `WordPressMirrorClient` in `wordpress.py`
|
|
- `mirror_posts` Tabelle in SQLite für Mirror-Tracking
|
|
- `job_publish_due` publiziert auf Primary + alle aktiven Mirrors
|
|
- Publish-Ziele im Dashboard: Checkboxen zum Ein/Ausschalten (per DB-Setting)
|
|
- Links zu Website + WP-Admin + Zugangsdaten direkt sichtbar im Dashboard
|
|
- `WP_ADMIN_PASSWORD` + `WP_MIRROR_ADMIN_PASSWORD` in `.env` ergänzt
|
|
- Arakava News WP-Admin Passwort auf `astral66` gesetzt
|
|
- Test: Beide Targets erreichbar bestätigt
|
|
|
|
### 27.02.2026
|
|
- WordPress 6.9.1 auf DeutschlandBlog installiert (Update)
|
|
- Blocksy Theme + Companion Plugin installiert
|
|
- Yoast SEO installiert
|
|
- Cloudflare Tunnel für WordPress eingerichtet
|
|
- WP Application Passwords generiert (beide Sites)
|
|
- WP-Draft Push: Artikel als Entwurf in WP speichern + Vorschau-Link im Dashboard
|
|
- Redakteur mit Arakava News (CT 101) verbunden
|
|
|
|
### 26.02.2026
|
|
- CT 113 auf pve-hetzner erstellt
|
|
- Docker Stack deployed (MySQL + WordPress + Flask + cloudflared)
|
|
- Dashboard unter redax.orbitalo.net erreichbar
|
|
- Login-Seite eingerichtet
|