Website für KI‑Agenten optimieren: Warum sauberes HTML mehr bringt als jede KI‑Datei
Mit KI diskutierenClaude ↗ChatGPT ↗
Ihre Website hat eine neue Sorte Besucher, und dieser Besucher schaut nicht hin. Er liest. Wenn ein Kunde ChatGPT bittet, einen Termin zu buchen oder einen Anbieter zu vergleichen, kommt kein Mensch auf Ihre Seite, sondern ein Agent, der im Auftrag handelt. Er sieht Ihr Layout nicht so, wie Sie es entworfen haben. Er bekommt eine maschinenlesbare Fassung, und deren Qualität entscheidet, ob er Sie versteht oder abbricht.
Für diese Aufgabe kursiert gerade ein Akronym: AEO, mal als „Answer Engine Optimization”, mal als „Agent Engine Optimization” ausbuchstabiert. Ich halte mich an einen Begriff und nenne die Sache GEO, Generative Engine Optimization. Das Etikett ist ohnehin zweitrangig. Die Frage dahinter ist konkret: Was muss an Ihrer Website anders sein, damit ein autonomer Agent sie lesen und bedienen kann? Die verbreitete Antwort lautet „eine llms.txt anlegen”. Sie ist falsch, oder genauer: Sie fängt am kleinsten Hebel an. Der große Hebel ist unspektakulär. Es ist sauberes HTML.
Was ein KI‑Agent von Ihrer Website sieht
Stellen Sie sich Ihre Website als Gebäude vor. Ein menschlicher Besucher sieht die eingerichteten Räume: Farben, Möbel, die große Schaltfläche, den Hover‑Effekt. Ein Agent bekommt davon fast nichts mit. Er arbeitet mit dem Grundriss, also der reinen Struktur dahinter. Wer nur die Möbel schön stellt, aber keinen sauberen Grundriss hinterlegt, den findet der Agent nicht. Anders als ein echter Grundriss entsteht dieser aber nicht einmalig beim Bau, sondern bei jedem Aufruf neu aus Ihrem Code. Genau da können Sie eingreifen.
Konkret sieht ein Agent Ihre Seite auf drei Wegen, wie Googles Chrome‑Team im April 2026 beschrieben hat. Erstens den Screenshot: Ein Vision‑Modell interpretiert das gerenderte Bild. Das ist langsam und teuer: Ein Vision-Modell braucht dafür Sekunden und verbraucht Tokens, während das Auslesen des DOM in Millisekunden erledigt ist. Der Screenshot bleibt die Notlösung, wenn die Struktur unklar ist. Zweitens das HTML und den DOM‑Baum: Verschachtelung, Attribute, Datenfelder. Daraus liest der Agent, was zusammengehört, etwa dass ein „Kaufen”‑Knopf zu genau diesem Produkt zählt. Drittens den Accessibility Tree, die browsereigene Barrierefreiheits‑Ansicht. Sie reduziert die Seite auf das Wesentliche: Rolle, Name und Zustand jedes bedienbaren Elements, ohne das visuelle Rauschen von CSS. Für einen Agenten ist das die genaueste Karte, die Sie ihm geben können.
Moderne Agenten kombinieren diese Kanäle. Das Prinzip ist alt und heißt sonst Barrierefreiheit. Was einem Screenreader hilft, hilft auch der Maschine. Der Satz, mit dem Google den eigenen Leitfaden schließt, trifft es: Fast alles, was eine Seite für Agenten besser macht, macht sie auch für Menschen besser.
Warum das ein Architektur‑ und kein Content‑Problem ist
Die meisten reagieren auf „KI‑Sichtbarkeit” mit mehr Text. Neue Ratgeber, längere Seiten, noch ein Blogartikel. Beim Optimieren für Agenten hilft das wenig. Wenn Ihr „Termin buchen”‑Button in Wahrheit ein <div> ist, das per JavaScript klickbar gemacht wurde, dann erkennt der Agent keinen Button. Er sieht einen bedeutungslosen Kasten. Kein zusätzlicher Absatz ändert das. Es ist ein Struktur‑, kein Inhaltsproblem, und es wird an der falschen Stelle gelöst.
Deshalb sortiere ich die fünf Hebel unten nicht nach Aufwand, sondern nach Wirkung. Der teuerste Fehler ist, mit der Wunderdatei anzufangen und das Fundament zu überspringen.
| Hebel | Wirkung | Aufwand |
|---|---|---|
| 1. Semantisches HTML und JSON‑LD | hoch | mittel |
| 2. Zugriff über robots.txt steuern | hoch | niedrig |
| 3. llms.txt anlegen | niedrig, fallabhängig | niedrig |
| 4. Aktionen über eine API öffnen | hoch, nur transaktional | hoch |
| 5. Rendering entschlacken | mittel bis hoch | mittel |
Fünf Schritte zur agentenfähigen Website
Semantisches HTML und strukturierte Daten
Bauen Sie bedienbare Elemente aus den dafür vorgesehenen Tags: <button> und <a> statt umfunktionierter <div> und <span>. Der Unterschied ist kein Detail, er entscheidet, ob der Agent überhaupt eine Schaltfläche erkennt:
<!-- So nicht: der Agent sieht nur einen bedeutungslosen Kasten -->
<div class="btn" onclick="buchen()">Termin buchen</div>
<!-- So: der Agent erkennt eine bedienbare Schaltfläche mit klarer Aktion -->
<button type="submit">Termin buchen</button>
Im Accessibility Tree wird aus der ersten Zeile ein generic-Knoten ohne Rolle, aus der zweiten der Eintrag button "Termin buchen". Optisch sehen beide gleich aus. Der Agent liest nur die zweite. Verknüpfen Sie jedes <label> per for‑Attribut mit seinem Eingabefeld, damit der Agent weiß, wozu ein Feld dient. Halten Sie das Layout stabil, verzichten Sie auf transparente Overlays über klickbaren Elementen, und setzen Sie cursor: pointer als klares Signal für Bedienbarkeit. Legen Sie darüber eine saubere Überschriftenhierarchie von <h1> bis <h6>. Setzen Sie am <html>-Element ein korrektes lang-Attribut, bei mehrsprachigen Seiten zusätzlich hreflang, sonst verarbeitet ein Agent womöglich die falsche Sprachfassung. Für die Fakten, die eindeutig sein müssen, also Preise, Verfügbarkeit, Öffnungszeiten, Firmenname, ergänzen Sie JSON‑LD nach Schema.org:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Muster GmbH",
"url": "https://www.muster.de",
"sameAs": [
"https://de.wikipedia.org/wiki/Muster_GmbH",
"https://www.linkedin.com/company/muster-gmbh"
]
}
</script>
Das sameAs‑Feld ist der unterschätzte Teil: Es bindet Ihre Marke als eindeutige Entität an Quellen, die ein Modell schon kennt.
Ergebnis: Im Rich‑Results‑Test von Google erscheint der Typ „Organization”. Fehlt er, liegt es meist an einem Komma zu viel im JSON‑LD.
Ein Missverständnis vorweg: Nutzen Sie kein HowTo‑ oder FAQPage‑Markup mehr in der Hoffnung auf Rich Results. Google hat die HowTo‑Darstellung bereits 2023 abgeschafft und die FAQ‑Rich‑Results Anfang 2026 folgen lassen. Das Markup ist weiter valides Schema.org und schadet dem Parsing nicht, aber einen Anzeige‑Bonus in der Suche bringt es nicht länger. Wer es allein dafür einbaut, arbeitet gegen ein Feature, das es nicht mehr gibt.
Zugriff über die robots.txt steuern
KI‑Crawler sind nicht ein Bot, sondern viele, mit unterschiedlichem Zweck. Trennen Sie die, die Zitationen zur Laufzeit erzeugen, von den reinen Trainings‑Crawlern, und entscheiden Sie pro Gruppe:
# Zitationsrelevante Abrufer zur Laufzeit zulassen
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: PerplexityBot
User-agent: Claude-User
Allow: /
# Trainings-Crawler bewusst und getrennt entscheiden
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
Disallow: /interner-bereich/
Ergebnis: Ein Abruf mit curl -I https://ihredomain.de/ und ein Blick in die Server‑Logs zeigt Ihnen, welche Bots tatsächlich kommen.
Die Stolperstelle: Die robots.txt ist eine Bitte, kein Zaun. Sie hält keinen Crawler technisch auf, der sich nicht daran halten will, und für einzelne KI‑Bots ist genau das dokumentiert. Wer bezahlte Inhalte oder Transaktionen wirklich schützen muss, braucht Authentifizierung und Rate‑Limits, nicht nur eine Zeile in der robots.txt. Vorsicht in die andere Richtung: Zu strikte Firewall-Regeln oder CAPTCHA-Abfragen sperren oft genau die nützlichen Agenten aus, die Sie erreichen wollen.
llms.txt anlegen, aber mit realistischer Erwartung
llms.txt ist eine Markdown‑Datei im Wurzelverzeichnis, die einem Modell die wichtigsten Seiten kuratiert auflistet. Der Reiz: ein sauberer Wegweiser statt einer mit Navigation und Werbung überladenen HTML‑Seite. Das Problem: Kein Modell muss die Datei lesen, und die meisten tun es nicht. Google hat im Juni 2026 offiziell klargestellt, dass die Google‑Suche llms.txt ignoriert, weder als Bonus noch als Malus. Eine Ahrefs‑Auswertung fand, dass 97 Prozent aller llms.txt‑Dateien von keinem Bot je abgerufen wurden.
Anlegen können Sie sie trotzdem, für einen klaren Fall: umfangreiche Dokumentationen oder große Wissens‑Sites, bei denen ein Agent zur Laufzeit schnell die Struktur erfassen soll. Anthropic etwa empfiehlt das Format für die eigene Doku. Für die typische Firmen‑ oder Shop‑Seite ist der Ertrag gering. Warum, für wen und mit welchem Aufbau genau, steht in meinem vollständigen Leitfaden zu llms.txt. Kurz: Es ist die Kür, nicht die Pflicht, und schon gar nicht der Einstieg.
Aktionen über eine API öffnen
Bis hierher geht es ums Lesen. Der nächste Schritt ist das Handeln. Die Bühne wechselt: Gemeint ist jetzt nicht mehr der lesende Crawler wie PerplexityBot, der Wissen für eine Antwort einsammelt, sondern der handelnde Agent, der über Werkzeuge wie Computer Use oder Browser-Use echte Klicks ausführt. Soll ein Agent buchen, bestellen oder ein Formular absenden, ist das Parsen einer visuellen Oberfläche der fragilste Weg. Ein Feld verrutscht, ein Overlay legt sich darüber, der Vorgang bricht ab. Stabiler ist eine strukturierte Schnittstelle: eine dokumentierte API, beschrieben nach dem OpenAPI‑Standard, über die der Agent die Transaktion direkt auslöst, statt Knöpfe zu suchen. Das aktionsorientierte Gegenstück im Markup sind Schema-Typen wie Offer oder ReserveAction, die ein Angebot oder eine Buchung maschinenlesbar auszeichnen. Und sobald echtes Geld fließt, gehört ein Sicherheitskonzept dazu: Der Agent weist sich per OAuth 2.0 oder API-Schlüssel aus, Rate-Limits begrenzen den Schaden, falls ein Agent außer Kontrolle gerät.
Das ist der Kern dessen, was gerade „agentic commerce” genannt wird, und der Aufwand ist real: Ohne Backend‑Schnittstelle wird aus diesem Schritt ein Entwicklungsprojekt. Am Horizont steht WebMCP, ein von Google vorgeschlagener Webstandard, über den Websites Agenten definierte Aktionen anbieten. Technisch baut es auf dem Model Context Protocol auf und tauscht die Aufrufe als strukturierte JSON-RPC-Nachrichten aus, statt den Agenten die Oberfläche absuchen zu lassen. Noch ist das ein früher Vorschlag im Vorschau‑Programm, kein verlässlicher Standard. Wer heute schon Buchungen oder Bestellungen über Agenten erwartet, sollte die eigene API sauber dokumentieren. Alle anderen dürfen diesen Schritt vorerst überspringen.
Rendering entschlacken
Der beste Grundriss nützt nichts, wenn er erst nach fünf Sekunden JavaScript entsteht. Viele Crawler und Agenten führen JavaScript gar nicht oder nur eingeschränkt aus. Was erst clientseitig nachgeladen wird, existiert für sie im Zweifel nicht. Sorgen Sie dafür, dass der wesentliche Inhalt, also Text, Preise, Links, Navigation, schon im ausgelieferten HTML steht, per serverseitigem Rendering oder Prerendering. Besonders tückisch sind Single-Page-Apps mit React oder Vue, die den Inhalt erst im Browser zusammensetzen, und Web Components, die ihn im Shadow DOM kapseln: Beides bleibt einem reinen HTML-Parser oft verborgen.
Ergebnis: Rufen Sie Ihre Seite mit deaktiviertem JavaScript auf. Sehen Sie den Kerninhalt und die wichtigsten Links, ist die Hürde genommen. Bleibt die Seite leer, sieht ein Teil der Agenten dasselbe: nichts.
Zwei schnelle Tests zeigen das noch direkter. Im Terminal liest curl -sL https://ihredomain.de | lynx -stdin -dump die Seite als reinen Text, so wie ein textbasierter Agent sie bekommt. Und in Chrome öffnen Sie mit F12 den Reiter „Accessibility”, aktivieren „Enable full-page accessibility tree” und gehen Knoten für Knoten durch, was der Agent an Rollen und Namen vorfindet. Der Nebeneffekt: Jedes Barrierefreiheits-Werkzeug, von Lighthouse bis zum Screenreader, ist ab sofort auch Ihre Testumgebung für KI-Agenten. Wie Statuscodes und Erreichbarkeit das Crawling steuern, habe ich am Beispiel Crawl Budget beschrieben.
Zwei Beispiele, die Sie in wenigen Minuten selbst nachstellen können, zeigen, wie unterschiedlich Seiten das handhaben. Ich habe beide durch denselben lynx-Test geschickt und zusätzlich ihren Quelltext geprüft.
Bei On (Cloudmonster 3) steht der kaufrelevante Kern schon ohne JavaScript im Text: Name, Preis (CHF 340), Grössen mit Lagerstatus, Material. Dazu liefert die Seite sauberes JSON-LD, eine ProductGroup mit vier Varianten und vier Offer samt Preis und Verfügbarkeit. Erst die Spezifikationen und Bewertungsbalken, also Sprengung 6 mm, Gewicht 205 g und die Feature-Liste, fehlen im lynx-Dump. Sie stecken in einem JavaScript-Blob.
Bei Crocs (Classic Clog) ist die Gewichtung fast umgekehrt. Beschreibung, Feature-Liste und der CO2-Wert stehen im gerenderten HTML. Der Preis dagegen taucht im lynx-Dump nirgends auf, ebenso wenig Grössen oder Kaufbutton. Die Preisanzeige entsteht erst per JavaScript. Wer nur den Text liest, sieht ein Produkt ohne Preis. Gerettet wird das allein durch das JSON-LD: Dort liegen Preis (54,99 €), Verfügbarkeit und sogar eine AggregateRating, sauber maschinenlesbar.
| Datenpunkt | On, ohne JS sichtbar | Crocs, ohne JS sichtbar | sonst verfügbar über |
|---|---|---|---|
| Preis | ja | nein | JSON-LD (beide); Crocs zusätzlich per JS |
| Grössen und Verfügbarkeit | ja | nein | JSON-LD; Grössenauswahl per JS |
| Beschreibung, Features | teilweise | ja | Rest per JS |
| Spezifikationen, Bewertung | nein | nein | JS-Blob; Crocs-Bewertung im JSON-LD |
Die gemeinsame Rettungsleine ist das JSON-LD. Was eine Seite nicht server-rendert, kann sie darüber trotzdem an einen Agenten übergeben, aber nur die Fakten, die im Schema modelliert sind. Ein Crawler, der weder JavaScript ausführt noch JSON-LD liest, sieht bei Crocs ein Produkt ohne Preis. Die Lehre: Prüfen Sie jede Schicht einzeln. Gerendertes HTML, JSON-LD und der JavaScript-Blob sind drei verschiedene Dinge, und nur das Erste sieht ein einfacher Agent sicher.
Fünf Muster bremsen Agenten besonders zuverlässig aus:
| Anti-Muster | Warum es den Agenten stoppt |
|---|---|
<div> mit onclick statt <button> | keine erkennbare Rolle, kein bedienbares Element |
| Infinite Scroll ohne Paginierung | kein Ende, keine stabile URL zum Ansteuern |
| Modal ohne Tastatur-Fokus | nicht erreichbar, blockiert oft den ganzen Ablauf |
| Wesentlicher Inhalt erst per JavaScript | für nicht-rendernde Bots schlicht nicht vorhanden |
| CAPTCHA oder aggressive WAF vor Kerninhalten | sperrt nützliche Agenten mit den Schrott-Bots aus |
Wann sich der volle Ausbau lohnt und wann nicht
Nicht jede Website braucht alle fünf Schritte. Die Schritte 1, 2 und 5, also sauberes HTML, geregelter Crawler‑Zugriff und ein Rendering ohne JavaScript‑Blockaden, sind das Fundament und lohnen sich immer. Sie kosten wenig und zahlen doppelt ein, für Menschen wie für Maschinen.
Schritt 4, die API für Aktionen, rechnet sich nur dort, wo Agenten tatsächlich transagieren sollen: Shops, Buchungsplattformen, Portale. Eine fünfseitige Broschüren‑Website braucht keine OpenAPI‑Spezifikation, und ein Berater, dessen Kunden ihn per E‑Mail kontaktieren, auch nicht. Und Schritt 3, die llms.txt, ist ein Sonderfall für dokumentationslastige Sites, kein Pflichtprogramm. Wer knappe Zeit hat, investiert sie zuerst ins Fundament, nicht in die Datei, die auf LinkedIn am meisten Aufmerksamkeit bekommt.
Ob sich die Arbeit auszahlt, sehen Sie nicht in Google Analytics, denn Agenten erzeugen keine klassischen Seitenaufrufe. Der Nachweis läuft über Server‑Logs, in denen Sie die KI‑Bots zählen, und über die Frage, ob die Modelle Sie am Ende zitieren. In Nginx- oder Apache-Logs suchen Sie dafür nach dem User-Agent, etwa nach einer Zeile wie dieser:
203.0.113.7 - - [28/Jul/2026:10:14:22 +0000] "GET /leistungen HTTP/1.1" 200 8123 "-" "Mozilla/5.0 (compatible; ChatGPT-User/1.0; +https://openai.com/bot)"
Ohne so eine Messung bleibt die Optimierung eine Vermutung, und Vermutungen sind kein Fundament.
Welcher Hebel zuerst zählt, hängt vom Geschäftsmodell ab
Das Fundament aus den Schritten 1, 2 und 5 gilt für jede Website. Welcher Hebel danach an erster Stelle steht, entscheidet das Geschäftsmodell. Wer für einen lokalen Handwerksbetrieb dieselbe Reihenfolge wählt wie für ein SaaS-Produkt, investiert an der falschen Stelle.
| Geschäftsmodell | Hebel mit Priorität 1 | Warum |
|---|---|---|
| Lokaler Dienstleister | LocalBusiness-Schema: Name, Adresse, Öffnungszeiten, Geo | Der Agent beantwortet Fragen nach einem Anbieter „in der Nähe”; Adresse und Zeiten müssen eindeutig sein |
| Onlineshop | Preis und Verfügbarkeit gerendert plus Product- und Offer-JSON-LD | Fehlt der Preis im maschinenlesbaren Layer, fällt das Produkt aus dem Vergleich, siehe On und Crocs oben |
| B2B-SaaS | Dokumentierte API nach OpenAPI, dazu strukturierte Doku | Der Wert entsteht in der Integration; Agenten sollen Endpunkte finden, nicht Marketingseiten |
| Blog, Publisher, Medien | Semantisches HTML, Bot-Zugriff, Article-Schema | Es geht ums Gelesen- und Zitiertwerden, nicht ums Handeln; eine API braucht es nicht |
Die Regel dahinter ist simpel: Beginnen Sie mit der Schicht, in der Ihr Geschäft entsteht. Beim Dienstleister ist das die Auffindbarkeit, beim Shop der Preis, beim SaaS die Aktion, beim Publisher der Text. Alles andere folgt danach.
Häufige Fragen
Was ist der Unterschied zwischen SEO und der Optimierung für KI‑Agenten? Klassisches SEO zielt auf eine Position in einer Trefferliste. Die Optimierung für Agenten zielt darauf, dass eine Maschine Ihre Inhalte fehlerfrei liest und Aktionen ausführt. Das Fundament ist dasselbe: erreichbares HTML, saubere Struktur, klare Entitäten. Neu ist die Ebene der bedienbaren Elemente und der maschinenlesbaren Aktionen. GEO ersetzt SEO nicht, es baut darauf auf.
Muss ich eine llms.txt anlegen, um in KI‑Antworten zitiert zu werden? Nein. Google ignoriert die Datei für die Suche ausdrücklich, und die meisten llms.txt‑Dateien werden von keinem Bot abgerufen. Für dokumentationslastige Sites kann sie ein sinnvoller Wegweiser sein, für die meisten Websites bringt sauberes HTML und geregelter Crawler‑Zugriff deutlich mehr.
Reicht reines HTML, damit Agenten Formulare und Buchungen ausführen? Zum Lesen ja, zum zuverlässigen Handeln oft nicht. Sobald ein Agent eine Transaktion auslösen soll, ist eine dokumentierte API stabiler als das Parsen der Oberfläche. Für rein informative Seiten genügt sauberes, semantisches HTML.
Wie verhindere ich, dass Agenten meine öffentlichen Funktionen missbrauchen? Nicht über die robots.txt, die ist nur eine Bitte. Schützen Sie transaktionale Endpunkte mit Authentifizierung, API‑Schlüsseln und Rate‑Limits. Trennen Sie öffentlich lesbare Inhalte klar von Funktionen, die Kosten oder Buchungen auslösen.
Wie messe ich, ob KI‑Engines meine Seite tatsächlich nutzen? Über zwei Wege. In den Server‑Logs zählen Sie die Zugriffe der KI‑Bots wie OAI‑SearchBot, PerplexityBot oder ClaudeBot. Und Sie prüfen die Zitate direkt, indem Sie ChatGPT, Perplexity und Gemini die wichtigsten Kundenfragen stellen und mitzählen, wie oft Ihre Marke als Quelle auftaucht. Der Weg von „abgerufen” zu „zitiert” ist nicht garantiert, das eine folgt nicht automatisch aus dem anderen.
Fazit
Am Anfang stand das Bild vom Grundriss: Ein Agent sieht nicht Ihre Einrichtung, sondern die Struktur dahinter. Die gute Nachricht ist, dass der wirksamste Teil der Arbeit der unspektakulärste ist. Kein Trick, keine Wunderdatei, sondern <button> statt <div>, ein stabiler Zugriff über die robots.txt und ein Rendering, das ohne JavaScript auskommt. Eine Faustregel fasst es zusammen: Was ein Screenreader mühelos vorlesen und bedienen kann, kann auch der Agent. Prüfen Sie es selbst, heute noch: Öffnen Sie Ihre wichtigste Seite mit deaktiviertem JavaScript. Was jetzt noch zu lesen ist, sieht auch der Agent. Der Rest ist Ihr Grundriss, an dem Sie arbeiten sollten.
Quellen und Stand
- Google Chrome‑Team, „Agent‑freundliche Websites erstellen”, web.dev, Stand 1. April 2026: web.dev/articles/ai-agent-site-ux
- Google, Leitfaden zur Optimierung für generative KI‑Funktionen, mit dem Hinweis zu llms.txt vom 15. Juni 2026: developers.google.com/search/docs/fundamentals/ai-optimization-guide
- Google Search Central, Abschaffung der HowTo‑ und FAQ‑Rich‑Results, August 2023: developers.google.com/search/blog/2023/08/howto-faq-changes
- Ahrefs, Auswertung von rund 137.000 Websites mit llms.txt (97 Prozent ohne Bot‑Abruf): ahrefs.com/blog/llmstxt-study
- Jeremy Howard, llms.txt‑Spezifikation, September 2024: llmstxt.org
- Google Chrome, WebMCP (Early‑Preview‑Programm): developer.chrome.com/blog/webmcp-epp
Stand der Recherche: 28. Juli 2026.