feat: rebuild rss-news backend, admin ui, and legal extraction pipeline
This commit is contained in:
parent
d65c55d315
commit
2c331d683b
43 changed files with 3463 additions and 73 deletions
114
README.md
114
README.md
|
|
@ -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.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue