Two ways people ship schema for AI search. First: paste five disconnected JSON-LD blocks from a generator and wait. Second: deploy one connected entity graph – Organization, Person, Article (or Product) sharing stable @ids – so machines can resolve who wrote what, for which brand, and when it last changed. The second wins because ambiguity is the real failure mode, not “missing a type.”
I learned that the hard way after a client’s “perfect” FAQ + Article stack validated green but still produced inconsistent author entities in every tool. The fix wasn’t more types. It was wiring the graph and matching visible content. Schema.org 30.1 (released 16 Sep 2026) is the vocabulary you’ll deploy against today.
What you’re actually deploying
Schema for AI search means Schema.org structured data – almost always JSON-LD in a <script type="application/ld+json"> tag – so crawlers and answer engines can label entities without guessing. Google’s structured data intro is blunt: structured data isn’t required for generative AI features, and there’s no special “AI schema.” You still ship it for rich-result eligibility, clearer entity identity, and less mis-extraction of prices, authors, and dates.
Think of 30.1 as the package version. You’re not installing a binary; you’re installing a site-wide data contract. Official source: schema.org and the releases list.
System requirements
No GPU. No container. No RAM floor. You need edit access to HTML head/body (or one controlled injector), HTTPS URLs Google can crawl, and logo/image URLs that actually return 200. Optional helpers – Yoast, Rank Math, a static build step – are fine. Pick one primary emitter. Two emitters is how duplicate graphs are born.
Staging URL first. I still burn time “fixing” production only to find the CDN serving yesterday’s script. Disk and CPU never mattered once; wrong templates always did.
Official download / source
Vocabulary and examples live on schema.org. Machine-readable definitions for 30.1 sit under the GitHub tree linked from the releases page. You don’t pip-install the ontology – copy patterns, keep @context as https://schema.org.
Runtime checks are the validators:
Install: minimum viable schema for AI search
Start site-wide, then page types. Don’t scatter five orphan objects.
1. Site-wide Organization (homepage / layout)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Co",
"url": "https://example.com/",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
},
"sameAs": [
"https://www.linkedin.com/company/example",
"https://www.wikidata.org/wiki/Qxxxxx"
]
}
</script>
Stable @id is the install key. Everything else points at it.
2. Article page with linked Person + publisher (@graph)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Co",
"url": "https://example.com/",
"logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" }
},
{
"@type": "Person",
"@id": "https://example.com/authors/jane-doe#person",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe",
"jobTitle": "Editor",
"worksFor": { "@id": "https://example.com/#organization" }
},
{
"@type": "Article",
"@id": "https://example.com/blog/schema-for-ai-search#article",
"headline": "Deploy schema for AI search without the folklore",
"datePublished": "2026-09-20",
"dateModified": "2026-10-02",
"image": "https://example.com/og/schema-ai.png",
"author": { "@id": "https://example.com/authors/jane-doe#person" },
"publisher": { "@id": "https://example.com/#organization" },
"mainEntityOfPage": "https://example.com/blog/schema-for-ai-search"
}
]
}
</script>
Dates: ISO 8601 only. Author: a real Person object (or an @id that resolves on the same graph) – not a bare string if you care about entity-shaped signals.
Pro tip: One emitter only. Theme + SEO plugin + tag manager each dumping Article blocks is the fastest path to “Duplicate, conflicting markup” and empty author rich results.
3. Optional FAQPage where you truly have Q&A
Still valid Schema.org. FAQ rich results for most sites went away in May 2026 – so you’re not buying a SERP dropdown anymore. Keep the type only when the page visibly answers discrete questions. Structure for extractors? Useful. Ticket for a retired rich result? Waste.
4. E-commerce note for 30.1
Product/Offer feeds only. 30.1 adds retail-oriented fields – consumerNotice, isOftenBoughtWith, specification, itemPopularity, plus EU Digital Product Passport hooks (DigitalProductPassport, hasDigitalProductPassport). If the page doesn’t show it, don’t mark it up.
First-time configuration checklist
You don’t need twenty types. You need:
- Organization on every template with fixed
@idandsameAs - Article/BlogPosting (or Product) on content templates with
dateModifiedthat actually updates - Person authors with URLs and
worksForback to the org - Visible text matching the JSON (no phantom prices, no ghost FAQs)
- One JSON-LD strategy – static script or one plugin
Skip HowTo/FAQ spam on pages that aren’t procedural or Q&A. Noise is pure maintenance debt.
Verify the install works
- Live URL → Rich Results Test. Critical errors first.
- Same URL (or raw JSON-LD) → validator.schema.org for vocabulary/syntax.
- View source: only the blocks you expect.
- After crawl: Search Console rich-result / enhancement reports.
- Change
dateModified, republish, retest. Old date still there? Emitter is caching or hard-coding.
No schema --version CLI exists. Health check = zero parse errors + the same entity @ids on every template.
Common install errors and fixes
Some failures only show up after a parser change you didn’t deploy for.
| Symptom / message | Likely cause | Fix |
|---|---|---|
| Unparsable structured data / Missing ‘,’ or ‘}’ | Trailing comma, smart quotes, broken concatenation | Strict JSON; no trailing commas; straight double quotes |
| Wrong date / ignored freshness | July 14, 2026 or 07/14/2026 |
ISO only: 2026-07-14 or full datetime with offset |
| Author empty in rich results | External @id without inlined Person, or name-only string | Inline Person or resolve @id on the same graph |
Values show & or broken ampersands |
Double HTML escaping; Google single-unescape since ~Aug 2026 (RFC 8259-style one pass) | Emit real JSON escapes / Unicode (u0026), not layered HTML entities |
| Conflicting Articles/Organizations | Plugin + theme both emitting | Disable one source; keep a single graph |
| Valid schema, no AI citation miracle | Treating markup as a citation lever | Ahrefs’ Aug 2025-Mar 2026 set (1,885 pages with JSON-LD vs ~4,000 controls) showed no meaningful lift – AI Mode +2.4%, ChatGPT +2.2%, AI Overviews -4.6%. Fix content and entities first. |
Content mismatch still kills trust: if the Offer price isn’t on the page, you’re describing fiction.
Upgrade from older markup / uninstall
30.1: keep valid Article/Org graphs. Add Product/DPP fields only where catalog data exists. Re-validate. New properties won’t mend broken JSON.
Microdata-only sites: move toward JSON-LD. Google treats JSON-LD, Microdata, and RDFa as fine when valid, and JSON-LD is the path most tools emit. Don’t run two full parallel representations of the same entity with different names or dates.
Cleanup: strip the scripts or disable the plugin module; purge CDN/HTML cache; re-test until structured data matches intent. Leftover duplicate @ids after a partial uninstall are worse than bare pages.
One money page. One @graph – Organization + Person + Article (or Product). Both official validators. Then clone the pattern into the template – not the other way around.
FAQ
Does schema for AI search guarantee ChatGPT or AI Overview citations?
No. Google doesn’t require special markup for generative AI search. Ahrefs’ 1,885-page JSON-LD test found no meaningful citation lift.
Should I still deploy FAQPage after the rich-result retirement?
Only when the page truly has discrete Q&A in the HTML. If the goal was a blue FAQ UI that disappeared for most sites after May 2026, skip the type and spend the time on entity @id consistency instead.
JSON-LD, Microdata, or RDFa – what should a 2026 deploy use?
JSON-LD. All three can be valid; JSON-LD keeps structure out of the visible DOM, nests cleanly, and matches CMS plugins and static generators. Microdata still works on legacy templates. The failure mode is mixing formats for the same entity and drifting names/dates between them. One format. Two validators. Stable @ids when templates change again.