Die meisten AI-Crawler — GPTBot, ClaudeBot, CCBot, PerplexityBot — lesen das rohe HTML, das dein Server ausliefert, und hören da auf. Sie führen kein JavaScript aus. Für Sites, die eine React-, Vue- oder Angular-Shell ausliefern, in die der eigentliche Content client-seitig hydratet wird, sieht der Crawler eine leere Shell: Navigation, Platzhalter und ein JavaScript-Bundle — keine Artikel, keine Überschriften, keine Teaser.

Ich hab 50 der größten DACH-Medien-Homepages durch das Lumina JS vs No-JS Tool laufen lassen: ein Fetch für rohes HTML, ein Fetch für Chrome-gerendertes DOM, Wörter gezählt und verglichen. 35 Sites lieferten sauber vergleichbare Daten. Sieben davon verstecken mindestens ein Viertel ihres Texts hinter JavaScript. News.at versteckt 100 %: Das rohe HTML enthält nichts außer Navigation.

Zwei Wege, aus ChatGPT zu verschwinden

Aktiver Block: robots.txt oder WAF-Regeln schicken AI-Bots weg. Eine bewusste Entscheidung, meist 2023 getroffen und selten überprüft.

Passives Verstecken: die Site lässt AI-Bots technisch rein, aber der Content wird client-seitig gerendert. Das rohe HTML enthält eine Shell ohne echten Text. Das ist meistens gar keine Entscheidung; es ist ein Nebeneffekt einer CSR-first Framework-Wahl.

Eine Site kann beides. Tagesschau blockt alle AI-Bots in der robots.txt UND versteckt 35 % des Homepage-Texts hinter Vue-Hydration. Double-Lockout.

Begleit-Studie

Was ich in ihren robots.txt-Dateien fand

Eine separate Studie zu denselben 50 Sites, letzte Woche publiziert. Ich hab die aktive Block-Ebene geprüft: robots.txt plus Live-Server-Check pro Bot. Vier Kern-Findings:

52 %
blocken GPTBot & ClaudeBot
0 %
blocken Googlebot
16/19
ARD blockt alle AI-Bots (Tagesschau, NDR, WDR, BR)
0/19
ZDF blockt null (gleiches Land, entgegengesetzte Haltung)
Die komplette robots.txt-Studie lesen →

Warum JS-Rendering für AI-Crawler zählt

Jede große AI-Firma trennt ihre Web-Präsenz in zwei Bot-Typen. Training-Crawler fetchen Seiten in Masse und füttern damit die Sprachmodelle. Answer-Crawler fetchen auf Nachfrage, wenn ein User eine Frage stellt. Für die meisten von ihnen überspringt das Massen-Crawling JavaScript komplett — jede Seite in einem Headless-Browser zu rendern ist teuer, langsam und unnötig, wenn der Content im rohen HTML drin ist.

OpenAIs Dokumentation zu GPTBot bestätigt, dass er rohes HTML liest. Anthropics ClaudeBot auch. Common Crawl — die Grundlage für Dutzende Open-Source-LLMs und Trainings-Quelle für fast alle — snapshotet nur rohes HTML. Perplexitys Training-Crawler folgt dem gleichen Muster. GoogleBot und Gemini rendern JavaScript, aber mit Verzögerung von Stunden bis Tagen, und selbst dann landen die gerenderten Seiten in einem anderen Index als dem unmittelbaren.

Wenn eine Site also ihren Content client-seitig rendert — sprich: der Text steht nicht im HTML, das der Server rausschickt, sondern nur im JavaScript-Bundle, das danach läuft — sehen klassische AI-Crawler eine Shell. Navigation im Header, ein Footer, vielleicht ein Cookie-Banner. Keine Artikel. Keine Teaser. Keine Überschriften. Die Site ist technisch „online", aber unsichtbar für alles außer Googles und Geminis Second-Pass-Rendering.

Die Kern-Zahlen

Von den 35 Sites mit sauber vergleichbaren Daten:

Median über die 35: 1 %. Durchschnitt: 13,6 % (hochgezogen von den extremen Ausreißern). Pro Land steht Österreich allein mit 26,5 % Durchschnitt, weit über Deutschland (6,3 %) und Schweiz (4,3 %) — vier österreichische Heavy-JS-Ausreißer schultern die ganze Differenz.

Durchschnittlich versteckter Text ohne JavaScript, nach Land

Basierend auf 35 sauber messbaren DACH-Medien-Homepages
26,5 % Österreich 13 Sites 6,3 % Deutschland 19 Sites 4,3 % Schweiz 3 Sites 50 % 25 % 0 %

Die 7 Heavy-JS-Sites

Diese sieben verstecken mindestens ein Viertel ihres Homepage-Texts hinter JavaScript. Jede Zahl wurde drei Mal gemessen; Spread über die Runs war 0–2 %, die Findings sind reproduzierbar und keine Einmal-Zufälle.

Zum Vergleich: Der Spiegel, Die Zeit, Bild, SRF und ORF verstecken jeweils unter 10 %. Svelte-basiertes Spiegel und Zeit konkret 1 % jeweils. Das Framework ist nicht die Ursache. Next.js kann volles SSR, Angular kann server-seitig rendern, Vue hat Nuxt. Jede Heavy-JS-Site oben könnte voll gerendertes HTML ausliefern und hat sich dagegen entschieden. Die Ursache ist Konfiguration.

Österreich dominiert die Heavy-JS-Liste

Vier der sieben sind österreichisch: News.at, ServusTV, Tiroler Tageszeitung, Kleine Zeitung. Die 13 sauber gemessenen österreichischen Sites haben einen Durchschnitts-Text-Gap von 26,5 %. Der Rest des DACH-Samples liegt unter 7 %.

Der Rest des österreichischen Samples ist normal: Der Standard (Paywall), Salzburger Nachrichten, Oberösterreichische Nachrichten, Wiener Zeitung, Profil, Heute, Falter, Trend, ORF — alle unter 10 % Text-Gap. Vier extreme Ausreißer ziehen den Durchschnitt hoch. Ohne sie läge Österreich nahe an Deutschland bei ungefähr 5–7 %.

Was die Ausreißer gemeinsam haben: Boulevard oder regionale TV-Inhalte, alle in den letzten drei Jahren auf React-Family-Frameworks umgebaut, alle im CSR-first-Modus. Für einen nationalen Sender wie ServusTV oder einen Regional wie die Tiroler Tageszeitung bedeutet diese Architektur-Entscheidung: Die Homepage rendert für menschliche Browser fein, ist aber für AI-Crawler ohne volle Rendering-Pipeline leer.

Der ARD-Double-Lockout

Das erste Schloss ist die robots.txt. Tagesschau, BR, NDR und WDR blocken alle 16 AI-Crawler in ihrer robots.txt mit einem identischen Policy-File — klar ARD-weit koordiniert (die volle Auswertung steht in der Begleit-Studie zur robots.txt). Das zweite Schloss ist JavaScript: Tagesschau und BR verstecken zusätzlich 35 % ihres Homepage-Texts hinter Vue-Hydration. NDR und WDR waren nicht im Top-50-Sample dieser Studie, aber sie nutzen denselben ARD-Tech-Stack — das gleiche Muster ist wahrscheinlich.

Das ist Double-Lockout. Selbst ein AI-Crawler, der die robots.txt ignoriert — manche tun das — sieht nur 65 % der Tagesschau-Homepage. Ein Crawler, der die robots.txt respektiert, sieht gar nichts. Die einzigen Bots, die die volle Seite bekommen, sind GoogleBot und Gemini (weil sie JS rendern), und die zwei sind sowieso überall erlaubt.

ZDF wäre der interessante Vergleichspunkt gewesen — ZDF blockt auf robots.txt-Ebene null AI-Crawler, das spiegelverkehrte Gegenteil der ARD. Aber die ZDF-Homepage übersteigt 2 MB rohes HTML, über dem Tool-Limit. Ich kann es nicht sauber messen. Angesichts wie schwer die Seite ist, ist sie vermutlich auch CSR-gerendert, was sie trotz entgegengesetzter robots.txt-Haltung in dieselbe JS-versteckt-Kategorie wie Tagesschau stecken würde.

Case Study: News.at zeigt 100 % erst nach JS

Um den extremsten Befund doppelt zu prüfen, hab ich das rohe HTML von news.at direkt geholt (am Tool vorbei, gleicher Proxy-Endpoint) und die Wörter manuell gezählt. Der Body enthielt 559 Wörter total — aber nur 7 im Main-Content-Bereich. Die restlichen 552 waren Navigations-Strings: „Suche", „ABO", „Menü", „Aktuell", „Politik", „Wirtschaft", „Menschen" und so weiter durch den Kategorie-Baum.

Kein Artikel-Text. Keine Überschrift. Kein Teaser. Kein Autoren-Name. Kein Datum. Nichts vom Content, der news.at zu einer News-Site macht. All das lebt im JavaScript-Bundle, das Next.js nach dem Laden hydratet.

Für einen menschlichen Browser ist das in Ordnung — du siehst die volle Site innerhalb von 2 Sekunden. Für GPTBot, ClaudeBot oder CCBot ist die Seite effektiv leer. Wenn ein User ChatGPT fragt „Was steht heute in den Nachrichten in Österreich?", hat news.at null Sätze zum Zitieren. Selbst wenn ChatGPT live im Web nach der Antwort sucht, hat die rohe HTML-Response keine News. Die Site ist in AI-Suche unsichtbar.

Sechs Sites im Sample liefern unter 100 Wörter in beiden Fetches: Der Standard, Die Presse, Falter, t3n, NZZ und 20 Minuten. Das ist Consent-Wall-Gebiet. Der Server liefert einen Cookie-Dialog mit vielleicht 40–60 Wörtern rechtlicher Boilerplate und nichts anderem, bis ein Mensch „Akzeptieren" klickt.

Das ist kein JavaScript-Problem. Es ist ein anderes Zugriffs-Muster. Klassische HTTP-Crawler sehen fast nichts (den Consent-Dialog-Text), gerendertes Chrome sieht fast nichts (denselben Dialog, weil es nicht auf Akzeptieren klicken kann), und menschliche Besucher sehen vollen Content erst nach Interaktion. Für AI-Crawler ist das praktische Ergebnis dasselbe wie volles Verstecken: nichts zum Zitieren. Sechs von 50 getesteten Sites (12 %) nutzen dieses Muster.

Consent-Walls sind rechtlich motiviert — deutsche und österreichische DSGVO-Durchsetzung hat klargemacht, dass Cookie-Consent aktiv gegeben werden muss, bevor getrackt wird. Aber der Seiteneffekt für AI-Sichtbarkeit ist direkt: Diese Sites haben für Consent-Compliance optimiert und sind unbeabsichtigt aus AI-Antworten rausgefallen.

Methodik

Die 15 Sites, die wir nicht sauber messen konnten

Von 50 Sites lieferten 35 sauber vergleichbare Daten. Die anderen 15 teilen sich in eigene Kategorien, jede selbst ein kleines Finding:

Diese 15 Sites sind aus allen Länder-Durchschnitten und Prozentzahlen in diesem Artikel ausgeschlossen. Nur die 35 sauber gemessenen Sites zählen. Ich erwähne die Ausschluss-Kategorien hier, weil jede einzelne selbst ein kleines Finding ist, wie diese Sites mit automatisierten Crawlern interagieren.

Was ich selbst daraus mitnehme

Es gibt zwei Wege, aus ChatGPT zu verschwinden, und dieser Artikel behandelt den, den niemand entschieden hat. Die explizite Policy-Entscheidung — „wir werden GPTBot blocken" — hat zumindest einen Namen, einen Owner, ein Meeting, in dem sie diskutiert wurde. Die JavaScript-Verstecken-Entscheidung nicht. Sieben Sites liefern eine Homepage, auf der der eigentliche Content erst existiert, nachdem ein JavaScript-Framework hydriert. Das war keine GEO-Entscheidung. Das war ein Frontend-Team, das die Default-Konfiguration von Next.js, Angular oder Vue gepickt und ausgeliefert hat.

Für News.at ist der Effekt total: null Content verfügbar für AI-Crawler, die kein JS rendern. Für die Tagesschau kompoundiert der Effekt mit dem absichtlichen robots.txt-Block: Double-Lockout. Für Kleine Zeitung und WirtschaftsWoche ist es ein Drittel ihres Contents, das still aus dem AI-Training-Feed fehlt.

Der Fix ist nicht, das Framework zu wechseln. Der Fix ist, die Konfiguration auf SSR-first zu flippen (jedes erwähnte Framework unterstützt das) oder Static Site Generation auszuliefern. Spiegel und Zeit laufen beide auf Svelte und verstecken 1 % Text jeweils. Machbar.

Ob österreichische Regional-Medien, BR, die Tagesschau oder News.at diese Arbeit machen werden, ist eine andere Frage. Der erste Schritt ist einfach nur zu wissen, dass es da ist — die meisten Frontend-Teams, mit denen ich geredet hab, checken ihre AI-Crawler-Sichtbarkeit gar nicht.

FAQ

Warum zählt JavaScript-Rendering für AI-Sichtbarkeit?+
Die meisten klassischen AI-Crawler — GPTBot, ClaudeBot, CCBot und PerplexityBot — führen kein JavaScript aus. Sie lesen nur das rohe HTML, das der Server zurückgibt. Wenn eine Site ihren Content client-seitig per React-, Vue- oder Angular-Hydration rendert, sehen diese Crawler eine leere Shell. GoogleBot und Gemini rendern JS, aber mit Verzögerung; die anderen großen LLM-Training-Crawler nicht.
Welche Frameworks hatten die größten Text-Gaps in dieser Studie?+
Next.js (News.at, ServusTV) und Angular (Tiroler Tageszeitung, WirtschaftsWoche) hatten die größten Text-Gaps. Vue war gemischt: Kleine Zeitung versteckte 39 %, während ORF — auch auf Vue — nur 7 % versteckte. Svelte, genutzt von Der Spiegel und Die Zeit, hatte im Durchschnitt 1 % über Runs. Das Framework ist nicht die Ursache; Konfiguration ist. SSR-first-Setups produzieren vollständiges rohes HTML. CSR-first-Setups nicht.
Sieht Google den versteckten Content?+
Ja. GoogleBot rendert JavaScript, aber mit einer Verzögerung von Stunden bis Tagen. Gemini erbt dieselbe Rendering-Pipeline. Aber klassische AI-Training-Crawler nicht: GPTBot, ClaudeBot und CCBot (der Feed für die meisten Open-Source-LLMs) sehen nur das rohe HTML. Eine Site mit 35 % Text-versteckt wird von Google voll indexiert und von ChatGPT auf nur 65 % ihres Contents trainiert.
Ist das dasselbe wie AI-Crawler per robots.txt zu blocken?+
Nein. Blocken per robots.txt oder WAF-Regeln ist eine aktive Entscheidung. Content hinter JavaScript zu verstecken ist meistens unbeabsichtigt — ein Seiteneffekt von CSR-first Framework-Entscheidungen. Eine Site kann GPTBot absichtlich blocken UND gleichzeitig unbeabsichtigt Content verstecken. Die Tagesschau macht beides: Sie blockt alle AI-Crawler in der robots.txt UND versteckt 35 % ihres Homepage-Texts hinter Vue-Hydration.
Wie kann ich JS-Rendering-Gaps auf meiner eigenen Site prüfen?+
Run deine URL durch das Lumina JS vs No-JS Tool. Es feuert zwei parallele Fetches — rohes HTTP und Chrome-gerendert — und zeigt dann den Text-versteckt-Prozentsatz, erkannte Frameworks und die spezifischen Wörter, die im rohen HTML fehlen. Kostenlos, keine Anmeldung. Für die volle DACH-Studie hat dasselbe Tool jede Zahl in diesem Artikel produziert.

Prüf deinen eigenen JS-Rendering-Gap

Derselbe Test wie in dieser Studie — für deine Domain. Kostenlos, keine Anmeldung, rohes HTML vs Chrome-gerendert in 20 Sekunden.

JS vs No-JS Tool öffnen →