Können KI-Crawler per JavaScript gerenderte Inhalte lesen?

Veröffentlicht

Kurz gesagt

Oft nicht. Googlebot rendert JavaScript in einem späteren Schritt, aber die meisten KI-Crawler dokumentieren das nicht, und Google selbst weist darauf hin, dass nicht alle Bots JavaScript ausführen können. Erscheint Ihr Text erst nach der Ausführung von Skripten, erhält ein KI-Crawler womöglich eine leere Seite. Liefern Sie den Hauptinhalt im ursprünglichen HTML aus, per Server-Side-Rendering oder statischen Seiten.

Single-Page-Apps und clientseitige Frameworks sind überall, und im Browser sehen sie gut aus. Ein Crawler, der nur das HTML liest, das Ihr Server sendet, sieht etwas anderes: ein <div id="root"></div>, ein paar Skript-Tags und kaum oder keinen Text. Für KI-Antworten hat diese Seite nichts zu zitieren.

Auf dieser Seite
  1. Warum übersehen KI-Crawler JavaScript-Inhalte?
  2. Wie prüfe ich, was ein Crawler erhält?
  3. Welche Seiten sind am stärksten gefährdet?
  4. Wie behebe ich Inhalte, die nur per JavaScript existieren?
  5. Blockieren Login-, Consent- und Paywall-Bildschirme auch KI-Crawler?
  6. Wie erkennt AISeeWhy Seiten, die nur mit JavaScript funktionieren?

Warum übersehen KI-Crawler JavaScript-Inhalte?

JavaScript auszuführen ist aufwendig. Ein Crawler muss die Skripte herunterladen, in einer Browser-Engine ausführen und auf das Laden von Daten warten. Google tut das für die Suche: Es crawlt, stellt Seiten zum Rendern in eine Warteschlange und rendert sie mit Headless Chromium, wenn Ressourcen frei sind. Trotzdem empfiehlt Google Server-Side-Rendering oder Prerendering, weil es für Nutzer und Crawler schneller ist, und weist darauf hin, dass nicht alle Bots JavaScript ausführen können.

OpenAI, Anthropic und Perplexity geben in ihrer Crawler-Dokumentation nicht an, dass ihre Agenten JavaScript ausführen. Apple sagt, Applebot könne Seiten in einem Browser rendern. Ohne klare Aussage ist für KI-Crawler die sichere Annahme, dass sie nur das ursprüngliche HTML lesen.

Wie prüfe ich, was ein Crawler erhält?

Sehen Sie sich das rohe HTML an, nicht die gerenderte Seite. Die Entwicklertools des Browsers zeigen das DOM nach der Ausführung der Skripte, und das erhält ein Crawler nicht. Nutzen Sie den Quelltext oder speichern Sie das rohe HTML auf der Kommandozeile und durchsuchen Sie es:

curl -s -o page.html \
  -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
  https://example.com/page

# Is a sentence from your main text in the raw HTML?
grep -c "a sentence from your main content" page.html

Ein Ergebnis von 0 bedeutet, dass der Satz nicht im HTML steht, das der Server gesendet hat; Crawler, die keine Skripte ausführen, finden ihn also nicht. Ein kurzer Blick in die Datei zeigt den Rest: Ein serverseitig gerenderter Artikel enthält dort seinen vollständigen Text; eine clientseitige Hülle hat ein leeres Root-Element und eine Liste von Skripten.

Welche Seiten sind am stärksten gefährdet?

Wie behebe ich Inhalte, die nur per JavaScript existieren?

Die Lösung ist, die wichtigen Inhalte in der ersten Antwort zu senden. Wählen Sie die leichteste Option, die Ihr Stack erlaubt:

Sie müssen nicht eine ganze App auf einmal umstellen. Beginnen Sie mit den Seiten, die zitiert werden sollen: Artikel, Dokumentation, Produkt- und Preisseiten. Kontobereiche und Dashboards können clientseitig bleiben, denn sie liegen ohnehin hinter einem Login.

Vermeiden Sie es, Crawlern anhand ihres User-Agents eine andere Seite auszuliefern als Nutzern. Für alle dasselbe HTML zu rendern ist einfacher zu pflegen und schließt jeden Zweifel an Cloaking aus.

Blockieren Login-, Consent- und Paywall-Bildschirme auch KI-Crawler?

Ja. Ein Crawler loggt sich nicht ein, klickt kein Cookie-Banner an und löst keine Challenges. Anthropic erklärt, dass seine Bots nicht versuchen, CAPTCHAs zu umgehen. Ersetzt ein Consent-Manager die Seite im HTML durch ein Vollbild-Overlay oder leitet er Erstbesucher auf eine Consent-Seite um, erhält der Crawler diese statt Ihres Inhalts.

Sorgen Sie dafür, dass öffentliche Seiten ihren Inhalt unabhängig vom Consent-Status im HTML ausliefern, mit dem Banner als Overlay statt als Ersatz. Halten Sie Seiten, die zitiert werden sollen, außerhalb von Login-Wänden und prüfen Sie, dass ein Crawler nicht auf eine Anmeldeseite umgeleitet wird.

Wie erkennt AISeeWhy Seiten, die nur mit JavaScript funktionieren?

AISeeWhy liest das ursprüngliche HTML so, wie es jeder Crawler erhält, ohne Skripte auszuführen. Hat eine Seite kaum sichtbaren Text, aber ein Framework-Root-Element und Skripte, meldet es einen P1-Befund, dass der Inhalt JavaScript braucht. Außerdem markiert es Weiterleitungen, die Crawler woandershin schicken als auf die Seite, die ein Browser erhält.

Häufige Fragen

Rendert Googlebot JavaScript?

Ja. Google crawlt das HTML, stellt Seiten zum Rendern in eine Warteschlange und rendert sie mit Headless Chromium, wenn Ressourcen frei sind. Google empfiehlt dennoch Server-Side-Rendering oder Prerendering.

Führen die Crawler von ChatGPT, Claude und Perplexity JavaScript aus?

Die Crawler-Dokumentation der Anbieter sagt dazu nichts. Gehen Sie, bis ein Anbieter etwas anderes erklärt, davon aus, dass der Crawler das ursprüngliche HTML liest, und sorgen Sie dafür, dass Ihr Inhalt darin steht.

Ist Dynamic Rendering für Bots eine gute Idee?

Als Übergangslösung funktioniert es, fügt aber einen zweiten Rendering-Pfad hinzu, den Sie pflegen müssen. Server-Side-Rendering oder statisches HTML liefert allen denselben Inhalt und ist langfristig die einfachere Lösung.

Zählt per JavaScript ergänztes JSON-LD?

Google kann es nach dem Rendern lesen, aber Crawler, die keine Skripte ausführen, sehen es nicht. Legen Sie JSON-LD ins ursprüngliche HTML.

Quellen

Weitere Artikel