diff --git a/Makefile b/Makefile index 5025b34..86067a6 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ build: mkdocs build serve: - mkdocs serve -a 0.0.0.0:8000 + mkdocs serve --livereload -a 0.0.0.0:8000 -w overrides clean: rm -rf site .env diff --git a/docs/assets/screenshots/bbc/bbc-article1-basic.png b/docs/assets/screenshots/bbc/bbc-article1-basic.png deleted file mode 100644 index fff2ab7..0000000 Binary files a/docs/assets/screenshots/bbc/bbc-article1-basic.png and /dev/null differ diff --git a/docs/assets/screenshots/bbc/bbc-article1-expanded.png b/docs/assets/screenshots/bbc/bbc-article1-expanded.png deleted file mode 100644 index c1d6f17..0000000 Binary files a/docs/assets/screenshots/bbc/bbc-article1-expanded.png and /dev/null differ diff --git a/docs/assets/screenshots/bbc/bbc-article2-basic.png b/docs/assets/screenshots/bbc/bbc-article2-basic.png deleted file mode 100644 index 5fc76e7..0000000 Binary files a/docs/assets/screenshots/bbc/bbc-article2-basic.png and /dev/null differ diff --git a/docs/assets/screenshots/bbc/bbc-article2-expanded.png b/docs/assets/screenshots/bbc/bbc-article2-expanded.png deleted file mode 100644 index 5d95c04..0000000 Binary files a/docs/assets/screenshots/bbc/bbc-article2-expanded.png and /dev/null differ diff --git a/docs/assets/screenshots/bbc/bbc-portal.jpg b/docs/assets/screenshots/bbc/bbc-portal.jpg deleted file mode 100644 index 5572e4a..0000000 Binary files a/docs/assets/screenshots/bbc/bbc-portal.jpg and /dev/null differ diff --git a/docs/assets/screenshots/bbc/portal-hover.png b/docs/assets/screenshots/bbc/portal-hover.png deleted file mode 100644 index 1d474f5..0000000 Binary files a/docs/assets/screenshots/bbc/portal-hover.png and /dev/null differ diff --git a/docs/assets/screenshots/lmstudio-rtx3060.png b/docs/assets/screenshots/lmstudio-rtx3060.png index 61d7f11..e0854b7 100644 Binary files a/docs/assets/screenshots/lmstudio-rtx3060.png and b/docs/assets/screenshots/lmstudio-rtx3060.png differ diff --git a/docs/assets/screenshots/portal/apollo-news.png b/docs/assets/screenshots/portal/apollo-news.png index f843d81..3b564d5 100644 Binary files a/docs/assets/screenshots/portal/apollo-news.png and b/docs/assets/screenshots/portal/apollo-news.png differ diff --git a/docs/assets/screenshots/portal/apollo-news_article1.png b/docs/assets/screenshots/portal/apollo-news_article1.png new file mode 100644 index 0000000..36c69e8 Binary files /dev/null and b/docs/assets/screenshots/portal/apollo-news_article1.png differ diff --git a/docs/assets/screenshots/portal/apollo-news_article2.png b/docs/assets/screenshots/portal/apollo-news_article2.png new file mode 100644 index 0000000..78d944f Binary files /dev/null and b/docs/assets/screenshots/portal/apollo-news_article2.png differ diff --git a/docs/assets/screenshots/portal/bbc.png b/docs/assets/screenshots/portal/bbc.png deleted file mode 100644 index df11300..0000000 Binary files a/docs/assets/screenshots/portal/bbc.png and /dev/null differ diff --git a/docs/assets/screenshots/portal/heise.png b/docs/assets/screenshots/portal/heise.png deleted file mode 100644 index 18dd889..0000000 Binary files a/docs/assets/screenshots/portal/heise.png and /dev/null differ diff --git a/docs/assets/screenshots/portal/nypost.png b/docs/assets/screenshots/portal/nypost.png new file mode 100644 index 0000000..1a192ad Binary files /dev/null and b/docs/assets/screenshots/portal/nypost.png differ diff --git a/docs/assets/screenshots/portal/nypost_article1.png b/docs/assets/screenshots/portal/nypost_article1.png new file mode 100644 index 0000000..fd64c26 Binary files /dev/null and b/docs/assets/screenshots/portal/nypost_article1.png differ diff --git a/docs/assets/screenshots/portal/nypost_article2.png b/docs/assets/screenshots/portal/nypost_article2.png new file mode 100644 index 0000000..248b8a6 Binary files /dev/null and b/docs/assets/screenshots/portal/nypost_article2.png differ diff --git a/docs/assets/screenshots/portal/nypost_context.png b/docs/assets/screenshots/portal/nypost_context.png new file mode 100644 index 0000000..02902f3 Binary files /dev/null and b/docs/assets/screenshots/portal/nypost_context.png differ diff --git a/docs/assets/screenshots/portal/nypost_lifecycle.png b/docs/assets/screenshots/portal/nypost_lifecycle.png new file mode 100644 index 0000000..289e2d7 Binary files /dev/null and b/docs/assets/screenshots/portal/nypost_lifecycle.png differ diff --git a/docs/assets/screenshots/portal/nypost_tag_cloud.png b/docs/assets/screenshots/portal/nypost_tag_cloud.png new file mode 100644 index 0000000..47b4701 Binary files /dev/null and b/docs/assets/screenshots/portal/nypost_tag_cloud.png differ diff --git a/docs/assets/screenshots/portal/nypost_vs_washington_post.png b/docs/assets/screenshots/portal/nypost_vs_washington_post.png new file mode 100644 index 0000000..63b218d Binary files /dev/null and b/docs/assets/screenshots/portal/nypost_vs_washington_post.png differ diff --git a/docs/assets/screenshots/portal/nytimes.png b/docs/assets/screenshots/portal/nytimes.png index 83a0b23..f5cb8cc 100644 Binary files a/docs/assets/screenshots/portal/nytimes.png and b/docs/assets/screenshots/portal/nytimes.png differ diff --git a/docs/assets/screenshots/portal/nytimes_article1.png b/docs/assets/screenshots/portal/nytimes_article1.png new file mode 100644 index 0000000..6d94fed Binary files /dev/null and b/docs/assets/screenshots/portal/nytimes_article1.png differ diff --git a/docs/assets/screenshots/portal/nytimes_article2.png b/docs/assets/screenshots/portal/nytimes_article2.png new file mode 100644 index 0000000..3a963de Binary files /dev/null and b/docs/assets/screenshots/portal/nytimes_article2.png differ diff --git a/docs/assets/screenshots/portal/spiegel.png b/docs/assets/screenshots/portal/spiegel.png deleted file mode 100644 index 308b6d7..0000000 Binary files a/docs/assets/screenshots/portal/spiegel.png and /dev/null differ diff --git a/docs/assets/screenshots/portal/tagesschau.png b/docs/assets/screenshots/portal/tagesschau.png index bd2b429..1cd0a83 100644 Binary files a/docs/assets/screenshots/portal/tagesschau.png and b/docs/assets/screenshots/portal/tagesschau.png differ diff --git a/docs/assets/screenshots/portal/tagesschau_article1.png b/docs/assets/screenshots/portal/tagesschau_article1.png new file mode 100644 index 0000000..02097c3 Binary files /dev/null and b/docs/assets/screenshots/portal/tagesschau_article1.png differ diff --git a/docs/assets/screenshots/portal/tagesschau_article2.png b/docs/assets/screenshots/portal/tagesschau_article2.png new file mode 100644 index 0000000..f1ed3f0 Binary files /dev/null and b/docs/assets/screenshots/portal/tagesschau_article2.png differ diff --git a/docs/assets/screenshots/portal/tagesschau_context.png b/docs/assets/screenshots/portal/tagesschau_context.png new file mode 100644 index 0000000..89ed65f Binary files /dev/null and b/docs/assets/screenshots/portal/tagesschau_context.png differ diff --git a/docs/assets/screenshots/portal/tagesschau_lifecycle.png b/docs/assets/screenshots/portal/tagesschau_lifecycle.png new file mode 100644 index 0000000..f8e4314 Binary files /dev/null and b/docs/assets/screenshots/portal/tagesschau_lifecycle.png differ diff --git a/docs/assets/screenshots/portal/tagesschau_tag_cloud.png b/docs/assets/screenshots/portal/tagesschau_tag_cloud.png new file mode 100644 index 0000000..bd646b7 Binary files /dev/null and b/docs/assets/screenshots/portal/tagesschau_tag_cloud.png differ diff --git a/docs/assets/screenshots/portal/tagesschau_vs_apollo-news.png b/docs/assets/screenshots/portal/tagesschau_vs_apollo-news.png new file mode 100644 index 0000000..10b6d1a Binary files /dev/null and b/docs/assets/screenshots/portal/tagesschau_vs_apollo-news.png differ diff --git a/docs/assets/screenshots/rss-feed/updated.jpg b/docs/assets/screenshots/rss-feed/deframed.jpg similarity index 100% rename from docs/assets/screenshots/rss-feed/updated.jpg rename to docs/assets/screenshots/rss-feed/deframed.jpg diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article1-basic.png b/docs/assets/screenshots/tagesschau/tagesschau-article1-basic.png index feaf7e2..6cd00d2 100644 Binary files a/docs/assets/screenshots/tagesschau/tagesschau-article1-basic.png and b/docs/assets/screenshots/tagesschau/tagesschau-article1-basic.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article1-expanded.png b/docs/assets/screenshots/tagesschau/tagesschau-article1-expanded.png index 4960b20..8e52ff6 100644 Binary files a/docs/assets/screenshots/tagesschau/tagesschau-article1-expanded.png and b/docs/assets/screenshots/tagesschau/tagesschau-article1-expanded.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article2-basic.png b/docs/assets/screenshots/tagesschau/tagesschau-article2-basic.png index 6e2d3f8..dc2a988 100644 Binary files a/docs/assets/screenshots/tagesschau/tagesschau-article2-basic.png and b/docs/assets/screenshots/tagesschau/tagesschau-article2-basic.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article2-expanded.png b/docs/assets/screenshots/tagesschau/tagesschau-article2-expanded.png index d8cfaa2..543d659 100644 Binary files a/docs/assets/screenshots/tagesschau/tagesschau-article2-expanded.png and b/docs/assets/screenshots/tagesschau/tagesschau-article2-expanded.png differ diff --git a/docs/assets/social.png b/docs/assets/social.png index 2d58199..ee6ba0a 100644 Binary files a/docs/assets/social.png and b/docs/assets/social.png differ diff --git a/docs/de/index.md b/docs/de/index.md index 5bdde09..8dc9f68 100644 --- a/docs/de/index.md +++ b/docs/de/index.md @@ -1,54 +1,61 @@ # News Deframer -> :mega: **Hinweis:** Wir suchen einen [Sponsor](sponsors.md), um dieses Projekt in den USA zu hosten. :flag_us: :statue_of_liberty: +> **Hinweis:** Wir suchen einen [Sponsor](sponsors.md), um dieses Projekt in den USA zu hosten. -Der "News Deframer" ist ein sprachliches Analysetool, für alle Ihre präferierten Nachrichtenseiten. Mit Hilfe von LLMs analysiert es die Nachrichten Schlagzeilen. Die Anwendung besitzt zwei Verwendungsmöglichkeiten: einen **RSS-Feed-Proxy** und ein **Browser-Plugin**. +Der „News Deframer“ ist ein sprachliches Analysetool für Ihre bevorzugten Nachrichtenseiten. Mithilfe von LLMs analysiert es Schlagzeilen und formuliert sie in neutraler Sprache neu. -## Video +> Ein Werbeblocker blockiert unerwünschte Werbung. Der News Deframer reduziert die mentale Wirkung von Clickbait, indem er die Portalseite großer Nachrichtenangebote durch neutral formulierte Inhalte ersetzt. -[![News Deframer Promo](https://img.youtube.com/vi/flORP9WqgSw/maxresdefault.jpg){ width="500" }](https://www.youtube.com/watch?v=flORP9WqgSw&vq=hd1080 "News Deframer Promo"){ .glightbox data-width="100%" data-height="100%" } +## Was wir tun -[:fontawesome-brands-youtube: Auf YouTube anschauen](https://www.youtube.com/watch?v=flORP9WqgSw){ target="_blank" } +* Wir [ersetzen](showcases/index.md) die Portalseite. +* Jede Schlagzeile wird in neutrale Sprache überführt (Reduktion von Clickbait, Reizüberflutung, Suggestion und Framing). +* Integrierte [Trendanalyse](trends/index.md) zur Erkennung von Talking Points. +* Vergleich verschiedener Nachrichtenportale, z. B. "Tagesschau" mit "Apollo News" oder "Bild" mit dem "Bayerischen Rundfunk". +* Per Klick gelangen Sie zurück zum Originalartikel bzw. zur ursprünglichen Portalseite. -## Wir ersetzen die Portalseite +| | | +| :---------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | +| Tagesschau | Apollo News | +| [Showcase: Tagesschau](showcases/tagesschau.md) | [Showcase: Apollo News](showcases/apollo-news.md) | -Ein Werbeblocker blockiert Werbung, die Sie nicht wollen. Der News Deframer neutralisiert die mentale Wirkung von Clickbait, indem er die Portalseite jedes großen Nachrichtennetzwerks durch neutrale Sprache ersetzt. +## Video -Ein Wert von 50% oder höher deutet auf signifikantes Framing durch Sprache hin. Mit anderen Worten: Sehr wahrscheinlich versucht ein geschulter Journalist Sie mit Worte zu manipulieren und die KI sagt wo und wie. Der Titel oder die Beschreibung sind Clickbait, Framing, Reizüberflutung oder dient einer Agenda. +[![News Deframer Promo](https://img.youtube.com/vi/flORP9WqgSw/maxresdefault.jpg){ width="500" }](https://www.youtube.com/watch?v=flORP9WqgSw&vq=hd1080 "News Deframer Promo"){ .glightbox data-width="100%" data-height="100%" } -| | | -| :---: | :---: | -| **Apollo News** | **Heise** | -| Apollo News | Heise | -| **BBC** | **Tagesschau** | -| BBC | Tagesschau | -| **Spiegel** | **NY Times** | -| Spiegel | NY Times | +[Auf YouTube ansehen](https://www.youtube.com/watch?v=flORP9WqgSw){ target="_blank" } -## Was dieses Projekt ist und was nicht +## Was dieses Projekt ist – und was nicht -- Es handelt sich **nicht** um einen Fake-News-Detektor! Es findet keine inhaltliche Überprüfung der Nachrichten statt. -- Dieses Projekt verwendet ein LLM, das als neutraler Journalist operiert, um Inhalte auf Voreingenommenheit zu prüfen und die Einhaltung neutraler Sprache zu analysieren. -- Wir verwenden offene [Prompts](https://github.com/deframer/news-deframer/blob/main/pkg/think/prompts) die auf jedem LLM ausgeführt werden können. +* **Kein** Fake-News-Detektor: Es findet keine inhaltliche Faktenprüfung statt. +* Ein LLM agiert als neutraler Journalist und analysiert Inhalte hinsichtlich sprachlicher Voreingenommenheit und Neutralität. +* Es werden offene [Prompts](https://github.com/deframer/news-deframer/blob/main/pkg/think/prompts) verwendet, die mit unterschiedlichen LLMs ausgeführt werden können. -## Warum ist eine Sprachanalyse geboten und effektiv +## Sprachanalyse -- Wir möchten dabei helfen, die emotionale Wirkung von Schlagzeilen zu vermindern. -- Desinformation und Spekulation beruhen oft auf "Dark Patterns, Clickbait und emotionalen Triggern". -- Autoren von Desinformation verwenden häufig verschleiernde, reißerische und vage Sprachmittel, um rechtliche Konsequenzen zu vermeiden, aber einen bestimmten Effekt beim Leser hervorzurufen. +Warum Sprachanalyse wirksam ist: -**Hinweis**: Es kann zu falsch-positiven / falsch-negativen Ergebnissen kommen. +* Ziel ist es, die emotionale Wirkung von Schlagzeilen zu reduzieren. +* Desinformation und Spekulation basieren häufig auf Dark Patterns, Clickbait und emotionalen Triggern. +* Verfasser von Desinformation nutzen oft reißerische, vage oder verschleiernde Formulierungen, um rechtliche Konsequenzen zu vermeiden und dennoch eine bestimmte Wirkung zu erzielen. + +**Warnung:** Durch den Einsatz eines LLMs kann es zu falsch-positiven oder falsch-negativen Ergebnissen kommen. Im ungünstigsten Fall wird ein qualitativ hochwertiger Artikel übersehen oder ein Clickbait-Artikel nicht erkannt. ## Installation Richten Sie Ihre eigene [Instanz](https://github.com/deframer/news-deframer/blob/main/docs/SETUP.md){ target="_blank" } ein. -## Chrome Erweiterung +## Funktionsweise + +Der News Deframer fungiert als RSS-Feed-Proxy. Die Schlagzeilen werden aus dem [RSS](rss-feed.md) eines Portals bezogen. +Der Feed wird verarbeitet und durch neutral formulierte Schlagzeilen ersetzt. Diese aktualisierten Daten werden zudem vom **Browser-Plugin** verwendet, das die Portalseite der jeweiligen Nachrichtenquelle ersetzt. + +## Chrome-Erweiterung -Installation der [Chrome Erweiterung](https://chromewebstore.google.com/detail/ffpibngfmnagagggbjpgjbmehhilfinp){ target="_blank" }. +Installation der [Chrome-Erweiterung](https://chromewebstore.google.com/detail/ffpibngfmnagagggbjpgjbmehhilfinp){ target="_blank" }. ## Ressourcen -- [Quellcode](https://github.com/deframer/news-deframer/) -- [Fehlerbericht](https://github.com/deframer/news-deframer/issues) -- [Lizenz](https://github.com/deframer/news-deframer/blob/main/LICENSE) +* [Quellcode](https://github.com/deframer/news-deframer/) +* [Fehler melden](https://github.com/deframer/news-deframer/issues) +* [Lizenz](https://github.com/deframer/news-deframer/blob/main/LICENSE) diff --git a/docs/de/screenshots/rss-feed.md b/docs/de/rss-feed.md similarity index 85% rename from docs/de/screenshots/rss-feed.md rename to docs/de/rss-feed.md index ab3b598..0e31b47 100644 --- a/docs/de/screenshots/rss-feed.md +++ b/docs/de/rss-feed.md @@ -4,15 +4,15 @@ Dieses Beispiel stammt aus dem Feed `https://rss.nytimes.com/services/xml/rss/ny ## Screenshots -Es wurde `freshrss` verwendet um die Screenshots zu erzeugen. Der "News Deframer" neutralisiert den Ton jedes Artikels und stellt sicher, dass er sich als objektive Nachricht liest. +Es wurde [freshrss](https://www.freshrss.org/){ target="_blank" } verwendet um die Screenshots zu erzeugen. Der "News Deframer" neutralisiert den Ton jedes Artikels und stellt sicher, dass er sich als objektive Nachricht liest. -| Aktualisiert | Original | +| Deframed | Original | | :---: | :---: | -| Aktualisiert | Original | +| Deframed | Original | ## Proxy XML-Feed -Die KI analysiert den Upstream-Inhalt, liefert eine Begründung für ihre Bewertung und führt notwendige Ersetzungen durch, um die Sprache zu entschärfen. +Die KI analysiert den Feed, liefert eine Begründung für ihre Bewertung und erzeugt eine neue Schlagzeile, um die Sprache zu entschärfen. ```xml diff --git a/docs/de/screenshots/bbc.md b/docs/de/screenshots/bbc.md deleted file mode 100644 index f9f30b7..0000000 --- a/docs/de/screenshots/bbc.md +++ /dev/null @@ -1,41 +0,0 @@ -# BBC - -- RSS-Feed `https://feeds.bbci.co.uk/news/world/rss.xml` - -## Portal - -Das Plugin überlagert die ursprüngliche Webseite, ohne den Inhalt zu verändern, und so eine ablenkungsfreie Darstellung zu schaffen. - -**Hauptmerkmale:** - -- **Neutralisierter Inhalt**: Sie sehen nicht die ursprünglichen, potenziell emotional aufgeladenen Titel oder Beschreibungen. Stattdessen generiert die KI neutrale Zusammenfassungen, die Sie informieren, anstatt Sie zu provozieren, zu empören oder anderweitig zu einer Tendenz zu bewegen. -- **Sensations-Score**: Die Prozentanzeige stellt das Niveau des erkannten Sensationalismus oder der Voreingenommenheit im jeweiligen Artikel bzw. dessen Überschrift dar. Ein roter Indikator deutet auf ein relativ hohes Maß an Manipulation, Framing, Voreingenommenheit oder Fehlinformationen etc. hin. - -**Empfehlung**: Ein Score von 50 % oder höher deutet auf eine wenig vorliegende neutrale Berichterstattung hin. Wir empfehlen dann eine alternative Informationsquellen zum jeweiligen Thema zu suchen, um eine ausgewogenere Perspektive zu erhalten. - -BBC Portal - -**Schnelle Einblicke**: Wenn Sie mit dem Mauszeiger über die Prozentanzeige fahren, wird die detailliertere Analyse des "News Deframers" angezeigt. So können Sie weitere Informationen über die eingesetzten Sprachmittel und Absichten des Autors erfahren. Dies bietet mehr Anhalte dahingehend zu entscheiden, ob der vorliegende Artikel vollständig konsumiert oder aber übersprungen werden soll. - -Portal Hover - -## Artikel - -Sie behalten so die volle Kontrolle über Ihr Leseerlebnis. Das Plugin fängt die Navigation zu Artikel-URLs ab. Unabhängig davon, ob Sie über das Portal oder einen direkten Link auf den Artikel zugreifen, präsentiert der "News Deframer" immer zuerst die Analysevorschau, um Sie zu schützen. - -**Wichtiger Hinweis**: Das Plugin analysiert derzeit nur die Metadaten des RSS-Feeds (Titel und Beschreibung). Der Inhalt des Artikels bleibt unberührt. Zukünftige Updates können eine Volltext-KI-Analyse integrieren. - -- **"Verstecken"-Button**: Das schließt das Deframer-Overlay, um den ursprünglichen Artikel auf der Website des Herausgebers unverändert anzuzeigen. -- **Geschützte Ansicht**: Standardmäßig sind dabei der ursprüngliche Titel und die Beschreibung ausgeblendet, um die emotionale Wirkung zu reduzieren. Sie können die Ansicht erweitern, um die Bewertung der KI und den Originaltext zu sehen. - -Artikel 1 - -| Einfach | Erweitert | -| :---: | :---: | -| BBC Artikel 1 - Einfach | BBC Artikel 1 - Erweitert | - -Artikel 2 - -| Einfach | Erweitert | -| :---: | :---: | -| BBC Artikel 2 - Einfach | BBC Artikel 2 - Erweitert | diff --git a/docs/de/screenshots/tagesschau.md b/docs/de/screenshots/tagesschau.md deleted file mode 100644 index d52f04c..0000000 --- a/docs/de/screenshots/tagesschau.md +++ /dev/null @@ -1,23 +0,0 @@ -# Tagesschau - -- RSS-Feed `https://www.tagesschau.de/index~rss2.xml` - -## Portal - -**Empfehlung**: Ein Score von 50 % oder höher dient als Warnung. Er deutet auf die Verwendung von Spekulationen, Framing oder Sensationslust hin. Wir empfehlen, den ursprünglichen Titel und die Beschreibung vollständig zu meiden und eine objektivere Quellen zu suchen. Dies deutet darauf hin, dass professionelle Techniken absichtlich eingesetzt werden, um Ihre Wahrnehmung zu manipulieren. - -Tagesschau Portal - -## Artikel - -Artikel 1 - -| Einfach | Erweitert | -| :---: | :---: | -| Tagesschau Artikel 1 - Einfach | Tagesschau Artikel 1 - Erweitert | - -Artikel 2 - -| Einfach | Erweitert | -| :---: | :---: | -| Tagesschau Artikel 2 - Einfach | Tagesschau Artikel 2 - Erweitert | diff --git a/docs/de/showcases/apollo-news.md b/docs/de/showcases/apollo-news.md new file mode 100644 index 0000000..bc30220 --- /dev/null +++ b/docs/de/showcases/apollo-news.md @@ -0,0 +1,41 @@ +# Apollo News + +* RSS-Feed: `https://apollo-news.net/feed/` + +# Portal + +Apollo News - Portal + +* **Portal-Ersatz**: Die Standard-Startseite wird vollständig durch die benutzerdefinierte Portalansicht ersetzt. +* **Ausblenden-Button**: Mit dem Ausblenden-Button kann die ursprüngliche Startseite wieder angezeigt werden. + +## Artikel + +Artikel 1 + +Apollo News - Artikel 1 + +Artikel 2 + +Apollo News - Artikel 2 + +* **Artikel-Ersatz**: Wird die Artikel-URL erkannt, wird die komplette Artikelseite durch die benutzerdefinierte Ansicht ersetzt. +* **Ausblenden-Button**: Mit dem Ausblenden-Button kann zur ursprünglichen Artikelseite zurückgekehrt werden. + +## Trendanalyse + +Tagesschau - Tag Cloud + +* **Tag-Cloud**: Zeigt die häufigsten Themen und Schlagwörter im ausgewählten Zeitraum. + +Tagesschau - Lebenszyklus + +* **Lebenszyklus**: Nach Auswahl eines Trends aus der Tag-Cloud wird dessen zeitlicher Verlauf im gewählten Zeitraum dargestellt. + +Tagesschau - Kontext + +* **Kontext**: Nach Auswahl eines Trends werden die zugehörigen Verben angezeigt, die verdeutlichen, wie der Begriff verwendet wird. + +Tagesschau - Vergleich + +* **Vergleich**: Eine bekannte Quelle in der gewählten Sprache kann mit einer anderen Quelle verglichen werden. Die Ansicht zeigt zentrale Themen, identifiziert blinde Flecken einer Quelle und hebt gemeinsame Schwerpunkte beider Quellen hervor. diff --git a/docs/de/screenshots/index.md b/docs/de/showcases/index.md similarity index 84% rename from docs/de/screenshots/index.md rename to docs/de/showcases/index.md index aa48a40..da5fe3b 100644 --- a/docs/de/screenshots/index.md +++ b/docs/de/showcases/index.md @@ -1,9 +1,7 @@ -# Screenshots +# Showcases -## Browser-Plugin - -- [BBC](bbc.md) - [Tagesschau](tagesschau.md) +- [Apollo News](apollo-news.md) ## RSS Feed @@ -14,8 +12,8 @@ Die folgende Konfiguration wurde verwendet, um diese Beispiele zu erstellen: - **Hardware**: Mac Mini M1 (16GB RAM), unter macOS Tahoe 26.2 -- **Software**: [LM Studio](https://lmstudio.ai/) 0.3.39 -- **Modell**: [meta-llama-3.1-8b-instruct](https://huggingface.co/lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF) +- **Software**: [LM Studio](https://lmstudio.ai/) 0.4.2 +- **Modell**: [ministral-3-3b](https://huggingface.co/lmstudio-community/Ministral-3-3B-Instruct-2512-GGUF) Das System verwendet diese [Prompts](https://github.com/deframer/news-deframer/tree/main/pkg/think/prompts/). diff --git a/docs/de/showcases/tagesschau.md b/docs/de/showcases/tagesschau.md new file mode 100644 index 0000000..f348f2a --- /dev/null +++ b/docs/de/showcases/tagesschau.md @@ -0,0 +1,41 @@ +# Tagesschau + +* RSS-Feed: `https://www.tagesschau.de/infoservices/alle-meldungen-100~rss2.xml` + +# Portal + +Tagesschau - Portal + +* **Portal-Ersatz**: Die Standard-Startseite wird vollständig durch die benutzerdefinierte Portalansicht ersetzt. +* **Ausblenden-Button**: Mit dem Ausblenden-Button kann die ursprüngliche Startseite wieder angezeigt werden. + +## Artikel + +Artikel 1 + +Tagesschau - Artikel 1 + +Artikel 2 + +Tagesschau - Artikel 2 + +* **Artikel-Ersatz**: Wird die Artikel-URL erkannt, wird die komplette Artikelseite durch die benutzerdefinierte Ansicht ersetzt. +* **Ausblenden-Button**: Mit dem Ausblenden-Button kann zur ursprünglichen Artikelseite zurückgekehrt werden. + +## Trendanalyse + +Tagesschau - Tag Cloud + +* **Tag-Cloud**: Zeigt die häufigsten Themen und Schlagwörter im ausgewählten Zeitraum. + +Tagesschau - Lebenszyklus + +* **Lebenszyklus**: Nach Auswahl eines Trends aus der Tag-Cloud wird dessen zeitlicher Verlauf im gewählten Zeitraum dargestellt. + +Tagesschau - Kontext + +* **Kontext**: Nach Auswahl eines Trends werden die zugehörigen Verben angezeigt, die verdeutlichen, wie der Begriff verwendet wird. + +Tagesschau - Vergleich + +* **Vergleich**: Eine bekannte Quelle in der gewählten Sprache kann mit einer anderen Quelle verglichen werden. Die Ansicht zeigt zentrale Themen, identifiziert blinde Flecken einer Quelle und hebt gemeinsame Schwerpunkte beider Quellen hervor. diff --git a/docs/de/trends/index.md b/docs/de/trends/index.md new file mode 100644 index 0000000..18f5aed --- /dev/null +++ b/docs/de/trends/index.md @@ -0,0 +1,17 @@ +# Trend Analyse + +Tagesschau - Tag Cloud + +* **Tag-Cloud**: Zeigt die häufigsten Themen und Schlagwörter im ausgewählten Zeitraum. + +Tagesschau - Lebenszyklus + +* **Lebenszyklus**: Nach Auswahl eines Trends aus der Tag-Cloud wird dessen zeitlicher Verlauf im gewählten Zeitraum dargestellt. + +Tagesschau - Kontext + +* **Kontext**: Nach Auswahl eines Trends werden die zugehörigen Verben angezeigt, die verdeutlichen, wie der Begriff verwendet wird. + +Tagesschau - Vergleich + +* **Vergleich**: Eine bekannte Quelle in der gewählten Sprache kann mit einer anderen Quelle verglichen werden. Die Ansicht zeigt zentrale Themen, identifiziert blinde Flecken einer Quelle und hebt gemeinsame Schwerpunkte beider Quellen hervor. diff --git a/docs/en/index.md b/docs/en/index.md index cef64a4..1a86c1e 100644 --- a/docs/en/index.md +++ b/docs/en/index.md @@ -1,52 +1,61 @@ + # News Deframer > :mega: **Note:** We are looking for a [Sponsor](sponsors.md) to host this project in the US. :flag_us: :statue_of_liberty: -News Deframer will detect journalistic neutrality and framing in news articles. By leveraging Large Language Models (LLMs), it analyzes the news headlines. It can act as an **RSS Feed Proxy** or as a **browser plugin**. +News Deframer analyzes journalistic neutrality and framing in news articles. By leveraging Large Language Models (LLMs), it evaluates and reformulates headlines in neutral language. -## Video +> An ad blocker removes unwanted advertisements. News Deframer reduces the mental impact of clickbait by replacing the portal page of major news networks with neutral wording. -[![News Deframer Promo](https://img.youtube.com/vi/japh9-H29qY/maxresdefault.jpg){ width="500" }](https://www.youtube.com/watch?v=japh9-H29qY&vq=hd1080 "News Deframer Promo"){ .glightbox data-width="100%" data-height="100%" } +## What we do -[:fontawesome-brands-youtube: Watch on YouTube](https://www.youtube.com/watch?v=japh9-H29qY){ target="_blank" } +- We [replace](showcases/index.md) the portal page. +- Every headline is reformulated in neutral language (reducing clickbait, overstimulation, persuasion, and framing). +- Built-in [trend analysis](trends/index.md) for detecting recurring talking points. +- Comparison of major news outlets, e.g., "The New York Times" and the "New York Post" or CNN and Fox News. +- One click restores the original article or the original portal page. -## We replace the portal page +| | | +| :---: | :---: | +| The New York Times | New York Post | +| [Open Showcase: The New York Times](showcases/nytimes.md) | [Open Showcase: New York Post](showcases/nypost.md) | -An Ad-Blocker blocks ads you don't want. The News Deframer vaporizes the mental impact of clickbait by replacing the portal page of any major news network with neutral language. +## Video -A score of 50% or higher suggests significant bias. In other words: A trained professional journalist is using words to mess with you and the AI will telly you where and how. The title or the description is clickbait, framing, hyper stimulus or pushing an agenda. +[![News Deframer Promo](https://img.youtube.com/vi/japh9-H29qY/maxresdefault.jpg){ width="500" }](https://www.youtube.com/watch?v=japh9-H29qY&vq=hd1080 "News Deframer Promo"){ .glightbox data-width="100%" data-height="100%" } -| | | -| :---: | :---: | -| **Apollo News** | **Heise** | -| Apollo News | Heise | -| **BBC** | **Tagesschau** | -| BBC | Tagesschau | -| **Spiegel** | **NY Times** | -| Spiegel | NY Times | +[:fontawesome-brands-youtube: Watch on YouTube](https://www.youtube.com/watch?v=japh9-H29qY){ target="_blank" } + +## What this project is — and is not -## What this project is and is not +- This is **not** a fake news detector. +- The system uses an LLM acting as a neutral journalist to assess linguistic bias and adherence to neutral language. +- Open and transparent [prompts](https://github.com/deframer/news-deframer/blob/main/pkg/think/prompts) are used and can be executed with any compatible LLM. -- This is **not** a fake news detector! -- This project uses an LLM acting as a neutral journalist to analyze content for bias and adherence to neutral language. -- We use open transparent [prompts](https://github.com/deframer/news-deframer/blob/main/pkg/think/prompts) that can be run on any LLM. +## Language analysis -## Why is language analysis effective +Why language analysis is effective: -- We aim to help you avoid engaging with questionable headlines. +- It helps reduce engagement with emotionally manipulative headlines. - Misinformation and speculation often rely on dark patterns, clickbait, and emotional triggers. -- Authors of misinformation often use disguise and vague language to avoid legal repercussions. +- Authors of misleading content frequently use vague or sensational language to avoid legal consequences while shaping perception. -**WARNING**: We can have false positives / negatives. +**Warning:** False positives and false negatives may occur. In the worst case, a valuable article may be filtered out or a clickbait article may pass through. ## Installation Set up your own [instance](https://github.com/deframer/news-deframer/blob/main/docs/SETUP.md){ target="_blank" }. +## How it works + +News Deframer functions as a drop-in RSS feed proxy. It retrieves headlines from a portal’s [RSS](rss-feed.md) feed, processes them, and replaces them with neutralized versions. + +The updated data is also used by the **browser plugin**, which replaces the portal page of the corresponding news source. + ## Chrome Extension Install the [Chrome Extension](https://chromewebstore.google.com/detail/ffpibngfmnagagggbjpgjbmehhilfinp){ target="_blank" }. @@ -54,5 +63,5 @@ Install the [Chrome Extension](https://chromewebstore.google.com/detail/ffpibngf ## Resources - [Source Code](https://github.com/deframer/news-deframer/) -- [Bug Report](https://github.com/deframer/news-deframer/issues) +- [Bug Reports](https://github.com/deframer/news-deframer/issues) - [License](https://github.com/deframer/news-deframer/blob/main/LICENSE) diff --git a/docs/en/screenshots/rss-feed.md b/docs/en/rss-feed.md similarity index 90% rename from docs/en/screenshots/rss-feed.md rename to docs/en/rss-feed.md index 17be77f..a8c1373 100644 --- a/docs/en/screenshots/rss-feed.md +++ b/docs/en/rss-feed.md @@ -4,11 +4,11 @@ This example is derived from the `https://rss.nytimes.com/services/xml/rss/nyt/W ## Screenshots -The item is rendered by `freshrss`. Deframer neutralizes the tone of every article, ensuring it reads like objective news. +The item is rendered by [freshrss](https://www.freshrss.org/){ target="_blank" }. Deframer neutralizes the tone of every article, ensuring it reads like objective news. -| Updated | Original | +| Deframed | Original | | :---: | :---: | -| Updated | Original | +| Deframed | Original | ## Proxy XML Feed diff --git a/docs/en/screenshots/bbc.md b/docs/en/screenshots/bbc.md deleted file mode 100644 index 3c4d6aa..0000000 --- a/docs/en/screenshots/bbc.md +++ /dev/null @@ -1,41 +0,0 @@ -# BBC - -- RSS feed `https://feeds.bbci.co.uk/news/world/rss.xml` - -## Portal - -The plugin overlays the original web page to provide a distraction-free environment. - -**Key Features:** - -- **Neutralized Content**: You will not see the original, potentially emotionally charged titles or descriptions. Instead, the AI generates neutral summaries designed to inform rather than provoke. -- **Sensationalism Score**: The percentage indicator reveals the level of detected sensationalism or bias. A red indicator suggests high levels of manipulation, framing, bias, or misinformation. - -**Recommendation**: A score of 50% or higher suggests significant bias. We recommend seeking alternative sources for a more balanced perspective. - -BBC Portal - -**Quick Insights**: Hovering over the percentage bar reveals the detailed analysis from the News Deframer. This often provides enough context to skip the full article. - -Portal Hover - -## Article - -You retain full control over your reading experience. The plugin intercepts navigation to article URLs. Regardless of whether you access the article via the portal or a direct link, News Deframer always presents the analysis preview first to protect you. - -**Important Note**: The plugin currently analyzes only the RSS feed metadata (title and description). The body of the article remains untouched. Future updates may include full-text AI analysis triggered via human trusted flaggers. - -- **"Hide" Button**: Dismisses the Deframer overlay to reveal the original article on the publisher's site. -- **Protected Viewing**: By default, the original title and description are hidden to reduce emotional impact. You can choose to expand the view to see the AI's reasoning and the original text. - -Article 1 - -| Basic | Expanded | -| :---: | :---: | -| BBC Article 1 - Basic | BBC Article 1 - Expanded | - -Article 2 - -| Basic | Expanded | -| :---: | :---: | -| BBC Article 2 - Basic | BBC Article 2 - Expanded | diff --git a/docs/en/screenshots/tagesschau.md b/docs/en/screenshots/tagesschau.md deleted file mode 100644 index 01c7ddd..0000000 --- a/docs/en/screenshots/tagesschau.md +++ /dev/null @@ -1,23 +0,0 @@ -# Tagesschau - -- RSS feed `https://www.tagesschau.de/index~rss2.xml` - -## Portal - -**Recommendation**: A score of 50% or higher serves as a warning. It indicates the use of speculation, framing, or sensationalism. We recommend avoiding the original title and description entirely and seeking more objective sources. This suggests that professional techniques are being intentionally employed to manipulate your perception. - -Tagesschau Portal - -## Article - -Article 1 - -| Basic | Expanded | -| :---: | :---: | -| Tagesschau Article 1 - Basic | Tagesschau Article 1 - Expanded | - -Article 2 - -| Basic | Expanded | -| :---: | :---: | -| Tagesschau Article 2 - Basic | Tagesschau Article 2 - Expanded | diff --git a/docs/en/screenshots/index.md b/docs/en/showcases/index.md similarity index 82% rename from docs/en/screenshots/index.md rename to docs/en/showcases/index.md index 37cfba6..4ca529f 100644 --- a/docs/en/screenshots/index.md +++ b/docs/en/showcases/index.md @@ -2,8 +2,8 @@ ## Browser Plugin -- [BBC](bbc.md) -- [Tagesschau](tagesschau.md) +- [The New York Times](nytimes.md) +- [New York Post](nypost.md) ## RSS Feed @@ -14,8 +14,8 @@ The following setup was used to generate these examples: - **Hardware**: Mac Mini M1 (16GB RAM), running macOS Tahoe 26.2 -- **Software**: [LM Studio](https://lmstudio.ai/) 0.3.39 -- **Model**: [meta-llama-3.1-8b-instruct](https://huggingface.co/lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF) +- **Software**: [LM Studio](https://lmstudio.ai/) 0.4.2 +- **Modell**: [ministral-3-3b](https://huggingface.co/lmstudio-community/Ministral-3-3B-Instruct-2512-GGUF) The system utilizes these [Prompts](https://github.com/deframer/news-deframer/tree/main/pkg/think/prompts/). diff --git a/docs/en/showcases/nypost.md b/docs/en/showcases/nypost.md new file mode 100644 index 0000000..4ade109 --- /dev/null +++ b/docs/en/showcases/nypost.md @@ -0,0 +1,41 @@ +# New York Post + +* RSS feed: `https://nypost.com/feed/` + +# Portal + +New York Post - Portal + +* **Portal Replacement**: The default homepage is fully replaced by the custom portal view. +* **Hide Button**: The hide button restores access to the original homepage. + +## Article + +Article 1 + +New York Post - Article 1 + +Article 2 + +New York Post - Article 2 + +* **Article Replacement**: When the article URL is recognized, the entire article page is replaced by the custom view. +* **Hide Button**: The hide button allows you to return to the original article page. + +## Trend Mining + +New York Post - Tag Cloud + +* **Tag Cloud**: Displays the most frequent talking points for the selected time period. + +New York Post - Life Cycle + +* **Lifecycle**: Selecting a trend item from the tag cloud reveals its lifecycle within the chosen period. + +New York Post - Context + +* **Context**: Selecting a trend item also shows the contextual verbs associated with it, illustrating how it is used. + +The New York Times - Compare + +* **Compare**: Compare any known source in the selected language with another source. The view highlights key talking points, identifies blind spots where one source is silent, and shows overlapping themes between both sources. diff --git a/docs/en/showcases/nytimes.md b/docs/en/showcases/nytimes.md new file mode 100644 index 0000000..0ccbaa2 --- /dev/null +++ b/docs/en/showcases/nytimes.md @@ -0,0 +1,41 @@ +# The New York Times + +* RSS feed: `https://rss.nytimes.com/services/xml/rss/nyt/World.xml` + +# Portal + +The New York Times - Portal + +* **Portal Replacement**: The default homepage is fully replaced by the custom portal view. +* **Hide Button**: The hide button restores access to the original homepage. + +## Article + +Article 1 + +The New York Times - Article 1 + +Article 2 + +The New York Times - Article 2 + +* **Article Replacement**: When the article URL is recognized, the entire article page is replaced by the custom view. +* **Hide Button**: The hide button allows you to return to the original article page. + +## Trend Mining + +New York Post - Tag Cloud + +* **Tag Cloud**: Displays the most frequent talking points for the selected time period. + +New York Post - Life Cycle + +* **Lifecycle**: Selecting a trend item from the tag cloud reveals its lifecycle within the chosen period. + +New York Post - Context + +* **Context**: Selecting a trend item also shows the contextual verbs associated with it, illustrating how it is used. + +New York Post - Compare + +* **Compare**: Compare any known source in the selected language with another source. The view highlights key talking points, identifies blind spots where one source is silent, and shows overlapping themes between both sources. diff --git a/docs/en/trends/index.md b/docs/en/trends/index.md new file mode 100644 index 0000000..14f0685 --- /dev/null +++ b/docs/en/trends/index.md @@ -0,0 +1,19 @@ +# Trend Mining + +We detect Trends, Talking Points and Blindspots (probably created by selection of the news source). + +New York Post - Tag Cloud + +- **Tag Cloud**: Displays the most frequent talking points for the selected time period. + +New York Post - Life Cycle + +- **Lifecycle**: Selecting a trend item from the tag cloud reveals its lifecycle within the chosen period. + +New York Post - Context + +- **Context**: Selecting a trend item also shows the contextual verbs associated with it, illustrating how it is used. + +New York Post - Compare + +- **Compare**: Compare any known source in the selected language with another source. The view highlights key talking points, identifies blind spots where one source is silent, and shows overlapping themes between both sources. diff --git a/mkdocs.yml b/mkdocs.yml index 37805c6..4251d40 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -44,8 +44,10 @@ plugins: build: true nav: - News Deframer: index.md - - Screenshots: screenshots/index.md + - Showcases: showcases/index.md + - Trends: trends/index.md - Status: todo.md + - RSS Proxy: rss-feed.md - Sponsors: sponsors.md - Links: links.md - License: license.md @@ -55,8 +57,10 @@ plugins: build: true nav: - News Deframer: index.md - - Screenshots: screenshots/index.md + - Showcases: showcases/index.md + - Trends: trends/index.md - Status: todo.md + - RSS Proxy: rss-feed.md - Sponsoren: sponsors.md - Links: links.md - Lizenz: license.md diff --git a/overrides/js/language-detect.js b/overrides/js/language-detect.js index a5911de..c2e78ac 100644 --- a/overrides/js/language-detect.js +++ b/overrides/js/language-detect.js @@ -1,19 +1,19 @@ -(function() { - var langs = ['de'], def = 'en', p = location.pathname, s = localStorage; - var browser = (navigator.language || '').slice(0, 2); +(function () { + // var langs = ['de'], def = 'en', p = location.pathname, s = localStorage; + // var browser = (navigator.language || '').slice(0, 2); - for (var i = 0; i < langs.length; i++) { - if (p.indexOf('/' + langs[i] + '/') === 0) return s.setItem('lp', langs[i]); - } + // for (var i = 0; i < langs.length; i++) { + // if (p.indexOf('/' + langs[i] + '/') === 0) return s.setItem('lp', langs[i]); + // } - if (p === '/' || p === '/index.html') { - for (var i = 0; i < langs.length; i++) { - if (document.referrer.indexOf('/' + langs[i] + '/') !== -1) return s.setItem('lp', def); - } + // if (p === '/' || p === '/index.html') { + // for (var i = 0; i < langs.length; i++) { + // if (document.referrer.indexOf('/' + langs[i] + '/') !== -1) return s.setItem('lp', def); + // } - var target = s.getItem('lp'); - if (!target && langs.indexOf(browser) !== -1) target = browser; + // var target = s.getItem('lp'); + // if (!target && langs.indexOf(browser) !== -1) target = browser; - if (target && target !== def) location.href = '/' + target + '/'; - } + // if (target && target !== def) location.href = '/' + target + '/'; + // } })();