redax-wp: Projekt vorläufig abgeschlossen
Made-with: Cursor
This commit is contained in:
parent
62f6e393b9
commit
a2658c6673
2 changed files with 123 additions and 98 deletions
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
✅ **Rohzustand läuft — Basis-Setup abgeschlossen**
|
🏁 **Vorläufig abgeschlossen — 27.02.2026**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,24 @@
|
||||||
# Redax-WP
|
# 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?**
|
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.
|
||||||
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.
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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
|
```bash
|
||||||
# 1. Repository klonen
|
# 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
|
cd mein-blog
|
||||||
|
|
||||||
# 2. Interaktives Setup starten
|
# 2. Setup starten (interaktiv)
|
||||||
chmod +x setup.sh
|
chmod +x setup.sh
|
||||||
./setup.sh
|
./setup.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Das Setup-Skript erledigt automatisch:
|
Das Setup-Skript erledigt automatisch:
|
||||||
- `.env` generieren (mit zufälligen Passwörtern)
|
- `.env` mit zufälligen Passwörtern generieren
|
||||||
- Docker Stack starten
|
- Docker Stack starten (MySQL + WordPress + Dashboard)
|
||||||
- WordPress installieren (6.9+)
|
- WordPress installieren (6.9+)
|
||||||
- Blocksy Theme + Yoast SEO installieren
|
- Blocksy Theme + Yoast SEO installieren
|
||||||
- Kategorien & Navigation anlegen
|
- Kategorien & Navigationsmenü anlegen
|
||||||
- Application Password für REST-API generieren
|
- 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 | 24+ |
|
||||||
| Docker Compose | 2.x |
|
| Docker Compose | 2.x |
|
||||||
| Freie Ports | 80 (WordPress), 8080 (Dashboard) |
|
| Freie Ports | 80 (WordPress), 8080 (Dashboard) |
|
||||||
|
| Betriebssystem | Linux (Debian/Ubuntu empfohlen) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Manuelle Konfiguration
|
## Konfiguration
|
||||||
|
|
||||||
Falls `setup.sh` nicht verwendet wird:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
# .env anpassen
|
nano .env # Pflichtfelder ausfüllen
|
||||||
docker compose up -d --build
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 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
|
```bash
|
||||||
make help # Alle Befehle anzeigen
|
make help # Alle Befehle anzeigen
|
||||||
|
|
@ -60,22 +96,22 @@ make stop # Stack stoppen
|
||||||
make restart # Dashboard neustarten (nach .env-Änderung)
|
make restart # Dashboard neustarten (nach .env-Änderung)
|
||||||
make logs # Live-Logs aller Container
|
make logs # Live-Logs aller Container
|
||||||
make logs-web # Nur Dashboard-Logs
|
make logs-web # Nur Dashboard-Logs
|
||||||
make status # Container-Status
|
make status # Container-Status anzeigen
|
||||||
make shell-web # Shell im Dashboard
|
make shell-web # Shell im Dashboard-Container
|
||||||
make shell-db # MySQL-Shell
|
make shell-db # MySQL-Shell öffnen
|
||||||
make backup # Datensicherung nach ./backups/
|
make backup # Datensicherung → ./backups/
|
||||||
make update # Docker-Images aktualisieren
|
make update # Docker-Images aktualisieren
|
||||||
|
make clean # Alle Daten löschen (Vorsicht!)
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
### WP-CLI
|
||||||
|
|
||||||
## WP-CLI Befehle
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Beliebige WP-CLI Befehle ausführen:
|
# Beliebige WP-CLI Befehle ausführen:
|
||||||
make wp plugin list
|
make wp plugin list
|
||||||
make wp user list
|
make wp user list
|
||||||
make wp cache flush
|
make wp cache flush
|
||||||
|
make wp post list
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -83,104 +119,93 @@ make wp cache flush
|
||||||
## Architektur
|
## Architektur
|
||||||
|
|
||||||
```
|
```
|
||||||
┌─────────────────────────────────────────────────┐
|
┌─────────────────────────────────────────────────────┐
|
||||||
│ Docker Stack │
|
│ Docker Stack │
|
||||||
│ │
|
│ │
|
||||||
│ ┌──────────────┐ ┌───────────────────────┐ │
|
│ ┌────────────────┐ ┌─────────────────────────┐ │
|
||||||
│ │ redax-web │ │ redax-wordpress │ │
|
│ │ redax-web │ │ redax-wordpress │ │
|
||||||
│ │ Flask :8080 │◄──►│ Apache/PHP :80 │ │
|
│ │ Flask :8080 │◄──►│ Apache/PHP :80 │ │
|
||||||
│ └──────┬───────┘ └──────────┬────────────┘ │
|
│ │ Dashboard │ │ WordPress 6.9+ │ │
|
||||||
│ │ │ │
|
│ └──────┬─────────┘ └────────────┬────────────┘ │
|
||||||
│ └──────────┬────────────┘ │
|
│ │ │ │
|
||||||
│ ▼ │
|
│ └──────────────┬────────────┘ │
|
||||||
│ ┌──────────────┐ │
|
│ ▼ │
|
||||||
│ │ redax-db │ │
|
│ ┌───────────────┐ │
|
||||||
│ │ MySQL :3306│ │
|
│ │ redax-db │ │
|
||||||
│ └──────────────┘ │
|
│ │ MySQL 8 :3306│ │
|
||||||
└─────────────────────────────────────────────────┘
|
│ └───────────────┘ │
|
||||||
│ │
|
└──────────────────────┬──────────────────────────────┘
|
||||||
▼ ▼
|
│ │
|
||||||
https://redax. https://blog.
|
▼ ▼
|
||||||
example.com example.com
|
https://redax. https://blog.
|
||||||
(Dashboard) (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):
|
2. **Tunnel 1** (Dashboard):
|
||||||
- Hostname: `redax.example.com`
|
- Public Hostname: `redax.example.com`
|
||||||
- Service: `http://localhost:8080`
|
- Service: `http://localhost:8080`
|
||||||
3. **Tunnel 2** (Blog):
|
3. **Tunnel 2** (Blog):
|
||||||
- Hostname: `blog.example.com`
|
- Public Hostname: `blog.example.com`
|
||||||
- Service: `http://localhost:80`
|
- 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
|
## Verzeichnisstruktur
|
||||||
|
|
||||||
### 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
|
|
||||||
|
|
||||||
```
|
```
|
||||||
redax-wp/
|
redax-wp/
|
||||||
├── data/
|
├── setup.sh ← Automatisches Ersteinrichtungs-Skript
|
||||||
│ ├── mysql/ # MySQL-Datenbank (persistent)
|
├── Makefile ← Komfort-Befehle
|
||||||
│ ├── wordpress/ # WordPress-Dateien + Uploads
|
├── docker-compose.yml ← Docker Stack Definition
|
||||||
│ └── db/ # Redax-WP SQLite-Datenbank
|
├── .env.example ← Konfigurationsvorlage
|
||||||
├── logs/ # Anwendungs-Logs
|
├── README.md ← Diese Datei
|
||||||
├── src/ # Dashboard-Quellcode (Flask)
|
├── .gitignore ← .env, data/, logs/ ausgeschlossen
|
||||||
├── .env # Konfiguration (nicht ins Git!)
|
└── src/
|
||||||
├── .env.example # Vorlage
|
├── app.py ← Flask Dashboard (Haupt-App)
|
||||||
├── docker-compose.yml
|
├── database.py ← SQLite Datenbankschicht
|
||||||
├── setup.sh # Automatisches Ersteinrichtungs-Skript
|
├── wordpress.py ← WordPress REST API Client
|
||||||
└── Makefile # Komfort-Befehle
|
├── 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 |
|
```bash
|
||||||
|---------|--------|
|
make backup
|
||||||
| KI-Artikel generieren (OpenRouter) | ✅ |
|
# → Erstellt: ./backups/redax-wp-YYYYMMDD_HHMMSS.tar.gz
|
||||||
| WordPress REST API Integration | ✅ |
|
# Enthält: MySQL-Daten, WordPress-Dateien, SQLite-DB, .env
|
||||||
| 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 | ✅ |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Lizenz
|
## Lizenz
|
||||||
|
|
||||||
MIT — frei verwendbar, anpassbar, weitergabe erlaubt.
|
MIT — frei verwendbar, anpassbar und weitergabe erlaubt.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Entwickelt von
|
||||||
|
|
||||||
|
[Orbitalo](https://github.com/Orbitalo) — Homelab & Automatisierungsprojekte
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue