> ## Content Index
> Fetch the complete content index at: https://t01.li/llms.txt
> Use this file to discover other available public pages before exploring further.

# Strukturierte Daten für die KI-Suche: welches Schema wofür und was es bringt
- URL: https://t01.li/geo-seo/strukturierte-daten-schema-markup-ki-suche/
- Published: 2026-10-13T05:10:15.000Z
- Updated: 2026-10-15T07:39:02.000Z
- Description: Strukturierte Daten sind für die KI-Suche nicht erforderlich, das schreibt Google inzwischen selbst. Welches Schema für welche Seite zur Grundausstattung gehört, wie JSON-LD sauber umgesetzt wird und wie sich die Wirkung in der KI-Suche messen lässt.
- Author: Tobias Glawe
- Tags: GEO und SEO, #hub-geo

Kaum ein [GEO](https://t01.li/generative-engine-optimization-geo/)\-Ratgeber kommt ohne den Tipp aus, strukturierte Daten per Schema-Markup nachzurüsten, damit *ChatGPT*, *Perplexity* und die *AI Overviews* einen endlich zitieren. Ich habe das im Mai in meinem Beitrag zu Thema [technisches SEO als Fundament für GEO](https://t01.li/geo-seo/geo-ohne-technisches-seo-ist-kaffeesatzleserei/) selbst noch freundlicher formuliert, als es die Belege wirklich hergeben. Seitdem hat Google einen eigenen Leitfaden zur KI-Suche veröffentlicht, Microsoft misst Zitate in *Copilot* offen aus, und es gibt erstmals eine Auswertung mit Kontrollgruppe, die nachrechnet, was nachträglich eingebautes JSON-LD an KI-Zitaten bringt.

Zuerst geht es darum, was strukturierte Daten in der KI-Suche nachweislich leisten und wo die Erwartungen zu hoch sind. Der praktische Teil danach ist lang und klärt, welcher Schema-Typ zu welcher Seite passt, wie das JSON-LD dafür aussieht, wie es ins CMS kommt und wie sich messen lässt, ob der Aufwand etwas bewirkt.

## TL;DR 

Strukturierte Daten sind für die KI-Suche keine Eintrittskarte. Google nennt sie für *AI Overviews* und *AI Mode* „nicht erforderlich“, in den KI-Unterlagen von Bing und OpenAI aus diesem Jahr kommt Schema nicht vor.

- Die einzige Auswertung mit Kontrollgruppe (Ahrefs, Mai 2026) findet nach dem Einbau von JSON-LD keinen Zuwachs an KI-Zitaten.
- In den bisher veröffentlichten Live-Abruf-Tests nutzten die getesteten Assistenten JSON-LD nicht zuverlässig als strukturelles Signal. Der dokumentierte Nutzen liegt im Suchindex von Google und Bing, bei Entitäten und Suchfunktionen.
- Zur Grundausstattung gehören *Organization* und *WebSite*, *Product* samt Merchant-Center-Feed im Shop und *LocalBusiness* samt Unternehmensprofil vor Ort. FAQ- und HowTo-Markup bringen in Google keine Rich Results mehr.
- JSON-LD aus derselben Datenquelle erzeugen wie den sichtbaren Text und, wenn neben Google weitere Such- und KI-Systeme zählen, möglichst serverseitig ausliefern. Google verarbeitet auch per JavaScript erzeugtes Markup.
- Ob es in der KI-Suche wirkt, zeigen der KI-Bericht der *Search Console* und *AI Performance* in den *Bing Webmaster Tools*, am besten mit Kontrollgruppe. Besuche aus ChatGPT kommen seit Oktober oft ohne `utm_source=chatgpt.com` an und lassen sich nur noch lückenhaft zuordnen.

💡

****Update vom 15\. Oktober 2026**

Geändert hat sich die Messung von Besuchen aus ChatGPT. Seit GPT-6 am 7\. Oktober in ChatGPT eingeführt wurde, kommen viele dieser Besuche ohne `utm_source=chatgpt.com` an. Angepasst sind die Zusammenfassung und der Abschnitt „Messen, ob es in der KI-Suche etwas bringt“.

## Was Google, Microsoft und OpenAI tatsächlich sagen

Google ist bei dem Thema ungewohnt deutlich. Im [Leitfaden für die KI-Funktionen der Google-Suche](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide?ref=t01.li), erschienen am 15\. Mai und zuletzt im Juli aktualisiert, steht es unter der Überschrift „Overfocusing on structured data“ und damit in der Abteilung Mythen:

> „Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add. However, it's a good idea to continue using it as part of your overall SEO strategy, as it helps with being eligible for rich results on Google Search.“

Der Rest des Leitfadens erklärt das warum und wieso. *AI Overviews* und *AI Mode* bauen auf dem normalen Suchindex und den Ranking-Systemen auf, holen sich passende Seiten per [Grounding](https://t01.li/glossar/#grounding) und schicken für eine Frage gleich mehrere verwandte Suchanfragen los (Google nennt das Query Fan-out). Für Google ist Optimierung für die KI-Suche deshalb „still SEO“. Strukturierte Daten tauchen auf der begleitenden Seite zu den [KI-Funktionen](https://developers.google.com/search/docs/appearance/ai-features?ref=t01.li) nur als eine der weiter gültigen Grundlagen auf, mit dem knappen Hinweis, dass das Markup zum sichtbaren Text passen muss. Etwas konkreter wird Google bei Shops und lokalen Unternehmen. Produktlisten und Firmeninformationen in KI-Antworten lassen sich laut Leitfaden über das *Merchant Center* und das Unternehmensprofil (*Google Business Profile*) unterstützen – über Feeds und Profile, die Händler und Betriebe direkt bei Google pflegen.

Bei Microsoft ist die Lage weniger eindeutig, als sie in vielen Artikel zum Thema GEO verbreitet wird. Seit Februar zeigt [AI Performance in den *Bing Webmaster Tools*](https://blogs.bing.com/webmaster/2026/2/Introducing-AI-Performance-in-Bing-Webmaster-Tools-Public-Preview/?ref=t01.li), wie oft eine Website in *Copilot*, in den KI-Zusammenfassungen von Bing und bei ausgewählten Partnern zitiert wird. Empfohlen werden dort IndexNow, damit KI-Systeme die aktuelle Fassung einer Seite referenzieren, dazu klare Überschriften, Tabellen und belegte Aussagen. Schema.org kommt weder in diesem Beitrag noch im Update vom Juni vor. Das klang im Herbst 2025 noch anders, denn in einem [Beitrag im Bing-Webmaster-Blog](https://blogs.bing.com/webmaster/2025/11/How-AI-Search-Is-Changing%E2%80%AFthe%E2%80%AFWay%E2%80%AFConversions%E2%80%AFare-Measured/?ref=t01.li) vom November schrieben Fabrice Canel und Krishna Madhavan, strukturierte Inhalte wie schema-ausgezeichnete Produktseiten erhöhten die Chance, in KI-Antworten zitiert zu werden. Wie die Zeiten sich doch ändern.

Auf Canel geht auch die oft zitierte Aussage aus einem Konferenzvortrag im März 2025 zurück, Schema helfe den Sprachmodellen von *Copilot*. Mark Williams-Cook hält deren Zuspitzung für [ein Fehlzitat](https://www.searchenginejournal.com/schema-llms-the-low-bar-for-evidence-in-geo/576090/?ref=t01.li), Canel habe vor allem über Aktualität und IndexNow gesprochen. Ich hatte diesen Satz im Mai so übernommen – klang plausibel, stützte sich auf eine echte Autorität der Branche. Heute würde ich vorsichtiger formulieren, dass Microsoft Schema 2025 empfohlen hat und es in den Messwerkzeugen von 2026 offenbar keine Rolle spielt.

OpenAI schweigt zum Thema übrigens komplett. Die [Crawler-Dokumentation](https://developers.openai.com/api/docs/bots?ref=t01.li) regelt, welcher Bot wofür zuständig ist: Über den *OAI-SearchBot* läuft die Sichtbarkeit in der ChatGPT-Suche, über den *GPTBot* mögliches Training, und beide lassen sich getrennt steuern. In der [FAQ für Publisher](https://help.openai.com/en/articles/12627856-publishers-and-developers-faq?ref=t01.li) geht es um Crawler, Verweis-Parameter und um ARIA-Auszeichnungen, die dem Agenten in *Atlas* beim Bedienen von Seiten helfen. Zu Schema.org steht dort kein Wort. Beim Shopping setzt OpenAI auf das [Agentic Commerce Protocol](https://developers.openai.com/commerce?ref=t01.li) mit einem eigenen Product-Feed- und API-Schema. Von Perplexity und Anthropic habe ich keine offizielle Aussage zu strukturierten Daten gefunden, dokumentiert sind dort nur die jeweiligen [KI-Crawler](https://t01.li/glossar/#ki-crawler).

## Was passiert eigentlich, wenn jemand nachmisst?

Gemessen haben in den letzten Monaten gleich mehrere Teams.

Ahrefs hat im Mai [1.885 Seiten ausgewertet](https://ahrefs.com/blog/schema-ai-citations/?ref=t01.li), die zwischen August 2025 und März 2026 erstmals JSON-LD bekommen haben, und sie mit rund 4.000 Kontrollseiten verglichen, die vorher ähnlich oft zitiert wurden. Gemessen wurden jeweils 30 Tage vor und nach der Änderung. In *AI Mode* (+2,4 %) und *ChatGPT* (+2,2 %) war der Unterschied statistisch nicht von null zu unterscheiden, in den *AI Overviews* sanken die Zitate leicht, um 4,6 %. Das ist eine Herstellerstudie mit einer wichtigen Lücke, die Ahrefs benennt. Alle untersuchten Seiten wurden schon vorher häufig zitiert, und ob Schema einer bisher unsichtbaren Marke hilft, deckt die Auswertung nicht ab.

Den Gegenpol liefert ein [Report von AirOps und Kevin Indig](https://www.airops.com/report/the-fan-out-effect-what-happens-between-a-query-and-a-citation?ref=t01.li) vom April. Über 16.851 Anfragen an *ChatGPT* hinweg wurden Seiten mit JSON-LD zu 38,5 % zitiert, Seiten ohne zu 32,0 %. Der Abstand ist eine reine Korrelation, gemessen an extrem ungleichen Gruppen (rund 13.000 gegen über 735.000 Fälle). Sauberes Markup findet sich vermutlich eher auf gepflegten Websites mit guten Inhalten und Backlinks, und das misst eine solche Korrelation mit. Den weitaus stärkeren Zusammenhang findet derselbe Report bei der Position im Retrieval: Was auf Platz 1 der abgerufenen Quellen landet, wird zu 58 % zitiert, auf Platz 10 noch zu 14 %.

Zwei kleine Versuche liefern Hinweise darauf, warum der direkte Weg so wenig bringt: searchVIU hat Ende Oktober 2025 eine Testseite mit acht Preisen in unterschiedlichen Quellen gebaut und [fünf KI-Systeme danach gefragt](https://www.searchviu.com/en/schema-markup-and-ai-in-2025-what-chatgpt-claude-perplexity-gemini-really-see/?ref=t01.li). Den Preis, der ausschließlich im JSON-LD stand, fand keins der fünf Systeme, versteckte Microdata und RDFa ebenfalls nicht. Mark Williams-Cook hat es im Juni andersherum probiert und eine Adresse in [absichtlich ungültiges JSON-LD](https://www.searchenginejournal.com/schema-llms-the-low-bar-for-evidence-in-geo/576090/?ref=t01.li) gesteckt, mit erfundenem Typ und Fantasie-Properties. *ChatGPT* und *Perplexity* gaben die Adresse trotzdem aus, *Perplexity* mit Verweis auf die „structured data“. Williams-Cook schließt daraus, dass die Modelle das Markup als Text mitlesen, ohne es als Schema zu verstehen. Ob JSON-LD beim Modell ankommt, hängt davon ab, ob ein System beim Abruf das rohe HTML weiterreicht oder nur den extrahierten Seitentext. Als strukturelles Signal genutzt haben die getesteten [Sprachmodelle](https://t01.li/glossar/#llm) JSON-LD in keinem der beiden Versuche. Für das Verhalten aller aktuellen Assistenten sind zwei kleine Tests ein Indiz, mehr nicht. Welche Rolle das Format im Kontext eines Modells spielt, steht im [Vergleich von Datenformaten für LLMs](https://t01.li/ki-systemdesign/llm-datenformate-json-yaml-xml-toon-html-im-vergleich/).

Die einzige Arbeit mit einem deutlichen Plus kommt von [Andrea Volpini und Kollegen](https://arxiv.org/abs/2603.10700?ref=t01.li), für und bei WordLift tätig (bei mir schon häufiger zitiert), einem Anbieter für strukturierte Daten. In ihrem eigenen [RAG](https://t01.li/glossar/#rag)\-Aufbau brachte JSON-LD allein nur „modest improvements“. Die knapp 30 % mehr Genauigkeit stammen von eigens angereicherten Entitätsseiten mit Breadcrumbs, Anweisungen für Agenten im Stil einer llms.txt und einer eigenen Suchfunktion. Das Ganze lief auf einer Testumgebung mit Googles Agent-Baukasten, mit *ChatGPT* oder der Google-Suche hatte der Versuch nichts zu tun.

Dazu kommen zwei Studien, die erklären, warum KI-Sichtbarkeit überhaupt eine eigene Disziplin ist. Ein Team vom New Jersey Institute of Technology hat für die SIGIR 2026 [11.500 Suchanfragen](https://arxiv.org/abs/2604.27790?ref=t01.li) durch die Google-Suche, die *AI Overviews* und *Gemini 2.5 Flash* geschickt. Die abgerufenen Quellen überschneiden sich kaum (Jaccard-Ähnlichkeit im Schnitt unter 0,2). Ein [Preprint der Washington University in St. Louis](https://arxiv.org/abs/2605.14021?ref=t01.li), das derzeit begutachtet wird, kommt über 55.393 Anfragen zu einem ähnlichen Bild. Fast 30 % der [KI-Zitate](https://t01.li/glossar/#ai-citation) in *AI Overviews* verweisen auf Domains, die in den Ergebnissen der ersten Seite nicht auftauchen.

## Wo strukturierte Daten belegbar helfen

Der dokumentierte Nutzen von Schema liegt im Index, bei Entitäten und bei den Suchfunktionen. Google und Bing lesen Markup beim Crawlen und verknüpfen es mit ihrem Wissen über Unternehmen, Produkte und Personen. *AI Overviews* und *AI Mode* bauen laut Google auf diesem Index auf, auf dem Ranking, auf Grounding und auf Query Fan-out, dessen Anfragen weit über die ersten zehn Treffer der Ausgangsfrage hinausreichen. Ob die bessere Zuordnung im Index anschließend die Chance auf ein KI-Zitat erhöht, ist nicht belegt, und die Ahrefs-Zahlen geben darauf keinen Hinweis. Einen indirekten Pfad halte ich trotzdem für plausibel. Olaf Kopp beschreibt Schema im [Aufgesang-Blog](https://www.aufgesang.de/blog/wie-wichtig-sind-schema-markups-fuer-die-generative-engine-optimization-geo/?ref=t01.li) als Hygienefaktor mit indirekter Wirkung über Index, Knowledge Graph und Retrieval.

Konkret sehe ich drei Stellen, an denen sich der Aufwand lohnt:

**Entitäten zuordnen.** Organization-Markup hilft Google laut [Organization-Doku](https://developers.google.com/search/docs/appearance/structured-data/organization?ref=t01.li) „behind the scenes“ dabei, ein Unternehmen von Namensvettern zu unterscheiden. Für Kennungen wie LEI oder DUNS sieht Google das Feld `iso6523Code` vor, dazu kommen echte `sameAs`\-Profile.

**Produkt- und Standortdaten konsistent halten.** Im Shop führt Google Markup und Merchant-Center-Feed zusammen und gleicht beide ab, lokal sollten Website, Markup und Unternehmensprofil dieselben Daten zeigen. Das sind die beiden Datenquellen, die Google für KI-Antworten nennt.

**Für Suchfunktionen qualifizieren.** Produkt-Snippets, *Google Jobs* und Rezept-Ergebnisse setzen das Markup voraus, Merchant Listings und Video-Ergebnisse können davon profitieren. Das ist klassische Sichtbarkeit, und die bringt im Moment noch die Klicks. Wie schwach dagegen der Klick aus einem KI-Zitat ist, habe ich im Beitrag dazu, warum [KI-Zitate kaum Anfragen bringen](https://t01.li/geo-seo/geo-citations-bringen-keine-conversions/), ausführlich beschrieben.

Schema.org kann mit `potentialAction` auch Aktionen wie Buchungen oder Anfragen beschreiben, das habe ich im Text über [agentisches SEO](https://t01.li/geo-seo/agentisches-seo-strukturierte-daten-agenten/) durchgespielt. Dass heutige Chat- oder Browser-Agenten dieses Markup systematisch nutzen, um eine Website zu bedienen, ist bisher nicht dokumentiert.

Schema-Markup ist Infrastruktur. Es liefert Suchmaschinen explizite, maschinenlesbare Metadaten und kann Mehrdeutigkeiten reduzieren. Als Zitat-Hebel ist es überverkauft, weglassen würde ich es nicht.

## Welches Schema für welche Seite

Die Auswahl richtet sich nach der Frage, was eine Seite hauptsächlich beschreibt. Google empfiehlt dafür den spezifischsten passenden Typ, etwa *BlogPosting* für den Blogartikel und *Electrician* für den Elektrobetrieb, solange es den Untertyp gibt.

| Seitentyp             | Schema-Typ                              | Mögliche Darstellung bei Google                                     | Priorität                 |
| --------------------- | --------------------------------------- | ------------------------------------------------------------------- | ------------------------- |
| Startseite            | *Organization*, *WebSite*               | Website-Name, Logo, Unternehmensdaten, Abgrenzung von Namensvettern | immer                     |
| Autorenseite          | *ProfilePage* mit *Person*              | Zuordnung von Autoren über url und sameAs                           | hoch bei Content-Websites |
| Blog und News         | *BlogPosting*, *NewsArticle*, *Article* | Titel, Bild, Datum, Autor im Artikel-Ergebnis                       | hoch                      |
| Produktseite          | *Product* mit *Offer*                   | Produkt-Snippets, Merchant Listings                                 | immer im Shop             |
| Produkt mit Varianten | *ProductGroup*                          | Varianten nach Farbe, Größe usw.                                    | immer bei Varianten       |
| Standortseite         | Untertyp von *LocalBusiness*            | lokale Darstellung, zusammen mit dem Unternehmensprofil             | immer vor Ort             |
| Stellenanzeige        | *JobPosting*                            | Google Jobs                                                         | hoch beim Recruiting      |
| Videoseite            | *VideoObject*                           | Video-Ergebnisse, Key Moments                                       | mittel                    |
| Rezept                | *Recipe*                                | Rezept-Ergebnisse, Karussell                                        | hoch für Food             |
| Datensatz             | *Dataset*                               | nur noch Dataset Search                                             | Nische                    |
| Seitenhierarchie      | *BreadcrumbList*                        | Pfad im Suchergebnis (nur Desktop)                                  | mitnehmen                 |
| FAQ                   | *FAQPage*                               | seit 7\. Mai 2026 kein Rich Result mehr                             | optional                  |
| Anleitung             | *HowTo*                                 | seit 2023 kein Rich Result mehr                                     | optional                  |

## Die Typen im Einzelnen, mit Code

Alle Beispiele sind JSON-LD, das Format, das Google empfiehlt, auch wenn Microdata und RDFa laut [Google-Richtlinien](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data?ref=t01.li) „equally fine“ sind. JSON-LD hat den praktischen Vorteil, dass es als eigener Block im HTML steht und sich aus Template-Daten erzeugen lässt, ohne das Markup der Seite anzufassen. Im ersten Beispiel zeige ich das umschließende Script-Tag, danach nur noch das JSON. Domains, Namen und Nummern sind erfunden.

Eine Regel gilt für alle Typen gleich. Ausgezeichnet wird nur, was auf der Seite auch sichtbar steht. Ein Preis, eine Bewertung oder eine Adresse, die nur im Markup existiert, verstößt gegen die [allgemeinen Richtlinien](https://developers.google.com/search/docs/appearance/structured-data/sd-policies?ref=t01.li) und kann eine manuelle Maßnahme und den Verlust der Rich-Result-Eignung auslösen.

### Das Fundament: Organization, WebSite und Person

*WebSite* gehört auf die Startseite. *Organization* kann dort stehen oder auf einer zentralen Seite wie „Über uns“, auf jeder Seite wiederholen muss man sie laut Google nicht. Die *Person* gehört auf ihre Autoren- oder Profilseite. Jede Entität bekommt eine feste `@id`, eine URL mit Fragment, die sich nie ändert. Das ist eine Konvention für einen sauberen Graphen, Google verlangt es nicht. Artikel, Produkte und Stellenanzeigen verweisen über diese IDs auf Herausgeber und Autor. Ob Google eine `@id` über Seitengrenzen hinweg auflöst, ist nicht dokumentiert, deshalb gebe ich an diesen Stellen zusätzlich den Namen mit.

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://www.beispiel-gmbh.de/#organization",
      "name": "Beispiel Elektrotechnik",
      "legalName": "Beispiel GmbH",
      "url": "https://www.beispiel-gmbh.de/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://www.beispiel-gmbh.de/assets/logo-512.png",
        "width": 512,
        "height": 512
      },
      "vatID": "DE123456789",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "Musterstraße 12",
        "postalCode": "30159",
        "addressLocality": "Hannover",
        "addressCountry": "DE"
      },
      "contactPoint": {
        "@type": "ContactPoint",
        "contactType": "customer service",
        "telephone": "+49-511-1234567",
        "email": "kontakt@beispiel-gmbh.de"
      },
      "sameAs": [
        "https://www.linkedin.com/company/beispiel-gmbh",
        "https://www.northdata.de/Beispiel+GmbH,+Hannover"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://www.beispiel-gmbh.de/#website",
      "url": "https://www.beispiel-gmbh.de/",
      "name": "Beispiel Elektrotechnik",
      "inLanguage": "de-DE",
      "publisher": { "@id": "https://www.beispiel-gmbh.de/#organization" }
    }
  ]
}
</script>
```

Die Autorenseite bekommt einen eigenen Block mit *ProfilePage* und der *Person* als `mainEntity`:

```json
{
  "@context": "https://schema.org",
  "@type": "ProfilePage",
  "@id": "https://www.beispiel-gmbh.de/team/anna-beispiel/#profilepage",
  "url": "https://www.beispiel-gmbh.de/team/anna-beispiel/",
  "mainEntity": {
    "@type": "Person",
    "@id": "https://www.beispiel-gmbh.de/team/anna-beispiel/#person",
    "name": "Anna Beispiel",
    "url": "https://www.beispiel-gmbh.de/team/anna-beispiel/",
    "jobTitle": "Geschäftsführerin",
    "worksFor": {
      "@type": "Organization",
      "@id": "https://www.beispiel-gmbh.de/#organization",
      "name": "Beispiel Elektrotechnik"
    },
    "sameAs": [
      "https://www.linkedin.com/in/anna-beispiel"
    ]
  }
}
```

Ein paar Details aus der [Organization-Doku](https://developers.google.com/search/docs/appearance/structured-data/organization?ref=t01.li), die oft untergehen. Das Logo muss mindestens 112 × 112 Pixel groß und crawlbar sein. Die `vatID` beschreibt Google als wichtiges Vertrauenssignal für Nutzer. LEI- oder DUNS-Nummern gehören über `iso6523Code` mit passendem Präfix ins Markup (0199 für LEI, 0060 für DUNS). In `sameAs` gehören nur Profile, die wirklich dem Unternehmen gehören oder es eindeutig beschreiben – zehn halbtote Social-Media-Accounts helfen keinem Knowledge Graph.

Im Quelltext von t01.li steht ein Graph aus Organization, WebSite und Person, auf jeder Seite ausgegeben, mit Verweisen auf LinkedIn, X, Bluesky und GitHub und klartxt als `worksFor`. Ganz sauber ist er nicht, dazu gleich mehr.

### BlogPosting, NewsArticle und Article

Für redaktionelle Seiten bietet Google drei Typen an, und der spezifischste gewinnt: *NewsArticle* für Nachrichten, *BlogPosting* für Blogbeiträge, *Article* als Sammelbecken. Laut [Article-Doku](https://developers.google.com/search/docs/appearance/structured-data/article?ref=t01.li) ist für Top Stories kein Markup nötig. Es hilft Google aber, Titel, Bilder, Datum und Autor eindeutig zuzuordnen. Besonders wichtig ist die Autorenangabe mit `url` auf eine echte Autorenseite, weil Google darüber Autoren gleichen Namens auseinanderhält, und für diese Autorenseite gibt es mit *ProfilePage* einen eigenen Typ, in dem die *Person* als `mainEntity` steht.

Das Beispiel zeigt den Graphen einer Artikelseite mit WebPage, BreadcrumbList und dem Beitrag. Autor und Herausgeber stehen in Kurzform mit Namen dabei, mit derselben `@id` wie auf Autorenseite und Startseite.

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebPage",
      "@id": "https://www.beispiel-gmbh.de/blog/waermepumpe-altbau/#webpage",
      "url": "https://www.beispiel-gmbh.de/blog/waermepumpe-altbau/",
      "name": "Wärmepumpe im Altbau: Wann sie sich rechnet",
      "isPartOf": { "@id": "https://www.beispiel-gmbh.de/#website" },
      "breadcrumb": { "@id": "https://www.beispiel-gmbh.de/blog/waermepumpe-altbau/#breadcrumb" },
      "inLanguage": "de-DE"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.beispiel-gmbh.de/blog/waermepumpe-altbau/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Start", "item": "https://www.beispiel-gmbh.de/" },
        { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.beispiel-gmbh.de/blog/" },
        { "@type": "ListItem", "position": 3, "name": "Wärmepumpe im Altbau" }
      ]
    },
    {
      "@type": "BlogPosting",
      "@id": "https://www.beispiel-gmbh.de/blog/waermepumpe-altbau/#article",
      "mainEntityOfPage": { "@id": "https://www.beispiel-gmbh.de/blog/waermepumpe-altbau/#webpage" },
      "headline": "Wärmepumpe im Altbau: Wann sie sich rechnet",
      "description": "Vorlauftemperatur, Heizkörper, Förderung: worauf es bei der Wärmepumpe im Altbau ankommt.",
      "image": [
        {
          "@type": "ImageObject",
          "url": "https://www.beispiel-gmbh.de/assets/blog/waermepumpe-altbau-1200.jpg",
          "width": 1200,
          "height": 675
        }
      ],
      "datePublished": "2026-09-14T08:00:00+02:00",
      "dateModified": "2026-10-02T11:30:00+02:00",
      "author": { "@id": "https://www.beispiel-gmbh.de/team/anna-beispiel/#person" },
      "publisher": { "@id": "https://www.beispiel-gmbh.de/#organization" },
      "inLanguage": "de-DE"
    },
    {
      "@type": "Person",
      "@id": "https://www.beispiel-gmbh.de/team/anna-beispiel/#person",
      "name": "Anna Beispiel",
      "url": "https://www.beispiel-gmbh.de/team/anna-beispiel/"
    },
    {
      "@type": "Organization",
      "@id": "https://www.beispiel-gmbh.de/#organization",
      "name": "Beispiel Elektrotechnik",
      "url": "https://www.beispiel-gmbh.de/",
      "logo": "https://www.beispiel-gmbh.de/assets/logo-512.png"
    }
  ]
}
```

`dateModified` verdient eine eigene Warnung. Das Feld zeigt eine echte inhaltliche Änderung an. Manche Templates setzen es bei jedem Rendern auf das aktuelle Datum, was nach außen behauptet, die Seite sei frisch, obwohl sich nichts geändert hat.

Bei t01.li steht an dieser Stelle der allgemeine Typ *Article*, wo *BlogPosting* präziser wäre, `mainEntityOfPage` ist nur eine URL ohne eigenen WebPage-Knoten, und das Artikelbild kommt ohne Maße. Nichts davon ist ein Fehler im Sinne des Validators. Präziser ginge es, und das steht jetzt auf meiner Liste.

### Product und Offer

Im Shop ist *Product* der wichtigste Typ. Google unterscheidet in der [Produkt-Doku](https://developers.google.com/search/docs/appearance/structured-data/product?ref=t01.li) zwei Fälle: Produkt-Snippets für Seiten, auf denen man nichts kaufen kann (Testberichte, Herstellerseiten), und Merchant Listings für Seiten mit Kaufmöglichkeit. Für Letztere lohnen sich Versand- und Rückgabeangaben, weil Google sie in den Shopping-Ergebnissen anzeigen kann. Gelten sie für den ganzen Shop, gehören sie laut [Merchant-Listing-Doku](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing?ref=t01.li) einmal ins Organization-Markup, und am Produkt stehen nur Abweichungen. Das Beispiel zeigt sie der Vollständigkeit halber am Angebot.

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://shop.beispiel-gmbh.de/p/akku-bohrschrauber-bx18/#product",
  "name": "Akku-Bohrschrauber BX18",
  "description": "18-Volt-Bohrschrauber mit bürstenlosem Motor, zwei Akkus und Ladegerät.",
  "image": [
    "https://shop.beispiel-gmbh.de/img/bx18-front-1200.jpg",
    "https://shop.beispiel-gmbh.de/img/bx18-seite-1200.jpg"
  ],
  "sku": "BX18-SET",
  "gtin13": "4012345678901",
  "brand": { "@type": "Brand", "name": "Beispiel Tools" },
  "offers": {
    "@type": "Offer",
    "url": "https://shop.beispiel-gmbh.de/p/akku-bohrschrauber-bx18/",
    "price": 189.90,
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "@id": "https://www.beispiel-gmbh.de/#organization",
      "name": "Beispiel Elektrotechnik"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": { "@type": "MonetaryAmount", "value": 0, "currency": "EUR" },
      "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "DE" },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
        "transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 2, "unitCode": "DAY" }
      }
    },
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "DE",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30,
      "returnMethod": "https://schema.org/ReturnByMail",
      "returnFees": "https://schema.org/FreeReturn"
    }
  }
}
```

Der Preis steht als Zahl mit Punkt als Dezimaltrennzeichen. Deutsche Shopsysteme, die den sichtbaren Preis mit Komma formatieren und denselben String ins JSON-LD kippen, produzieren ungültige Werte. Seit Juli dokumentiert Google auch `category` am Produkt und Angaben zur Laufzeit von Sonderpreisen über `validFrom` und `validThrough`.

Der wichtigere Punkt steht in einem einzigen Satz der Doku. Wer sowohl Markup als auch einen Feed im *Merchant Center* liefert, „maximizes your eligibility to experiences and helps Google correctly understand and verify your data“. Google gleicht beide Quellen ab. Weichen Preis oder Verfügbarkeit zwischen Seite, JSON-LD und Feed voneinander ab, hat Google ein Datenproblem, und das landet bei der Website. Der KI-Leitfaden verweist für Produktinformationen in KI-Antworten ausgerechnet auf das *Merchant Center*.

### ProductGroup für Varianten

Vier Farben und fünf Größen eines T-Shirts sind keine zwanzig unabhängigen Produkte. Google unterstützt dafür [ProductGroup](https://developers.google.com/search/docs/appearance/structured-data/product-variants?ref=t01.li) mit `variesBy` und `hasVariant`. Jede Variante bleibt ein eigenes *Product* mit eigener SKU und eigenem Angebot.

```json
{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "@id": "https://shop.beispiel-gmbh.de/p/arbeitsshirt-pro/#productgroup",
  "name": "Arbeitsshirt Pro",
  "description": "Strapazierfähiges Arbeitsshirt aus Baumwoll-Mischgewebe.",
  "brand": { "@type": "Brand", "name": "Beispiel Workwear" },
  "productGroupID": "AS-PRO",
  "variesBy": [
    "https://schema.org/color",
    "https://schema.org/size"
  ],
  "hasVariant": [
    {
      "@type": "Product",
      "sku": "AS-PRO-SCHWARZ-M",
      "gtin13": "4012345678918",
      "name": "Arbeitsshirt Pro, Schwarz, M",
      "image": "https://shop.beispiel-gmbh.de/img/as-pro-schwarz.jpg",
      "color": "Schwarz",
      "size": "M",
      "offers": {
        "@type": "Offer",
        "url": "https://shop.beispiel-gmbh.de/p/arbeitsshirt-pro/?variante=schwarz-m",
        "price": 29.90,
        "priceCurrency": "EUR",
        "availability": "https://schema.org/InStock"
      }
    },
    {
      "@type": "Product",
      "sku": "AS-PRO-SCHWARZ-L",
      "gtin13": "4012345678925",
      "name": "Arbeitsshirt Pro, Schwarz, L",
      "image": "https://shop.beispiel-gmbh.de/img/as-pro-schwarz.jpg",
      "color": "Schwarz",
      "size": "L",
      "offers": {
        "@type": "Offer",
        "url": "https://shop.beispiel-gmbh.de/p/arbeitsshirt-pro/?variante=schwarz-l",
        "price": 29.90,
        "priceCurrency": "EUR",
        "availability": "https://schema.org/OutOfStock"
      }
    }
  ]
}
```

Dieses Markup schreibt kaum jemand von Hand. Bei *Shopify* erzeugt es der Liquid-Filter `structured_data`, dazu weiter unten mehr.

### LocalBusiness

Für Betriebe mit Standort gilt die Regel vom spezifischsten Typ besonders. Schema.org kennt Dutzende Untertypen von *LocalBusiness*, etwa *Dentist* für die Zahnarztpraxis oder *AutoRepair* für die Werkstatt. Bei mehreren Filialen bekommt jede Standortseite eine eigene Entität mit eigener `@id` und verweist per `parentOrganization` auf die Firma.

```json
{
  "@context": "https://schema.org",
  "@type": "Electrician",
  "@id": "https://www.beispiel-gmbh.de/standorte/hannover/#business",
  "name": "Beispiel Elektrotechnik Hannover",
  "url": "https://www.beispiel-gmbh.de/standorte/hannover/",
  "image": "https://www.beispiel-gmbh.de/assets/standort-hannover.jpg",
  "telephone": "+49-511-1234567",
  "priceRange": "€€",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Musterstraße 12",
    "postalCode": "30159",
    "addressLocality": "Hannover",
    "addressCountry": "DE"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 52.37589,
    "longitude": 9.73201
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
      "opens": "07:30",
      "closes": "17:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Friday",
      "opens": "07:30",
      "closes": "14:00"
    }
  ],
  "areaServed": "Region Hannover",
  "parentOrganization": {
    "@type": "Organization",
    "@id": "https://www.beispiel-gmbh.de/#organization",
    "name": "Beispiel Elektrotechnik"
  }
}
```

Markup und Unternehmensprofil bei Google gehören zusammen. Name, Adresse, Telefonnummer und Öffnungszeiten müssen auf der Website, im JSON-LD und im Profil übereinstimmen. Für Bing gilt dasselbe mit *Bing Places*. Geänderte Öffnungszeiten an Feiertagen gehören in beide.

### JobPosting

Stellenanzeigen haben den klarsten Nutzen von allen, weil sie für die eigene Jobsuche von Google qualifizieren. Die [JobPosting-Doku](https://developers.google.com/search/docs/appearance/structured-data/job-posting?ref=t01.li) verlangt mehr als die meisten anderen Typen, etwa einen Arbeitgeber mit Namen und einen Arbeitsort mit Land.

```json
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "@id": "https://www.beispiel-gmbh.de/karriere/elektroniker-energietechnik/#job",
  "title": "Elektroniker für Energie- und Gebäudetechnik (m/w/d)",
  "description": "<p>Du installierst und wartest Elektro- und PV-Anlagen bei Privat- und Gewerbekunden in der Region Hannover.</p><ul><li>Abgeschlossene Ausbildung</li><li>Führerschein Klasse B</li></ul>",
  "identifier": {
    "@type": "PropertyValue",
    "name": "Beispiel Elektrotechnik",
    "value": "ELT-2026-07"
  },
  "datePosted": "2026-10-01",
  "validThrough": "2026-11-30T23:59:59+01:00",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "@id": "https://www.beispiel-gmbh.de/#organization",
    "name": "Beispiel Elektrotechnik",
    "sameAs": "https://www.beispiel-gmbh.de/",
    "logo": "https://www.beispiel-gmbh.de/assets/logo-512.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Musterstraße 12",
      "postalCode": "30159",
      "addressLocality": "Hannover",
      "addressRegion": "Niedersachsen",
      "addressCountry": "DE"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "EUR",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": 3400,
      "maxValue": 4100,
      "unitText": "MONTH"
    }
  }
}
```

Das Du in der Beschreibung ist Absicht, denn der Text stammt aus der sichtbaren Stellenanzeige und muss mit ihr übereinstimmen. Kritischer als jedes Feld ist der Lebenszyklus. Eine besetzte Stelle muss aus dem Markup verschwinden oder ein `validThrough` in der Vergangenheit bekommen, sonst landet eine Anzeige in der Jobsuche, auf die sich niemand mehr bewerben kann.

### VideoObject

Für Videos auf der eigenen Website beschreibt *VideoObject* Titel, Vorschaubild, Upload-Datum, Länge und Speicherort. Google hat die [Video-Doku](https://developers.google.com/search/docs/appearance/structured-data/video?ref=t01.li) erst Ende September aktualisiert und dabei `creator` aufgenommen (mit Hinweis, dass auch `author` funktioniert) sowie die zulässigen Werte für `interactionStatistic` präzisiert.

```json
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "@id": "https://www.beispiel-gmbh.de/videos/wallbox-installation/#video",
  "name": "Wallbox installieren: Ablauf vom Termin bis zur Abnahme",
  "description": "Unser Meister zeigt in zwölf Minuten, wie eine Wallbox-Installation abläuft und was vorher geklärt sein muss.",
  "thumbnailUrl": [
    "https://www.beispiel-gmbh.de/assets/video/wallbox-thumb-1280.jpg"
  ],
  "uploadDate": "2026-09-22T09:00:00+02:00",
  "duration": "PT12M14S",
  "contentUrl": "https://media.beispiel-gmbh.de/video/wallbox-installation.mp4",
  "embedUrl": "https://www.beispiel-gmbh.de/player/wallbox-installation",
  "inLanguage": "de-DE",
  "creator": {
    "@type": "Organization",
    "@id": "https://www.beispiel-gmbh.de/#organization",
    "name": "Beispiel Elektrotechnik"
  },
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": { "@type": "WatchAction" },
    "userInteractionCount": 4180
  }
}
```

Für Key Moments kommen per `hasPart` einzelne *Clip*\-Objekte mit Start- und Endzeit dazu, alternativ bestimmt Google per `SeekToAction` die Sprungmarken selbst. Für Videos auf YouTube erledigt das die Plattform, das Markup lohnt sich vor allem für selbst gehostete Videos.

### Recipe

Rezepte gehören zu den ältesten und weiterhin stabilsten Rich Results. Interessant am Typ ist, dass er intern auf *HowToStep* zurückgreift, also genau auf den Baustein, dessen eigenständiges Rich Result Google 2023 abgeschafft hat.

```json
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "@id": "https://www.beispiel-kocht.de/rezepte/linsensuppe/#recipe",
  "name": "Linsensuppe mit geräuchertem Tofu",
  "image": [
    "https://www.beispiel-kocht.de/img/linsensuppe-1x1.jpg",
    "https://www.beispiel-kocht.de/img/linsensuppe-4x3.jpg",
    "https://www.beispiel-kocht.de/img/linsensuppe-16x9.jpg"
  ],
  "author": { "@type": "Person", "name": "Anna Beispiel", "url": "https://www.beispiel-kocht.de/ueber-mich/" },
  "datePublished": "2026-09-20",
  "description": "Herzhafte Linsensuppe, die in 45 Minuten auf dem Tisch steht.",
  "prepTime": "PT15M",
  "cookTime": "PT30M",
  "totalTime": "PT45M",
  "recipeYield": "4 Portionen",
  "recipeCategory": "Hauptgericht",
  "recipeCuisine": "Deutsch",
  "keywords": "Linsen, Eintopf, vegan",
  "recipeIngredient": [
    "250 g Tellerlinsen",
    "200 g Räuchertofu",
    "2 Karotten",
    "1 Zwiebel",
    "1,2 l Gemüsebrühe"
  ],
  "recipeInstructions": [
    { "@type": "HowToStep", "name": "Gemüse schneiden", "text": "Zwiebel, Karotten und Tofu würfeln." },
    { "@type": "HowToStep", "name": "Anbraten", "text": "Zwiebel und Tofu in Öl anbraten, Karotten zugeben." },
    { "@type": "HowToStep", "name": "Köcheln", "text": "Linsen und Brühe zugeben und 30 Minuten köcheln lassen." }
  ],
  "nutrition": { "@type": "NutritionInformation", "calories": "420 kcal" }
}
```

`aggregateRating` fehlt im Beispiel mit Absicht. Bewertungen gehören nur ins Markup, wenn echte Nutzerbewertungen existieren und auf der Seite sichtbar sind.

### Dataset

*Dataset* ist ein Nischentyp mit klarer Zielgruppe: Forschung, Behörden, Verbände und Unternehmen, die Daten offen bereitstellen. Seit November 2025 stellt Google klar, dass das Markup [nur noch für die *Dataset Search*](https://developers.google.com/search/updates?ref=t01.li) genutzt wird und nicht für die normale Google-Suche.

```json
{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "@id": "https://daten.beispiel-verband.de/datensaetze/pv-ertraege-2026/#dataset",
  "name": "PV-Erträge kleiner Dachanlagen in Niedersachsen 2026",
  "description": "Monatliche Erträge von 1.240 Photovoltaik-Dachanlagen unter 30 kWp, erhoben von Januar bis September 2026.",
  "url": "https://daten.beispiel-verband.de/datensaetze/pv-ertraege-2026/",
  "keywords": ["Photovoltaik", "Ertrag", "Niedersachsen", "2026"],
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "isAccessibleForFree": true,
  "creator": {
    "@type": "Organization",
    "name": "Beispiel Energieverband e. V.",
    "url": "https://www.beispiel-verband.de/"
  },
  "temporalCoverage": "2026-01-01/2026-09-30",
  "spatialCoverage": { "@type": "Place", "name": "Niedersachsen" },
  "distribution": [
    {
      "@type": "DataDownload",
      "encodingFormat": "text/csv",
      "contentUrl": "https://daten.beispiel-verband.de/files/pv-ertraege-2026.csv"
    }
  ]
}
```

Für die KI-Suche hat das keine dokumentierte Wirkung. Gut beschriebene Primärdaten können eine gefragte Quelle sein. Das liegt dann am Inhalt, das Markup sorgt bloß dafür, dass die *Dataset Search* ihn findet.

### FAQPage und HowTo: nur noch mit gutem Grund

Seit dem 7\. Mai 2026 zeigt Google [keine FAQ-Rich-Results mehr](https://developers.google.com/search/updates?ref=t01.li), auch nicht für Behörden- und Gesundheitsseiten, die seit 2023 die letzte Ausnahme waren. Im Juni sind Doku, Search-Console-Bericht und Prüfung im *Rich Results Test* gefolgt. HowTo-Ergebnisse gibt es schon seit September 2023 weder auf dem Desktop noch mobil. Ratgeber, die *FAQPage* wegen größerer Snippets empfehlen, sind damit veraltet. Im Mai habe ich noch geschrieben, *FAQPage* sei „nicht zu verwechseln mit FAQ-Schema“. Doch, genau das ist es. Der Satz war Unsinn.

Verboten ist das Markup nicht, und schaden tut es auch nicht, solange die Fragen sichtbar auf der Seite stehen. Einen Nutzen in der KI-Suche hat bisher niemand belegt. Die Zeit für einen FAQ-Bereich ist in klaren Fragen als Zwischenüberschriften und guten Antworten darunter besser angelegt, denn die liest jedes System, ob mit oder ohne Markup. Für Seiten, auf denen Nutzer Fragen stellen und mehrere Antworten geben, gibt es mit *QAPage* ein eigenes, weiter unterstütztes Format.

## Umsetzung: so gehe ich ein Schema-Projekt an

Die Beispiele oben sind die einfache Hälfte. Der Aufwand steckt darin, das Markup dauerhaft korrekt zu halten, während sich Preise, Öffnungszeiten, Stellen und Autoren ändern. Die Reihenfolge, die sich dafür bewährt, fängt bei den Templates an.

1. **Seitentypen inventarisieren.** Welche Templates gibt es überhaupt? Startseite, Artikel, Produkt, Kategorie, Standort, Stelle, Video. Die Frage lautet zuerst, welche Dinge die Website beschreibt, und erst danach, welche Typen es dafür gibt.
2. **Pro Template eine Hauptentität festlegen.** Eine Rezeptseite mit eingebettetem Video beschreibt ein Rezept, das Video hängt als Teil daran.
3. **Felder zuordnen.** Für jede Property steht fest, aus welchem Datenfeld sie kommt und wo derselbe Wert sichtbar auf der Seite erscheint.
4. **Stabile IDs vergeben.** `https://www.beispiel-gmbh.de/#organization` bleibt für immer gleich. Neue IDs bei jedem Relaunch zerlegen den Graphen.
5. **JSON-LD aus denselben Daten erzeugen wie das HTML.** Kein Copy-and-paste, keine Felder, die nur fürs Markup gepflegt werden.
6. **Serverseitig ausliefern.** Dazu gleich mehr.
7. **Pilot pro Template.** Einige repräsentative URLs ausrollen, prüfen, dann alles.

Für Schritt 3 reicht eine schlichte Tabelle. So sieht sie für ein Blog-Template aus:

| Datenfeld im CMS                                 | sichtbar auf der Seite | Property      |
| ------------------------------------------------ | ---------------------- | ------------- |
| post.title                                       | H1                     | headline      |
| post.feature\_image                              | Artikelbild            | image         |
| post.published\_at                               | „Veröffentlicht am …“  | datePublished |
| post.updated\_at (nur bei inhaltlicher Änderung) | „Aktualisiert am …“    | dateModified  |
| author.name, author.url                          | Autorenbox             | author        |

Zu Schritt 6: Google verarbeitet auch JSON-LD, das per JavaScript eingefügt wird, das steht so in der [Doku](https://developers.google.com/search/docs/appearance/structured-data/generate-structured-data-with-javascript?ref=t01.li). Für andere Systeme gibt es dazu keine Zusage. Im Test von searchVIU war *Gemini* das einzige System, das beim Live-Abruf JavaScript ausgeführt hat. In [Vercels Log-Auswertung von Ende 2024](https://vercel.com/blog/the-rise-of-the-ai-crawler?ref=t01.li) führten die damaligen Crawler von OpenAI und Anthropic kein JavaScript aus. Eine aktuelle offizielle Zusage zum Rendering gibt es von keinem der beiden Anbieter. Per Tag-Manager nachgeladenes Markup ist damit die riskantere Wahl. Serverseitig ausgeliefertes JSON-LD funktioniert für jeden Abrufer, der etwas damit anfängt. Welche Bots tatsächlich vorbeikommen, zeigt ein Blick in die Logs, ich nutze dafür [mein kleines Tool *LogWerk*](https://t01.li/geo-seo/logwerk-weil-ich-nur-sehen-wollte-welche-bots-den-log-vollmullen/).

### WordPress, Shopify, TYPO3 und Ghost

**WordPress.** *Yoast SEO* und *Rank Math* geben von Haus aus einen verknüpften Graphen aus Organization, WebSite, WebPage, Person und Artikel aus und lassen sich per Filter erweitern. Das häufigste Problem entsteht, wenn mehrere Quellen gleichzeitig Markup erzeugen: das SEO-Plugin, *WooCommerce*, ein Rezept-Plugin, das Theme und ein selbst eingebautes Snippet. Mehrere Objekte auf einer Seite sind erlaubt. Drei verschiedene Organisationen mit drei verschiedenen Logos sind es im Sinne der Sache nicht. Bevor ein weiteres Plugin dazukommt, lohnt der Blick in den Quelltext einer Produkt- und einer Artikelseite.

**Shopify.** Viele Themes bringen Produkt-Markup schon mit. Bevor eine Schema-App installiert wird, gehört deshalb der Quelltext geprüft. Für eigene Themes gibt es seit einiger Zeit den Liquid-Filter [structured\_data](https://shopify.dev/docs/api/liquid/filters/structured%5Fdata?ref=t01.li), der aus einem Produkt ein *Product* macht, aus einem Produkt mit Varianten eine *ProductGroup* und aus einem Blogartikel ein *Article*:

```liquid
<script type="application/ld+json">
  {{ product | structured_data }}
</script>
```

Das deckt die Grundlagen ab, Versand- und Rückgabeangaben, GTINs aus Metafields oder die Verknüpfung mit der Organisation fehlen aber. Wer mehr braucht, baut sich das JSON-LD in einem eigenen Snippet und gibt Werte konsequent mit dem `json`\-Filter aus.

**TYPO3.** Mit der Extension [schema](https://extensions.typo3.org/extension/schema?ref=t01.li) (Composer-Paket `brotkrueml/schema`) lassen sich Typen per PHP-API oder ViewHelper erzeugen. Bei größeren Installationen würde ich das Mapping zentral im Code halten und Redaktionen kein JSON-LD in Inhaltselemente tippen lassen, weil getrennt gepflegte Werte früher oder später auseinanderlaufen.

**Ghost.** Ghost gibt über `{{ghost_head}}` ein Grund-Markup für Artikel, Autoren und Website aus. Erweitern oder ersetzen lässt sich das im Theme. t01.li läuft zum Zeitpunkt der Veröffentlichung dieses Artikels auf Ghost v6.70 mit dem eigenen Graphen, den ich oben beschrieben habe, inklusive der Schwächen, die mir bei der Recherche zu diesem Text aufgefallen sind.

### robots.txt: Suche erlauben, Training getrennt entscheiden

Das beste Markup nützt nichts, wenn der Crawler die Seite nicht lesen darf. Google nennt Crawlbarkeit und Indexierbarkeit als Voraussetzung für die KI-Funktionen. Bei OpenAI und Anthropic lässt sich die Suche getrennt vom Training steuern. Perplexity dokumentiert keinen separaten Trainings-Crawler, seine veröffentlichten User-Agents dienen der Suche und nutzergetriggerten Abrufen. Laut [OpenAI](https://developers.openai.com/api/docs/bots?ref=t01.li) dauert es rund 24 Stunden, bis eine Änderung an der robots.txt greift.

Zwei Verwechslungen kommen oft vor. `Google-Extended` regelt nur, ob Inhalte in das Training und Grounding von *Gemini* einfließen, auf die Google-Suche und die *AI Overviews* hat die Zeile keinen Einfluss. Ein gesperrter `Bingbot` sperrt dagegen auch *Copilot* aus, weil Copilot auf dem Bing-Index aufsetzt.

```text
# Suche: erlauben
User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

# Training: bewusst entscheiden, hier gesperrt
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /
```

Ob Training gesperrt wird, entscheidet die Geschäftsführung, mit SEO hat das wenig zu tun. Das Beispiel zeigt nur, wie die Trennung technisch aussieht. t01.li hat gar keine eigenen Regeln für KI-Crawler, dort gilt die Ghost-Standarddatei und damit für alle Bots freie Fahrt. Abgeholt wird die robots.txt von allen großen Anbietern, bei meiner [Log-Auswertung zur llms.txt](https://t01.li/geo-seo/llms-txt-liest-kein-bot/) gern mehrmals am Tag. Mit gesperrten Suchbots kennt *ChatGPT* eine Website bestenfalls noch als Link ohne Inhalt.

## Prüfen: grün heißt nicht sichtbar

Für die Prüfung gibt es zwei Werkzeuge mit unterschiedlichen Fragen. Der [Schema Markup Validator](https://validator.schema.org/?ref=t01.li) prüft, ob das Markup dem Schema.org-Vokabular entspricht, und zwar „without Google-specific validation“. Der [Rich Results Test](https://search.google.com/test/rich-results?ref=t01.li) prüft, ob eine Seite für die Rich Results von Google in Frage kommt. Ein *HowTo* kann im ersten Werkzeug fehlerfrei durchlaufen und im zweiten gar nicht auftauchen, weil Google den Typ nicht mehr auswertet.

Nach dem Rollout folgt die URL-Prüfung in der *Search Console*, die zeigt, was Google auf der indexierten Seite tatsächlich gefunden hat. Auf Dauer sind die Berichte zu den einzelnen Rich-Result-Typen und zu nicht parsbaren strukturierten Daten die Frühwarnung, wenn ein Theme-Update oder ein neues Plugin das Markup zerlegt. In einer Build-Pipeline lässt sich zusätzlich vor jedem Deployment automatisch prüfen, ob das JSON-LD gültiges JSON ist und die Pflichtfelder pro Template gefüllt sind. Das fängt die meisten Regressionen ab, bevor Google sie meldet.

Ein grüner Test bedeutet, dass eine Seite Rich Results bekommen kann. Eine Garantie gibt Google dafür nicht.

## Messen, ob es in der KI-Suche etwas bringt

Lange war das der unangenehmste Teil, weil es keine Daten gab. Inzwischen liefern Google, Microsoft und OpenAI zumindest Teile davon selbst.

**Google.** Im Juni hat Google in der *Search Console* einen eigenen [Bericht für die generativen Funktionen](https://developers.google.com/search/blog/2026/06/gen-ai-performance-reports?ref=t01.li) angekündigt, seit dem 31\. August ist er laut Google weltweit für alle Websites verfügbar. Er zeigt, wie oft Links zur Website in *AI Overviews* und *AI Mode* erschienen sind, aufgeschlüsselt nach Seiten, Ländern, Zeitraum und Geräten, dazu einen eigenen Bericht für *Discover*. Klicks und Suchanfragen fehlen, es sind reine Impressionen.

**Microsoft.** *AI Performance* in den *Bing Webmaster Tools* zählt Zitate in *Copilot* und bei Partnern, zeigt die zitierten Seiten und eine Stichprobe der sogenannten Grounding Queries, also der Suchanfragen, die das Modell zum Belegen abgeschickt hat. Seit [Juni](https://blogs.bing.com/search/2026/6/New-AI-Visibility-Insights-in-Bing-Webmaster-Tools-Intents-Topics-Citation-Share-Compare/?ref=t01.li) kommen Absichten (Informational, Commercial, Local und weitere), Themencluster und der Citation Share dazu, der eigene Anteil an allen Zitaten zu einer Grounding Query. Microsoft ordnet den Wert als Beobachtungsgröße ein, die weder Rankings noch Traffic abbildet.

**OpenAI.** Für die ChatGPT-Suche gibt es keine Webmaster-Daten. Links aus der Suche tragen laut OpenAIs [FAQ für Publisher](https://help.openai.com/en/articles/12627856-publishers-and-developers-faq?ref=t01.li) den Parameter `utm_source=chatgpt.com`, damit lassen sich Besuche, Landingpages und Conversions in der Webanalyse getrennt auswerten. Zitate ohne Klick bleiben unsichtbar.

**Update vom 15\. Oktober 2026:** Auf den Parameter ist kein Verlass mehr, seit OpenAI am [7\. Oktober](https://community.openai.com/t/gpt-6-and-intelligent-ui-in-chatgpt/1404139?ref=t01.li) *GPT-6* und die neue *Intelligent UI* in ChatGPT eingeführt hat. [Profound hat ausgezählt](https://www.tryprofound.com/blog/chatgpt-missing-utm-tags?ref=t01.li), wie viele der eigenen gesammelten ChatGPT-Antworten mit Quellen mindestens einen Link mit dem Parameter enthalten: am 8\. Oktober rund 98 %, am 9\. Oktober 75 %, am 14\. Oktober 66 %. Im selben Zeitraum stieg der Anteil der Antworten in der Intelligent UI von 2 auf rund 35 %. Cedric Huesler von Adobe hat laut [Search Engine Roundtable](https://www.seroundtable.com/utm-parameters-missing-chatgpt-42299.html?ref=t01.li) beobachtet, dass GPT-6 Links mit `noopener,noreferrer` öffnet und den Parameter dabei weglässt. Ohne Parameter und ohne Referrer verbucht die Webanalyse einen solchen Besuch als Direct.

Ob die Änderung gewollt ist, welche Clients sie betrifft (Web, Apps, *Atlas*) und ob sie bleibt, ist offen. Sinken die ChatGPT-Besuche ab dem 8\. Oktober, kann das allein an der fehlenden Kennzeichnung liegen. Zeiträume vor und nach dem 7\. Oktober lassen sich deshalb nicht direkt vergleichen. Einen Anhaltspunkt liefern die Direct-Zugriffe auf tiefe Landingpages, die kaum jemand von Hand aufruft. Steigen sie im selben Zeitraum, spricht das für eine Verschiebung in der Messung.

Mit diesen drei Quellen lässt sich die Schema-Frage für die eigene Website zum ersten Mal halbwegs sauber beantworten. Halbwegs, weil KI-Zitate stark schwanken. Microsoft nennt als Gründe unter anderem Modell-Updates, Nachfrage und Aktualität. Eine Vorher-nachher-Messung ohne Vergleichsgruppe misst damit vor allem den Markttrend. Besser funktioniert ein Aufbau nach dem Muster der Ahrefs-Auswertung:

- Zwei Gruppen vergleichbarer Seiten bilden, etwa 50 Produktseiten mit erweitertem Markup und 50 ohne Änderung, und die Seiten zufällig auf die Gruppen verteilen.
- Mindestens vier Wochen Vorlauf speichern: KI-Impressionen in der Search Console, Bing-Zitate, ChatGPT-Besuche, klassische Klicks.
- In der Zeit keine anderen Änderungen an diesen Seiten, kein Relaunch, keine neuen Texte.
- Danach zählt die Differenz zwischen den Gruppen. Steigen beide gleich stark, war es der Markt.

Das klappt nur mit genug Daten. Bei Seiten mit einer Handvoll KI-Impressionen im Monat misst auch dieser Aufbau vor allem Rauschen.

Wie ein Messdesign für Fragen an die Assistenten selbst aussieht, habe ich im Text zur [KI-Sichtbarkeit für KMU](https://t01.li/geo-seo/ki-sichtbarkeit-kmu-was-wirklich-zaehlt/) beschrieben. Und mehr Sichtbarkeit in der Antwort heißt nicht automatisch mehr Besuche. Eine [Auswertung zur Wikipedia](https://arxiv.org/abs/2602.18455?ref=t01.li) schätzt, dass die *AI Overviews* die Suchverweise auf englische Artikel um rund 5 % gesenkt haben, gemessen gegen die deutsche und die französische Ausgabe (Working Paper, nicht begutachtet).

## Was in der Praxis schiefgeht

**Markup und Seite erzählen Verschiedenes.** Ein Preis im JSON-LD, der vom sichtbaren abweicht, Bewertungen ohne sichtbare Bewertungen, Fragen, die nur im Markup stehen. Damit riskiert eine Website eine manuelle Maßnahme, die Rich Results kostet.

**Validiert wird mit „wird angezeigt“ verwechselt.** Der Rich Results Test prüft die Eignung. Ob Google ein Rich Result zeigt, entscheidet Google je Suchanfrage.

**Schema.org und Google werden gleichgesetzt.** Schema.org kennt in der aktuellen Version 30.1 mehrere Hundert Typen. Google wertet für Rich Results einen Bruchteil davon aus. Welche das sind, steht in der [Search Gallery](https://developers.google.com/search/docs/appearance/structured-data/search-gallery?ref=t01.li).

**Alte Ratgeber werden weiter befolgt.** *FAQPage* für größere Snippets, *HowTo* für Schrittanzeigen, Ergebnisse für Kursinformationen oder geschätzte Gehälter: Google hat seit 2023 eine ganze Reihe dieser Funktionen eingestellt, zuletzt im Januar und im Mai 2026.

**Mehrere Quellen erzeugen konkurrierende Entitäten.** Theme, SEO-Plugin und Shop-Erweiterung beschreiben jeweils ihre eigene Organisation, mit unterschiedlichen Namen und Logos.

**Zeitkritische Daten veralten.** Abgelaufene Stellen, beendete Aktionen, ausverkaufte Produkte mit `InStock`. Google kann solche Seiten von Rich Results ausschließen.

### Der hotte Take zum Schluss

Strukturierte Daten liefern den Systemen, die eine Website indexieren, explizite Metadaten. Dass ein Sprachmodell beim Antworten JSON-LD auswertet und eine Seite deshalb häufiger zitiert, gibt keine Messung her, und in den Unterlagen von 2026 behauptet es auch kein Anbieter. Belegt ist der Nutzen dort, wo Schema schon immer gewirkt hat, bei der Zuordnung von Entitäten, bei Suchfunktionen und bei sauberen Produkt- und Standortdaten im Index. Ob daraus über den Umweg der Suchmaschinen mehr KI-Zitate entstehen, ist offen. Für kleine Websites fehlt selbst die Ahrefs-Messung, sie hat nur Seiten untersucht, die schon vorher oft zitiert wurden, und dort stehen die meisten KMU nicht.

Für ein KMU heißt das konkret: Organization und WebSite auf der Startseite, *ProfilePage* auf den Autorenseiten, den passenden Typ pro Template aus denselben Daten wie der sichtbare Text, im Shop Markup plus Feed, vor Ort Markup plus Unternehmensprofil. Dazu die Suchbots in der robots.txt freigeben und die neuen Berichte von Google und Bing einmal im Monat ansehen. Das ist unspektakulär und für die meisten Websites überschaubar. Was dann noch an Budget übrig ist, gehört in Inhalte, die eine KI-Antwort zitieren will.