Der Schuster und seine Sitemap: Wir haben robotcheck.coffee mit robotcheck geprüft
Ein Werkzeug, das anderen Websites Noten für Maschinenlesbarkeit gibt, sollte die eigene Prüfung bestehen. Unsere hat sie bestanden, mit 8,6 von 10. Die interessanteren Fehler hat die Note allerdings nicht gezeigt.
Es gibt eine unangenehme Frage, die sich jeder stellen sollte, der anderen Leuten Noten gibt: Wie sähe meine eigene aus? An einem Sonntag im September haben wir sie uns gestellt und robotcheck.coffee durch robotcheck.coffee geschickt. Das Ergebnis war 8,6 von 10, Note A. Man könnte an dieser Stelle aufhören, sich kurz auf die Schulter klopfen und zum nächsten Thema übergehen.
Wir haben weitergemacht, und zwar nicht mit dem Analyzer, sondern mit etwas Altmodischerem: jede URL aus unserer eigenen Sitemap einzeln aufrufen und nachsehen, was zurückkommt. Dieser Beitrag ist ein Erfahrungsbericht über das, was dabei herauskam. Er handelt von einer ordentlichen Note, von acht toten Links und von der Frage, was ein Score eigentlich misst.
Was die Sitemap versprach
Die Sitemap von robotcheck.coffee stammte aus der Anfangszeit des Projekts. Sie führte die Startseite und die Prüfseite in vierzehn Sprachen auf, darunter Dänisch, Finnisch, Norwegisch und Rumänisch. Diese vier Sprachen gibt es auf der Seite nicht und hat es nie gegeben. Jede dieser acht URLs lieferte einen 404. Dafür fehlten fünf Sprachen, die tatsächlich existieren: Russisch, Japanisch, Chinesisch, Koreanisch und Türkisch. Die Preisseite fehlte ebenso wie alle Blogartikel.
Eine Sitemap ist so etwas wie das Inhaltsverzeichnis, das man einem Crawler in die Hand drückt. Unseres verwies auf Kapitel, die nicht existierten, und verschwieg ein Drittel der Kapitel, die es gab. Ein Crawler, der sich daran hielt, bekam also ein falsches Bild von der Seite.
Unser eigener Analyzer hatte dafür 0,75 von 1 Punkt vergeben. Er prüft, ob eine gültige Sitemap existiert, und zählt die Einträge darin. Ob die Einträge auch erreichbar sind, prüft er nicht. Nach der Korrektur enthält die Sitemap mehr als hundert URLs, alle erreichbar, jede mit ihren Sprachvarianten verknüpft. Die Punktzahl steigt dadurch auf das Maximum. Allerdings nicht, weil die Sitemap jetzt stimmt, sondern weil sie länger ist. Auf diesen Punkt kommen wir zurück.
Der Umweg über /de
Der zweite Fehler war subtiler. Die deutsche Fassung von robotcheck.coffee liegt ohne Sprachpräfix unter der Hauptadresse. Wer /de aufruft, wird mit einem 307 auf die Hauptadresse umgeleitet. Die hreflang-Angaben im HTML, mit denen eine Seite Suchmaschinen und Crawlern ihre Sprachfassungen mitteilt, zeigten für Deutsch aber genau auf /de. Jede Seite erklärte also, ihre deutsche Version liege an einer Adresse, die selbst nur auf eine andere Adresse verweist.
Für einen Menschen ist das egal, der Browser folgt der Umleitung, ohne dass man es bemerkt. Für ein System, das hreflang-Angaben auswertet, ist es ein Widerspruch: Die kanonische Adresse der deutschen Startseite und die in hreflang angegebene Adresse unterscheiden sich. Ähnlich war es bei der englischen Startseite, deren canonical auf /en/ mit Schrägstrich zeigte, eine Adresse, die ihrerseits umleitet. Und schon ein paar Stunden vorher war aufgefallen, dass Preisseite und Changelog die Startseite als kanonische Adresse angaben und sich damit gegenüber jedem Crawler selbst zu Duplikaten erklärten.
Keiner dieser Fehler hat die Note spürbar bewegt. Die hreflang-Prüfung stellt fest, dass hreflang-Angaben vorhanden sind. Wohin sie zeigen, wird nicht verfolgt.
Was wir geändert haben, und was davon nur Kosmetik war
Ehrlichkeit verlangt, auch die Änderungen zu nennen, die weniger bewirkt haben, als es aussieht. In unserer robots.txt fehlten Claude-SearchBot und Claude-User. Anthropic unterscheidet in seiner Crawler-Dokumentation inzwischen drei Agents: ClaudeBot sammelt Trainingsdaten, Claude-SearchBot indexiert für die Suche, und Claude-User ruft Seiten ab, wenn ein Mensch Claude etwas fragt. Nach Anthropics Angaben halten sich alle drei an robots.txt, einschließlich der nicht standardisierten Crawl-delay-Anweisung.
Wir haben beide Agents ergänzt. Nur: Ein Crawler, der in robots.txt nicht namentlich genannt wird, fällt auf die allgemeine Gruppe für alle User-Agents zurück, und die erlaubte bei uns ohnehin alles außer der API. Zugreifen durften Claude-SearchBot und Claude-User also schon vorher. Geändert hat sich die Lesbarkeit der Datei für Menschen, die wissen wollen, was wir wollen, und die Punktzahl in unserem eigenen Regelwerk. Am Verhalten der Crawler ändert sich nichts.
Ähnlich verhält es sich mit der llms.txt, die jetzt Beschreibungen zu jedem Link, eine Liste der Blogartikel und eine Angabe der verfügbaren Sprachen enthält. In einem früheren Beitrag haben wir unsere Serverlogs ausgewertet: In 22 Tagen hat kein einziger KI-Crawler die Datei abgerufen. Die bessere llms.txt ist also ordentliche Handwerksarbeit, deren Nutzen im Moment vor allem darin liegt, dass sie da ist, wenn sich das ändert.
Der naheliegende Einwand
Man kann all das für Kleinkram halten. Die Seite hatte eine A-Note, und die KI-Crawler kamen auch vorher schon regelmäßig vorbei. Acht tote Links in einer Sitemap bringen keine Website zu Fall, und Google wie andere Suchsysteme sind darin geübt, Umleitungen und widersprüchliche hreflang-Angaben stillschweigend zu reparieren.
Das stimmt, und es ist trotzdem das falsche Argument. Dass große Suchmaschinen Fehler tolerieren, heißt nicht, dass jedes System es tut, das heute Webseiten liest. Die Landschaft der KI-Crawler ist jung, ihre Heuristiken sind nicht dokumentiert, und niemand außerhalb der Anbieter weiß, wie großzügig ein bestimmter Agent mit Widersprüchen umgeht. Wer sich darauf verlässt, dass die Gegenseite schon verstehen wird, was gemeint war, verlagert die Arbeit auf ein System, dessen Geduld er nicht kennt. Eine Seite, die nichts Widersprüchliches sagt, ist die einzige Wette, die unabhängig davon aufgeht.
Was eine Note nicht sieht
Der eigentlich wichtige Befund dieses Selbsttests betrifft nicht unsere Website, sondern unser Werkzeug. robotcheck prüft, ob etwas vorhanden ist und ob es die richtige Form hat. Ob es stimmt, prüft es in vielen Fällen nicht. Eine Sitemap mit toten Einträgen besteht die Prüfung, eine längere Sitemap mit toten Einträgen besteht sie besser. Eine hreflang-Angabe, die ins Leere zeigt, zählt wie eine korrekte.
Das ist keine Besonderheit von robotcheck, es gilt für jedes automatisierte Bewertungssystem, das in wenigen Sekunden ein Urteil über eine ganze Website fällen soll. Es ist aber ein Grund, eine gute Note als Zwischenstand zu lesen und nicht als Beweis. Für uns ist es ein Arbeitsauftrag: Die Sitemap-Prüfung sollte Stichproben der aufgeführten URLs tatsächlich aufrufen, und die hreflang-Prüfung sollte Umleitungen erkennen. Beides steht jetzt auf der Liste.
Bis dahin bleibt der Rat, den wir uns an diesem Sonntag selbst gegeben haben. Nehmen Sie die Note, und dann rufen Sie die eigene Sitemap auf und klicken ein paar Einträge an. Es dauert zehn Minuten. Bei uns haben diese zehn Minuten mehr gefunden als der Score.
— Andreas Kurt Peter Reuter