- Add full auto pipeline: RSS ingest → GPT relevance score → AI rewrite → WP draft - Add Telegram bot with inline buttons (rewrite/discard/override) and commands (/run, /rejected, /status) - Add smart publish scheduler: max 2 drafts/day, spread over week (09:00 & 14:00 CET) - Add N8N API endpoints (/api/n8n/pipeline, /api/n8n/ingest) with X-API-Key auth - Add GPT-based relevance scoring (0-100) for VanLife/Camping/Outdoor topics - Remove Ampel risk-level policy check from ingestion (all enabled feeds are used) - Add Telegram webhook endpoint and setup endpoint - Add delete_wp_post() for Telegram discard action - Add DB migrations for relevance_score and scheduled_publish_at columns - Update .env.example with all new configuration variables - Add docs/AUTOMATION.md with full setup and usage documentation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 KiB
Automatischer Pipeline-Betrieb
Überblick
Das System läuft vollautomatisch und benötigt nur noch gelegentliche Telegram-Interaktion.
N8N (2× täglich, 08:00 + 16:00 Uhr)
└─► POST /api/n8n/pipeline (X-API-Key Header)
├── RSS Ingestion (alle aktivierten Feeds)
├── Relevanz-Score per GPT (0–100)
│ ├── Score ≥ 80 → Rewrite + WP-Draft + Telegram
│ ├── Score 60–79 → Telegram-Warnung + manueller Override möglich
│ └── Score < 60 → Abgelehnt + tägliche Telegram-Liste
└── Pipeline-Zusammenfassung via Telegram
Einrichtung
1. Umgebungsvariablen setzen
Kopiere backend/.env.example nach backend/.env und fülle alle Felder aus:
cp backend/.env.example backend/.env
nano backend/.env
Wichtige Variablen:
| Variable | Beschreibung |
|---|---|
TELEGRAM_BOT_TOKEN |
Bot-Token von @BotFather |
TELEGRAM_CHAT_ID |
Deine persönliche Chat-ID |
TELEGRAM_WEBHOOK_SECRET |
Zufälliger String (≥ 20 Zeichen) |
N8N_API_KEY |
Starker zufälliger API-Key |
OPENAI_API_KEY |
OpenAI API-Key |
WP_BASE_URL |
WordPress-URL |
WP_USERNAME |
WordPress-Benutzername |
WP_PASSWORD |
WordPress App-Passwort |
2. Telegram-Webhook registrieren
Nach dem Deployment einmalig aufrufen:
curl -X POST https://news.vanityontour.de/api/telegram/setup-webhook \
-H "Cookie: rss_news_session=<dein-session-token>"
Oder über die Admin-UI: Settings → Telegram Webhook einrichten.
3. N8N Workflow einrichten
In N8N einen neuen Workflow erstellen:
Trigger: Cron
- Zeitplan 1:
0 8 * * *(täglich 08:00) - Zeitplan 2:
0 16 * * *(täglich 16:00)
Aktion: HTTP Request
- Method:
POST - URL:
https://news.vanityontour.de/api/n8n/pipeline - Header:
X-API-Key: <dein-n8n-api-key>
Fehlerbehandlung: Bei HTTP-Fehler → E-Mail/Telegram-Alert
Telegram-Befehle
| Befehl | Funktion |
|---|---|
/run |
Pipeline manuell starten |
/rejected |
Abgelehnte Artikel der letzten 3 Tage anzeigen |
/status |
Aktuellen Pipeline-Status |
/help |
Alle Befehle anzeigen |
Telegram-Benachrichtigungen
Neuer Draft erstellt
Wenn ein Artikel erfolgreich verarbeitet wurde:
✅ Neuer Draft erstellt
📰 [Artikel-Titel]
🟢 Relevanz-Score: 87/100
📅 Vorgeschlagene Veröffentlichung: Mo, 24.03.2026 um 09:00 Uhr
🏷 #VanLife #Camping #Wohnmobil
🔗 Draft in WordPress öffnen
[✏️ Neu schreiben] [❌ Verwerfen]
Relevanz-Warnung (Score 60–79)
⚠️ Artikel mit niedrigem Relevanz-Score
📰 [Artikel-Titel]
🟡 Score: 72/100
💬 Artikel behandelt hauptsächlich...
🔗 Originalartikel
[➕ Trotzdem verarbeiten] [❌ Ablehnen]
Abgelehnte Artikel (Ende jedes Runs)
Liste aller abgelehnten Artikel mit Override-Buttons für jeden einzelnen.
Relevanz-Score
Der GPT-basierte Score bewertet die Themenrelevanz für den VanLife/Camping-Blog:
| Score | Aktion |
|---|---|
| 80–100 | Automatisch verarbeiten |
| 60–79 | Telegram-Warnung, manueller Override |
| 0–59 | Automatisch abgelehnt |
Themen die hoch scored werden: Campingplätze, Stellplätze, Wohnmobile, Van-Ausbau, Outdoor-Equipment, Wandern, Naturreisen, Roadtrips, Camping-Tipps.
Schwellwerte sind in .env konfigurierbar:
PIPELINE_RELEVANCE_AUTO=80
PIPELINE_RELEVANCE_WARN=60
Veröffentlichungsplan
- Maximal 2 Beiträge pro Tag
- Bevorzugte Zeiten: 09:00 und 14:00 Uhr (CET)
- Gleichmäßig über die Woche verteilt
- Der Vorschlag erscheint in der Telegram-Nachricht
- Manuell in WordPress setzen oder über WP Scheduling-Plugin automatisieren
Einstellbar via:
PIPELINE_MAX_DRAFTS_PER_DAY=2
PIPELINE_PUBLISH_HOURS=9,14
API-Endpunkte (N8N / extern)
Alle externen Endpunkte benötigen den Header X-API-Key: <N8N_API_KEY>.
| Methode | Endpunkt | Funktion |
|---|---|---|
POST |
/api/n8n/pipeline |
Komplette Pipeline starten |
POST |
/api/n8n/ingest |
Nur RSS-Import (ohne Rewrite) |
Deployment (Hetzner via GitHub)
Das Deployment läuft automatisch über GitHub Actions beim Push auf main:
- GitHub Action führt Tests aus
- Bei Erfolg: SSH-Deploy auf Hetzner
pip install -r requirements.txt- Systemd-Dienst
rss-appneu starten
Workflow-Dateien: .github/workflows/test.yml und .github/workflows/deploy.yml
Troubleshooting
Pipeline läuft, aber keine Telegram-Nachrichten:
TELEGRAM_BOT_TOKENundTELEGRAM_CHAT_IDprüfen- Webhook-Status prüfen:
GET https://api.telegram.org/bot<TOKEN>/getWebhookInfo
N8N bekommt 401:
N8N_API_KEYin.envund N8N-Workflow-Header müssen übereinstimmen
Alle Artikel werden abgelehnt:
PIPELINE_RELEVANCE_WARNtemporär auf 40 senken zum Testen- Über
/rejected+ Override-Button manuell testen
Artikel werden doppelt importiert:
- Deduplication läuft über
source_url(eindeutig). Bereits verarbeitete Artikel werden nie erneut als Draft angelegt.