1. Article / BlogPosting
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Your Post Title",
"description": "A 150-character summary of the post.",
"image": ["https://yoursite.com/cover.png"],
"datePublished": "2026-08-08",
"dateModified": "2026-08-08",
"inLanguage": "en",
"author": {"@type": "Person", "name": "Your Name"},
"publisher": {"@type": "Person", "name": "Your Name"},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://yoursite.com/your-post.html"
}
}
</script>
Required: headline, datePublished, author. Every post on this site carries exactly this block — it's the machine-readable version of the page.
2. FAQPage
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is JSON-LD?",
"acceptedAnswer": {
"@type": "Answer",
"text": "JSON-LD is a format for embedding Schema.org metadata in a page's head."
}
},
{
"@type": "Question",
"name": "Does it help with AI search?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes — AI engines treat structured answers as strong citation signals."
}
}
]
}
</script>
Critical rule: every question and answer must appear verbatim in the visible page content. FAQ schema with hidden answers is a classic way to get ignored.
3. Person (About / Portfolio)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Your Name",
"url": "https://yoursite.com/",
"jobTitle": "AI Engineer",
"sameAs": [
"https://github.com/yourusername",
"https://www.linkedin.com/in/yourname"
],
"knowsAbout": ["Retrieval-Augmented Generation",
"Local LLMs", "Vector Databases"]
}
</script>
The sameAs array links your identity across platforms — the entity-resolution signal that helps AI engines attribute your work. See the portfolio AEO guide for the full personal-brand setup.
4–6. HowTo, Product, Breadcrumb (Quick Reference)
// HowTo (tutorials) — step list, required for rich results
{
"@type": "HowTo", "name": "Title",
"step": [{"@type": "HowToStep", "name": "Step 1",
"text": "Do the thing."}]
}
// Product (anything sold) — price + availability
{
"@type": "Product", "name": "Name",
"offers": {"@type": "Offer", "price": "19.00",
"priceCurrency": "USD", "availability": "https://schema.org/InStock"}
}
// BreadcrumbList (navigation)
{
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1,
"name": "Home", "item": "https://yoursite.com/"},
{"@type": "ListItem", "position": 2,
"name": "Blog", "item": "https://yoursite.com/blog.html"}
]
}
Validation and Mistakes
| Mistake |
Fix |
| Missing required fields (datePublished, author) |
Run Rich Results Test — it lists exactly what's missing |
| Schema ≠ visible content |
Make the page text match the schema text, verbatim |
| Wrong @id URLs |
Every URL should be absolute and resolve |
| Broken JSON (unescaped quotes) |
Validate the snippet; escape quotes inside strings |
| Copying templates without editing |
Search your pages for leftover placeholder text |
Validate with: Google Rich Results Test (richresultstest.withgoogle.com), Schema.org validator, or a JSON linter. Run it after every template change — structured data is code, and it breaks like code.
Frequently Asked Questions (FAQ)
What is JSON-LD structured data?
JSON-LD is a format for embedding Schema.org machine-readable metadata in a page's <head>. It describes what the page is — an article, a person, an FAQ, a product — in a way search engines and AI systems can parse unambiguously. It's the standard way to add structured data in 2026.
Does JSON-LD help with SEO and AI search?
Yes, on both fronts. Google uses it for rich results (FAQ, breadcrumbs, review stars), and AI answer engines treat schema as a strong signal that a page is machine-readable answer content. It's not a ranking guarantee, but it's free clarity for every machine that reads your page.
Which JSON-LD types matter most?
For most sites: Article/BlogPosting for content, FAQPage for question-answer sections, Person for authors/about pages, Organization for companies, Product for anything sold, HowTo for tutorials, and BreadcrumbList for navigation. Start with Article + FAQPage + Person — they cover the majority of sites.
How do I validate my JSON-LD?
Google's Rich Results Test and Schema.org's validator accept a URL or code snippet; both flag errors and missing required fields. Also check that the page's visible content matches the schema — mismatches (e.g. FAQ answers not on the page) are the most common way to get structured data ignored.
Can multiple JSON-LD blocks be on one page?
Yes — separate <script type="application/ld+json"> blocks per type are standard and preferred: one for the page's main entity (Article/Product), one for FAQPage, one for BreadcrumbList, and so on. Keep each block self-contained and valid.
What are common JSON-LD mistakes?
Missing required fields (datePublished, author for articles), schema that doesn't match visible content, incorrect URLs, JSON syntax errors from unescaped quotes, and copying templates without adjusting the @id URLs. Validation catches most of these — run it after every change.
Sources & Further Reading