Schema.org for AI Search: How to Appear in ChatGPT, Perplexity, and Google AI Mode

Schema.org for AI Search: How to Appear in ChatGPT, Perplexity, and Google AI Mode

Last verified: October 15, 2026
16 min read
Guide
500+ WP projects
Technical SEO

Search is splitting. In 2026, users don’t just search Google: they ask ChatGPT, query Perplexity, use Google AI Mode, and talk to voice assistants. Each of these systems consumes web content differently, and each vendor documents different rules. Google says no special schema.org markup is needed for its AI features. OpenAI, Perplexity and Anthropic document which crawlers must reach your pages before you can be cited at all.

AEO (Answer Engine Optimization) and GEO (Generative Engine Optimization) are the labels the industry uses for visibility in AI answers. Schema.org is one layer of that work: it describes your entities and makes pages eligible for rich results. Crawl access, indexing and the content itself decide the rest.

Ranking on page one no longer guarantees organic traffic, because the user may read a generated summary instead of the result list. JSON-LD gives search engines explicit clues about the page: who published it, who wrote it, what it is about. Google’s own wording is that structured data provides “explicit clues about the meaning of a page”.

Official references: Schema.org documents, Google structured data intro, and the W3C JSON-LD recommendation.

#How AI search engines use Schema.org in 2026

#What Google documents about structured data in AI Overviews and AI Mode

Google published two documents that settle most of the AEO debate for its own surfaces. The AI features page says there are no additional requirements to appear in AI Overviews or AI Mode, no special optimizations, and no special schema.org structured data to add. To be shown as a supporting link, a page must be indexed and eligible to be shown in Google Search with a snippet. Indexing and serving are not guaranteed.

The guide to optimizing for generative AI features, published in May 2026, explains why. AI Overviews and AI Mode are rooted in Google’s core ranking and quality systems. They use retrieval-augmented generation, which Google also calls grounding, to pull pages from the Search index, and query fan-out, which issues several related searches across subtopics to collect more results. From Google’s side, optimizing for generative AI search is still SEO.

The same guide lists what you can skip for Google Search:

  • llms.txt and other AI text files. Google Search does not use them. Keeping one for other systems neither helps nor harms your Google visibility.
  • Chunking content into small pieces. Google says its systems understand several topics on one page.
  • Rewriting copy for AI. The guide states that AI systems understand synonyms, so you do not need every long-tail variant.
  • Overfocusing on structured data. It is not required for generative AI search. Google still recommends it because it keeps pages eligible for rich results.

#What each AI search vendor documents

SystemWhat the vendor documentsSource
Google AI Overviews and AI ModeNo special schema.org markup; page must be indexed and snippet-eligibleGoogle Search Central
ChatGPT searchOAI-SearchBot surfaces sites in ChatGPT search; GPTBot collects training dataOpenAI crawlers
PerplexityPerplexityBot surfaces and links sites in Perplexity search; it is not used for trainingPerplexity crawlers
ClaudeClaude-SearchBot improves search results; Claude-User fetches pages for user questions; ClaudeBot collects training dataAnthropic help center

None of these vendors publishes a rule that a given schema type gets a page into an answer. What they do publish is crawler access and, for Google, the indexing and snippet conditions.

#What structured data still tells search engines

Without structured data, a search engine must infer meaning from raw text. With Schema.org, you state explicitly:

  • What your content is about (entities, topics)
  • Who created it (author, organization)
  • What a product costs and whether it is in stock (Offer)
  • What questions the page answers (FAQPage, when the answers are visible)

That makes the page easier to interpret and eligible for rich results. It does not replace crawl access, indexing, or the substance of the page.

#How to build a JSON-LD @graph in WordPress

A common failure mode is fragmented schema. Many plugins emit three separate <script type="application/ld+json"> blocks: one for the site, one for the author, one for the article. Each block looks like an isolated island, so crawlers must guess whether the author in block A belongs to the organization in block B.

The durable approach is one connected knowledge graph via the JSON-LD @graph key. Give every entity a stable @id (absolute URL fragment) and cross-reference nodes by those IDs.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://wppoland.com/#organization",
      "name": "WPPoland",
      "url": "https://wppoland.com",
      "sameAs": ["https://github.com/wppoland"]
    },
    {
      "@type": "Person",
      "@id": "https://wppoland.com/#author",
      "name": "Mariusz Szatkowski",
      "jobTitle": "WordPress developer",
      "worksFor": { "@id": "https://wppoland.com/#organization" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://wppoland.com/en/schema-org-ai-search-aeo-geo-guide-2026/#article",
      "headline": "Schema.org for AI Search",
      "inLanguage": "en",
      "author": { "@id": "https://wppoland.com/#author" },
      "publisher": { "@id": "https://wppoland.com/#organization" },
      "mainEntityOfPage": "https://wppoland.com/en/schema-org-ai-search-aeo-geo-guide-2026/"
    }
  ]
}

When a crawler reads that page, it sees one person tied to one organization publishing the article, with no guessing across script blocks. Three disconnected tags with the same strings carry the same words but not the relationships.

#How to write FAQPage schema that matches the visible page

FAQPage maps questions to answers. Schema.org defines FAQPage as a page presenting one or more frequently asked questions, and QAPage as a page focused on one specific question and its answers, such as a community Q&A thread. Use FAQPage for an editorial FAQ block and QAPage for user-generated questions.

Set expectations for Google. Since August 2023, FAQ rich results are shown only for well-known, authoritative government and health websites. For every other site the markup is valid, harmless, and has no visible effect in Google Search. Keep it if your other consumers use it, but do not sell it to a client as a rich result.

{
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How much does a WordPress website cost?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "WordPress website costs vary by complexity..."
      }
    }
  ]
}

Rules that hold whatever reads the markup:

  • The same question and answer must be visible on the page; Google’s structured data policies forbid marking up content that readers cannot see
  • Answer the exact question in the first sentence
  • Include specific numbers, dates, methods, or constraints when you have them
  • Phrase name the way real users ask, not how a brochure titles a section

#How to mark answer sections with Speakable

Schema.org defines speakable as the sections of a page that are especially appropriate for text-to-speech. Google’s support is narrower than most AEO guides suggest. Its speakable documentation marks the feature as beta, aimed at news publishers, and available to users in the U.S. with Google Home devices set to English. Google Assistant uses it to answer topical news queries on smart speakers.

{
  "@type": "WebPage",
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [".aeo-who", ".aeo-what", ".aeo-pricing"]
  }
}

Google recommends about 20 to 30 seconds of content per speakable section, roughly two or three sentences, and asks for either cssSelector or xPath, never both. Every selector must match an element that exists in the rendered HTML. Outside news publishing in U.S. English, treat speakable as a description of your page structure, not as a ranking or answer signal.

#How to mark up step-by-step guides with HowTo

HowTo is still a valid Schema.org type, but Google stopped showing it. HowTo rich results were limited to desktop in August 2023, and on September 13, 2023 Google stopped showing them on desktop too, which made the result type deprecated. Google announced it would drop the How-to search appearance, its rich result report and Rich Results Test support 30 days later.

{
  "@type": "HowTo",
  "name": "How to Migrate WordPress to Astro",
  "step": [
    {
      "@type": "HowToStep",
      "name": "Audit current site",
      "text": "Document all content, URLs, and functionality..."
    }
  ]
}

Keep HowTo only if the steps are real and visible on the page. Google says markup it no longer uses causes no problems, but it also has no visible effect.

#Product and AggregateRating schema for AI shopping

For shopping answers, Google’s generative AI guide points to Merchant Center feeds and Google Business Profile as the way products and local businesses get into AI responses. Product markup on the page complements the feed; it does not replace it.

{
  "@type": "Product",
  "name": "Thermo mug 0.45 l, brushed steel",
  "sku": "TM-045-BR",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "38"
  },
  "offers": {
    "@type": "Offer",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock"
  }
}

Ratings must come from reviews shown on the page. Google’s review snippet guidelines also exclude self-serving reviews: if a business controls the reviews about itself, its pages that use LocalBusiness or any other Organization type are ineligible for star ratings. A service company putting its own testimonials into AggregateRating is the case that rule describes. Keep Offer fields honest: currency, availability and taxes must match what the buyer sees.

#Article and Person schema for E-E-A-T in AEO

Google’s Article documentation has no required properties. For authors it asks for the Person type for people and Organization for organizations, one author entry per author, and a url or sameAs that uniquely identifies the author. Google says it understands both when disambiguating authors:

{
  "@type": "Article",
  "author": {
    "@type": "Person",
    "name": "Mariusz Szatkowski",
    "jobTitle": "Senior WordPress Developer",
    "sameAs": ["https://linkedin.com/in/...", "https://github.com/..."],
    "knowsAbout": ["WordPress", "WooCommerce", "Headless CMS"]
  }
}

The about and mentions properties with Wikidata URLs connect your content to the Knowledge Graph and reduce entity ambiguity:

{
  "@type": "Article",
  "about": [
    { "@type": "Thing", "name": "WordPress", "url": "https://www.wikidata.org/wiki/Q13166" },
    { "@type": "Thing", "name": "Core Web Vitals", "url": "https://www.wikidata.org/wiki/Q104618838" }
  ]
}

Schema.org defines about as the subject matter of the work and mentions as a reference to something the work is not necessarily about. Using them consistently tells a parser which entities the page discusses. For commercial sites, pair Wikidata with organization identifiers you already publish (company registry URLs, GitHub org, LinkedIn company page) via sameAs on the Organization node - not invented IDs.

#How to add Schema.org JSON-LD to WordPress

Generate schema programmatically in your theme or components. Prefer one @graph emitter over stacking plugin islands. This gives full control over every property:

// WordPress: output schema in wp_head
add_action('wp_head', function() {
    $schema = [
        '@context' => 'https://schema.org',
        '@type' => 'FAQPage',
        'mainEntity' => get_faq_items()
    ];
    echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
});

#Schema from Yoast SEO or Rank Math

Both plugins generate basic schema automatically. They are fine for defaults, but often struggle with custom @graph relationships, Speakable selectors, and Wikidata about/mentions. If you keep a plugin, treat it as a baseline and inject the missing graph edges yourself - or disable its JSON-LD and own the graph end to end.

#Schema in Astro or Next.js components

In headless architectures, schema is generated by frontend components:

---
// Astro: Schema component
const schema = {
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": faqItems.map(item => ({
    "@type": "Question",
    "name": item.question,
    "acceptedAnswer": { "@type": "Answer", "text": item.answer }
  }))
};
---
<script type="application/ld+json" set:html={JSON.stringify(schema)} />

#How to allow GPTBot and PerplexityBot in robots.txt

Schema has little value if you block the crawlers that need to read it. Fear of scraping leads some sites to disallow every bot; the side effect is disappearance from Perplexity and ChatGPT Search citations.

#Which AI crawlers are for search and which are for training

The vendors split their crawlers by purpose, and robots.txt treats each user-agent independently:

User-agentVendorPurpose according to the vendor
OAI-SearchBotOpenAISurfaces websites in ChatGPT search; sites that block it are not shown in ChatGPT search answers
GPTBotOpenAICrawls content that may be used to train OpenAI’s foundation models
PerplexityBotPerplexitySurfaces and links websites in Perplexity search; not used for training
Perplexity-UserPerplexityFetches a page when a user asks a question; generally ignores robots.txt because the user requested it
Claude-SearchBotAnthropicIndexes content to improve Claude’s search results
Claude-UserAnthropicRetrieves pages in response to a user’s question in Claude
ClaudeBotAnthropicCollects content that may be used for model training
Google-ExtendedGoogleLimits use for AI training and grounding in some of Google’s other systems; Search itself is governed by Googlebot

Sources: OpenAI, Perplexity, Anthropic, Google. The older anthropic-ai token is not in Anthropic’s current list, so a rule for it controls nothing.

A robots.txt that keeps you citable in AI search and opts out of training:

User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Allowing the training crawlers is a business decision, not an AEO requirement: OpenAI states that a site can allow OAI-SearchBot to appear in search results while disallowing GPTBot. OpenAI also notes that a robots.txt change can take about 24 hours to reach ChatGPT search, and Perplexity gives up to 24 hours for its settings. Check access logs for these user-agents after deploy so you know the rules actually fire, and verify against the published IP lists because user-agent strings can be spoofed.

#How to limit what Google shows from your page in AI features

Google applies its normal preview controls to AI Overviews and AI Mode: nosnippet, data-nosnippet, max-snippet and noindex. They work page by page or element by element, so you can keep a pricing table or a member-only passage out of generated summaries without leaving Search. The trade-off is direct: a page that is not eligible for a snippet is not eligible to be a supporting link either. Google also warns that recrawling after a change can take from several days to several months.

#How to write content that AI answer engines cite

Google’s generative AI guide is blunt here: you do not need to write in a special way for AI search, and the content that wins is unique, non-commodity, written from first-hand experience and organized with clear headings for people. The habits below serve readers first; any answer engine benefits as a side effect.

#How to put the answer in the first paragraph

Readers who arrive from a summary want the conclusion fast. Put it in the opening paragraph:

Weak for AI: “WordPress is a content management system that was created in 2003 by Matt Mullenweg and Mike Little. It has evolved significantly over the years…”

Stronger for AI: “WordPress project cost depends on scope: a brochure site, a WooCommerce catalog, and a headless rebuild are different engineering jobs. Scope the integrations, content model, and hosting constraints before you quote.”

#How to name entities explicitly

Be explicit about what entities you discuss. Do not assume context:

Weak: “It’s faster than the alternative and more secure.” Stronger: “Astro ships a static frontend by default, which removes runtime PHP on the public HTML path and shrinks the SQL injection surface compared with a classic WordPress theme that renders every request.”

#How to replace superlatives with verifiable facts

AI systems prefer claims a human can verify:

Weak: “We’re one of the best WordPress agencies with lots of experience.” Stronger: “WPPoland has shipped WordPress work since 2006 across agency and product teams. Cite your own measurable delivery notes (releases, audits, migrations) rather than empty superlatives.”

#GEO and AEO schema checklist for WordPress

  • FAQPage only where the questions and answers are visible (no rich result outside government and health sites)
  • Speakable only if you publish news in U.S. English; selectors must match real elements
  • HowTo only for real visible steps (rich result deprecated since September 2023)
  • Product + AggregateRating only where ratings are real and visible
  • Article + Person with author credentials and stable @id links
  • Entity linking (about/mentions) with Wikidata URLs
  • One connected @graph instead of plugin islands
  • robots.txt allows OAI-SearchBot, PerplexityBot and Claude-SearchBot; GPTBot and ClaudeBot by policy
  • Answer-first structure on key pages
  • Explicit entity names (no ambiguous pronouns)
  • Freshness signals (lastVerified, dateModified) that match reality
  • llms.txt only if a system you care about reads it; Google Search ignores it

Validate regularly with Google Rich Results Test and a Schema.org validator. Markup that does not match visible content is a liability, not an AEO shortcut.

#How to measure AI search visibility

#How to check AI citations manually

  • Search your brand and key topics in ChatGPT, Perplexity, and Google AI Mode
  • Check whether your URLs appear as cited sources
  • Track which pages get citations after schema and content changes

#How to use the Generative AI performance report in Search Console

Google announced Search Generative AI performance reports on June 3, 2026, and rolled them out to all websites on August 31, 2026. They give a separate view of impressions inside generative AI features, with dedicated reports for Search (AI Overviews and AI Mode) and for Discover. The dimensions are:

  • Impressions: how often URLs from your site appeared in generative AI features
  • Pages: which URLs appeared
  • Countries: visibility per country
  • Devices: the devices people used (available for Search)
  • Dates: hourly, daily, weekly or monthly granularity

The same impressions also stay in the overall Performance report. Use the report to compare page sets before and after a template change, for example a new @graph emitter. Google’s guide adds a warning: no third-party tool has access to its internal ranking or AI systems, so treat “AI visibility scores” from vendors as estimates.

#AI visibility signals outside Google

  • Referral traffic from Perplexity and ChatGPT in analytics
  • Access log hits from OAI-SearchBot, PerplexityBot and Claude-SearchBot
  • Brand mention monitoring across AI surfaces you care about

Start with what the vendors document. Crawl access comes first: allow OAI-SearchBot, PerplexityBot and Claude-SearchBot, and make sure Google can index the page with a snippet. Then ship one connected graph: Organization and Person linked by @id, Article with a real author, Product and Offer where you sell something, and Wikidata entity links in about and mentions. FAQPage, Speakable and HowTo come last, and only where the page content supports them. Write answer-first copy with facts you can defend, and re-test after every template change.

Need help with AEO/GEO work? Explore my GEO and LLMO optimization services or contact me for an AI visibility assessment.

For the delivery side of this topic I keep the work under WordPress AI integration.

Next step

Turn the article into an actual implementation

This block strengthens internal linking and gives readers the most relevant next move instead of leaving them at a dead end.

Want this implemented on your site?

If visibility in Google and AI systems matters, I can build the content architecture, FAQ, schema, and internal linking needed for SEO, GEO, and AEO.

Frequently asked questions

Practical answers to apply the topic in real execution.

What is AEO (Answer Engine Optimization)?#
AEO is the practice of optimizing content to be selected as answers by AI systems like ChatGPT, Perplexity, Google AI Mode, and voice assistants. It focuses on clear answer-first content, structured data, entity clarity, and authoritative sourcing - going beyond traditional SEO which targets search result rankings.
What is GEO (Generative Engine Optimization)?#
GEO is the practice of making content visible and citable by generative AI systems. While AEO focuses on being selected as an answer, GEO focuses on being included in AI-generated responses as a source. Key GEO signals include authoritative content, entity coverage, structured data, and E-E-A-T signals.
Which Schema.org types matter most for AI search?#
For Google, none is required: its AI features documentation says there is no special schema.org markup to add. Article with a Person author, Organization, Product with honest Offer data and about/mentions entity links still help Google understand the page and keep it eligible for rich results. Choose types by the content the page actually shows.
Does Google AI Mode use Schema.org?#
Google does not document a schema requirement for AI Mode. Its AI features page says there are no additional requirements and no special schema.org markup; a page needs to be indexed and eligible to show with a snippet. Structured data remains useful for rich results and must match the visible text.
How do I optimize for ChatGPT and Perplexity?#
Make sure the search crawlers can reach you: OpenAI recommends allowing OAI-SearchBot for ChatGPT search, and Perplexity recommends allowing PerplexityBot. GPTBot is OpenAI's training crawler and is a separate decision. Then publish clear, well-sourced content with explicit entity names.
Is Schema.org enough for AI visibility?#
Schema.org is one pillar. You also need high-quality content with clear entities, E-E-A-T signals (author expertise, credentials), accessible site structure, and proper robots.txt configuration allowing AI crawlers.
Why prefer a single JSON-LD @graph over separate script tags?#
A @graph ties Organization, Person, and Article nodes with stable @id references. Separate script islands force crawlers and models to guess whether the author in block A belongs to the organization in block B.
Can too much Schema.org markup get you penalized?#
Yes. Structured data that does not match visible page content is misleading markup. Google can issue manual actions and drop rich results. Mark up only what the user can see.

Need an FAQ tailored to your industry and market? I can build one aligned with your business goals.

Let’s discuss

Related Articles

Why Perplexity cites your brand and ChatGPT does not

Our own Geoboard baseline showed Perplexity as the strongest engine and ChatGPT with zero presence across eight tracked prompts in the same run. Here is the mechanism behind that split, and what it means for procurement, evaluators, and agencies reporting AI visibility to clients.

AI-slop content cleanup

A YMYL diagnostic for WordPress sites: how to find fake stats, fabricated citations, duplicate AI pages, wrong dates, and invented team bios before they damage trust, compliance, or AI citations.