Damit ein Assistent Ihre Site zitieren kann, müssen drei Dinge in Production funktionieren. Die relevanten Bots sind erlaubt. Der Server liefert die Seite, während der Einkäufer noch im Gespräch ist. Die Fakten stehen in der ersten HTML-Antwort, damit ein Fetcher ohne JavaScript sie lesen kann.
Kann KI Ihre Website lesen ist vor allem eine Frage des technischen SEO - mit zusätzlichen Bots und zusätzlichen Daten. Wenn Googlebot bereits crawl-bare, indexierbare HTML-Seiten erhält, haben Sie den Großteil der Basis schon. Was Sie zusätzlich freischalten, ist benannter Zugang für GPTBot und ChatGPT-User, ein klarer Pfad durch CDN und WAF (Cloudflare liefert AI-Bot-Steuerungen, die standardmäßig blockieren), und dieselben Fakten als typisierte Daten (Tabellen plus JSON-LD), damit eine Maschine eine Zahl als Preis oder Abmessung nutzen kann, statt aus einem Satz zu raten. Lesen Sie auch: KI-Empfehlung für Lieferanten: Shortlist-Fakten - warum veröffentlichte Specs zählen, sobald ein Fetcher die Seite lesen kann.
In diesem Artikel:
- Wie gelangt eine Seite in eine KI-Antwort?
- Welche Bots sollten erlaubt sein, und was ermöglicht jeder einzelne?
- Lässt CDN oder Bot-Fight-Schicht diese Bots noch durch?
- Wie viel davon ist schon technisches SEO?
- Wie liefern Sie eine nutzbare Antwort rechtzeitig?
- Wie bringen Sie den Text in die erste HTML-Antwort?
- Was sollten Sie sonst noch freischalten, damit eine Maschine die Daten nutzen kann?
- Was bringt JSON-LD, sobald die Seite lesbar ist?
- Wie prüfen Sie das in Production?
- Was konfigurieren Sie zuerst?
- So richten wir das in Drupal ein
- Häufige Fragen
Wie gelangt eine Seite in eine KI-Antwort?
Assistenten nutzen zwei Abrufwege. Die Zugriffsrichtlinie muss beide benennen, denn es sind unterschiedliche Agenten mit unterschiedlichen Aufgaben.
Training-Crawl. Ein Crawler holt öffentliche Seiten nach eigenem Zeitplan. Dieser Bestand speist später das Modelltraining. Erlauben Sie GPTBot und ClaudeBot, damit künftige Modelle einbeziehen können, was Sie veröffentlicht haben.
Live-Fetch. Wenn ein Einkäufer eine Frage stellt, öffnet der Assistent Ihre Seite während dieses Gesprächs und sucht den Wert, nach dem gefragt wurde. Erlauben Sie ChatGPT-User und OAI-SearchBot, damit heutige Antworten die Live-Seite zitieren können.
Schreiben Sie beides in robots.txt und in die WAF-Allowlist als getrennte Regeln. Eine pauschale „Bots“-Zeile behandelt Training-Crawler und Live-Fetcher wie denselben Client. Das sind sie nicht.
| Agent | Betreiber | Erlauben, damit |
|---|---|---|
| GPTBot | OpenAI | Künftige Modelle auf Ihren öffentlichen Seiten trainieren können |
| ChatGPT-User | OpenAI | ChatGPT die Seite während einer Live-Frage abrufen kann |
| OAI-SearchBot | OpenAI | OpenAI Search die Seite für eine Antwort abrufen kann |
| ClaudeBot | Anthropic | Künftige Claude-Modelle auf Ihren öffentlichen Seiten trainieren können |
| PerplexityBot | Perplexity | Perplexity die Seite abrufen kann (als Live-Fetch behandeln, bis Sie eine getrennte Richtlinie haben) |
| Googlebot | Search und AI Overviews die Seite einbeziehen können |
Identität prüfen Sie wie bei Googlebot: veröffentlichte IP-Bereiche und Reverse DNS. Erlauben Sie diese Quellen. User-Agent-Strings allein lassen sich leicht kopieren, deshalb gehört die Allowlist auf verifizierte Bereiche.
Welche Bots sollten erlaubt sein, und was ermöglicht jeder einzelne?
Setzen Sie die Regeln auf dem Production-Host, an zwei Stellen, die übereinstimmen müssen: robots.txt und Edge (Cloudflare, AWS WAF, CDN).
In robots.txt erlauben Sie die Agenten aus der Tabelle namentlich. Staging liefert oft mit Disallow: /. Kopieren Sie diese Datei nach Production, und jeder gelistete Bot überspringt die Site. Ihr Browser lädt die Seite trotzdem, weil er robots.txt nicht liest. Prüfen Sie die Live-URL:
curl -s "https://www.example.com/robots.txt"Sie wollen explizites Allow (oder das Fehlen von Disallow) für GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot und PerplexityBot, jeweils für die Pfade, die zitiert werden sollen. Eine Production-Datei, die die Jobs benennt, sieht so aus:
User-agent: GPTBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /GPTBot auf diesen Pfaden ermöglicht, dass künftige Modelle auf den Seiten trainieren. ChatGPT-User auf denselben Pfaden ermöglicht, dass eine Live-Frage sie abruft. Zwei User-agent-Gruppen, zwei Ergebnisse. Begrenzen Sie Allow auf die öffentlichen Bereiche, die zitiert werden sollen, wenn das enger ist als der gesamte Baum.
Eine dritte Steuerung sitzt auf der Seite selbst: meta name="robots" und der Header X-Robots-Tag. Erlauben Sie index, follow auf den URLs, die zitiert werden sollen, damit Google Search die Seite für Snippets und für AI Overviews und AI Mode berücksichtigen kann. Diese Google-Oberflächen laufen weiterhin über den Google-Index. Googlebot zu erlauben hält eine Seite in diesem Index. ChatGPT-User zu erlauben ist eine separate Aufgabe, für einen separaten Agenten.
Am Edge fügen Sie die veröffentlichten IP-Bereiche dieser Betreiber zur Allowlist hinzu, damit verifizierte Fetcher HTTP 200 erhalten. Akamais Zahlen von 2025 setzen Bots auf 51 % des Internet-Traffics, AI-Crawler auf etwa ein Fünftel des gesamten Traffics. Deshalb gruppieren Standard-WAF-Pakete unbekannte Clients mit Scrapern. Missbrauchskontrollen für nicht verifizierten Traffic behalten Sie. Den benannten, verifizierten AI-Fetchern geben Sie einen klaren Durchlass.
Marketing bearbeitet die CMS-Datei. Netzwerktechnik betreibt die WAF. Beide müssen dieselben Agenten erlauben. Eine Drupal-robots.txt, die ChatGPT-User erlaubt, hilft erst, wenn der Proxy davor für diesen Client ebenfalls 200 zurückgibt.
Lässt CDN oder Bot-Fight-Schicht diese Bots noch durch?
Der öffentliche Hostname ist das, was der Fetcher trifft. Das ist CDN, WAF und Bot-Fight-Produkt, dann Cache, dann Origin. Origin kann GPTBot in Drupal erlauben, während der Edge weiterhin eine Challenge, 403 oder eine umgeschriebene robots.txt ausliefert. Prüfen Sie den Edge als eigene Schicht.
Cloudflare ist der Fall, den wir am häufigsten sehen, weil es jetzt AI-Crawler-Steuerungen in jedem Plan liefert. Die aktuellen Produktnamen und Defaults stehen in Cloudflares AI bot policy docs und managed robots.txt docs.
Block AI bots / AI bot policies. Seit 1. Juli 2025 fragt Cloudflare jede neue Domain, ob AI-Crawler auf die Site zugreifen dürfen, und die konservative Wahl ist deny. Im Dashboard finden Sie das unter Security Settings als Configure AI bot policies (der ältere Schalter Block AI bots wird am 15. September 2026 abgeschaltet). Cloudflare teilt Traffic in Search, Agent und Training. Erlauben Sie Training, damit GPTBot und ClaudeBot öffentliche Seiten für künftige Modelle crawlen können. Erlauben Sie Agent, damit ein Live-Chat-Fetcher (ChatGPT-User und ähnliche) die Seite während einer Frage öffnen kann. Erlauben Sie Search, damit Abruf-Crawler für Antworten indexieren können. Ab 15. September 2026 verweigern neue Cloudflare-Domains Training und Agent auf Seiten mit Anzeigen und lassen Search erlaubt, sofern Sie das nicht ändern.
Managed robots.txt. Schalten Sie diese Einstellung ein, und Cloudflare stellt seine eigene Datei vor Ihre. Der verwaltete Block enthält Disallow: / für GPTBot, ClaudeBot, Google-Extended, Bytespider, CCBot und andere, plus ein Content-Signal ai-train=no. Ihr Drupal-Allow: / für GPTBot liegt dann unter diesem Prepend, und viele Crawler beachten die erste passende Gruppe. Curlen Sie die öffentliche https://www.example.com/robots.txt. Sehen Sie # BEGIN Cloudflare Managed content und User-agent: GPTBot / Disallow: /, sagt der Edge Training-Crawlern, die Site zu überspringen. Schalten Sie die verwaltete Datei aus oder ersetzen Sie diese Gruppen durch Allow, wenn Training-Crawl Teil der Richtlinie ist.
Bot Fight Mode und Super Bot Fight Mode. Diese Produkte stellen JavaScript-Challenges für Traffic aus, der automatisiert wirkt. Answer-Time-Fetcher führen kein JavaScript aus, deshalb ist eine Challenge-Seite nicht Ihr Artikel. Bot Fight Mode lässt sich nicht mit einer WAF-Allow-Regel überspringen. Ist er an, schalten Sie ihn für dieses Ziel aus, oder wechseln Sie zu Super Bot Fight Mode und überspringen Sie dort verifizierte AI-Bots. I'm Under Attack gehört in dieselbe Kategorie site-weiter Challenges.
Custom WAF und Bot-Score-Regeln. Eine Regel, die jeden Client mit Bot-Score unter 30 herausfordert, ist ein häufiger Default nach einem Security-Hardening-Ticket. Verifizierte GPTBot- und ChatGPT-User-Treffer sollten Cloudflares Verified-Bot-Liste passieren. Nicht verifizierte Doppelgänger nicht. Die Score-Regel behalten Sie für unbekannte Scraper. Fügen Sie ein explizites Allow (oder Skip) für die benannten, verifizierten AI-Agenten hinzu, damit Training-Crawls und Live-Fetches 200 erhalten.
Cache. Der Cache „blockiert“ selten allein. Die WAF davor tut es. Zwei Cache-Fälle zählen trotzdem. Eine gecachte Cookie-Wall oder leere JS-Hülle ist das, was jeder spätere Fetch, Bot oder Mensch, erhält, bis Sie purgen. Ein gecachtes 403 oder eine Challenge für diese URL scheitert weiter, nachdem Sie die Regel korrigiert haben, bis zum Purge. Nach einer Bot-Policy-Änderung purgen Sie das HTML der URLs, die zitiert werden sollen, und curlen erneut.
Dasselbe Muster gibt es bei AWS WAF Bot Control, Akamai Bot Manager und Fastlys Bot-Produkten: ein verwaltetes „AI / scraper“-Paket vor Origin. Lesen Sie dieses Paket wie Cloudflares AI bot policies. Erlauben Sie die verifizierten Training-Crawler und Live-Fetcher, die Sie in robots.txt benannt haben.
Wie viel davon ist schon technisches SEO?
Fast alles. Crawlability, Indexierbarkeit, HTML in der ersten Antwort, Sitemaps, Canonicals, hreflang, Geschwindigkeit und schema.org, das zur sichtbaren Seite passt: das ist dieselbe Arbeit, die ein Search-Team bereits für Google leistet.
Googles eigene Hinweise für AI Overviews und AI Mode sind dazu explizit. Eine Seite, die indexiert ist und für ein Snippet in Google Search infrage kommt, kann als unterstützender Link in diesen Features erscheinen. Es gibt keine zusätzliche technische Hürde über Search hinaus. Google listet dieselben Praktiken: Crawling in robots.txt und am CDN erlauben, wichtigen Content als Text halten und Structured Data an das anpassen, was der Besucher sieht.
ChatGPT, Claude und Perplexity nutzen dieselbe lesbare Seite. Sie fügen drei zusätzliche Anforderungen auf einer gesunden SEO-Basis hinzu.
Benannte Agenten. Googlebot zu erlauben erlaubt nicht GPTBot oder ChatGPT-User. Jeder Betreiber liefert seinen eigenen User Agent. Sie schalten jeden für das Ergebnis in der Tabelle oben frei.
Ein Live-Fetch mit kurzer Uhr. Googlebot kann wiederkommen. Ein Answer-Time-Fetcher sitzt in einem Chat. HTML, das in den ersten Sekunden ankommt, ist HTML, das in dieser Runde zitiert werden kann.
Dichtere, typisierte Fakten. Ranking belohnt weiter eine klare Seite. Ein Einkäufer-Prompt ist eine Liste von Bedingungen: 400 mm, 12 V, IP68, food-grade, Lieferzeit unter zwei Wochen. Eine Maschine vergleicht diese Werte. Sie bevorzugt eine Spec-Tabelle und JSON-LD gegenüber einem Absatz, der sagt, das Produkt „decke eine breite Größenauswahl ab“.
Gutes SEO ist also die Basisschicht. Die Zusatzarbeit ist Zugang für die neuen Bots und Daten, die eine Maschine vergleichen kann, ohne zu schließen. 10 SEO-Funktionen, die ein modernes CMS haben sollte deckt die Crawlability-Seite ab; dieser Artikel die AI-Agenten und typisierten Daten, die diese Crawler brauchen, sobald sie ankommen.
| Was technisches SEO schon ermöglicht | Was Sie extra für AI-Fetcher freischalten |
|---|---|
| Googlebot kann crawlen und die Seite indexiert werden | Benannte AI-Agenten auf denselben öffentlichen Pfaden, plus CDN/WAF-Richtlinie, die diese Agenten erlaubt (Cloudflares AI-Bot-Defaults folgen nicht Googlebot) |
| Wichtiger Copy in HTML, nicht nur in einer Client-App | Dasselbe HTML, weil die meisten Answer-Time-Fetcher kein JavaScript ausführen |
| Schneller TTFB für Crawl-Budget und Core Web Vitals | Schneller TTFB, damit ein Live-Fetch endet, während der Einkäufer noch im Chat ist |
| Sitemap, Self-Canonical, hreflang | Dieselben Signale, damit der Fetcher auf einer aktuellen URL in der richtigen Sprache landet |
| Schema.org JSON-LD für Rich Results | Dasselbe JSON-LD, genutzt als typisierte Fakten (diese Zahl ist ein Preis, dies ist eine Abmessung) |
| Content, der eine Anfrage beantwortet | Specs, Preise, Grenzen und Branchen als Werte, die ein Prompt abgleichen kann |
Wie liefern Sie eine nutzbare Antwort rechtzeitig?
Ein Live-Fetch läuft, während der Einkäufer wartet. Zielen Sie auf HTTP 200 und HTML in den ersten Sekunden, auf den URLs, die zitiert werden sollen.
Das bedeutet:
- 200 für verifizierte AI-Fetcher auf öffentlichen Seiten.
- Rate Limits, die einen kurzen Burst von Answer-Time-Fetches durchlassen. Die Live-Agenten oben sollten 200 erreichen, nicht 429.
- Der Artikeltext in diesem 200. Eine Cookie-Wall oder ein Länder-Picker, der die Spec hinter einem Klick hält, lässt den Fetcher mit der Hülle zurück. Setzen Sie die zitierbaren Fakten (Abmessungen, Preise, Grenzen, Branche) in das HTML, das mit der Statuszeile ankommt.
- Time to first byte in dem Bereich, den Sie ohnehin für technisches SEO wollen. Bei einem Live-Fetch ist nutzbares HTML rechtzeitig das, was den Assistenten die Seite zitieren lässt.
Eine Sitemap sagt Crawlern, welche URLs zu diesem Set gehören. Listen Sie die öffentlichen Seiten, die zitiert werden sollen, halten Sie lastmod an echten Änderungen ausgerichtet und verweisen Sie in robots.txt auf die Sitemap. Canonicals wählen eine URL, wenn mehrere auf dasselbe Produkt zeigen. Hreflang wählt die Sprache. Diese drei sind SEO-Grundinstallation. Sie entscheiden auch, welches Dokument ein Live-Fetch öffnet, wenn ein Einkäufer auf Deutsch fragt und Sie in drei Sprachen veröffentlichen.
Wie bringen Sie den Text in die erste HTML-Antwort?
Answer-Time-Fetcher lesen das HTML, das sie herunterladen. Die meisten führen kein JavaScript aus. Specs, Preise und Grenzen gehören deshalb in dieses erste Dokument.
Server-rendern Sie die Seiten, über die ein Einkäufer fragen würde. Das ankommende HTML soll bereits Produktdaten, Sortiment, Grenzen und Branchentext enthalten.
Ist die öffentliche Site eine JavaScript-Anwendung, halten Sie eine servergerenderte Route (oder einen vorgerenderten Snapshot) für dieselben Fakten auf einer canonical URL. Text in Bildern und SEO funktioniert gleich: eine Abmessung als Text in HTML ist das, was ein Fetcher zitieren kann. Ein PDF unter „Datenblatt herunterladen“ folgt demselben Muster. Veröffentlichen Sie die Zahlen auf der Seite, und bieten Sie die Datei als Kopie für Leser an, die sie wollen.
Eine Spec-Tabelle in HTML ist das Format, das weiterreist. Ein Attribut pro Zeile, eine Einheit, ein Wert. Dieselben Zahlen können dann JSON-LD speisen. Ein Satz, der einen Bereich in Adjektiven versteckt, erfüllt keine der beiden Aufgaben.
Was sollten Sie sonst noch freischalten, damit eine Maschine die Daten nutzen kann?
Sobald die Bots erlaubt sind und das HTML die Fakten hält, schalten Sie den Rest der Maschinenschicht frei. Jeder Punkt unten ist ein Enablement: tun Sie das, und ein Fetcher kann die Seite zuverlässiger nutzen.
| Freischalten | Damit |
|---|---|
Allow für benannte AI-Agenten in robots.txt | Training-Crawls und Live-Fetches die öffentlichen Pfade anfragen dürfen |
| CDN / WAF AI-Bot-Policy auf Allow für Search, Agent und Training | Der Proxy vor Origin (Cloudflare, AWS WAF, Akamai) 200 für diese Jobs zurückgibt |
| Bot Fight Mode aus, oder Super Bot Fight Mode mit Skip für verifizierte AI-Bots | Fetcher HTML statt einer JavaScript-Challenge erhalten |
Managed robots.txt aus, oder umgeschrieben, sodass GPTBot und ClaudeBot Allow haben | Die Datei, die der Crawler wirklich lädt, zur CMS-Datei passt |
| WAF / CDN-Allowlist für veröffentlichte IP-Bereiche | Verifizierte Fetcher 200 statt einer Standard-Challenge erhalten |
index, follow auf öffentlichen URLs (meta robots und X-Robots-Tag) | Google die Seite in Search behalten kann, dem Pool für AI Overviews |
XML-Sitemap dieser URLs, mit wahrheitsgemäßem lastmod | Crawler die Seiten finden, die zitiert werden sollen |
| Self-referencing Canonical auf der öffentlichen URL | Doppelte Pfade auf ein Dokument zusammenfallen |
hreflang auf übersetzten Seiten | Ein Fetch in einer Sprache auf dieser Sprache landet |
| Specs als HTML-Text und Tabellen | Ein Fetcher Abmessung, Preis, Zertifikat grep-en kann |
| JSON-LD aus denselben Feldern generiert | Dieselben Werte typisiert ankommen: Offer, height, material |
| HTTPS und stabile öffentliche URL | Der Assistent dieselbe Ressource zweimal abrufen und dieselbe Seite erhalten kann |
llms.txt ist optional. Es ist eine kurze Karte von URLs, die Sie bereits lesbar gemacht haben. Veröffentlichen Sie es, wenn diese URLs existieren und Sie die Datei aktuell halten können. Es gewährt keinen Zugang, rendert kein JavaScript, und kein großer Anbieter hat es zum Ranking-Faktor gemacht. Behandeln Sie es als Zeiger, nachdem die Tabelle oben steht.
Die Datenhürde liegt über gewöhnlichem SEO-Copy. Eine Seite kann für „Industriepumpe“ auf Adjektiven ranken und trotzdem einen Einkäufer-Prompt verfehlen, der 400 mm, 12 V und Salzwasser verlangt. Schalten Sie typisierte Felder frei, damit derselbe Wert in Tabelle, Absatz und JSON-LD erscheint. Eine Bearbeitung aktualisiert alle drei.
Was bringt JSON-LD, sobald die Seite lesbar ist?
JSON-LD ist schema.org in einem <script type="application/ld+json">-Tag. Es sind dieselben Structured Data, die Sie bereits für Google Search hinzufügen. Google empfiehlt JSON-LD als am einfachsten wartbares Format und verlangt, dass das Markup beschreibt, was auf der Seite sichtbar ist.
Auf Googles AI-Oberflächen ist der Effekt als Teil von Search dokumentiert: Structured Data, das zur Seite passt, hilft Google, das Dokument zu interpretieren. Es gibt kein separates „AI schema“, das Sie erfinden müssten.
Bei einem rohen ChatGPT- oder Claude-Fetch ist die Evidenz dünner. Diese Fetcher lesen HTML. JSON-LD ist eine typisierte Kopie derselben Fakten neben diesem HTML. Wir haben keinen öffentlichen, wiederholbaren Test gesehen, der beweist, dass JSON-LD allein ChatGPT-Zitate verschiebt. Tun Sie es trotzdem, weil es dieselbe Arbeit wie SEO ist und weil ein typisiertes height: 400 mm das Raten entfernt, das ein Satz noch offen lässt.
Die Typen, die sich auf einer B2B-Site lohnen, sobald die sichtbare Seite die Fakten bereits nennt:
- Organization mit
sameAs(LinkedIn, Wikipedia, Unternehmensprofile), damit das Modell die Seite einer Firma zuordnen kann. - Product mit Offer (Preis oder Preisspanne, Währung, Verfügbarkeit), damit eine Kostenfrage einen Wert hat, den man heben kann.
- Service auf Service-Seiten, mit dem Gebiet oder der Branche, die Sie wirklich bedienen.
- FAQPage nur für Fragen, die als sichtbares Q&A auf dieser URL stehen.
- Article mit
dateModifiedauf redaktionellen Seiten, damit Aktualität ein Feld ist, kein Raten. - BreadcrumbList, damit Hierarchie explizit ist.
Markup, das einen vagen Absatz wiederholt, ist Dekoration. Markup, das mit der sichtbaren Seite widerspricht, ist schlimmer: Google behandelt Mismatch als Spam-Signal, und ein Live-Fetcher, der beide Kopien liest, hält jetzt zwei Zahlen. Generieren Sie JSON-LD aus Drupal-Feldern, damit eine Redakteursänderung HTML und Script gemeinsam aktualisiert. Handgeschriebenes JSON neben einem Body-Feld driftet innerhalb eines Quartals.
Ein minimales Product-Fragment, aus Feldern gespeist, sieht so aus:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example bilge pump",
"brand": { "@type": "Organization", "name": "Example GmbH" },
"additionalProperty": [
{ "@type": "PropertyValue", "name": "height", "value": "380", "unitCode": "MMT" },
{ "@type": "PropertyValue", "name": "voltage", "value": "12", "unitText": "V" }
],
"offers": {
"@type": "Offer",
"priceCurrency": "EUR",
"price": "240",
"availability": "https://schema.org/InStock"
}
}Diese Properties helfen nur, wenn 380 mm und 12 V auch in der HTML-Tabelle stehen. JSON-LD labelt die Daten. Es erzeugt sie nicht. Der Drupal-Artikel zur Generierung aus Schema.org und Metadaten in Drupal ist der Implementierungspfad, den wir nutzen.
Wie prüfen Sie das in Production?
Nutzen Sie eine Live-URL, die zitiert werden soll, keinen lokalen Build.
Status für einen Live-Fetcher
curl -sI -A "ChatGPT-User" "https://www.example.com/your-page"HTTP 200 bedeutet, ChatGPT kann diese URL während einer Frage abrufen. Wiederholen Sie mit -A "GPTBot", um zu bestätigen, dass der Training-Crawler auf demselben Pfad erlaubt ist. Lesen Sie X-Robots-Tag in derselben Antwort: Sie wollen die öffentliche Seite indexierbar.
CDN / Cloudflare vor Origin
curl -sI -A "GPTBot" "https://www.example.com/your-page"Schauen Sie auf Statuszeile und Header. cf-ray bedeutet, Cloudflare hat geantwortet. cf-mitigated: challenge oder 403/1020 bedeutet, der Edge hat den Training-Crawler gestoppt. Wiederholen Sie mit -A "ChatGPT-User". Dann:
curl -s -A "GPTBot" "https://www.example.com/your-page" | grep -iE 'just a moment|cf-challenge|attention required|blocked'Ein Treffer ist eine Challenge-Seite, nicht Ihr Artikel. Im Cloudflare-Dashboard öffnen Sie Security Analytics (Events) für dieses Fenster und filtern auf Bot Fight Mode, Block AI bots und Custom WAF. Origin-Access-Logs ohne GPTBot, während die öffentliche Site auf Cloudflare läuft, bedeuten meist, der Edge hat geantwortet und Origin sah die Anfrage nie.
robots.txt in Production (die Datei, die der Bot wirklich bekommt)
curl -s "https://www.example.com/robots.txt"Bestätigen Sie Allow (oder kein Disallow) für jeden Agenten aus der Tabelle auf den Pfaden, die öffentlich sein sollen. Bestätigen Sie, dass die Sitemap-URL gelistet ist. Beginnt die Antwort mit # BEGIN Cloudflare Managed content und listet Disallow: / für GPTBot oder ClaudeBot, steht die verwaltete Datei vor Ihrer CMS-Datei. Korrigieren Sie das am CDN, und curlen Sie erneut. Vergleichen Sie mit der Datei auf Origin, wenn Sie sie erreichen können: beide müssen übereinstimmen.
Fakten im HTML
curl -s -A "ChatGPT-User" "https://www.example.com/your-page" | grep -i "400 mm"Nutzen Sie einen String, der im Content existiert: Abmessung, Preis, Zertifikatsnummer. Ein Treffer bedeutet, der Live-Fetcher kann diesen Fakt lesen. Öffnen Sie dieselbe URL dann mit deaktiviertem JavaScript und bestätigen Sie, dass eine Person dieselben Zahlen sieht.
JSON-LD vorhanden und konsistent
curl -s -A "ChatGPT-User" "https://www.example.com/your-page" | grep -F 'application/ld+json'Suchen Sie im selben Download nach derselben Abmessung oder demselben Preis im JSON. Ein typisierter Wert, der zur Tabelle passt, ist der Punkt. Ein Script-Tag mit anderer Zahl ist ein Bug, den Sie beheben, bevor Sie weitere Typen hinzufügen.
Sitemap und Canonical
curl -s "https://www.example.com/sitemap.xml" | grep "/your-page"
curl -s -A "ChatGPT-User" "https://www.example.com/your-page" | grep -i 'rel="canonical"'Die Seite, die zitiert werden soll, sollte in der Sitemap stehen. Das Canonical soll auf dieselbe öffentliche URL zeigen.
Logs
Durchsuchen Sie eine Woche Access-Logs nach ChatGPT-User, GPTBot, ClaudeBot, PerplexityBot und OAI-SearchBot. 200er auf den öffentlichen Seiten, die Sie interessieren, bedeuten, diese Bots kommen durch. Gleichen Sie Treffer mit veröffentlichten IP-Bereichen ab, mit wem auch immer das Netzwerk betreibt.
Was konfigurieren Sie zuerst?
- Zugang.
robots.txtplus CDN/WAF AI-Bot-Policy, Bot Fight Mode und Allowlists für verifizierte Bereiche, pro Agent, damit Training-Crawls und Live-Fetches die Site erreichen. Halten Sieindex, followauf den öffentlichen URLs. Purgen Sie HTML für diese URLs, nachdem Sie eine Regel geändert haben. - HTML. Specs, Preise und Grenzen in der ersten Antwort, als Text und Tabellen.
- Geschwindigkeit. 200 schnell genug, damit ein Live-Fetch endet.
- URL-Signale. Sitemap, Self-Canonical, hreflang, damit der Fetch ein aktuelles Dokument öffnet.
- JSON-LD. Schema aus denselben Feldern generiert, passend zur sichtbaren Seite.
Zugang zuerst, weil das GPTBot für künftige Modelle speist und ChatGPT-User während einer Frage abrufen lässt. JSON-LD zuletzt unter diesen Punkten, weil es Daten labelt, die bereits existieren. Ein Marketing-Verantwortlicher kann die Befehle oben ausführen, Statuszeile, robots-Snippet, Screenshot ohne JavaScript und JSON-LD-grep anhängen und das an wer auch immer Edge und Templates betreibt übergeben.
So richten wir das in Drupal ein
Eine Standard-Drupal-Seite ist HTML in der ersten Antwort. Felder, Views und Layout rendern serverseitig, das ist das Dokument, das ein Live-Fetcher lesen kann. Die Module unten labeln dieses Dokument, listen es und sagen benannten Bots, dass sie es abrufen dürfen. Fügen Sie ein JavaScript-Frontend hinzu, halten Sie eine servergerenderte Route mit denselben Fakten. Headless Drupal kann Daten als HTML für Menschen und Fetcher und als JSON:API für die Anwendung bereitstellen. Beides kann existieren. Die öffentliche URL, die zitiert werden soll, braucht das HTML.
Felder, dann Seiten
Wir modellieren Spezifikationen als Felder, nicht als Body-Fließtext. Höhe, Spannung, Preis, Branche und Zertifikat haben jeweils ein Feld. Produktseite, Vergleichstabelle und JSON-LD lesen alle diese Felder. Ein Redakteur ändert 380 mm einmal. Jede Oberfläche folgt. Views und Taxonomie bauen dann Branchen- und Vergleichsseiten aus denselben Entitäten, sodass die elfte Branchenseite Konfiguration statt Einzelartikel ist.
Rabbit Hole ist die andere Hälfte dieses Modells. Eine Spec-Entität, die nur eine Tabelle speist, sollte keine öffentliche URL sein. Leiten Sie diese Canonicals auf die Produktseite, damit ein Fetcher auf einem Dokument landet.
robots.txt aus dem CMS
Core liefert eine statische robots.txt im Docroot. Diese Datei ist auf jeder Site in einem Multisite gleich, und ein Deploy kann eine Handbearbeitung überschreiben. Für eine Richtlinie, die Sie pro Umgebung ändern können, nutzen wir RobotsTxt (drupal/robotstxt). Es baut die Datei in der UI und speichert sie als Config.
Benennen oder entfernen Sie zuerst die Core-Datei. Sonst liefert Drupal weiter die statische Kopie, und das Modul gewinnt nie. Fügen Sie dann die User-agent-Gruppen von weiter oben ein: Allow: / für GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot und PerplexityBot auf den öffentlichen Pfaden. Verweisen Sie Sitemap: auf den Simple XML Sitemap-Index. Exportieren Sie die Config. Auf Staging halten Sie Disallow: / (oder ein Config-Split-Overlay), damit Training-Crawler den Staging-Host nicht als Production behandeln.
Curlen Sie danach den öffentlichen Hostnamen. Cloudflare managed robots.txt stellt sein eigenes Disallow für GPTBot vor diese Datei. Die CMS-Änderung zählt erst, wenn die Edge-Datei passt.
Metatag: canonical, robots, title
Metatag verwaltet die Signals auf Seitenebene. Setzen Sie Defaults pro Bundle mit Tokens, nicht pro Node von Hand.
- Canonical: der absolute Alias dieser Entität, damit
?page=und/node/123auf eine URL zusammenfallen. - Robots:
index, followauf den Bundles, die zitiert werden sollen.noindexauf Danke-Seiten, Such-Facetten und unveröffentlichten Layouts. - Title und Description: Tokens aus denselben Feldern wie H1 und Eröffnungsabsatz, damit Fetch und Snippet übereinstimmen.
Fügen Sie das Metatag-Feld auf einem Bundle nur hinzu, wo ein Redakteur einen Default überschreiben muss. Ein Feld auf jedem Node ist der Weg zu 300 Seiten mit leeren Overrides. Öffentliche Landing-Pages aus Views bekommen Metatag Views, damit auch diese URLs ein Canonical haben.
JSON-LD aus denselben Feldern
Schema.org Metatag erweitert Metatag und druckt <script type="application/ld+json"> im Head. Das ist der Pfad, den wir auf bestehenden Sites nutzen. Ordnen Sie Tokens pro Bundle Schema-Properties zu: Product name aus dem Titel, additionalProperty aus Höhe und Spannung, Offer price und priceCurrency aus dem Preisfeld, Organization sameAs aus einer site-weiten Social-URL-Liste, FAQPage nur auf Bundles mit sichtbarem Q&A, Article dateModified aus [node:changed:html_datetime].
Das Mapping liegt in Metatag-Defaults. Ein Redakteur fügt kein JSON ein. Fehlt eine Property im Modul, ist ein kleines Custom-Metatag-Tag in einem Custom-Modul günstiger als ein Script im Theme, das driftet.
Schema.org Blueprints (schemadotorg) ist die andere Richtung: Es baut Content Types und Felder aus schema.org-Typen und emittiert JSON-LD und sauberes JSON:API. Nutzen Sie es auf einem Greenfield-Katalog. Fahren Sie nicht beide Mapping-Systeme auf demselben Bundle.
So oder so soll Schema.org-Markup aus Content generiert werden, nicht per Hand in ein WYSIWYG eingefügt. Ein handgeschriebenes JSON-LD-Block ist die Version, die nach der nächsten Preisänderung mit der Tabelle widerspricht.
Sitemap
Simple XML Sitemap (4.x auf Drupal 10.3/11) ist der Generator, den wir installieren. Schließen Sie die Bundles ein, die zitiert werden sollen, den Rest aus. Es schreibt hreflang-Alternates für übersetzte Entitäten, kann Bild-URLs hinzufügen und einen Sitemap-Index bei großem Baum ausgeben. lastmod soll der Entitäts-Changed-Zeit folgen, nicht einem nächtlichen Rebuild jeder URL.
Listen Sie keine noindex-Bundles. Eine Sitemap, die URLs bewirbt, die Metatag den Bots sagt zu überspringen, ist ein gemischtes Signal. Nach einer Veröffentlichung bestätigen Sie, dass die öffentliche /sitemap.xml den Alias enthält, und prüfen, ob Cloudflare keinen gecachten leeren Index ausliefert.
XML Sitemap (das ältere Projekt) existiert noch. Auf einem Neubau ist Simple XML Sitemap das mit aktuellem Multilingual- und IndexNow-Support.
Aliases, Redirects und Breadcrumbs
Pathauto gibt jedem Bundle ein stabiles Muster (/products/[node:title], /industries/[term:name]). Redirect 301-leitet dann /node/123 und alte Aliase auf dieses Muster und protokolliert Alias-Änderungen, damit eine zitierte URL weiter auflöst.
Easy Breadcrumb kann BreadcrumbList JSON-LD aus derselben Spur emittieren, die der Besucher sieht. Schalten Sie das ein, damit Hierarchie im Script zur Hierarchie im Header passt. Ein zweites, handgebautes Breadcrumb in schema_metatag auf derselben Seite ist ein Duplikat, das Sie vermeiden sollten.
Sprachen
Core Content Translation plus Sprachpräfixe erzeugen auf vielen Builds bereits hreflang. Ein mehrsprachiger Katalog braucht trotzdem einen Fakt pro Sprache: übersetzte Felder, kein maschineller Dump der Quellsprache. Simple XML Sitemaps hreflang-Sitemap ist, wie Crawler das Set finden. Canonical auf einer Übersetzung zeigt auf diese Übersetzung, nicht auf die Quellsprache.
Cache Tags und CDN
Drupal Cache Tags wissen bereits, welche Seite sich geändert hat. Purge plus ein Purger (Cloudflare, Varnish, Fastly oder generisches HTTP) entfernt dieses Objekt am Edge. Der nächste AI-Fetch erhält das neue HTML und das neue JSON-LD. Der Rest des Caches bleibt.
Gleichen Sie nach jeder Bot-Policy-Änderung drei Dinge ab: Drupal robots.txt, Cloudflare AI bot policies / managed robots file und Purge des HTML, das Sie gerade mit curl geöffnet haben. Origin-only-Tests verpassen das prepended Disallow.
Optional: llms.txt
llms.txt stellt /llms.txt aus Drupal-Config und Content bereit, mit Cache Tags, damit eine Veröffentlichung die Datei aktualisiert. Generieren Sie es aus denselben canonical URLs, die Simple XML Sitemap bereits listet. Es ist ein Zeiger, kein Ersatz für Allow-Regeln oder HTML.
Das ist der Stack, der GPTBot, ChatGPT-User und den Rest der Tabelle Seiten erreichen lässt, die die Fakten bereits in HTML halten und in JSON-LD labeln.
Häufige Fragen
Führen AI-Crawler JavaScript aus?
Answer-Time-Fetcher lesen meist das heruntergeladene HTML und stoppen. Setzen Sie die Fakten in diese erste Antwort, damit sie sie nutzen können.
Welche OpenAI-Bots sollten erlaubt sein?
GPTBot, damit künftige Modelle auf Ihren öffentlichen Seiten trainieren können. ChatGPT-User, damit ChatGPT während einer Live-Frage abrufen kann. OAI-SearchBot, damit OpenAI Search für eine Antwort abrufen kann. Drei Agenten, drei Jobs. Erlauben Sie jeden für das Ergebnis, das Sie wollen.
Blockiert Cloudflare AI-Crawler standardmäßig?
Bei neuen Domains fragt Cloudflare seit 1. Juli 2025 nach Ihrer Wahl, und die konservative Option ist deny. Eine verwaltete robots.txt kann auch Disallow für GPTBot und ClaudeBot vor Ihrer CMS-Datei prependen. Bot Fight Mode kann dieselben Clients herausfordern. Curlen Sie den öffentlichen Hostnamen mit -A "GPTBot" und -A "ChatGPT-User", und lesen Sie Security Settings → Configure AI bot policies. Erlauben Sie Training, Agent und Search für die Ergebnisse in der Tabelle oben. Ab 15. September 2026 verweigern neue Domains Training und Agent auf Seiten mit Anzeigen, sofern Sie das nicht ändern.
Bringt GPTBot zu erlauben mich in heutige ChatGPT-Antworten?
Das ist der Training-Pfad. Live-Antworten nutzen ChatGPT-User. Erlauben Sie beide, wenn Sie beide Ergebnisse wollen.
Reicht gutes SEO, damit ChatGPT die Site liest?
Es ist der Großteil der Arbeit. Eine Site, die Googlebot crawlen kann, mit Text in HTML, Sitemap und passendem Schema, ist bereits lesbar. Sie erlauben trotzdem die benannten AI-Agenten (Googlebot-Allow ist eine andere Regel), geben verifizierten Bereichen 200 an der WAF und veröffentlichen Specs als Werte, die ein Prompt abgleichen kann.
Bringt JSON-LD ChatGPT dazu, mich zu empfehlen?
JSON-LD typisiert die Fakten, die bereits auf der Seite stehen. Bei Google ist es Teil von Search, einschließlich AI Overviews. Bei einem rohen ChatGPT-Fetch ist es allein als Zitationshebel unbewiesen. Generieren Sie es aus denselben Feldern wie das HTML, damit beide Kopien übereinstimmen. Das ist die nützliche Version.
Beeinflusst Antwortzeit Zitate?
Bei einem Live-Fetch ja. HTML, das schnell ankommt, ist HTML, das der Assistent zitieren kann, während der Einkäufer noch im Chat ist.
Sollen wir das auf Ihrem Stack prüfen?
Senden Sie eine Production-URL. Wir prüfen, welche Bots an Origin und am CDN erlaubt sind, ob Bot Fight Mode oder eine verwaltete robots.txt im Weg steht, ob das erste HTML die Fakten hält, ob JSON-LD zu diesen Fakten passt und ob der Live-Fetch rechtzeitig zurückkommt. Das machen wir auf Drupal: robots und Edge-Regeln, servergerenderte Seiten, Felder, die Tabellen und Schema speisen, Cache Tags hinter einem CDN. Besuchen Sie unsere Drupal-Agentur, oder schreiben Sie uns, und wir führen die Fetches gemeinsam mit Ihnen aus.