Projekt Status: Proof of Concept/Alpha
Auf Github ansehen
Was kann ich dafür? Es war Wochenende, ich hatte eine Idee am Samstagmorgen und eine ungenutzt herumliegende Domain mit dem Namen “segeln.social” … Darum habe ich jetzt eine kleine (private) Mastodon Instanz auf der ein News Bot für Mastodon läuft!
Fediverse-Reaktionen
Vom @ticker gibt es reichlich automatisiert reichlich Nachrichten aus der Welt des Segelns direkt ins Fediverse.
Kurz vorab: Segeln.Social ist eine private Mastodon-Instanz. Zwar hätte ich durchaus Lust, aber weder die Zeit noch die Energie, die für die Moderation einer öffentlichen Instanz als One-man-show nötig sind.
Warum dieser Bot?
Das Fediverse ist ein verteiltes System aus miteinander verbundenen (föderierten) Diensten, die untereinander über das ActivityPub-Protokoll kommunizieren. Damit der Austausch zwischen diesen vielen Instanzen nicht ausartet, werden Beiträge nur dann von einem Server zu einem anderen Übertragen, wenn sie von einem Nutzer dort benötigt werden. Ein Beispiel: User A schreibt einen Beitrag auf mastodon.social (der wohl größten Mastodon Instanz). Er würde niemals auf die Instanz segeln.social gelangen, solange dort niemand registriert ist, der User A folgt. Folgt aber (nur) ein Nutzer oder eine Nutzerin diesem Account, steht er sofort der gesamten Instanz in dessen föderierter Timeline zum Entdecken zur Verfügung.
Dieser Ansatz hat insbesondere Konsequenzen beim folgen von Hashtags auf kleinen Servern und beim Posten von Beiträgen mit Hashtags. Denn verständlicherweise können Server nur dann Beiträge unter einem Hashtag anzeigen, wenn sie es in ihre föderierte Timeline geschafft haben. Wer aber auf einer kleinen oder sogar privaten Instanz zuhause ist, bekommt dort deshalb nur wenig neue Beiträge per Hashtag zu sehen.
Posted jemand auf einer kleinen Instanz ohne Follower einen Beitrag mit Hashtag, wird er wahrscheinlich sogar niemals irgendwo anders gesehen. Das ist einer der wichtigsten Gründe, warum viele Nutzer ihre privaten Instanzen inzwischen wieder geschlossen haben und zu den großen Servern umgezogen sind.
Mich hat schon länger interessiert, wie man dieses Problem eventuell für Nischenthemen etwas mildern kann. Mein Ansatz sind kleine Spione …
Listener Accounts auf anderen Instanzen
Naheliegend, dass ein News Bot sich auf Nachrichten rund ums Segeln spezialisiert, er ist aber genauso für jeden anderen Themenbereich verwendbar und steht unter MIT Lizenz auf Github Quelloffen zum Download.
Er besteht aus (mindestens) zwei Usern: Dem eigentlichen Segelnews-Bot @ticker und weiteren Accounts, die auf anderen Instanzen lauschen und dort beispielsweise Hashtags folgen. Ich nenne sie Listener
Accounts.
Ein Listener ist ein ganz gewöhnlicher Account, über den der zentraler News-Bot auf die Timelines anderer Server zugreifen und sie beobachten kann. Alles, was in den Timelines der Listener passiert, melden sie dem Newsticker nach @ticker@segeln.social
. Ansonsten sind diese Nutzerkonten vollkommen passiv und daher auch keine wirklichen Bots im eigentlichen Sinne. (Derzeit werden zwei Listener zum Testen betrieben, es ist geplant, weitere Listener auf anderen Instanzen zu etablieren. Aktiv sind: @sesobot@mastodon.social
und @echo@segeln.social
)
Der Ticker
Der Ticker-Account ist sozusagen die dynamische Zeitung rund ums Segeln im Fediverse. Der Bot hinter dem Account hat dabei mehrere Aufgaben:
bereits implementiert ✅
noch in Arbeit ❌
✅ Reposten von Beiträgen festgelegert Accounts. – Dies sind Beispielsweise Fediverse-Accounts von ausgewählten Blogs rund ums Segeln. Die Auswahl der Accounts erfolgt manuell. Hier über den @echo@segeln.social
Account. Alle Accounts, denen dieser Listener direkt folgt, werden automatisch reposted, wannimmer sie etwas veröffentlichen. So können auch Accounts kleiner Server problemlos berücksichtigt werden und gelangen in die Timelines aller Server, von denen aus dem Ticker gefolgt wird.
✅ Veröffentlichen von Beiträgen aus RSS-Feeds. – Über einen integrierten eigen RSS-Monitor werden Nachrichten auch von Quellen, die bisher nicht aktiv im Fediverse sind gesammelt und verbreitet. Dies sind neben Blogs, die nicht am ActivityPub teilnehmen, vor allem Webseiten von (online) Segelmagazinen.
❌ QoS – Die Meldungen der Listener müssen auf Duplikate überprüft werden (z.B. Reposts von Reposts vermeiden)
❌ Reposten von Beiträgen unter bestimmten Hashtags MIT Hilfe der Listener. – Die oben erwähnten Listener liefern neue Inhalte zu Hashtags, denen sie auf ihren Instanzen folgen. Über eine Moderations-Warteschlange werden diese Posts freigegeben.
❌ Reposten von Beiträgen unter bestimmten Hashtags OHNE Listener. – Wenn das Anlegen eines Listeners nicht möglich ist, weil keine neuen Nutzer angenommen werden oder die instanz privat betrieben wird, können Posts zu Hashtags auch periodisch über die API dort abgefragt werden. Diese Beiträge müssen über eine (manuelle) Moderations-Warteschlange freigegeben werden.
✅ Veröffentlichen manueller (redaktioneller) Inhalte rund ums Segeln. – Natürlich werden auch eigene Nachrichten dazu kommen und aktiv ins Fediverse eingestellt.
Häufige Fragen
Welche Daten sammelt Dein Bot ggf. über mich?
– Wenn Du dem @ticker folgst, erfahre ich nur, was auch sonst beim Folgen eines Accounts preisgegeben wird: “xyz folgt Dir jetzt”. Diese Information speichere ich nirgends und werte auch lediglich die Gesamtzahl statistisch aus.
Sofern Inhalte aus Deinem RSS-Feed verwendet werden, speichert der Newsticker auf segeln.social ebenfalls nur bereits von Dir aktiv veröffentlichten Informationen: Beitrags-URL, Beitragsinhalt, Datum der Veröffentlichung, GUID des Beitrags. Diese Daten werden zu einem Beitrag auch gespeichert, wenn Beiträge direkt über Deine Timeline reposted werden. Gespeichert werden sie in einer internen Datenbank des News-Bots mit dem Ziel, die Qualität des Services zu verbessern und beispielsweise Duplikate zu erkennen. Teile der Daten werden natürlich beim Repost über segeln.social ebenfalls in der Timeline und in den förerierenden Servern gespeichert.
Ich möchte nicht, dass mein RSS-Feed verwendet wird. Kann ich den Bot abstellen oder blockieren?
– Der Segelnews Ticker auf segeln.social arbeitet unter der Prämisse, dass die von Dir im Internet eingestellten Informationen zu einer Verbreitung gedacht sind. Dementsprechend werden nur ungeschützte öffentlich zugängliche Informationen ausgewertet und verbreitet. Außerdem erfolgt eine redaktionelle Auswahl der Quellen. Im laufenden Betrieb findet jedoch aus personellen Kapazitätsgründen keine kontinuierliche Prüfung aller aus diesen Quellen verbreiteten Inhalte statt.
Wenn Inhalte aus Deinem RSS-Feed gegen Deinen Wunsch von mir verbreitet werden, wäre der beste Weg, keinen öffentlichen RSS Feed dafür anzubieten. Natürlich kannst Du Dich aber auch von (nur) diesem Dienst auf Wunsch ausgetragen lassen, Schreibe mir einfach eine Nachricht. Ein blockieren des Bots (@ticker) verhindert nur, dass Du selbst ihn sehen kannst. Die Daten bleiben für andere vorhanden und das Programm weiss nichts von Deinem Blockieren und bezieht weiterhin Daten über Deinen RSS-Feed.
Ich möchte nicht, dass Inhalte aus meiner Timeline reposted werden. Kann ich den Bot sperren?
– Der Segelnews Ticker auf segeln.social arbeitet unter der Prämisse, dass die von Dir ins Fediverse öffentlich eingestellten Informationen frei zugänglich sind. Automatische Reposts (retoots) Deiner Beiträge aus dem Fediverse durch @ticker nutzen dafür Deine öffentliche Fediverse-Timeline. Du kannst das jederzeit unterbinden, indem Du den Benutzer @echo@segeln.social
auf Deine Liste blockierter Accounts setzt. (Dies funktioniert nicht, wenn Du Beiträge mit einem Hashtagtag veröffentlichst, dem ein Listener auf Deiner Instanz folgt. In dem Fall müsset Du vermutlich ebenfalls den Listener auf Deiner Instanz und ggf. auf den föderierten Servern blockieren. – Wenn Du den Ticker so sehr hasst, dass das Sinnvoll erscheint, würde ich gern mehr erfahren.)
Und Technisch?
Der Bot is vollständig in C# (.NET 9) geschrieben und für den Betrieb in einem Docker-Container konzipiert. Voraussetzung für den Betrieb ist eine MariaDB (oder MySQL) Mehr dazu auf Github. Die Konfiguration auf Serverseite erfolgt über eine Handvoll Server-Variablen. Die Auswahl der Themen und Inhalte wird direkt über Mastodon gesteuert. (Für das optionale Einspielen von RSS Inhalten gibt es noch keine UI! Hier müssen derzeit noch News-Quellen direkt in die Datenbank eingetragen werden)

What do you think?