ai newsFr., 23. Okt.
EilmeldungAnalyse von 471 Claude-Code-Sessions: Wohin sechs Milliarden Tokens flossen

Warum ChatGPT kleine Websites ueberspringt: Ein Audit zeigt Buerokratie der KI-Suche

Eine kleine statische Website zu tuerkischen Rechtsthemen wird von Google problemlos indexiert, taucht in ChatGPT-Antworten mit Websuche aber nie als Quelle auf. Ein Audit zeigt, welche faktischen Huersten Seiten aus der KI-Suche ausschliessen koennen.

dev.toFreitag 21:47 · 23.10.DE5 Min. Lesezeit
Bild: dev.to

Ich betreibe eine kleine tuerkische Website mit Rechtsinformationen. Acht Seiten, statisches HTML auf Cloudflare Pages, erzeugt von einem kleinen Python-Skript. Google indexiert die Seite. Als ich ChatGPT mit aktivierter Suche zu den Themen fragte, die diese Seiten abdecken, zitierte es Regierungsportale, ein paar Blogs von Kanzleien und einen Wettbewerber. Niemals meine Seiten.

Ich wollte wissen, ob das ein technisches Problem war, das ich beheben konnte, oder einfach der normale Zustand einer neuen Domain ohne Reputation. Also schrieb ich ein Skript, das die Dinge prueft, die fuer KI-Suchsysteme offenbar wichtig sind, fuehrte es gegen die Live-Website aus, behob die gemeldeten Probleme und mass erneut. Das ist dabei herausgekommen, einschliesslich des Teils, in dem ich immer noch kein Ergebnis habe.

Klassische SEO-Tools decken Titel und Meta-Beschreibungen gut ab. Die KI-spezifischen Aspekte pruefen sie selten zusammen, deshalb habe ich die Pruefungen in drei Ebenen gruppiert.

Koennen die Crawler hineinkommen? Die ChatGPT-Suche verwendet OAI-SearchBot. Das ist ein anderer Bot als GPTBot, der fuer das Training da ist. Man kann GPTBot blockieren und trotzdem in der ChatGPT-Suche erscheinen, aber wenn OAI-SearchBot blockiert ist, erscheint man ueberhaupt nicht. Dieselbe Aufteilung gibt es bei Perplexity und Claude. Deshalb parst das Skript die robots.txt pro User Agent und ruft dann jede Sitemap-URL als Googlebot, Bingbot, OAI-SearchBot, ClaudeBot und PerplexityBot auf, wobei jede Seite als fehlerhaft gilt, die nicht 200 zurueckliefert. Auf Cloudflare ist das wichtig, weil "Block AI bots" und der Bot Fight Mode genau den Bots, die man will, einen 403 zurueckgeben koennen.

Gibt es ueberhaupt etwas Zitierfaehiges? Dieser Teil ist musterbasierter und weicher: Zwischenueberschriften in Fragemform, ein sichtbares "zuletzt aktualisiert"-Datum, Links zu externen Quellen, Zitate oder konkrete Zahlen, interne Links.

Jede Pruefung hat ein Gewicht, und der Score ist der gewichtete Anteil der bestandenen Pruefungen, wobei Warnungen als halbe Punktzahl zaehlen:

def score ( s ): total = sum ( k [ " weight " ] for k in s. checks if k [ " status " ]!= " info " ) got = sum ( k [ " weight " ] * ( 1 if k [ " status " ] == " ok " else 0.5 if k [ " status " ] == " warn " else 0 ) for k in s. checks if k [ " status " ]!= " info " ) return round ( 100 * got / total ) Die Gewichte sind meine Einschaetzung, nichts Gemessenes. Der OAI-SearchBot-Zugang erhaelt das hoechste Gewicht, denn ohne ihn zaehlt alles andere nicht. llms.txt wird ausgewiesen, aber nicht bewertet: Nach allem, was ich an Belegen finden konnte, beeinflusst es Zitationen nicht, und nur ein winziger Anteil des Bot-Traffics ruft es ueberhaupt ab.

Der erste Lauf gegen die Live-Website ergab 80/100. Der Crawl-Zugang war in Ordnung. Die robots.txt erlaubte alles, alle fuenf Bot-User-Agents erhielten 200, die Sitemap hatte lastmod auf jeder URL. Die Verluste lagen alle auf der Inhaltsebene.

Kein sichtbares Datum auf irgendeiner Seite. 0 von 8. Ich hatte dateModified im JSON-LD, aber nichts, was ein Leser sehen konnte. Aktualitaet taucht in Studien zu KI-Zitationen immer wieder auf, und ein Datum, das nur im Markup existiert, ist leicht misstrauisch zu machen.

Zu wenige Frage-Ueberschriften. Die Haelfte der Seiten hatte Ueberschriften wie "Einspruchsverfahren" statt der Frage, die eine Person eintippen wuerde. Wenn ChatGPT antwortet, zerlegt es den Prompt in mehrere Teilanfragen. Eine Ueberschrift, die eine dieser Teilanfragen Wort fuer Wort trifft, mit einer direkten Antwort im ersten Satz darunter, ist ein viel einfacheres Ziel als ein Abschnitt, in den man erst drei Absaetze tief lesen muss.

FAQPage-Schema, das nicht zur Seite passte. Damit hatte ich nicht gerechnet. Eine Seite hatte FAQPage-JSON-LD mit einer Frage, die im sichtbaren Text umformuliert worden war, und einer, die entfernt worden war. Googles Richtlinien verlangen, dass FAQ-Markup den sichtbaren Inhalt widerspiegelt, und eine Unstimmigkeit ist genau die Art von Sache, die dazu fuehrt, dass Markup ignoriert wird. Die Pruefung ist simpel: Jedes Question.name muss nach Whitespace-Normalisierung im Seitentext erscheinen.

for q in faq_questions: if norm ( q ) not in norm ( visible_text ): missing. append ( q ) Keine externen Quellen. Die Seiten erklaerten juristische Verfahren, verlinkten aber nur untereinander. Nichts verwies auf die offizielle Gesetzgebungsdatenbank oder die Ministeriumsseiten, auf denen die Inhalte basierten. Das ist fuer einen Leser merkwuerdig, und es ignoriert auch die einzige Inhaltstaktik, fuer die es Forschung gibt.

Nach dem Deployment erreichte die Live-Website 98/100. Die verbleibenden zwei Punkte betreffen die Zitat- und Statistikpruefung. Ich habe sie absichtlich fehlschlagen lassen. Ich fuege keine Statistik hinzu, die ich nicht verifizieren kann, und das Zitieren von Gesetzestexten auf einer Rechtsseite muss zuerst von einem Anwalt abgesegnet werden.

Ein hoeherer Score bedeutet nicht, dass ChatGPT die Seite zitieren wird. Einiges kann ich nicht umgehen:

Das AI-Crawler-Protokoll von Cloudflare fuer die letzten sieben Tage zeigt 112 Anfragen von KI-relevanten Bots: 87 von Google, 10 von Bing, 7 von Anthropic und 2 von OpenAI. OpenAIs Crawler haben die Seite also erreicht, wenn auch knapp. Bings AI-Performance-Bericht zeigt 0 Zitationen.

Ich habe etwa dreizig Minuten nach dem Deployment einen Basistest in ChatGPT durchgefuehrt. Als ich fragte, was die Seite ist, fand und zitierte es sie. Bei vier Themenfragen zitierte es offizielle Quellen und zwei Wettbewerberseiten, nicht meine. Das ist der Ausgangspunkt. Ich werde dieselben Fragen erneut stellen und in einer Woche vergleichen, und ich rechne damit, dass die Antwort auch dann noch "noch nichts" lauten koennte.

Das nuetzliche Ergebnis bisher ist, dass die behobenen Probleme real und ohne eine eigene Pruefung unsichtbar waren, besonders die FAQ-Unstimmigkeit. Wenn deine Website nicht als Quelle auftaucht, pruefe zuerst den Crawler-Zugang. Wenn das in Ordnung ist, liegt das Problem wahrscheinlich im Seiteninhalt.

Das Skript ist eine einzelne Python-Datei ohne Abhaengigkeiten und macht nur lesende GET-Anfragen, es sei denn, man bittet es, IndexNow anzupingen: https://github.com/bln-design/geo-audit

Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.

Original (Englisch) anzeigen

I run a small Turkish legal-info site. Eight pages, static HTML on Cloudflare Pages, generated by a small Python script. Google indexes it. When I asked ChatGPT with search enabled about the topics those pages cover, it cited government portals, a couple of law firm blogs and a competitor. Never my pages.

I wanted to know whether that was a technical problem I could fix or just the normal state of a new domain with no reputation. So I wrote a script that checks the things AI search systems seem to care about, ran it against the live site, fixed what it flagged and measured again. This is what happened, including the part where I still don't have a result.

Classic SEO tools cover titles and meta descriptions well. They rarely check the AI-specific parts together, so I grouped the checks into three layers.

Can the crawlers get in? ChatGPT search uses OAI-SearchBot. It is a different bot from GPTBot, which is for training. You can block GPTBot and still appear in ChatGPT search, but if OAI-SearchBot is blocked you don't appear at all. The same split exists for Perplexity and Claude. So the script parses robots.txt per user agent, then fetches every sitemap URL as Googlebot, Bingbot, OAI-SearchBot, ClaudeBot and PerplexityBot and fails any page that doesn't return 200. On Cloudflare this matters, because "Block AI bots" and Bot Fight Mode can return 403 to exactly the bots you want.

Is there anything worth citing? This part is pattern-based and softer: question-style subheadings, a visible "last updated" date, links to outside sources, quotes or concrete numbers, internal links.

Each check has a weight and the score is the weighted share of passing checks, with warnings counted as half:

def score ( s ): total = sum ( k [ " weight " ] for k in s. checks if k [ " status " ]!= " info " ) got = sum ( k [ " weight " ] * ( 1 if k [ " status " ] == " ok " else 0.5 if k [ " status " ] == " warn " else 0 ) for k in s. checks if k [ " status " ]!= " info " ) return round ( 100 * got / total ) Enter fullscreen mode Exit fullscreen mode The weights are my judgment, not something measured. OAI-SearchBot access gets the most because without it nothing else counts. llms.txt is reported but not scored: the evidence I could find says it doesn't affect citations and only a tiny share of bot traffic ever requests it.

The first run on the live site gave 80/100. Crawl access was fine. Robots allowed everything, all five bot user agents got 200, the sitemap had lastmod on every URL. The losses were all in the content layer.

No visible date on any page. 0 of 8. I had dateModified in JSON-LD but nothing a reader could see. Freshness keeps coming up in studies of AI citations, and a date that only exists in markup is easy to distrust.

Too few question headings. Half the pages had headings like "Objection process" instead of the question a person would type. When ChatGPT answers, it splits the prompt into several sub-queries. A heading that matches one of those sub-queries word for word, with a direct answer in the first sentence below it, is a much easier target than a section you have to read three paragraphs into.

FAQPage schema that didn't match the page. This one I didn't expect. One page had FAQPage JSON-LD with a question that had been reworded in the visible text and one that had been removed. Google's guidelines require FAQ markup to reflect visible content, and a mismatch is the kind of thing that gets markup ignored. The check is simple: every Question.name must appear in the page text after whitespace normalization.

for q in faq_questions: if norm ( q ) not in norm ( visible_text ): missing. append ( q ) Enter fullscreen mode Exit fullscreen mode No external sources. The pages explained legal procedure but linked only to each other. Nothing pointed to the official legislation database or the ministry pages the content was based on. That is odd for a reader, and it also ignores the one content tactic with research behind it.

After deploying, the live site scored 98/100. The remaining two points are the quote/statistic check. I left it failing on purpose. I won't add a statistic I can't verify, and quoting legislation on a legal site needs a lawyer to sign off first.

A higher score doesn't mean ChatGPT will cite the site. Some things I can't get around:

Cloudflare's AI crawler log for the last seven days shows 112 requests from AI-related bots: 87 from Google, 10 from Bing, 7 from Anthropic and 2 from OpenAI. So OpenAI's crawlers have reached the site, barely. Bing's AI Performance report shows 0 citations.

I ran a baseline test in ChatGPT about thirty minutes after deploying. Asked what the site is, it found and cited it. On four topic questions it cited official sources and two competitor sites, not mine. That's the starting point. I'll rerun the same questions and compare in a week, and I expect the answer may still be "nothing yet".

The useful outcome so far is that the problems I fixed were real and invisible without a dedicated check, especially the FAQ mismatch. If your site isn't showing up as a source, check crawler access first. If that's fine, the problem is probably in what's on the page.

The script is a single Python file with no dependencies and makes read-only GET requests unless you ask it to ping IndexNow: https://github.com/bln-design/geo-audit

Originaltitel: Why my small site never showed up as a source in ChatGPT, and what an audit foundQuelle: dev.to (dev.to). Original öffnen