Portfolio-Projekt
So funktioniert’s
Die Seite liest keine Artikel und wählt nichts von Hand aus. Sie sammelt nur die Schlagzeilen großer deutscher Medien und lässt Maschinen erkennen, welche davon dieselbe Geschichte erzählen. Je mehr Medien über eine Geschichte berichten, desto weiter oben steht sie. Alles läuft lokal und kostenlos, ohne bezahlte KI-Dienste.
- 1QuellenRSS-Feeds0 Medien
- 2SammelnPython · alle 20 Min.0 Schlagzeilen
- 3Verstehenbge-m3 Embeddings0 Vektoren
- 4GruppierenUMAP + HDBSCAN–
- 5BenennenLokales LLM (Ollama)–
- 6ZeigenNext.jsdiese Website
Alle Bausteine laufen als Docker-Container und lassen sich mit einem Befehl starten.
16 Medien, nur Schlagzeilen
tagesschau, ZDFheute, SPIEGEL, ZEIT, FAZ, Süddeutsche, WELT, taz, Handelsblatt und weitere stellen ihre neuesten Meldungen als RSS-Feed bereit. Gespeichert werden ausschließlich Schlagzeile, Link und Zeitpunkt – keine Teaser, keine Artikeltexte. Jede Schlagzeile auf dieser Seite verlinkt auf das Original.
Alle 20 Minuten ein Durchlauf
Ein kleiner Python-Dienst ruft die Feeds ab, entfernt Tracking-Parameter aus den Links und schreibt neue Schlagzeilen in die Datenbank. Taucht dieselbe Meldung wieder auf, wird sie nicht doppelt gespeichert. Fällt ein Feed aus, laufen die anderen weiter.
- Schlagzeilen gesamt
- 0
- Feed-Abrufe
- 0
Aus Wörtern werden Zahlen
Das Sprachmodell bge-m3 übersetzt jede Schlagzeile in 1.024 Zahlen, einen sogenannten Vektor. Schlagzeilen mit ähnlicher Bedeutung bekommen ähnliche Vektoren – auch wenn sie ganz andere Wörter benutzen, etwa „Waffenruhe“ und „Feuerpause“. Das Modell läuft lokal auf der CPU, ohne Cloud-Dienst.
Dichte Gruppen werden Themen
Die Vektoren der letzten sieben Tage werden mit UMAP auf wenige Dimensionen verdichtet. HDBSCAN sucht darin Regionen, in denen viele Schlagzeilen nah beieinander liegen – jede solche Gruppe ist ein Thema. Einzelne Meldungen ohne Nachbarn bleiben bewusst ohne Thema. Typische Schlüsselwörter pro Thema liefert c-TF-IDF: Wörter, die in diesem Thema häufig und in anderen selten sind.
Ein lokales Sprachmodell schreibt die Titel
Schlüsselwörter allein sind schwer zu lesen. Deshalb bekommt ein Sprachmodell, das über Ollama auf demselben Rechner läuft, pro Thema die Schlüsselwörter und zehn typische Schlagzeilen. Es soll daraus einen sachlichen Titel mit höchstens acht Wörtern formulieren – ohne Fakten, die nicht in den Schlagzeilen stehen. Ist der Vorschlag zu lang oder eine Frage, wird er verworfen und neu angefragt. Aus den wichtigsten Themen schreibt es außerdem die Wochenübersicht.
Die Website liest direkt aus der Datenbank
Diese Seite ist mit Next.js gebaut. Server-Komponenten fragen PostgreSQL direkt ab, eine eigene API gibt es nicht. Die Diagramme sind von Hand als SVG gezeichnet, ohne Chart-Bibliothek.
Grundsätze und Grenzen
Kostenlos und lokal
Alle Modelle sind offen und laufen auf eigener Hardware. Keine bezahlte API, keine Daten an Dritte.
Urheberrecht respektieren
Nur Schlagzeile, Link und Zeitpunkt werden gespeichert. Gelesen wird beim Original.
Maschinen machen Fehler
Manche Gruppen mischen zwei Geschichten, und Sprachmodelle können Titel ungenau formulieren. Die Schlüsselwörter und alle Schlagzeilen bleiben deshalb sichtbar.
Lücken in den Daten
Die Demo sammelt auf einem Laptop. Schläft er, entstehen Lücken – das sieht man in den Tagesdiagrammen.
Technik
- Python
- feedparser
- PostgreSQL 18
- pgvector
- sentence-transformers
- bge-m3
- UMAP
- HDBSCAN
- c-TF-IDF
- Ollama
- Qwen 2.5
- Next.js 16
- React 19
- TypeScript
- Docker Compose