Dein bestes Google-Ranking ist wertlos, wenn die Antwort schon vor dem Klick gegeben wurde. Genau das passiert gerade: Nutzer fragen ChatGPT, Claude oder Perplexity – und bekommen eine fertige Antwort mit drei, vier zitierten Quellen. Bist du nicht darunter, existierst du in diesem Moment nicht. Kein Ranking, kein Klick, keine zweite Chance.
Die Disziplin, die das adressiert, heißt Generative Engine Optimization (GEO). Und sie ist – anders als der Marketing-Lärm vermuten lässt – zu großen Teilen ein Engineering-Problem. Crawler-Zugang, Rendering, strukturierte Daten. Lauter Dinge, über die ein Entwickler entscheidet, nicht das Content-Team.
Der Unterschied ist nicht kosmetisch. Klassisches SEO will, dass du auf Platz eins rankst, damit jemand klickt. GEO will, dass ein Sprachmodell deinen Absatz wörtlich in seine Antwort übernimmt – inklusive Quellenangabe. Der Klick ist nur noch Bonus.
Daraus folgt ein anderer Tech-Stack an Signalen:
| Aspekt | Klassisches SEO | GEO / KI-Sichtbarkeit |
|---|---|---|
| Ziel | Top-10 in Google | Zitat in ChatGPT, Claude, Perplexity |
| Relevante Bots | Googlebot, Bingbot | GPTBot, ClaudeBot, PerplexityBot |
| Index-Hinweis | sitemap.xml |
|
llms.txt + sitemap.xml |
||
| Strukturierte Daten | Rich Snippets | Entity-Linking (Organization , sameAs , @graph ) |
| Rendering | Google rendert JS (verzögert) | viele KI-Bots rendern kein JS → SSR Pflicht |
| Erfolgskontrolle | Search Console, Rank-Tracker | Citation- & Mention-Tracking in LLMs |
Die Hebel überschneiden sich – sauberes HTML, schnelle Antwortzeiten, valides Markup helfen beidem. Aber die Bots, die Index-Signale und die Erfolgskontrolle sind eigenständig. Wer GEO als „SEO mit neuem Namen" abtut, übersieht genau die Stellen, an denen es klemmt.
Bevor du über Content-Qualität nachdenkst, klär die banale Frage: Kommt der Crawler durch? Erstaunlich oft lautet die Antwort nein – und niemand merkt es, weil ein Browser die Seite ja problemlos lädt.
Die drei User-Agents, die zählen, sind GPTBot
, ClaudeBot
und PerplexityBot
. Eine robots.txt
, die sie durchlässt, sieht so aus:
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
Ein Detail, das viele falsch machen: GPTBot
und OAI-SearchBot
sind nicht dasselbe. GPTBot
füttert die Trainingsdaten, OAI-SearchBot
ist für Citations in der ChatGPT-Suche zuständig. Wer aus Datenschutzgründen das Training ausschließen will, sollte nicht pauschal alles von OpenAI sperren – sonst kappt er sich versehentlich die Sichtbarkeit. Training raus, Suche rein:
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
Der gemeinste Fall ist aber nicht die robots.txt
, sondern die Schicht davor. Cloudflare Bot Fight Mode, eine ModSecurity-Regel, ein nginx-User-Agent-Filter oder ein überambitioniertes Shopware-Plugin weisen unbekannte User-Agents pauschal als Scraper ab. Der Browser sieht davon nie etwas, der KI-Bot bekommt ein 403 oder eine Captcha-Seite. Prüf das im Zweifel direkt:
curl -A "GPTBot" -I https://deine-domain.de
Kommt da kein sauberes 200
zurück, hast du dein erstes Problem gefunden, bevor du eine Zeile Content angefasst hast. Und Achtung: Cloudflare-Defaults setzen sich bei Updates gern zurück – also nach jedem größeren Release erneut testen.
Hier wird es für moderne Frontends unbequem. Viele KI-Crawler rendern kein JavaScript. Was bei einer reinen Client-Side-React-App im initialen HTML steht, ist oft ein leeres <div id="root">
– und genau das liest der Bot. Dein schöner Content existiert für ihn nicht.
Die Lösung ist kein Geheimnis, sie kostet nur Disziplin: Server-Side Rendering oder Static Generation, damit die Hauptinhalte schon im ausgelieferten HTML stehen. In Next.js heißt das, die Finger von reinem Client-Fetching für indexierbaren Content zu lassen:
// Server Component – Inhalt steht im initialen HTML, lesbar ohne JS
export default async function ProductPage({ params }) {
const product = await getProduct(params.id);
return (
<article>
<h1>{product.name}</h1>
<p>{product.description}</p>
</article>
);
}
Kurz gesagt: Wenn der Inhalt erst nach dem Hydration-Schritt im DOM auftaucht, ist er für einen erheblichen Teil der KI-Crawler unsichtbar. SSR ist bei GEO keine Performance-Kür mehr, sondern Voraussetzung.
Ein Sprachmodell zitiert lieber, was es eindeutig zuordnen kann. Strukturierte Daten sind dafür das stärkste Signal – nicht als SEO-Deko, sondern als maschinenlesbare Aussage darüber, wer du bist. Das Minimum ist ein Organization
-Schema mit sameAs
-Verknüpfungen, die deine Marke mit ihren bekannten Profilen verbinden:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Beispiel GmbH",
"url": "https://beispiel.de",
"sameAs": [
"https://www.linkedin.com/company/beispiel",
"https://de.wikipedia.org/wiki/Beispiel_GmbH",
"https://www.crunchbase.com/organization/beispiel"
]
}
</script>
Die sameAs
-Links sind der eigentliche Trick: Sie verankern deine Entität in Quellen, denen das Modell ohnehin vertraut. Darüber hinaus lohnen sich je nach Seitentyp FAQPage
(gut für Frage-Antwort-Formate), Product
Offer
(Shops) sowie Article
Author
(Blogs) – am besten gebündelt in einem gemeinsamen @graph
.
llms.txt
ist eine vorgeschlagene Konvention (llmstxt.org), kein offizieller Standard. Die Idee: eine Markdown-Datei unter /llms.txt
, die KI-Systemen eine kuratierte Liste deiner wichtigsten Inhalte nennt – konzeptionell wie eine sitemap.xml
, nur für LLMs.
> Digitalagentur für E-Commerce, Software und KI-Beratung.
## Wichtige Seiten
- [Leistungen](https://beispiel.de/leistungen): Überblick über alle Services
- [Blog](https://beispiel.de/blog): Fachartikel zu E-Commerce und KI
- [Kontakt](https://beispiel.de/kontakt): Ansprechpartner und Standorte
Ehrlich bleiben: Noch lesen längst nicht alle Crawler die Datei aus, einige Recherche-Agents tun es bereits. Der Aufwand ist minimal, das Risiko null – das ist eine der wenigen GEO-Maßnahmen, bei denen sich die Kosten-Nutzen-Rechnung nicht lange diskutieren lässt.
Die Technik schafft den Zugang, aber zitiert wird am Ende eine Textpassage. Und Modelle haben eine klare Präferenz: kurze, eigenständige Absätze, klare Definitionen, Zahlen, Listen, saubere Überschriften-Hierarchie. Die Princeton-Forschung hinter dem Begriff GEO (KDD 2024) zeigt, dass Zitate, Statistiken und konkrete Quellenangaben die Wahrscheinlichkeit, in einer KI-Antwort aufzutauchen, um bis zu 30–40 % erhöhen.
Werblicher Fließtext ohne Substanz ist das Gegenteil davon. Ein Absatz, der eine Frage in zwei klaren Sätzen beantwortet, wird zitiert. Ein Absatz voller „innovativer, ganzheitlicher Lösungen" wird übersprungen.
Das Unangenehme an GEO: Die meisten dieser Probleme sieht man der Seite im Browser nicht an. Die robots.txt
blockt lautlos, die WAF antwortet Bots anders als dir, das JSON-LD hat ein fehlendes Pflichtfeld. Bevor du anfängst zu optimieren, lohnt sich deshalb eine Bestandsaufnahme aus Bot-Perspektive.
Dafür haben wir bei nextlevels einen kostenlosen KI-Sichtbarkeits-Check gebaut: Er simuliert die wichtigsten KI-Crawler, liest robots.txt
, llms.txt
und Sitemap, prüft das ausgelieferte HTML auf SSR und strukturierte Daten und erkennt Bot-Blocker auf WAF-Ebene. Ergebnis in unter 30 Sekunden, ohne E-Mail, und jeder Einzelbefund kommt mit den Rohdaten, die du selbst per curl
nachprüfen kannst. Genau das macht ihn für Entwickler brauchbar – es ist kein Score zum Glauben, sondern eine Checkliste zum Nachvollziehen.
GEO ist kein neues Marketing-Buzzword, das man dem Content-Team überlassen kann. Die Stellen, an denen Sichtbarkeit in KI-Antworten entsteht oder stirbt, liegen im Code: in der robots.txt
, in der Render-Strategie, im Schema-Markup, in der WAF-Konfiguration. Die gute Nachricht für uns Entwickler ist, dass das alles überprüfbar und fixbar ist – kein Raten, kein Black-Box-Algorithmus. Fang bei der banalsten Frage an: Kommt der Bot überhaupt durch? Den Rest baust du darauf auf.