Wie diese Prüfung funktioniert
Scanaris lädt das HTML deiner Seite so herunter, wie der Server es ausliefert, ohne JavaScript auszuführen, entfernt Skripte, Styles, noscript-Tags, Templates und SVGs und misst, wie viel sichtbarer Text im body übrig bleibt. Einen Befund, mittlerer Schweregrad, öffnet es nur, wenn zwei Bedingungen zugleich gelten: Dieser Text hat weniger als 250 Zeichen, und das HTML enthält einen leeren Single-Page-App-Container, also ein <div> mit der id root, app, __next, __nuxt oder q-app ohne Inhalt. Eine Seite mit serverseitigem Rendering oder statischer Generierung hat Text im anfänglichen HTML und wird nie gemeldet; eine Seite mit wenig Inhalt, aber ohne SPA-Container, auch nicht. Die Schwelle ist absichtlich niedrig, um Fehlalarme zu vermeiden.
Warum das wichtig ist
Googlebot führt JavaScript aus, aber in einem zweiten Durchlauf, der Tage dauern kann, und mit begrenztem Budget. Die Crawler der KI-Assistenten (GPTBot, ClaudeBot, PerplexityBot) führen es in der Regel gar nicht aus: Sie lesen das HTML, das sie bekommen, Punkt. Ist dein HTML ein <div id="root"></div> und ein Skript, ist deine Seite für sie leer. Sie können nicht indexieren, was sie nicht sehen, und nicht zitieren, was sie nicht lesen; fragt also jemand ChatGPT nach deiner Produktkategorie, existierst du nicht. Es ist das häufigste Problem von Seiten, die mit KI-Werkzeugen gebaut wurden, die eine reine Client-React- oder Vue-App erzeugen, und das unsichtbarste, weil im Browser alles perfekt aussieht.
So behebst du es
- Aktiviere serverseitiges Rendering. In Nuxt ist es standardmäßig an (
ssr: true); hast du es abgeschaltet, schalte es wieder ein. In Next.js rendert der App Router auf dem Server, außer du markierst die Komponente ganz oben mit'use client'. In reinem Vite mit React oder Vue gibt es kein SSR: Wechsle zu Next.js, Remix, Nuxt oder Astro, oder erzeuge die öffentlichen Seiten als statisches HTML. - Ist eine Migration keine Option, prerendere: Erzeuge das HTML der öffentlichen Routen beim Build (Nuxt
nitro.prerender, statischer Export in Next.js, Astro standardmäßig) oder nutze einen Prerendering-Dienst, der Bots gerendertes HTML liefert. - Mindestens gehört der wesentliche Inhalt ins HTML: die Überschrift, die Beschreibung dessen, was du tust, und die Hauptlinks, auch wenn die App sie beim Laden ersetzt. Das ist, was Bots sehen.
- Prüf die Seiten, die zählen, nicht nur die Startseite: Blog und Produktseiten sind die, die Assistenten zitieren.
Prüf, ob es behoben ist
curl -s https://deinedomain.de | sed -e 's/<script[^>]*>.*<\/script>//g' -e 's/<[^>]*>/ /g' | tr -s ' \n' ' ' | wc -c
Bleibt das Ergebnis bei ein paar Dutzend Zeichen, rendert JavaScript den Inhalt. Es sollten Tausende sein. Anderer Weg: im Browser JavaScript in den Entwicklerwerkzeugen deaktivieren und neu laden; was du siehst, sehen die Bots.
Häufige Fragen
Google indexiert mich gut. Warum sollte mich das kümmern?
Weil immer mehr Leute einen Assistenten fragen statt zu suchen, und diese Assistenten führen dein JavaScript nicht aus. Und weil selbst bei Google das verzögerte Rendern die Indexierung deiner Änderungen um Tage verzögert. Zahlen und Gründe stehen in warum KI-gebaute Apps für KI unsichtbar sind.
Meine App ist ein privates Dashboard hinter Login. Betrifft mich das?
Nein: Was hinter Authentifizierung liegt, soll nicht indexiert werden. Diese Prüfung zählt für die öffentlichen Seiten, die, die erscheinen sollen. Besteht deine Seite nur aus Dashboard plus Landingpage, mach die Landingpage zu HTML.
Ich habe SSR und trotzdem kommt wenig Text heraus.
Dann bringt das HTML Struktur, aber wenig echten Inhalt, und es lohnt sich zu prüfen, ob die Landingpage überhaupt etwas erzählt. Die Überschriften, die diesen Inhalt gliedern, prüft Überschriften.