feat: rebuild rss-news backend, admin ui, and legal extraction pipeline

This commit is contained in:
Oliver 2026-02-18 09:46:44 +01:00
parent d65c55d315
commit 2c331d683b
No known key found for this signature in database
43 changed files with 3463 additions and 73 deletions

114
README.md
View file

@ -1,89 +1,63 @@
# 📰 RSS News Bot
# rss-news (Rebuild)
Ein intelligentes Tool zum Einlesen, Umschreiben und Veröffentlichen von Artikeln aus RSS-Feeds mit automatischer Tag-Erkennung, KI-unterstütztem Rewrite via GPT-4, Bildextraktion aus Originalartikeln und optionaler DALL·E-Bildgenerierung.
`rss-news` wird als bestehendes Repository weitergefuehrt und schrittweise zu einer robusten, rechtssicheren News-Pipeline neu aufgebaut.
![Version](https://img.shields.io/badge/version-1.5.2-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Python](https://img.shields.io/badge/python-3.10+-yellow)
![Streamlit](https://img.shields.io/badge/built%20with-Streamlit-ff4b4b)
Aktueller Stand:
- Alte Streamlit-App wird nicht produktiv genutzt.
- `news.vanityontour.de` wird bis zum Go-Live der neuen App auf `https://vanityontour.de` umgeleitet.
- Planung, Doku und Wiki werden als Grundlage fuer den Neuaufbau gepflegt.
---
## Ziele
- RSS-gestuetzte Artikelverarbeitung mit klaren Quellregeln
- Rechtssichere Nutzung (Quellen, Attribution, Lizenzinformationen)
- Zuverlaessige Automatisierung auf Hetzner
- Publikation nach WordPress (IONOS aktuell, spaeter offen)
- Zugriff nur nach Login (zunaechst User/Password)
## 🚀 Features
## Architektur-Richtung (MVP)
- Backend: `Python + FastAPI`
- Jobs: Queue-Worker (z. B. Redis + RQ/Celery)
- Daten: SQLite fuer MVP, spaeter optional PostgreSQL
- Auth: Session-Login mit einem Admin-User
- Publishing: WordPress REST API (Status zunaechst `pending`)
- 📡 **RSS-Feeds verwalten** (hinzufügen, aktualisieren)
- ✍️ **Artikel automatisch umschreiben** mit GPT-4
- 🏷️ **Tags automatisch generieren**
- 🖼️ **Bilder aus Originalartikeln extrahieren**
- 🪄 **Optionales DALL·E-Bild generieren**
- 🔧 **Bearbeiten von Bildmetadaten**
- 🗂️ **Statusverwaltung der Artikel (New, Rewrite, Process, etc.)**
- 📜 **Log-Viewer-Seite integriert**
- 📥 **Export zur Veröffentlichung auf WordPress vorbereitet**
- 📋 Artikeltabelle mit Status-Filter
- 🔍 Artikel-Expander mit Rewrite, Tags & Bildern
- 🪄 Button für KI-Bildgenerierung
Details: `docs/PROJECT_PLAN.md`
## Projektsteuerung
- GitHub Project: `https://github.com/users/OliverGiertz/projects/3/views/1`
- Dieses Board ist die zentrale Steuerung fuer ToDos, Bugs, Verbesserungen.
- Wiki-Struktur liegt unter `docs/wiki/`.
---
## Dokumentation
- Projektplan: `docs/PROJECT_PLAN.md`
- ToDo-Liste: `docs/TODO.md`
- Quell- und Lizenzpolicy: `docs/SOURCE_POLICY.md`
- Wiki Home: `docs/wiki/Home.md`
## 🧱 Projektstruktur
ss-news/
├── app.py # Haupt-UI mit Streamlit
├── main.py # Logik für Feed-Import und Verarbeitung
├── utils/
│ └── image_extractor.py # Bilder aus Originalartikeln extrahieren
│ └── dalle_generator.py # DALL·E-Integration (KI-Bild)
├── pages/
│ └── log_viewer.py # UI zur Anzeige der Logs
├── data/
│ └── articles.json # Gespeicherte Artikel
│ └── feeds.json # Gespeicherte Feed-URLs
├── logs/
│ └── rss_tool.log # Logging der Verarbeitung
├── versioning.py # CLI-Tool zur Versionierung & Release
├── TEST-CHECKLIST.md # Manuelle Prüfliste für Releases
├── version.py # Aktuelle Version
└── CHANGELOG.md # Änderungsprotokoll
---
## ⚙️ Installation
## Lokale Entwicklung (Legacy-Code)
Der vorhandene Legacy-Stand kann weiterhin lokal gestartet werden:
```bash
git clone https://github.com/OliverGiertz/rss-news.git
cd rss-news
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
---
## Update
Ein Update Script findest du hier: https://gist.github.com/OliverGiertz/ad33ae3de9aa1c1163dad5fe8affb6ca
```bash
bash update.sh
```
## ▶️ Starten der App
streamlit run app.py
```
---
Hinweis: Diese App ist funktional historisch und wird durch die neue Architektur ersetzt.
## 🔐 Konfiguration (.env)
## Deployment-Zielbild
- Betrieb auf Hetzner
- Reverse Proxy via CloudPanel/Nginx
- Produktive Domain: `news.vanityontour.de`
- Bis zur Fertigstellung: Redirect auf `https://vanityontour.de`
Lege eine `.env` im Projekt an (siehe `.env.example`). Erforderliche Variablen:
## Sicherheit
- Keine Secrets im Repository
- `.env` lokal/auf Server, nie committen
- Auth-Pflicht fuer die neue WebApp
- spaeter optional: Passkeys/WebAuthn
- `WP_BASE_URL`: Basis-URL deiner WordPress-Seite (z. B. https://example.com)
- Authentifizierung (eine Option wählen):
- `WP_AUTH_BASE64`: Bevorzugt. Base64 von `username:application_password`
- oder `WP_USERNAME` und `WP_PASSWORD`: Benutzer + Anwendungspasswort
- Optional: `OPENAI_API_KEY` für das Umschreiben von Artikeln
## Rechtlicher Hinweis
Dieses Projekt verarbeitet nur Quellen mit dokumentierter Nutzungsgrundlage. Vor produktiver Nutzung ist eine finale rechtliche Pruefung der ausgewaehlten Feeds notwendig.
Hinweis: Der Code liest ausschließlich aus `.env`. Es gibt keine hartkodierten Standard-Credentials.