AI engines extract structured facts from JSON-LD schema faster and more accurately than from HTML alone. Sites with comprehensive schema coverage get cited more often in ChatGPT, Claude, Perplexity, Gemini answers. The Agent Readiness audit lists which page types lack schema, which schemas are incomplete, and where entity graphs are disconnected. This guide covers the additions that move the needle.
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Article title",
"description": "Brief description",
"image": "https://example.com/cover.jpg",
"datePublished": "2024-01-15T08:00:00+00:00",
"dateModified": "2024-01-20T10:00:00+00:00",
"author": {
"@type": "Person",
"name": "Author Name",
"url": "https://example.com/authors/author-name"
},
"publisher": {
"@type": "Organization",
"name": "Example Publisher",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
}
}
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Product Name",
"image": ["https://example.com/product.jpg"],
"description": "Product description",
"sku": "SKU-12345",
"brand": {
"@type": "Brand",
"name": "Brand Name"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/product",
"priceCurrency": "GBP",
"price": "29.99",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
}
}
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Business Name",
"image": "https://example.com/storefront.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 High Street",
"addressLocality": "London",
"postalCode": "SW1A 1AA",
"addressCountry": "GB"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.5074,
"longitude": -0.1278
},
"telephone": "+44-20-7946-0958",
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00",
"closes": "18:00"
}]
}
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What does X do?",
"acceptedAnswer": {
"@type": "Answer",
"text": "X does this and that."
}
},
{
"@type": "Question",
"name": "How does it work?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Step-by-step answer."
}
}
]
}
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to do X",
"description": "Step-by-step guide to X.",
"totalTime": "PT30M",
"step": [
{
"@type": "HowToStep",
"name": "First step",
"text": "Description of step 1"
},
{
"@type": "HowToStep",
"name": "Second step",
"text": "Description of step 2"
}
]
}
Multiple entities on one page should be linked via @id references. This forms a connected graph that AI engines can traverse.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Article",
"@id": "https://example.com/article#article",
"headline": "Article Title",
"datePublished": "2024-01-15",
"author": { "@id": "https://example.com/article#author" },
"publisher": { "@id": "https://example.com/#org" }
},
{
"@type": "Person",
"@id": "https://example.com/article#author",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe",
"worksFor": { "@id": "https://example.com/#org" },
"sameAs": [
"https://twitter.com/janedoe",
"https://linkedin.com/in/janedoe"
]
},
{
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "Example Publishing",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://en.wikipedia.org/wiki/Example_Publishing",
"https://www.wikidata.org/wiki/Q12345",
"https://twitter.com/examplepub",
"https://linkedin.com/company/example-publishing"
]
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{"@type":"ListItem","position":1,"name":"Home","item":"https://example.com/"},
{"@type":"ListItem","position":2,"name":"Blog","item":"https://example.com/blog"},
{"@type":"ListItem","position":3,"name":"Article","item":"https://example.com/article"}
]
}
]
}
Article references Person (author) by @id. Person references Organization (worksFor) by @id. The graph closes — every entity connects to others. AI engines extract richer context from this than from a flat Article.
sameAs tells AI engines "this Organization on my site is the same as this entity on Wikipedia / Wikidata / social". Helps disambiguate against companies with similar names.
{
"@type": "Organization",
"name": "Apple",
"sameAs": [
"https://en.wikipedia.org/wiki/Apple_Inc.",
"https://www.wikidata.org/wiki/Q312",
"https://twitter.com/Apple",
"https://www.linkedin.com/company/apple/"
]
}
// Disambiguates Apple Inc from Apple Records, Apple Bank, Apple fruit, etc
// BAD
{ "@type": "Article", "author": "Jane Doe" }
// GOOD
{
"@type": "Article",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe",
"sameAs": ["https://twitter.com/janedoe"]
}
}
// BAD: Article with no publisher
{ "@type": "Article", "headline": "..." }
// GOOD: Publisher reference
{
"@type": "Article",
"publisher": {
"@type": "Organization",
"name": "Example",
"logo": { "@type": "ImageObject", "url": "..." }
}
}
Organization without sameAs is an unverified entity. AI can't confirm "this is the actual company". sameAs to Wikipedia/Wikidata is the strongest signal.
Add to every page. Helps both Google rich results and AI understanding of site structure.
Aim for full coverage across major page types: