From a2658c6673749d2bfa73420e9518b1e08c5f3f9d Mon Sep 17 00:00:00 2001 From: root Date: Fri, 27 Feb 2026 11:06:09 +0700 Subject: [PATCH] =?UTF-8?q?redax-wp:=20Projekt=20vorl=C3=A4ufig=20abgeschl?= =?UTF-8?q?ossen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- redakteur/STATE.md | 2 +- redax-wp/README.md | 219 +++++++++++++++++++++++++-------------------- 2 files changed, 123 insertions(+), 98 deletions(-) diff --git a/redakteur/STATE.md b/redakteur/STATE.md index f01c8963..c2aab10c 100644 --- a/redakteur/STATE.md +++ b/redakteur/STATE.md @@ -5,7 +5,7 @@ ## Status -βœ… **Rohzustand lΓ€uft β€” Basis-Setup abgeschlossen** +🏁 **VorlΓ€ufig abgeschlossen β€” 27.02.2026** --- diff --git a/redax-wp/README.md b/redax-wp/README.md index 9a37ae44..6ad2ee82 100644 --- a/redax-wp/README.md +++ b/redax-wp/README.md @@ -1,9 +1,24 @@ # Redax-WP -KI-gestΓΌtzter WordPress-Redakteur mit Dashboard, RSS-Feed-Integration und Telegram-Anbindung. +> KI-gestΓΌtzter WordPress-Redakteur β€” selbst gehostet, Docker-basiert, template-ready. -**Was ist Redax-WP?** -Ein selbst gehostetes System aus WordPress + einem Flask-Dashboard, das KI-Artikel generiert, einplant und verΓΆffentlicht. RSS-Feeds kΓΆnnen automatisch importiert werden. KI-Artikel landen in WordPress **und** Telegram, RSS-Artikel nur in WordPress. +Redax-WP ist ein vollstΓ€ndiges Redaktionssystem aus **WordPress + einem Flask-Dashboard**. Es generiert KI-Artikel, importiert RSS-Feeds und verΓΆffentlicht automatisch in WordPress und optional auf Telegram. + +--- + +## Was kann Redax-WP? + +| Feature | Beschreibung | +|---------|-------------| +| ✍️ KI-Artikel | Artikel per KI generieren (OpenRouter / GPT-4o, Claude, Mistral...) | +| πŸ“° RSS-Import | Feeds automatisch importieren, prΓΌfen und verΓΆffentlichen | +| πŸ“… Redaktionskalender | 7-Tage-Planung mit Drag & Drop | +| πŸ” Yoast SEO | SEO-Titel, Meta-Beschreibung, Focus-Keyword direkt im Editor | +| πŸ“² Telegram | KI-Artikel als Teaser auf Telegram posten | +| ⏰ Morgen-Briefing | TΓ€gliche Zusammenfassung um 10:00 Uhr | +| 🚨 Fehler-Alarm | Sofortbenachrichtigung bei VerΓΆffentlichungsfehlern | +| πŸ—‚οΈ Kategorie-Routing | KI-Artikel β†’ WordPress + Telegram / RSS-Artikel β†’ nur WordPress | +| 🐳 Docker | Kompletter Stack per Docker Compose | --- @@ -11,21 +26,23 @@ Ein selbst gehostetes System aus WordPress + einem Flask-Dashboard, das KI-Artik ```bash # 1. Repository klonen -git clone https://github.com/DEIN_USER/redax-wp mein-blog +git clone https://github.com/Orbitalo/Redax-Wordpress.git mein-blog cd mein-blog -# 2. Interaktives Setup starten +# 2. Setup starten (interaktiv) chmod +x setup.sh ./setup.sh ``` Das Setup-Skript erledigt automatisch: -- `.env` generieren (mit zufΓ€lligen PasswΓΆrtern) -- Docker Stack starten +- `.env` mit zufΓ€lligen PasswΓΆrtern generieren +- Docker Stack starten (MySQL + WordPress + Dashboard) - WordPress installieren (6.9+) - Blocksy Theme + Yoast SEO installieren -- Kategorien & Navigation anlegen -- Application Password fΓΌr REST-API generieren +- Kategorien & NavigationsmenΓΌ anlegen +- WordPress Application Password fΓΌr die REST-API generieren + +**Danach:** API-Keys in `.env` eintragen und `make restart` ausfΓΌhren. --- @@ -36,22 +53,41 @@ Das Setup-Skript erledigt automatisch: | Docker | 24+ | | Docker Compose | 2.x | | Freie Ports | 80 (WordPress), 8080 (Dashboard) | +| Betriebssystem | Linux (Debian/Ubuntu empfohlen) | --- -## Manuelle Konfiguration - -Falls `setup.sh` nicht verwendet wird: +## Konfiguration ```bash cp .env.example .env -# .env anpassen -docker compose up -d --build +nano .env # Pflichtfelder ausfΓΌllen ``` +### Pflichtfelder + +| Variable | Beschreibung | +|----------|-------------| +| `DASHBOARD_USER` | Login fΓΌr das Redax-WP Dashboard | +| `DASHBOARD_PASSWORD` | Passwort fΓΌr das Dashboard | +| `WP_URL` | Γ–ffentliche URL des WordPress-Blogs | +| `WP_USERNAME` | WordPress Admin-Benutzername | +| `WP_APP_PASSWORD` | WordPress Application Password (auto via setup.sh) | +| `OPENROUTER_API_KEY` | API-Key fΓΌr KI-Generierung ([openrouter.ai](https://openrouter.ai)) | +| `MYSQL_ROOT_PASSWORD` | MySQL Root-Passwort | +| `MYSQL_PASSWORD` | MySQL Benutzer-Passwort | + +### Optionale Felder (Telegram) + +| Variable | Beschreibung | +|----------|-------------| +| `TELEGRAM_BOT_TOKEN` | Bot-Token von [@BotFather](https://t.me/BotFather) | +| `TELEGRAM_CHANNEL_ID` | Kanal-ID fΓΌr Artikel-Teaser | +| `TELEGRAM_REVIEWER_IDS` | Chat-IDs fΓΌr Fehler-Alarm (kommagetrennt) | + --- -## NΓΌtzliche Befehle +## Befehle ```bash make help # Alle Befehle anzeigen @@ -60,22 +96,22 @@ make stop # Stack stoppen make restart # Dashboard neustarten (nach .env-Γ„nderung) make logs # Live-Logs aller Container make logs-web # Nur Dashboard-Logs -make status # Container-Status -make shell-web # Shell im Dashboard -make shell-db # MySQL-Shell -make backup # Datensicherung nach ./backups/ +make status # Container-Status anzeigen +make shell-web # Shell im Dashboard-Container +make shell-db # MySQL-Shell ΓΆffnen +make backup # Datensicherung β†’ ./backups/ make update # Docker-Images aktualisieren +make clean # Alle Daten lΓΆschen (Vorsicht!) ``` ---- - -## WP-CLI Befehle +### WP-CLI ```bash # Beliebige WP-CLI Befehle ausfΓΌhren: make wp plugin list make wp user list make wp cache flush +make wp post list ``` --- @@ -83,104 +119,93 @@ make wp cache flush ## Architektur ``` -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ Docker Stack β”‚ -β”‚ β”‚ -β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ -β”‚ β”‚ redax-web β”‚ β”‚ redax-wordpress β”‚ β”‚ -β”‚ β”‚ Flask :8080 │◄──►│ Apache/PHP :80 β”‚ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ -β”‚ β”‚ β”‚ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ -β”‚ β–Ό β”‚ -β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ -β”‚ β”‚ redax-db β”‚ β”‚ -β”‚ β”‚ MySQL :3306β”‚ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - β”‚ β”‚ - β–Ό β–Ό - https://redax. https://blog. - example.com example.com - (Dashboard) (Blog) +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ Docker Stack β”‚ +β”‚ β”‚ +β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ +β”‚ β”‚ redax-web β”‚ β”‚ redax-wordpress β”‚ β”‚ +β”‚ β”‚ Flask :8080 │◄──►│ Apache/PHP :80 β”‚ β”‚ +β”‚ β”‚ Dashboard β”‚ β”‚ WordPress 6.9+ β”‚ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β”‚ β”‚ β”‚ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β”‚ β–Ό β”‚ +β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ +β”‚ β”‚ redax-db β”‚ β”‚ +β”‚ β”‚ MySQL 8 :3306β”‚ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ β”‚ + β–Ό β–Ό + https://redax. https://blog. + example.com example.com + (Dashboard) (Blog) ``` --- -## Cloudflare Tunnel einrichten +## Γ–ffentlicher Zugang via Cloudflare Tunnel -FΓΌr ΓΆffentliche Erreichbarkeit ohne offene Ports: +FΓΌr ΓΆffentliche Erreichbarkeit ohne offene Firewall-Ports: -1. [Cloudflare Zero Trust](https://one.dash.cloudflare.com) β†’ Networks β†’ Tunnels β†’ Create +1. **[Cloudflare Zero Trust](https://one.dash.cloudflare.com)** β†’ Networks β†’ Tunnels β†’ Create 2. **Tunnel 1** (Dashboard): - - Hostname: `redax.example.com` + - Public Hostname: `redax.example.com` - Service: `http://localhost:8080` 3. **Tunnel 2** (Blog): - - Hostname: `blog.example.com` + - Public Hostname: `blog.example.com` - Service: `http://localhost:80` -4. Docker-Befehle aus Cloudflare kopieren und ausfΓΌhren +4. Den `docker run cloudflare/cloudflared ...`-Befehl aus dem CF-Dashboard ausfΓΌhren --- -## Nach dem Setup - -### Pflichtfelder nachtrΓ€glich setzen - -Nach dem Setup unbedingt in `.env` eintragen: - -```bash -nano .env -# OPENROUTER_API_KEY=sk-or-v1-... -# TELEGRAM_BOT_TOKEN=... -# TELEGRAM_CHANNEL_ID=... - -make restart # Γ„nderungen ΓΌbernehmen -``` - -### WordPress konfigurieren - -- **WP-Admin:** `https://blog.example.com/wp-admin` -- Kategorien umbenennen: WP-Admin β†’ BeitrΓ€ge β†’ Kategorien -- Yoast SEO einrichten: SEO β†’ Allgemein - ---- - -## Daten & Verzeichnisse +## Verzeichnisstruktur ``` redax-wp/ -β”œβ”€β”€ data/ -β”‚ β”œβ”€β”€ mysql/ # MySQL-Datenbank (persistent) -β”‚ β”œβ”€β”€ wordpress/ # WordPress-Dateien + Uploads -β”‚ └── db/ # Redax-WP SQLite-Datenbank -β”œβ”€β”€ logs/ # Anwendungs-Logs -β”œβ”€β”€ src/ # Dashboard-Quellcode (Flask) -β”œβ”€β”€ .env # Konfiguration (nicht ins Git!) -β”œβ”€β”€ .env.example # Vorlage -β”œβ”€β”€ docker-compose.yml -β”œβ”€β”€ setup.sh # Automatisches Ersteinrichtungs-Skript -└── Makefile # Komfort-Befehle +β”œβ”€β”€ setup.sh ← Automatisches Ersteinrichtungs-Skript +β”œβ”€β”€ Makefile ← Komfort-Befehle +β”œβ”€β”€ docker-compose.yml ← Docker Stack Definition +β”œβ”€β”€ .env.example ← Konfigurationsvorlage +β”œβ”€β”€ README.md ← Diese Datei +β”œβ”€β”€ .gitignore ← .env, data/, logs/ ausgeschlossen +└── src/ + β”œβ”€β”€ app.py ← Flask Dashboard (Haupt-App) + β”œβ”€β”€ database.py ← SQLite Datenbankschicht + β”œβ”€β”€ wordpress.py ← WordPress REST API Client + β”œβ”€β”€ rss_fetcher.py ← RSS Feed Import + β”œβ”€β”€ logger.py ← Strukturiertes JSON-Logging + β”œβ”€β”€ requirements.txt ← Python-AbhΓ€ngigkeiten + β”œβ”€β”€ Dockerfile.web ← Container-Definition + └── templates/ ← HTML-Templates (Jinja2) + β”œβ”€β”€ base.html + β”œβ”€β”€ index.html ← Studio / Editor + β”œβ”€β”€ feeds.html ← RSS Feed-Verwaltung + β”œβ”€β”€ history.html ← VerΓΆffentlichungs-Historie + β”œβ”€β”€ prompts.html ← KI-Prompt Bibliothek + β”œβ”€β”€ settings.html ← Einstellungen + β”œβ”€β”€ hilfe.html ← Hilfe-Seite + └── login.html ``` --- -## Features +## Datensicherung -| Feature | Status | -|---------|--------| -| KI-Artikel generieren (OpenRouter) | βœ… | -| WordPress REST API Integration | βœ… | -| Yoast SEO Felder | βœ… | -| RSS Feed Import | βœ… | -| Redaktionskalender (7 Tage) | βœ… | -| Telegram Benachrichtigungen | βœ… | -| Morgen-Briefing (10:00 Uhr) | βœ… | -| Featured Image (og:image) | βœ… | -| Strukturierte Logs | βœ… | -| Multi-Reviewer Support | βœ… | +```bash +make backup +# β†’ Erstellt: ./backups/redax-wp-YYYYMMDD_HHMMSS.tar.gz +# EnthΓ€lt: MySQL-Daten, WordPress-Dateien, SQLite-DB, .env +``` --- ## Lizenz -MIT β€” frei verwendbar, anpassbar, weitergabe erlaubt. +MIT β€” frei verwendbar, anpassbar und weitergabe erlaubt. + +--- + +## Entwickelt von + +[Orbitalo](https://github.com/Orbitalo) β€” Homelab & Automatisierungsprojekte