Webmentions
Webmentions, das sind diese komischen Dinger, mit denen man sich irgendwie untereinander verlinken kann und alle werden informiert und können das dann anzeigen, aber irgendwie ist das technisch alles etwas kompliziert und … puh!
Keine Sorge. So kompliziert sind Webmentions gar nicht!
Das Setting
Nehmen wir mal an, auf dieser Welt gibt es zwei Bloggerinnen. Natürlich lesen die beiden gegenseitig ihre Blogs.
Eines Tages schreibt Bloggerin A einen Beitrag über Quantenmechanik. Bloggerin B liest den Beitrag und möchte dazu noch etwas ergänzen. Zu umfangreich für einen Kommentar, denkt sie und schreibt einen eigenen Beitrag in ihrem Blog. Darin verlinkt sie den Beitrag von Bloggerin A, auf den sie sich bezieht.
Beide Blogs unterstützen Webmentions, weshalb der weiterführende Beitrag B nach dessen Veröffentlichung automatisch unter dem Beitrag von Bloggerin A verlinkt wird. Magie ✨
Das Grundprinzip
Ich bringe nur ungern Ernüchterung in Dein Leben, aber mit Magie hat das leider in diesem Fall nichts zu tun. Es sind auch keine verschränkten Quanten im Spiel, sondern lediglich drei URL-Aufrufe.
Sobald Bloggerin B ihren Beitrag veröffentlicht hatte, untersuchte ihr Content-Management-System (CMS) den Text. Es sammelte alle URLs aus dem Text zusammen und fand somit die URL zum Beitrag von Bloggerin A.
Das CMS schnappt sich nun diese URL und ruft sie auf. Es sucht nach einer bestimmten Information, die im Seitenkopf versteckt und auf der sichtbaren Webseite gar nicht angezeigt wird. Im Seitenkopf ist eine weitere URL versteckt: der sogenannte Webmention-Endpunkt.
Dieser Endpunkt ist eine Art Kommunikationsschnittstelle für Webmentions. Dorthin kann man bestimmte Daten schicken und dieser Endpunkt kann diese Daten dann verarbeiten. So kann das aussehen:
<link rel="webmention" href="https://maurice-renck.de/indieconnector/webmention">
Das ist der Endpunkt auf meiner Webseite. Wenn Du Dir den Quelltext anschaust, wirst Du ihn dort finden.
Mit diesem HTML-Tag hinterlege ich, wohin man seine Webmention schicken soll, wenn man mir eine solche schicken möchte.
Das CMS von Bloggerin B ruft also die Seite von Bloggerin A auf, sucht nach dieser Information und findet sie. Das CMS merkt sich die URL zum Webmention-Endpunkt und ruft diesen nun auf.
Dieser Aufruf enthält wieder zwei Informationen, die der Endpunkt benötigt, um arbeiten zu können:
- Eine Quell-URL zum Blogpost von Bloggerin B
- Eine Ziel-URL zum Blogpost von Bloggerin A
Mit der Quell-URL teilt Bloggerin B mit: "Ich habe unter dieser URL etwas veröffentlicht und ich habe dich dort erwähnt."
Mit der Ziel-URL teilt Bloggerin B mit: "Folgenden Beitrag von dir habe ich erwähnt."
Bloggerin A hat jetzt alle nötigen Informationen und ihr CMS kann nun damit anfangen was es möchte. Es könnte zum Beispiel einfach unter dem Blogpost anzeigen, dass der Beitrag unter der Quell-URL erwähnt wurde.
Etwas mehr Kontext
Es wäre aber natürlich schön, wenn nicht nur ein Link angezeigt würde, sondern einige Informationen. Bloggerin A könnte den Titel des Beitrags anzeigen wollen, die Autorin, vielleicht sogar einen kurzen Ausschnitt aus dem Text.
Damit das möglich ist, bedarf es einen dritten URL-Aufruf.
Wir erinnern uns: Bloggerin B hat gerade die Webmention-Endpunkt-URL bei Bloggerin A aufgerufen und sie über den eigenen Blogpost informiert.
Das CMS von Bloggerin A nimmt sich nun diese URL (die Quell-URL) und ruft sie auf. Es durchsucht den Blogpost nach hilfreichen Informationen, wie den Titel und die anderen erwähnten Daten, so als würden wir die Seite im Browser aufrufen.
Hat es diese Informationen gefunden, speichert es sie ergänzend zur Quell-URL und kann sie nun unter dem Beitrag von Bloggerin A anzeigen.
Kurz zusammengefasst
Damit ist die Kommunkation abgeschlossen. Fassen wir noch einmal die drei Aufrufe zusammen:
- Blog B fragt Blog A: "Wohin kann ich meine Webmention schicken?"
- Blog B schickt Blog A zwei URLs, die Quelle und das Ziel
- Blog A besucht die Quelle und holt sich die Informationen, die es anzeigen will
Wirklich nicht so kompliziert oder?
Als ich angefangen habe, mich damit zu beschäftigen, war dieser simple Ablauf das, was mich zum Stocken gebracht hat: "so einfach kann es doch nicht sein?" Im Prinzip schon.
Darf's noch etwas komplizierter sein?
Natürlich ist es nicht immer so einfach, wie es auf dem ersten Blick scheint. Es gibt immer unerwartete Fälle, die zu beachten sind, weshalb es eine gute Idee ist ein vorhandenes Plugin zu nutzen, statt alles selbst neu zu bauen.
So kann es nämlich auch sein, dass eine Seite ein Update schickt. Vielleicht hat sich etwas im Text oder der Titel geändert. Das CMS von Bloggerin B würde dann Bloggerin A über diese Änderungen informieren. Allerdings gibt es dafür keinen speziellen Aufruf, sie schickt einfach wieder beide URLs an Bloggerin A. Bloggerin A muss nun selbst erkennen, dass es sich um ein Update handelt und entscheiden, was sie tut.
Es könnte auch sein, dass Bloggerin B sich dazu entschlossen hat, den Beitrag wieder zu löschen. Das CMS löscht dann die Seite und verschickt als letzte Aktion wieder eine Webmention an Bloggerin A. Diese sollte nun im besten Fall wieder Bloggerin B aufrufen, feststellen, dass die Seite gar nicht mehr da ist und dann auf der eigenen Seiten den Verweis ebenfalls löschen.
Informationen hinterlegen
Das Auslesen des Titels eines Blogposts mag noch recht eindeutig sein, was aber, wenn auch Informationen über die Autorin, das Veröffentlichungsdatum oder gar einen Textausschnitt ausgelesen werden sollen?
Jeder Webseite ist unterschiedlich aufgebaut, der HTML-Code unterscheidet sich und damit sind die besagten Informationen nicht immer an der selben Stelle auf der Seite zu finden. Bloggerin B wüsste also gar nicht, was jetzt welche Information ist und würde sie nach einem festen Muster vorgehen, würde das auf der Seite von Bloggerin A funktionieren, aber nicht mehr bei Bloggerin C.
Deshalb sollten wir auf unseren Webseiten Mikroformate verwenden. Dabei handelt es sich um bestimmte Klassennamen, die einer gewissen Struktur folgen. Durch das Setzen eines solchen Klassennamens können wir beispielsweise deutlich machen: "Bei der folgenden Information handelt es sich um den Autor des Beitrags."
Wir können sogar soweit gehen und bestimmte Klassen hinterlegen,um die Art unserer Webmention zu bestimmen. Ist es eine Erwähnung? Ein Like? Ein Bookmark? Für all das gibt es spezielle Klassennamen.
Wichtig ist aber: Nur weil wir diese Informationen hinterlege, heißt es noch lange nicht, dass die Empfängerin diese Informationen auch ausliest.
Mikroformate sind ein großes Thema für sich und ich habe hier schon einmal drüber geschrieben.
Umsetzung
Ich hoffe, es ist einigermaßen deutlich geworden, dass Webmentions gar nicht so kompliziert sind. Willst Du sie selbst umsetzen, musst du lediglich dafür sorgen, dass die besagte drei Aufrufe reibungslos funktionieren und die empfangen Daten irgendwo speichern und natürlich anzeigen.
Wegen der möglichen verzwickten Fälle würde ich Dir empfehlen, ein Plugin dafür zu verwenden, wenn es ein solches für Dein CMS gibt. Ich habe eines für Kirby geschrieben, den IndieConnector.
Wenn Du magst, kannst Du Deine Webmention gerne testen, indem Du diesen Beitrag hier verlinkst.
Kommentar schreiben