Webmentions für eine persönliche Website — Gespräche zurück nach Hause bringen

Webmentions für eine persönliche Website — Gespräche zurück nach Hause bringen

Das Veröffentlichen auf einer persönlichen Website kann sich erstaunlich still anfühlen. Man verbringt vielleicht einen Abend damit, einen Gedanken auszuarbeiten, klickt auf Publish und beobachtet anschließend, wie das Gespräch ganz woanders stattfindet: in der Antwort eines sozialen Netzwerks, in einem Forenthread oder im Blog einer anderen Person. Webmentions bilden eine kleine, aber wichtige Brücke zwischen diesen verstreuten Orten, indem Websites einander benachrichtigen können, wenn eine Seite auf eine andere verweist.

Ich stelle mir eine Webmention gern als Postkarte zwischen Websites vor. Die Karte transportiert nicht das gesamte Gespräch und zwingt auch niemanden in dasselbe Gebäude. Sie sagt lediglich: „Ich habe deine Seite hier erwähnt“, und überlässt es dem Empfänger, den Hinweis zu prüfen, anzuzeigen oder zu ignorieren. Gerade dieses zurückhaltende Design passt so gut zum persönlichen Web.

Was eine Webmention tatsächlich macht

Webmention ist eine W3C Recommendation, mit der eine URL darüber benachrichtigt wird, dass eine andere URL auf sie verlinkt. Angenommen, ich veröffentliche eine Antwort unter https://example.com/my-response und verlinke deinen Artikel unter https://your-site.example/original. Meine Website ermittelt deinen Webmention-Endpoint und sendet zwei Werte: die Source URL mit dem Link und die verlinkte Target URL.

curl -X POST https://your-site.example/webmention \
  -d 'source=https://example.com/my-response' \
  -d 'target=https://your-site.example/original'

Dein Receiver sollte dieser Anfrage nicht sofort vertrauen. Er ruft die Source ab, bestätigt, dass die Seite tatsächlich auf das Target verweist, und speichert die Mention erst danach. Dieser Prüfungsschritt ist wichtig, weil jeder ein Formular absenden kann. Die Benachrichtigung ist nur eine Behauptung; der Link auf der Source Page ist der Beleg.

Eine Mention kann mehr als einen allgemeinen Link darstellen. Mit verbreitetem IndieWeb-Markup kann eine Source eine Reply, ein Like, einen Repost, ein Bookmark oder eine RSVP ausdrücken. Der Transport bleibt einfach, während die Bedeutung umfangreicher werden kann, wenn beide Websites die entsprechenden HTML-Klassen verstehen.

Warum es um mehr als ein weiteres Kommentarsystem geht

Ein herkömmliches Kommentarfeld hält jede Antwort innerhalb der ursprünglichen Website. Das kann nützlich sein, bedeutet aber auch, dass der Websitebetreiber Identität, Speicherung und Lebensdauer jedes Beitrags kontrolliert. Ein soziales Netzwerk geht noch weiter und hält sowohl den ursprünglichen Post als auch die Antworten innerhalb seiner Plattform. Webmentions kehren dieses Verhältnis um: Alle Beteiligten können in einem selbst kontrollierten Raum veröffentlichen und diese Seiten anschließend miteinander verbinden.

Man stelle sich ein Viertel vor, in dem jedes Gespräch einen Besuch im selben Einkaufszentrum voraussetzt. Das ist bequem, bis das Einkaufszentrum seine Regeln ändert, die Flure mit Werbung füllt oder schließt. Webmentions ähneln eher Nachbarn, die sich von ihrer jeweiligen Veranda aus unterhalten. Die Straße verbindet sie, aber niemand muss sein Zuhause aufgeben, um am Gespräch teilzunehmen.

Das macht Plattformen weder nutzlos noch garantiert es dauerhafte Inhalte. Es verringert lediglich die Abhängigkeit davon, dass ein einzelnes Unternehmen dauerhaft ein vollständiges Gespräch verwahrt. Für eine persönliche Website ist das eine praktische Form digitalen Eigentums statt eines abstrakten Slogans.

Die vier Bestandteile des Ablaufs

Das Protokoll wird verständlicher, wenn man es in vier Aufgaben aufteilt. Erstens enthält die veröffentlichende Seite einen normalen Hyperlink. Zweitens ermittelt der Sender den Endpoint des Receivers über einen HTTP-Link-Header oder ein HTML-Element vom Typ <link>. Drittens übermittelt der Sender Source URL und Target URL. Viertens ruft der Receiver die Source ab und überprüft sie, bevor er über die weitere Verarbeitung entscheidet.

<link rel="webmention" href="https://your-site.example/webmention">

Durch Discovery benötigt der Sender kein Verzeichnis teilnehmender Websites. Jede Seite kann selbst bekannt geben, wohin ihre Benachrichtigungen gehören. Dadurch kann eine Website später auch von einem Hosted Receiver zu einer selbst gehosteten Lösung wechseln, ohne jeden Sender zur Änderung einer Konfigurationsdatei auffordern zu müssen.

Empfang und Darstellung sind getrennte Aufgaben. Eine Website kann Webmentions annehmen, sie aber zur Moderation zurückhalten. Sie kann durchdachte Replies anzeigen und einfache Likes in einer kompakten Liste zusammenfassen. Gültige Mentions können ebenso privat für Analytics gespeichert werden. Die Unterstützung des Protokolls verlangt nicht, eine Seite in eine ungefilterte öffentliche Pinnwand zu verwandeln.

Mit Microformats hilfreiche Bedeutung ergänzen

Ein Receiver kann eine verifizierte Source immer als „von dieser Seite erwähnt“ darstellen. Um Author, Content, Publication Date oder Reply Type zu erkennen, parsen viele Implementierungen Microformats2. Dabei handelt es sich um gewöhnliche Klassennamen im HTML, sodass die Seite auch in Browsern lesbar bleibt, die keine IndieWeb-Konventionen kennen.

<article class="h-entry">
  <a class="p-author h-card" href="https://example.com/">Alex</a>
  <p class="e-content">
    A response to
    <a class="u-in-reply-to" href="https://your-site.example/original">the original article</a>.
  </p>
</article>

Die Klasse h-entry kennzeichnet einen Post, p-author dessen Autor und u-in-reply-to die Beziehung. Dieses Markup ist Progressive Enhancement: Ausgangspunkt ist semantisches, barrierearmes HTML, das anschließend um gerade genug Metadaten ergänzt wird, damit Maschinen die Verbindung verstehen. Die Seite muss für das Protokoll nicht neu gestaltet werden.

Ein praktischer Weg für eine kleine Website

Der einfachste erste Schritt besteht darin, Mentions zu empfangen, ohne das gesamte System selbst zu bauen. Ein Hosted Service wie webmention.io kann einen Endpoint und eine API bereitstellen. Füge dessen Discovery Tag hinzu, sende einen Test von webmention.rocks und rendere freigegebene Ergebnisse unter dem jeweiligen Artikel. Mit diesem Ansatz lässt sich der Datenfluss kennenlernen, bevor ein eigener Receiver gewartet werden muss.

Wenn Anforderungen an Ownership oder Privacy das Self-Hosting rechtfertigen, sollte zunächst der kleinstmögliche sichere Receiver entstehen. Akzeptiere nur gültige HTTP- oder HTTPS-URLs, begrenze die Request-Größe, setze Rate Limits ein und verlagere die Prüfung in eine Queue, statt Besucher warten zu lassen. Rufe die Source mit strengen Timeouts und einer maximalen Response-Größe ab. Speichere normalisierte Source und Target, Prüfzeitpunkt, erkannten Typ sowie Moderation State.

Ein Sender kann noch einfacher beginnen. Extrahiere nach der Veröffentlichung oder Aktualisierung eines Artikels seine Outbound Links, ermittle für jedes Target einen Endpoint und stelle die Übermittlungen in eine Queue. Wiederholungsversuche sollten zurückhaltend erfolgen. Ein ausgefallener Endpoint darf die Veröffentlichung nicht blockieren, und wiederholte Updates sollten idempotent sein, statt Duplicate Mentions zu erzeugen.

Security gehört zum Protokoll und ist kein Zusatz

Ein Webmention Receiver ruft URLs ab, die von Fremden vorgegeben werden. Daher ist Server-Side Request Forgery das zentrale Risiko. Ziele aus Loopback-, Private-, Link-Local- und internen Netzwerken müssen nach der DNS Resolution abgelehnt werden; bei Redirects ist die Kontrolle zu wiederholen. Andernfalls könnte ein Angreifer den Receiver dazu bringen, ein Router-Panel, einen Cloud Metadata Endpoint oder einen anderen aus dem öffentlichen Internet unsichtbaren Dienst abzufragen.

Auch gerenderte Inhalte erfordern Vorsicht. Extrahierte Namen, Fotos und HTML sind als Untrusted Input zu behandeln. Bereinige Inhalte, maskiere Text, verwende einen Proxy für Remote Images oder lehne sie ab und betreibe eine klare Moderation Queue. Mentions sollten regelmäßig oder bei einem Update erneut geprüft werden, weil der Source Link später verschwinden kann. Ist das der Fall, wird die gespeicherte Mention entsprechend der eigenen Richtlinie entfernt oder markiert.

Diese Maßnahmen mögen für ein kleines Protokoll aufwendig wirken, entsprechen aber dem Blick durch den Türspion, bevor man jemanden hereinbittet. Das Klopfen ist willkommen; automatisches Vertrauen ist es nicht.

Das Gespräch für Menschen gestalten

Auch eine technisch korrekte Implementierung kann ein schlechtes Leseerlebnis erzeugen. Zehn reine Avatar-Likes sollten eine sorgfältig formulierte Antwort visuell nicht überdecken. Replies benötigen einen kurzen Auszug, eine Zuordnung zum Autor, ein Datum und einen deutlich sichtbaren Link zur Source. Gelöschte oder nicht verfügbare Sources brauchen eine einheitliche Behandlung. Vor allem sollten Leser verstehen, dass sich die Antwort auf einer anderen Website befindet.

Moderationsregeln sollten verständlich formuliert sein. Replies können manuell freigegeben, offensichtlicher Spam unterdrückt und redaktionelle Auswahl von Protocol Verification unterschieden werden. „Verified“ bedeutet lediglich, dass die Source bei der Prüfung auf das Target verwiesen hat; es bedeutet nicht, dass die Aussage wahr, freundlich oder von der Zielseite unterstützt ist.

Mit einer verlässlichen Verbindung beginnen

Webmentions werden weder die Größenordnung noch das sofortige Feedback einer großen Social Platform nachbilden, und das müssen sie auch nicht. Ihr Wert besteht darin, unabhängige Websites etwas weniger isoliert zu machen und zugleich zu bewahren, wo jede Person veröffentlichen möchte. Eine Handvoll dauerhafter, kontextreicher Antworten kann nützlicher sein als ein Strom von Reaktionen, der in einer Timeline verschwinden soll.

Beginne mit Endpoint Discovery, teste den Empfang einer einzigen Mention und entscheide vor der öffentlichen Darstellung, wie die Moderation funktionieren soll. Ergänze das Senden, sobald die Empfangsseite stabil ist. Wenn du Webmentions bereits auf deiner Website verwendest, berichte in den Kommentaren, was gut funktioniert hat und was unerwartet schwierig war. Das persönliche Web wird mit jedem verifizierten Link ein wenig gesprächiger.