News Aggregator: Nachrichten ohne Clickbait
Strukturiert regionale und überregionale Nachrichten ohne Clickbait und Werbung. Eine familienfreundliche PWA mit Fokus auf Fulda/Osthessen, Hessen und Bundesliga, inklusive KI-Zusammenfassungen und Volltext-Suche.
Projekt auf einen Blick
Die Ausgangslage
Nachrichten lesen sollte informieren, nicht aufregen. Die meisten kostenlosen Nachrichtenangebote leben von Klicks. Und Klicks bekommt man mit Empörung, Reißerischem, Halbwahrheiten. Das wollte ich nicht.
Nachrichten, die ich lesen will, nicht Nachrichten, die mich zum Klicken verführen sollen.
Die Herausforderung
Automatisiert aus vielen RSS-Quellen zu importieren ist einfach. Automatisiert zu erkennen, dass fünf Quellen gerade über dasselbe Ereignis mit leicht unterschiedlichem Wortlaut berichten, ist die eigentliche Aufgabe. Ohne Bündelung entsteht Redundanz statt Überblick.
Zusätzlich sollte kein Nutzer-Browser direkt gegen externe News-APIs sprechen: aus Sicherheits- und Performance-Gründen musste der komplette Datenimport serverseitig laufen, unabhängig vom einzelnen Seitenaufruf.
Die Lösung
Eine klare Trennung übernimmt die Arbeit: n8n kümmert sich um sämtliche Datenimporte im Hintergrund, SHA256-Hashes erkennen Duplikate, Jaccard-Similarity gruppiert verwandte Artikel zu Themen-Clustern, Claude Haiku fasst jeden Artikel zusammen. Supabase speichert alles zentral, Next.js liefert nur noch das fertige Frontend aus; kein direkter API-Call vom Browser an externe Quellen.
Die Umsetzung
Architektur
Die 5 n8n-Flows
| Flow | Trigger | Was er tut |
|---|---|---|
| Quellenimport | alle 30 Min. | RSS-Feeds lesen, SHA256-Hash zur Duplikat-Erkennung, in Supabase schreiben |
| Themenbündelung | alle 2h | Jaccard-Similarity gruppiert verwandte Artikel automatisch zu Themen-Clustern |
| KI-Zusammenfassungen | tägl. 06:00 | Claude Haiku erstellt ai_summary + Bullet-Points für jeden Artikel |
| Bundesliga | tägl. 18:00 + 23:00 | OpenLigaDB → Tabelle + Spieltag-Ergebnisse in Supabase upserten |
| Cleanup | tägl. 03:00 | Artikel älter als 14 Tage auf is_active=false setzen |
Die App-Seiten
Design & PWA
Das Design folgt einem klaren Leitmotiv: „Newsportal Rot": roter Akzent (#CC0D18), Barlow Condensed als Schrift, warmer Cremehintergrund (#F4F0E8). Nicht zufällig gewählt, sondern als Referenz an klassisches deutsches Nachrichtendesign.
Das Frontend ist als PWA ausgelegt: Service Worker, Manifest, installierbar auf dem Handy-Homescreen. Nachrichten lesen wie in einer nativen App, aber vollständig im Browser, ohne App Store.
Täglich um 06:00 Uhr erstellt ein n8n-Flow für jeden Artikel eine KI-Zusammenfassung und strukturierte Bullet-Points mit Claude Haiku. So bekommt man auf der Detailseite sofort die wichtigsten Punkte, ohne den ganzen Artikel lesen zu müssen. Das spart Zeit und macht den News Aggregator zu mehr als einem RSS-Reader.
Quellen
Alle Quellen sind sorgfältig ausgewählt: keine Yellow-Press, keine Clickbait-Seiten. Die Kernquellen: ARD Tagesschau (Inland, Ausland, Wirtschaft, Wissen, Panorama, Sport), Deutschlandfunk, Zeit Online, Süddeutsche Zeitung und Heise Online für Tech-Themen. Regional: Osthessen News und HR Hessen. Bundesliga über OpenLigaDB (kostenlos, kein API-Key).
Ergebnis & Mehrwert
Statt fünf ähnlicher Artikel zum selben Ereignis erscheint ein gebündeltes Thema mit KI-Zusammenfassung: seriöse Quellen, werbefrei und ohne Tracking, mit schnellem Überblick statt Clickbait-Ablenkung.
Screenshots
Erkenntnisse
Eine Erkenntnis aus diesem Projekt: Jaccard-Similarity für das Themen-Clustering ist schnell implementiert, aber den Schwellenwert richtig zu kalibrieren hat mehrere Anläufe gebraucht: zu strikt, und ähnliche Artikel blieben getrennt; zu locker, und unterschiedliche Themen wurden fälschlich zusammengefasst.
Mir ist außerdem klar geworden, wie viel eine klare Backend/Frontend-Trennung für eine PWA bringt: Weil n8n den gesamten Datenimport übernimmt, bleibt Next.js schlank und schnell, unabhängig davon, wie viele Quellen dazukommen.
Verwandte Projekte
Weitere automatisierte Workflows und Web-Apps gibt es in der Portfolio-Übersicht.
