Automatisches Einlesen, Umschreiben & Vorbereiten von RSS-Artikeln zur Veröffentlichung
1. Article age filter (ingestion.py + config.py):
- New setting pipeline_max_article_age_days=7 (0 = no limit)
- Skip RSS entries older than N days before expensive extract_article()
- Prevents old articles from Google Alerts re-entering pipeline
2. Image URL pre-validation (ingestion.py):
- HEAD request probe for each primary image candidate during ingestion
- Falls back to next-best candidate if primary returns 4xx
- Network errors treated as OK to avoid false negatives on flaky servers
3. Stale WP draft cleanup (pipeline.py):
- Quality gate rejections now delete any pre-existing WP draft (wp_post_id)
- Prevents orphaned drafts when re-running articles that previously had drafts
4. Schedule overview UI (scheduler.py + admin_ui.py + admin_schedule.html):
- New /admin/schedule page showing calendar grid of all booked slots
- Distinguishes Pipeline-DB slots from WordPress-only slots
- Link added to dashboard navigation
5. Retry for failed articles (admin_ui.py + admin_dashboard.html):
- New POST /admin/articles/{id}/retry endpoint: resets to 'new', releases slot
- '🔄 Wiederholen' button shown in dashboard for all 'close' (error) articles
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .dedupe | ||
| .github | ||
| backend | ||
| data | ||
| docs | ||
| internal | ||
| logs | ||
| pages | ||
| scripts | ||
| static | ||
| tools | ||
| utils | ||
| .env.example | ||
| .gitignore | ||
| __version__.py | ||
| AGENTS.md | ||
| app.py | ||
| CHANGELOG.md | ||
| LICENCE | ||
| main.py | ||
| pytest.ini | ||
| README.md | ||
| requirements.txt | ||
| test_checklist.md | ||
| versioning.py | ||
rss-news (Rebuild)
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.dewird bis zum Go-Live der neuen App aufhttps://vanityontour.deumgeleitet.- 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)
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)
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
Lokale Entwicklung (Legacy-Code)
Der vorhandene Legacy-Stand kann weiterhin lokal gestartet werden:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py
Hinweis: Diese App ist funktional historisch und wird durch die neue Architektur ersetzt.
Deployment-Zielbild
- Betrieb auf Hetzner
- Reverse Proxy via CloudPanel/Nginx
- Produktive Domain:
news.vanityontour.de - Bis zur Fertigstellung: Redirect auf
https://vanityontour.de
Sicherheit
- Keine Secrets im Repository
.envlokal/auf Server, nie committen- Auth-Pflicht fuer die neue WebApp
- spaeter optional: Passkeys/WebAuthn
Rechtlicher Hinweis
Dieses Projekt verarbeitet nur Quellen mit dokumentierter Nutzungsgrundlage. Vor produktiver Nutzung ist eine finale rechtliche Pruefung der ausgewaehlten Feeds notwendig.