Seit einigen Jahren betreibe ich einen Matrix Messenger auf meinem Server zum Austausch mit anderen. Dort gibt es auch einen Raum wo sich Follower des Blogs untereinander austauschen können. Was mir noch fehlte: neue Beiträge aus RSS-Feeds direkt in einem Raum posten. Dafür nutze ich nun Hookshot. Die Einrichtung hat mich kurz ausgebremst, weil ich den Bot zuerst wie einen normalen Kontakt per Direktnachricht eingeladen habe. Die Antwort war wenig hilfreich: „This bot does not support Admin Rooms.“ Im eigentlichen Raum mit Moderatorberechtigung klappte es dann. Nun ein paar Worte zur Einrichtung.

RSS in Hookshot aktivieren

Auf meinem Server liegt die Hookshot-Konfiguration unter /matrix/hookshot/config.yml. Wer Hookshot anders installiert hat, muss die Datei im eigenen Projekt suchen. Für RSS reicht zunächst dieser Abschnitt:

feeds:
  enabled: true
  pollIntervalSeconds: 600

Damit fragt Hookshot abonnierte RSS- und Atom-Feeds ungefähr alle zehn Minuten ab. Eine kürzere Zahl bedeutet nicht, dass sofort nach Veröffentlichung eine Nachricht erscheint. Nach Änderungen an der Konfiguration muss Hookshot neu gestartet werden. Vorher sichere ich mir die Datei, damit ich einen Tippfehler leicht zurücknehmen kann.

Mein eigener Feed-Bot

Bei mir gibt es den Dienst-Bot @feeds:matrixbox.de. Er kümmert sich nur um Feeds. Der entsprechende Abschnitt sieht schematisch so aus:

serviceBots:
  - localpart: feeds
    displayname: RSS Feeds
    prefix: "!feeds"
    service: feeds

Die Domain matrixbox.de ist meine; auf eurem Server steht hier natürlich eure eigene. Wichtig war zusätzlich der passende Benutzer-Namespace in der Appservice-Registrierung: Hookshot muss den Benutzer @feeds:matrixbox.de überhaupt verwalten dürfen. Die abgelehnte Direktnachricht war dagegen ein eigener Stolperstein: Feed-Befehle gehören bei dieser Einrichtung in den Raum. Wer nur den normalen Hookshot-Bot nutzt, verwendet stattdessen dessen Präfix !hookshot.

Raum anlegen und Feed hinzufügen

Ich habe einen eigenen Matrix-Raum für die Meldungen angelegt und @feeds:matrixbox.de eingeladen. Der Bot braucht dort die Berechtigung, Zustandsereignisse zu senden; in vielen Clients entspricht das der Moderator-Rolle. Den Raum würde ich für den ersten Test unverschlüsselt lassen, sofern die Hookshot-Installation keine Verschlüsselung eingerichtet hat.

Jetzt kommt der eigentliche Befehl, als Nachricht im Raum:

!feeds feed https://osthessen-news.de/rss_feed.xml

Die Adresse ist nur ein Beispiel aus meinen Feeds. Entscheidend ist die URL zur RSS- oder Atom-Datei, nicht zur Startseite. Mit !feeds feed list sehe ich, welche Feeds dieser Raum abonniert hat. Hookshot überträgt beim ersten Abgleich keine alten Beiträge. Für den Funktionstest muss also ein neuer Eintrag im Feed erscheinen; bloß zehn Minuten warten und in den leeren Raum schauen wäre kein aussagekräftiger Test.

Feeds ändern und auf dem Laufenden halten

Neue Einträge holt Hookshot nach dem eingestellten Intervall selbst ab. Will ich dagegen die Adresse eines Feeds ändern, lasse ich mir zunächst mit !feeds feed list die genaue alte URL anzeigen. Dann entferne ich sie und füge die neue Adresse hinzu:

!feeds feed remove https://alte-adresse.example/feed.xml
!feeds feed https://neue-adresse.example/feed.xml

Auch hier gilt: Die bisher vorhandenen Einträge der neuen Adresse werden beim ersten Abgleich als bereits gesehen behandelt. Läuft der Bot gar nicht, kontrolliere ich zuerst seine Mitgliedschaft und Rechte im Raum, danach die Hookshot-Protokolle. Bei häufigen Neustarts lohnt außerdem ein Blick auf Redis: Laut Hookshot-Dokumentation bleiben bereits gesehene Feed-Einträge nur damit über einen Neustart hinweg erhalten.

Damit landen meine Feeds dort, wo ich ohnehin mit anderen Diensten kommuniziere. Wie mein Matrix-Server entstanden ist, steht in meinem Beitrag Matrix Server in Betrieb. Die vollständigen Befehle und Hinweise zum ersten Abgleich stehen in der Hookshot-Dokumentation zu Feeds; die Einrichtung eines eigenen Feed-Bots ist dort bei den Service-Bots beschrieben.