Viele Blogs und News-Webseite informieren über neue Artikel und Beiträge auch auf den vielen Social Media Plattformen wie Twitter, Facebook oder Threads. Leider ist Mastodon oft noch kein Ziel dieser Cross-Postings.

Da ich Mastodon selbst gerne als News-Quelle und Aggregator verschiedener Blogs nutze, habe ich eine Anwendung geschrieben, die RSS-Feeds automatisch im Fediverse veröffentlicht.

Der Quellcode sowie die Anleitung zur Verwendung sind auf Github verfügbar: https://github.com/davull/FeedToMastodon

Eine laufende Instanz der Anwendung veröffentlicht Posts von einigen News-Feeds auf https://feedmirror.social

Feed To Mastodon

Feed To Mastodon ist eine .NET Anwendung, die neue Feed-Einträge automatisch auf Mastodon postet. Unterstützt werden dabei RSS, Atom und RDF-Feeds. Die Anwendung kann lokal kompiliert und ausgeführt oder als vorkonfiguriertes Docker-Image genutzt werden.

Die Anwendung kann beliebig viele Feeds behandeln. Für jeden Feed kann ein separater Mastodon-Account verwendet werden.

Damit der jeweilige Mastodon Account nicht mit alten Feed-Einträgen überflutet wird, werden beim ersten Synchronisieren eines neuen Feeds die bisherigen Einträge übersprungen und nur neue Einträge veröffentlicht.

Konfiguration

Die Konfiguration der zu überwachenden Feeds erfolgt in einer .ini-Datei.

[heise.de]
feed_url = https://www.heise.de/rss/heise-atom.xml
summary_separator = [...]
mastodon_server = https://mastodon.social/
mastodon_access_token = AWWHkaIB_...

[wired.com]
feed_url = https://www.wired.com/feed/rss
mastodon_server =  https://mastodon.social/
mastodon_access_token = ABC...

...

Neben den URLs zum Feed und zum Mastodon-Server, auf dem der Ziel-Account registriert ist, ist ein Access-Token notwendig.

Der Parameter summary_separator ist optional und kann angegeben werden, um Feed-Einträge zu kürzen. Der Eintrag wird ab dem ersten Vorkommen der Trennzeichen abgeschnitten.

Wenn ein Post etwa ein […] enthält, kann der Eintrag hier gekürzt werden:

Earlier today, we reported that […]
To the post <a rel="nofollow" ...>http://news.com/123</a>

Die Konfiguration von summary_separator = […] führt zu dem gekürzten Eintrag:

Earlier today, we reported that ...

Gepostete Einträge werden in einer SQLite-Datenbank gespeichert, um doppelte Post zu vermeiden.

Mastodon Access-Token

Ein Access-Token kann über die Mastodon-Webseite unter Einstellungen -> Entwicklung -> Neue Anwendung angelegt werden. Unter Name kann ein beliebiger Text eingetragen werden, z.B. Feed to Mastodon. Unter Weiterleitungs-URI kann der Standardwert urn:ietf:wg:oauth:2.0:oob beibeibehalten werden. Unter Befugnisse muss nur write:statuses ausgewählt sein, profile kann abgewählt werden.

Your Applications

Nach dem Speichern kann man erneut auf die neu erstellte Anwendung klicken und das Access-Token Dein Zugriffstoken kopieren.

Application Feed to Mastodon

Parameter

Parameter Beschreibung
feed_url Gesamte URL des Feeds, notwendig
summary_separator Trennzeichen, um Feed-Einträge zu kürzen, optional
mastodon_server URL des Mastodon-Servers, notwendig
mastodon_access_token Access-Token des Mastodon-Accounts, notwendig

Die Dateipfade zu den Konfigurations- und Datenbankdateien werden als Umgebungsvariablen hinterlegt.

Umgebungsvariable Beschreibung
FTM_CONFIG_FILE_NAME Absoluter oder relativer Pfad zur Konfigurationsdatei
FTM_DATABASE_NAME Absoluter oder relativer Pfad zur SQLite-Datenbank

Ausführung

Um Feed to Mastodon via Docker auszuführen, genügt folgender Befehl:

docker run -it --rm \
  -v "${PWD}/ftm-feed-config.ini:/app/ftm-feed-config.ini" \
  -v "${PWD}/ftm.sqlite:/app/ftm.sqlite" \
  -e "FTM_CONFIG_FILE_NAME=/app/ftm-feed-config.ini" \
  -e "FTM_DATABASE_NAME=/app/ftm.sqlite" \
  davidullrich/feed-to-mastodon:latest

Eine Docker Compose Konfiguration sieht wie folgt aus:

services:
  ftm:
    container_name: feed-to-mastodon
    image: davidullrich/feed-to-mastodon:latest
    restart: unless-stopped
    volumes:
      - ./data:/app/data
    environment:
      - FTM_DATABASE_NAME=/app/data/ftm.sqlite
      - FTM_CONFIG_FILE_NAME=/app/data/ftm.ini
      - TZ=Europe/Berlin

Statistiken

Für die Interessierten gibt Feed to Mastodon täglich eine Statistik auf der Console aus. Diese zeigt die Anzahl der geposteten Feeds in den letzten 24 Stunden und den letzten sieben Tagen.

Statistics[0] ============================================================
Statistics[0] Total Posts per feed:    2024-11-18 00:00 - 2024-11-25 00:00
Statistics[0] ============================================================
Statistics[0]   Mashable:                                              215
Statistics[0]   Caschys Blog:                                          183
Statistics[0]   Digital Trends:                                        299
Statistics[0]   Elektroauto-News.net:                                    8
Statistics[0]   TESLARATI:                                              48
Statistics[0]   WIRED:                                                 102
Statistics[0] ------------------------------------------------------------
Statistics[0] Total:                                                   855
Statistics[0] ============================================================

Live-Beispiel

Unter https://feedmirror.social ist Feed to Mastodon mit ein paar konfigurierten Feeds in Betrieb und bringt die neuesten Artikel ins Fediverse.

Wired Mastodon Post