OpenAI-Crawler und JavaScript: Schema.org bei Next.js prüfen

· von geaio
Ein unbeschrifteter Strukturplan mit verschachtelten Rechtecken, Verbindungslinien und drei blauen Punkten liegt mit einem Metalllineal auf einem hellen Tisch als Sinnbild für die Schema.org-Prüfung bei Next.js. KI-Symbolbild

Symbolbild, mit KI erstellt.

Laut Google Search Central führt Googlebot JavaScript mit einem headless, stets aktuellen Chromium aus, hält serverseitiges Rendern oder Pre-Rendering aber weiterhin für sinnvoll, weil nicht alle Bots JavaScript ausführen können (Stand 2026-03-04, https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics). Für deine Next.js- oder React-Seite heißt das: Was bei Google funktioniert, ist damit nicht automatisch für jeden anderen Crawler belegt.

Definition: OpenAI-Crawler und JavaScript beschreibt die Frage, ob Bots wie OAI-SearchBot und GPTBot Inhalte und strukturierte Daten erst sehen, nachdem Skripte im Browser gelaufen sind, oder bereits im ausgelieferten HTML. Bei Next.js- und React-Seiten entscheidet dieser Unterschied, ob Schema.org-Markup wie Organization, Article oder Product bei der KI ankommt.

Mythos 1: OpenAI-Crawler rendern JavaScript, also ist der Rendering-Modus egal

Gelegentlich heißt es, OpenAI-Crawler würden inzwischen JavaScript ausführen. Eine Quelle dafür kennen wir nicht, und in der offiziellen Dokumentation findest du dazu nichts. OpenAI beschreibt auf https://developers.openai.com/api/docs/bots den OAI-SearchBot als Crawler, der Websites in den Suchfunktionen von ChatGPT sichtbar macht, und den GPTBot als Crawler für Inhalte, die für das Training von Modellen genutzt werden können. Änderungen an der robots.txt brauchen laut OpenAI etwa 24 Stunden, bis die Systeme sie übernehmen. JavaScript-Rendering erwähnt die Seite nicht.

Die Dokumentation lässt die Frage damit offen. Ob diese Bots Skripte ausführen, ist öffentlich nicht belegt. Wer sein Markup nur im gerenderten DOM hat, verlässt sich auf eine Annahme, die in der Dokumentation nicht bestätigt ist.

Wir halten deshalb eine Absicherung für sinnvoll, die in beiden Fällen funktioniert: Die wichtigen Daten stehen bereits im ersten HTML-Dokument. Wie sich das Rendering-Thema allgemein verhält, beschreibt unser Beitrag zu JavaScript-Rendering für KI-Crawler.

Mythos 2: Googlebot-Verhalten lässt sich auf ChatGPT übertragen

Google dokumentiert sein Verhalten ausführlich. Googlebot reiht Seiten mit HTTP-Status 200 zum Rendern ein, so die Dokumentation unter https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics. Für strukturierte Daten schreibt Google Search Central (Stand 2025-12-10), dass die Suche Markup verarbeiten kann, das beim Rendern im DOM vorliegt. Dieselbe Seite warnt, dass dynamisch erzeugtes Markup die Shopping-Crawls seltener und weniger zuverlässig machen kann (https://developers.google.com/search/docs/guides/generate-structured-data-with-javascript).

Daraus ergibt sich zweierlei: Die Zusage gilt ausdrücklich für Googlebot, und selbst Google rät bei Product-Daten zur Vorsicht. Ein Shop auf React mit clientseitig eingefügtem Product-JSON-LD hat also schon bei Google ein dokumentiertes Risiko, bevor ein OpenAI-Crawler überhaupt ins Spiel kommt.

Mythos 3: Schema.org im Browser reicht, weil JSON-LD ja nur ein Skript ist

JSON-LD ist eines von drei Formaten, die Schema.org für die Auszeichnung vorsieht, neben Microdata und RDFa (https://schema.org/docs/gs.html). Das Format ist in der Praxis angenehm, weil es sich von der Darstellung trennen lässt. Genau deshalb kann es in React-Projekten leicht per Effekt oder Client-Komponente nachgeladen werden.

Ein Rechenbeispiel (hypothetisch): Angenommen, 200 Produktseiten erzeugen ihr Product-JSON-LD erst nach der Hydration im Browser. Ein Crawler ohne Skriptausführung sähe in diesem Szenario auf allen 200 Seiten ein HTML ohne Preis, Verfügbarkeit und Bewertung, obwohl das gerenderte DOM vollständig wäre.

Prüfen kannst du das in einer Minute. Rufe die URL mit curl ab und suche in der Rohantwort nach application/ld+json. Steht der Block dort, liegt er im ersten HTML. Fehlt er und taucht erst im Browser-Inspektor auf, entsteht er clientseitig. Mehr zum Formatvergleich steht in JSON-LD oder Microdata.

Mythos 4: Jeder Schema-Typ braucht denselben Aufwand

Die Typen unterscheiden sich im Ort, an dem sie im Template entstehen. Die folgende Tabelle ordnet sie nach dem Next.js-Muster, das für sie naheliegt.

Schema-TypSinnvoller Ort im TemplatePrüfpunkt im Roh-HTML
OrganizationRoot-Layout, einmal je SeiteName, URL, sameAs vorhanden
ArticleServer-Komponente der BeitragsseiteAutor, Datum, Überschrift stimmen mit sichtbarem Text überein
ProductServer-Komponente der ProduktseitePreis und Verfügbarkeit stehen im ersten HTML
LocalBusinessKontakt- und StandortseitenAdresse und Telefon entsprechen dem sichtbaren Text
BreadcrumbListLayout oder SeitenkopfReihenfolge der Positionen passt zur URL-Struktur
FAQPageSeite mit sichtbaren Fragen und AntwortenJede Frage steht auch als Text auf der Seite

Zu Breadcrumbs gibt es einen eigenen Beitrag zu BreadcrumbList Schema. Für den Gesamtüberblick helfen die Hinweise zu Schema.org Markup für KI.

Was geaio prüft und wo die Grenzen liegen

geaio berechnet SEO-, GEO-, Entity- und AI-Score regelbasiert auf Basis von 45 Regeln und gibt Findings samt Handlungsempfehlungen aus. Beim Schema-Markup prüft geaio die Validität von JSON-LD sowie Properties von Organization und LocalBusiness. Die Regelliste kannst du als registrierter Nutzer auf geaio.de/erklaert einsehen, Registrierung und Analyse sind kostenlos.

Aus unserer Sicht ist der Zustand deines ersten HTML-Dokuments wichtiger als die Frage, ob OpenAI-Crawler JavaScript rendern. Das ist eine eigene Bewertung: Was in der Rohantwort steht, kannst du selbst prüfen, während eine Zusage von OpenAI zum Rendering bisher nicht dokumentiert ist.

Die Prüfreihenfolge für Next.js und React vor dem nächsten Release

Gehe in dieser Reihenfolge vor, bevor du an Details feilst:

  1. Rohantwort mit curl abrufen und nach application/ld+json suchen.
  2. Prüfen, ob die Werte im JSON-LD mit dem sichtbaren Seitentext übereinstimmen.
  3. JSON-LD in Server-Komponenten oder beim statischen Rendern erzeugen, nicht in Client-Effekten.
  4. In der robots.txt kontrollieren, ob OAI-SearchBot und GPTBot gewollt zugelassen oder gesperrt sind, und etwa 24 Stunden bis zur Übernahme einplanen (https://developers.openai.com/api/docs/bots).

Ob ein Rich Snippet erscheint, hängt zusätzlich von Googles eigenen Kriterien ab. Valides Markup ist Voraussetzung, kein Versprechen.

Häufig gestellte Fragen

Rendern OpenAI-Crawler JavaScript? Die offizielle Dokumentation von OpenAI unter https://developers.openai.com/api/docs/bots erwähnt JavaScript-Rendering nicht. Ob OAI-SearchBot oder GPTBot Skripte ausführen, ist damit öffentlich nicht belegt. Du solltest dich nicht darauf verlassen.

Reicht Schema.org-Markup, das erst im Browser entsteht? Google Search Central schreibt, dass die Suche Markup verarbeiten kann, das beim Rendern im DOM vorliegt, warnt aber bei dynamisch erzeugtem Product-Markup vor selteneren und weniger zuverlässigen Shopping-Crawls (Stand 2025-12-10). Für andere Crawler gibt es keine vergleichbare Zusage.

Wie prüfe ich, ob mein JSON-LD im ersten HTML steht? Rufe die URL mit curl ab und suche in der Antwort nach application/ld+json. Findest du den Block dort, liegt er im ersten HTML. Erscheint er nur im Inspektor des Browsers, entsteht er clientseitig.

Welches Schema-Format soll ich bei React nutzen? Schema.org sieht Microdata, RDFa und JSON-LD vor (https://schema.org/docs/gs.html). In Next.js lässt sich JSON-LD sauber in Server-Komponenten erzeugen, deshalb bietet es sich dort an. Entscheidend ist, dass es im ersten HTML liegt.

Hinweis zur Erstellung

Dieser Beitrag und sein Titelbild wurden mit Unterstützung künstlicher Intelligenz erstellt und vor der Veröffentlichung redaktionell geprüft. Abgebildete Motive sind Symbolbilder. Die Analyse hinter dem geaio-Score arbeitet dagegen regelbasiert — dort ist kein KI-Modell im Spiel. Mehr dazu unter KI-Transparenz. Redaktionelle Freigabe: Jens Schöberling.