What is JSON-LD? — The Structured Data That Gets AI to Cite You
JSON-LD is the language machines read before they read your words.
Three tags —@context,@typeand properties — tell AI what your page is, who publishes it, and what it covers.
This article decodes the three JSON-LD blocks on our own homepage and why each one matters for being cited by AI answer engines.
If your structured data is missing or malformed, AI can still read your page — it just has less reason to trust it, and less reason to quote it.
What is JSON-LD?
JSON-LD (JavaScript Object Notation for Linked Data) is a JSON-based format for describing a page's meaning to machines. It uses Schema.org as a shared vocabulary, so any crawler, search engine or answer engine that understands Schema.org can read it.
Every JSON-LD block is built from three elements:
@context— declares the vocabulary you are using (https://schema.org).@type— declares what the object is (WebSite,Organization,Article…).- Properties — the fields that type allows (
name,url,logo,datePublished…).
It lives inside a <script type="application/ld+json"> tag in the page <head>. Because it is separate from the visible HTML, it is called "Linked Data" — the structure and the presentation stay independent.
Why does the separation matter? A human sees your headline, images and buttons. A machine sees the same page as a stream of tokens. JSON-LD hands that machine a pre-digested summary of what the page is — which is exactly what an AI answer engine needs when it decides whether to cite you.
Why Do AI Engines Care?
AI answer engines do not read your page the way a person does. They parse it, extract entities, and weigh trust signals. Structured data makes that parsing dramatically easier and more reliable.
| What AI needs | What JSON-LD provides | GEO impact |
|---|---|---|
| Entity recognition | Organization / Person with a stable @id | AI knows who you are and can attach your content to one entity |
| Citation and source trust | Article with author, publisher and dates | AI has concrete reasons to cite you as authoritative and current |
| Site structure understanding | ItemList, BreadcrumbList | AI finds and navigates your content faster |
| Answer extraction | FAQPage, HowTo content | AI can quote you directly — the heart of answer assetization |
This maps to the five-step GEO loop from our own audit: make AI find you, measure how it behaves, make itself understandable, earn trust, then stay canonical. Structured data is the "understandable" and "trust" layers.
Three Blocks on Our Homepage
Our homepage ships three JSON-LD blocks, each serving a different job. Here is what they actually look like and what each one does.
1. WebSite — the site's identity card
The WebSite block tells machines this is a website, what it is called, what language it uses, and who publishes it. It also declares the site's search capability.
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "GEO Encyclopedia",
"url": "https://geo010.com",
"inLanguage": "en",
"publisher": { "@id": "https://geo010.com/#organization" },
"potentialAction": {
"@type": "SearchAction",
"target": { "@type": "EntryPoint",
"urlTemplate": "https://geo010.com/index.html?q={search_term_string}" },
"query-input": "required name=search_term_string"
}
}
Two details matter here. First, publisher uses an @id anchor — #organization — that points at the second block on the page. That anchor is how JSON-LD "links" objects together. Second, potentialAction declares site search, the signal behind Sitelinks-style search boxes in rich results.
2. Organization — the entity behind the site
The Organization block is the entity card: logo, contact point, founding date and identity links. Its @id matches the anchor used by WebSite.publisher, so a crawler resolves both blocks into one entity — not two strangers.
{
"@context": "https://schema.org",
"@id": "https://geo010.com/#organization",
"@type": "Organization",
"name": "GEO Encyclopedia",
"logo": { "@type": "ImageObject", "url": "https://geo010.com/favicon.svg" },
"email": "my360930109@gmail.com",
"foundingDate": "2025",
"sameAs": ["https://geo010.com/feed.xml"],
"contactPoint": { "@type": "ContactPoint", "contactType": "customer support" }
}
This is the schema that entity recognition leans on. A clear, consistent entity card is a direct E-E-A-T trust signal — and it is exactly what an auditor means when it checks for "Organization schema."
3. ItemList — the site map for machines
The ItemList block numbers the nine chapters of this encyclopedia in order, each with its URL. It is effectively a semantic site map that lives alongside the human navigation.
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "GEO Encyclopedia Chapters",
"numberOfItems": 9,
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "I. Fundamentals",
"url": "https://geo010.com/fundamentals/what-is-geo.html" }
// ... positions 2 through 9
]
}
Where sitemap.xml tells crawlers which URLs exist, ItemList tells machines what each one is and in what order. The two compound.
JSON-LD vs Microdata vs RDFa
JSON-LD is not the only structured-data syntax, but it is the one Google recommends and the one static sites can maintain most easily.
| Format | Placement | Readability | Where it shines |
|---|---|---|---|
| JSON-LD | One block in <head> | Clean JSON, JS-friendly | Static sites, easy to generate and update |
| Microdata | Attributes inside HTML elements | Mixed with visible markup | Legacy pages, CMS plugins |
| RDFa | Attributes inside HTML elements | Verbose, harder to read | Legacy enterprise publishing |
Because JSON-LD lives in its own block, adding or fixing it never touches the visible content — which makes it the safest choice for a site that treats structured data as a first-class deliverable.
Five Common Mistakes
- Putting JSON-LD in the
<body>instead of the<head>. It still validates, but it signals the wrong thing and breaks the convention crawlers expect. - Forgetting
@context. Without it, a parser cannot know your vocabulary — the whole block becomes guesswork. - Using the wrong
@type. A product page marked asArticleconfuses entity extraction instead of helping it. - Omitting dates on
Article.datePublished/dateModifiedare freshness signals; without them, AI cannot judge if your answer is current. - Creating duplicate entities. Two
Organizationblocks without a shared@idlook like two different companies to a knowledge graph.
FAQ
Do I need JSON-LD if I already have an llms.txt?
No — llms.txt and JSON-LD do different jobs. llms.txt is a plain-text orientation file that tells an LLM what the site covers; JSON-LD is semantic metadata that tells crawlers and search engines what each page is. They compound: llms.txt helps AI discover you, JSON-LD helps AI understand and trust you.
Will JSON-LD get my site cited by ChatGPT or Perplexity?
Structured data alone does not guarantee citations, but it is a strong clarity and trust signal, and it unlocks answer-engine features like FAQ rich results that can be extracted and quoted directly. Treat JSON-LD as a prerequisite, not a magic switch.
Where should JSON-LD live on the page?
In the <head>, near your other metadata — never at the bottom of the <body>. The head placement tells crawlers this is page-level metadata, and it keeps the markup cleanly separated from visible content.
Is JSON-LD hard to maintain?
On a static site it is straightforward: each HTML file carries its own JSON-LD block, and static-site generators can output it for you. Start with Article plus Organization plus BreadcrumbList, then add page-specific types like FAQPage or HowTo as you grow.
Discussion
Loading comments…