Technical AI discovery
How to Optimize Schema Markup for AI Engines, Not Just Google
AI engines read schema differently than Google's rich results do. Use visible FAQs and steps for readers, not as AI-citation levers.

In brief
- AI engines rely on schema primarily to resolve entity identity and anchor attribution, not to render visual rich-result features the way Google's search results do - `sameAs`, `description`, `mainEntity`, and `citation` do disproportionate work for this.
- Nested structure beats flat schema for extraction: `HowToStep` objects with `name`/`text`/`url` instead of plain strings, and `WebPage`-level `mainEntity` pointing to the page's real subject, give a retrieval system more to work with than a single flat block.
- There is no schema.org type built specifically for AI-answer extraction as of 2026 - the real, documented property for flagging a specific passage is `speakable` with a `SpeakableSpecification`, not an invented type.
Sections in this article
TL;DR
- Core shift AI engines use schema to disambiguate entities, not just generate rich results - so the properties that matter have changed.
- Highest-impact properties sameAs, description, mainEntity, and citation are the four properties AI engines extract most reliably.
- Biggest risk Conflicting schema types on the same page (e.g. Product + ItemList) suppress citation rates across Perplexity and Gemini.
- Schema boundary: `Article` describes an article; it does not mark passages for AI consumption or guarantee inclusion in an AI answer.
- Quick audit Run Google's Rich Results Test, then manually check for sameAs and description presence - most pages fail the second check.
Who this is for
Good fit
- SEO operators who already deploy JSON-LD for Google and want to extend it to AI engine citations
- Growth leads tracking brand mentions in ChatGPT, Perplexity, or Gemini answers
- Content teams whose pages rank on Google but never appear in AI-generated summaries
Not for
- Engineers building schema parsers or crawlers - this is a content-side optimization guide
- Teams with no existing structured data implementation - start with Google's basics first
Key takeaways
Add `sameAs` links to Wikidata, LinkedIn, and Crunchbase on every Organization and Person schema block - it is one of the more reliably useful changes for AI engine entity resolution.
Restructure `HowTo` steps from plain strings into nested `HowToStep` objects with `name`, `text`, and `url` before any other schema work on process content.
Audit every page for root-level schema type conflicts (like `Product` next to `ItemList`) and disable CMS auto-schema on any page where you have written a manual JSON-LD block.
Use `about`, `mentions`, and `knowsAbout` to make entity relationships explicit rather than leaving them for a model to infer from prose - but only for topics your content genuinely covers in depth.
There is no schema.org type built specifically for AI-answer extraction. Use the real `speakable` property with a `SpeakableSpecification` to flag your single best passage instead.
chema markup optimized purely for Google's rich results does not automatically translate into AI engine citations. The mechanism is different: Google's crawler uses schema partly to render visual features in a results page - star ratings, breadcrumbs, FAQ dropdowns. AI engines like ChatGPT, Perplexity, and Gemini use schema primarily to resolve entity identity and anchor attribution. When your JSON-LD lacks sameAs and description properties, a model has less to work with when connecting your page to the entity it is answering about, and it has more reason to cite a competitor who made that connection explicit. The pages that get cited are not necessarily the ones with the flashiest rich results - they are the ones whose schema makes entity relationships unambiguous.
Audit Organization markup for accurate identity fields and maintain sameAs links only to profiles that represent the same entity. The omission of sameAs is not a documented citation penalty, and adding it does not guarantee disambiguation, retrieval, ranking, or citation. Treat it as identity hygiene and verify the rendered graph against the visible brand record.
Use nested Schema.org relationships only when they describe visible page content accurately. For an Article or WebPage, connect supported entities through properties such as mainEntity, citation, about, and mentions; do not invent AI-specific types or claim that nesting itself raises citation probability. Validate the JSON-LD syntax and compare frozen pre-change and post-change records before reporting an effect.
In this article
- 1.Why Google-centric schema fails AI engines
- 2.The 4 schema properties AI engines actually use
- 3.How to restructure HowTo and Article schemas for AI extraction
- 4.How to add entity-relationship triples for citation frequency
- 5.Schema hygiene: how to audit and fix conflicting markup
- 6.How to implement the Article schema type
Four properties do a disproportionate amount of work for AI-engine extraction: sameAs, description, mainEntity, and citation. sameAs resolves entity identity by linking your organization or person to authoritative external records - Wikidata, LinkedIn, Wikipedia, Crunchbase. description gives a model a plain-language summary it can use verbatim or paraphrase for attribution. Without these two, a retrieval system is working from raw page text alone, which raises the odds it attributes the answer to a more clearly-structured competitor instead.
mainEntity and citation operate at the document level. mainEntity tells a model what the page is fundamentally about, not just its type but its actual subject - a WebPage with mainEntity pointing to a specific SoftwareApplication entity gives a retrieval layer a clear subject anchor instead of making it infer the topic from prose. citation is underused and worth prioritizing: referencing the sources your content draws from signals that your page is a synthesized, sourced document rather than a raw, unsupported opinion.
json { "@context": "https://schema.org", "@type": "Organization", "name": "Acme Corp", "description": "Acme Corp builds inventory management software for mid-market retailers.", "sameAs": [ "https://www.wikidata.org/wiki/Q000000", "https://www.linkedin.com/company/acme", "https://www.crunchbase.com/organization/acme" ] }
Treat these four as your audit baseline before touching anything else: check whether every Organization and Person block on the site has sameAs and description populated, and whether your primary content pages declare mainEntity and use citation where they reference outside sources.
The step has no url, no name as a distinct field, no image. When an engine extracts a step-by-step answer, it pulls from the richest available structured source. If a competitor's HowTo nests each step as a HowToStep object with name, text, and url, their version has a real structural advantage even if your prose reads better to a human. The restructure is a one-time JSON-LD edit that pays off every time that query gets answered.
json { "@context": "https://schema.org", "@type": "HowTo", "name": "How to install the Acme plugin", "step": [ { "@type": "HowToStep", "name": "Download the plugin", "text": "Download the latest release from the Acme dashboard.", "url": "https://acme.example.com/docs/install#step-1" }, { "@type": "HowToStep", "name": "Activate the license key", "text": "Paste your license key into Settings > Plugins.", "url": "https://acme.example.com/docs/install#step-2" } ] }
For Article schemas, one worthwhile addition is mainEntity nested inside the WebPage wrapper rather than inside the Article block itself - the WebPage is what gets indexed, the Article is the content type sitting inside it. Pointing WebPage.mainEntity at the article's primary subject (a Thing, Organization, or SoftwareApplication) gives a retrieval system a subject anchor that survives content edits. Add dateModified as a sibling to datePublished - recency is a real signal, and a stale datePublished with no dateModified reads as an unmaintained page.
Keep the Article author block accurate and visible. Add sameAs only for profiles that represent the same person, and use knowsAbout only for topics the page can substantiate. Do not describe either property as an AI citation weight or expertise score.
See where your brand appears in AI answers - and where it does not.
Run a first-party brand check across supported answer engines. Results are measured without a promised citation or conversion. Browse all free tools
Properties like about, mentions, and knowsAbout are the connective tissue between your page's primary entity and the broader entity graph a model has learned from. A schema block with several of these relationship properties gives a retrieval layer more structured data points to work with than a flat block listing only headline, author, and datePublished - a richer, well-formed local subgraph is simply more useful input than a handful of disconnected fields, independent of prose quality.
The most practical property to add for B2B content is about on Article blocks. Adding about with a nested array of Thing objects (each with @type, name, and ideally sameAs pointing to a Wikidata or Wikipedia URL) turns your article from a typed document into something closer to a mapped set of entities. When a model resolves a query about one of those named entities, your article becomes a more legible candidate because the relationship is explicit in the markup rather than something the model has to infer from prose.
For Organization schemas on a homepage or About page, knowsAbout and hasOfferCatalog are the most useful relationship properties. knowsAbout accepts either topic strings or Thing objects; using Thing objects with sameAs links to authoritative definitions is the stronger version. hasOfferCatalog with nested Offer objects (each with name, description, and url) gives a structured product-to-entity mapping instead of leaving that relationship buried in prose.
One caution worth stating plainly: do not add relationship properties that are not true. knowsAbout populated with every keyword your content team wishes it ranked for is inconsistent with your actual page content, and a system that cross-references schema claims against visible text will simply treat the mismatch as a trust problem. Five to eight tightly-scoped knowsAbout values that genuinely mirror what your content covers in depth outperforms a long, aspirational list.
Conflicting schema types on the same page are one of the fastest ways to suppress AI citation. The specific failure mode: deploying both Product and ItemList at the root level of a single page - a common pattern on SaaS pricing or comparison pages - creates an ambiguous entity signal. A model parsing that page cannot cleanly determine whether the primary subject is one product or a list of products. Google's Rich Results Test often does not flag this, because Google's own systems resolve the ambiguity differently than an LLM's retrieval layer does - which is exactly why this class of conflict survives unnoticed for a long time.
The audit process is three steps: export every JSON-LD block from a page (browser developer tools or a crawler's structured-data report both work), list every @type present, and flag any page where two or more types sit at the same semantic level. Article nested inside WebPage is fine - that is a parent-child relationship, not a conflict. Product sitting alongside ItemList at the root is a conflict. Once flagged, pick the type that matches the page's dominant purpose and demote the other to a nested reference - a pricing page is primarily a Product page, and its comparison table can be represented as an ItemList nested inside the Product's offers property instead of competing with it at the root.
Redundant markup - the same entity described twice with slightly different property values - is a subtler problem, usually caused by a CMS generating automatic schema alongside a manually written JSON-LD block. The two blocks may agree on name but disagree on description or url. A system encountering conflicting values for what should be the same entity has reason to discount both rather than pick one. The fix is to disable CMS-generated schema wherever a manual JSON-LD block already exists for that page - most major CMS platforms have a per-page toggle for this.
After fixing conflicts, run a re-crawl check: submit the updated URLs through Google Search Console's URL Inspection tool and confirm rich-result status, then query each page's primary topic in an AI engine and note whether your domain shows up as a source over the following days. If it does not, check for a noindex directive or a robots.txt block that keeps an AI crawler from reaching the page in the first place - a schema fix cannot help a page the crawler cannot read.
Schema implementation options and their tradeoffs
| Implementation | Best use case | Tradeoff to manage |
|---|---|---|
| Plain JSON-LD | Single-template article pages with simple entities | Fast to ship, but drifts as pages add more entities over time |
| @graph JSON-LD | Pages needing article, author, organization, and website entities together | Stronger entity modeling, needs stricter validation discipline |
| Microdata | Legacy templates you cannot refactor quickly | Harder to audit at scale, easier to break during design changes |
There is no schema.org type built specifically for "mark this passage for an LLM" - be skeptical of any guide that names one, since inventing schema vocabulary is a real risk in this space and an invented type will simply be ignored by every real parser. What does exist and is worth using is speakable, a real schema.org property that takes a SpeakableSpecification pointing to a CSS selector or XPath for the specific passage you consider the canonical, extractable answer on the page. It was built for voice-assistant text-to-speech extraction, but the underlying idea - explicitly flagging your single best passage instead of leaving a model to guess - is exactly the control worth having for AI-answer extraction too.
json { "@context": "https://schema.org", "@type": "WebPage", "speakable": { "@type": "SpeakableSpecification", "cssSelector": [".answer-summary"] } }
The same discipline that would apply to any passage-marking approach applies here: mark one passage per page, not five or six - diluting the signal across multiple "most important" passages defeats the purpose. Pick the paragraph that most directly answers the page's primary search intent, the one you would want read aloud in a voice answer or pulled as a snippet, and keep it tight. A long, promotional, or hedge-filled passage is a worse extraction target than a short, direct one, regardless of what markup wraps it.
Verify this the same way you would verify any schema change: query your target questions in the AI engines you care about over the following weeks, and check whether the extracted text lines up with the passage you marked. If it consistently does not, the passage itself is probably the problem - too long, too promotional, or inconsistent with the surrounding page - not the markup.
FAQ
What is FAQPage markup useful for in 2026?
Use it only when it accurately describes a visible FAQ. Google removed FAQ rich results, and the markup is not a documented AI-citation lever.
Is there a real schema.org type built specifically for AI answer extraction?
No. Treat any guide that names one with real skepticism - inventing schema vocabulary is a genuine risk in this space, and a fabricated type is simply ignored by every real parser. The closest real, documented property for flagging a specific passage is `speakable` with a `SpeakableSpecification`, originally built for voice-assistant extraction.
Can these schema changes be implemented without a developer?
For most CMS platforms, yes. JSON-LD blocks are injected through a script tag in the page head, which is editable through a plugin like Yoast's custom schema field in WordPress or a head-HTML module in HubSpot. The one step that usually needs a developer is disabling CMS-generated auto-schema on a per-page basis so it does not conflict with a manually written block.
What is the single highest-priority schema fix for a site optimizing for AI citation?
Audit every `Organization` and `Person` block for missing `sameAs` and `description` properties first. It is usually the fastest fix, requires no content changes, and directly affects whether a retrieval system can resolve who you are before it decides whether to cite you.
References and further reading
These links are provided for direct inspection. A reference is not treated as proof of every statement in this article.
- 1.sameAs - Schema.org Propertyschema.org
- 2.HowTo - Schema.org Typeschema.org
- 3.speakable - Schema.org Propertyschema.org
- 4.Rich Results Test - Googlesearch.google.com
- 5.OpenAI crawler and user-agent documentationdevelopers.openai.com
- 6.Perplexity crawler documentationdocs.perplexity.ai
- 7.
- 8.Google Search Central: AI features and your websitedevelopers.google.com
- 9.Google Search documentation updatesdevelopers.google.com
Written by
EdenRank Editorial Team
The product and editorial team documents repeatable ways to inspect AI-answer visibility, source evidence, and content operations.
Expertise
Want insights like this for your own brand?
Talk to the teamKeep building the topical graph.
How to Structure Content for Conversational AI Queries in 2026
Structure conversational answers around one buyer decision, visible evidence, addressable sections, fixed prompts, and exact source receipts.
GEO vs Traditional SEO: What Changes for Content Teams in 2026
Compare GEO and traditional SEO by workflow, evidence, denominator, and reporting boundary without treating AI citations as ordinary rankings.
How to Map Buyer Questions to AI-Visible Content Clusters
Turn buyer questions into bounded content clusters with one decision per page, explicit evidence, internal links, and fixed citation tests.