Schema is how a page describes itself to a machine. Here is the markup that makes your pages readable to AI engines, and the honest limit of what it can do.
Hard for engines to read
<p>We help businesses grow their
online presence with solutions
tailored to their needs.</p>
Machine-readable
{
"@type": "FAQPage",
"name": "How we help",
"description": "..."
}
Same page, made readable to engines.
Schema is the most misunderstood word in this whole field. People treat it like a magic spell: add the markup, get the citation.
It is not a spell. It is a label.
Schema is how a page describes itself to a machine in plain, structured terms: this is a product, this is its price, these are the three questions it answers. Nothing more, nothing less.
This post is the concrete version. The exact markup that makes a page machine-readable, a real JSON-LD block you can read, and the honest line about what schema cannot do.
A machine cannot infer what you never labeled
Here is the gap. A human reads your page and understands it is a comparison of two insurance plans with a price and an FAQ.
A machine reads the same page and sees a wall of text. Unless you labeled the parts, it has to guess which sentence is the answer, which number is the price, and whether that bolded line is a heading or a quote.
Schema removes the guessing. It tags each part so the engine reads facts, not vibes.
The old way: hope the prose is clear enough
The old way leans on good writing and clean headings and trusts the engine to figure out the rest. Sometimes it does. Often it pulls the wrong sentence or skips the page for one that made the facts explicit.
You are competing against pages that did not make the engine guess. That is a losing position you cannot see from the front end.
The new way: label the facts the engine needs
The new way states the facts in a structured block the engine reads directly. The price is tagged as a price. The questions are tagged as questions. The publisher is named.
Same page, same words on screen. The difference is that a machine can now parse it without inferring anything.
The five types that do most of the work
You do not need exotic markup. Five everyday types cover the majority of pages, and each one answers a specific machine question.
Organization
Says who publishes this site: name, logo, the social and official profiles that corroborate you. It is the identity an engine ties your pages back to.
Article
Says this is a piece of writing, with a headline, an author, and a date. It tells an engine the page is editorial content and who stands behind it.
FAQPage
Says these are questions and these are their answers, in machine-readable pairs. It is the type most likely to feed a direct answer, because it hands the engine exactly the unit it wants.
Product
Says this is a product, with a name, a price, and availability. For anything you sell or compare, it turns a paragraph into parseable facts.
BreadcrumbList
Says where this page sits in your site's hierarchy. It gives the engine context: this is a child of that category, not a stray page.
ChatGPT
Perplexity
Gemini
Claude
The four engines Citedon checks.
Those four engines, ChatGPT, Perplexity, Gemini, and Claude, all read the same structured graph. Clean schema means each one gets the same coherent answer about your page instead of four different guesses.
What a clean block actually looks like
Point, do not talk. Here is a small FAQPage block, the kind that feeds a direct answer. It is short on purpose: clean and complete beats long and noisy.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does the Standard plan cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The Standard plan costs $40 per month, billed annually."
}
},
{
"@type": "Question",
"name": "Is there a free trial?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. The free trial runs for 14 days with no card required."
}
}
]
}
Read it the way a machine does. The question text is a question. The answer text is a sentence the engine can lift verbatim. The price is right there, in plain words, inside a labeled field.
No engine has to parse a paragraph to find that the plan is $40. You handed it the fact, structured, and that is the entire job of schema.
You can read how the full scan-to-fix-to-watch loop applies this on a live site on the how it works page.
Why one clean graph beats five scattered blocks
A subtle trap: more schema is not better schema. Two plugins each emitting their own Article block, or a half-finished FAQPage with empty answers, is worse than a single complete graph.
An engine reading a page with conflicting or broken blocks has to reconcile them, and reconciliation is exactly the guessing schema was supposed to remove. The goal is one clean graph that agrees with itself.
On WordPress this is the delicate part. Yoast and Rank Math already emit a base graph, so the right move is to enrich that one graph through their own filters, not to bolt a second one on top. Add the FAQ and Product pieces into the graph that already exists, and nothing collides.
The honest part
Here is the damaging admission, and it is the most important paragraph in this post: schema is necessary, not sufficient.
Schema cannot make a thin page answer a question it does not answer. If your page never states the price, no Product markup invents one. If there is no real answer in the text, FAQPage tags an empty box. The markup describes content; it cannot manufacture it.
And bad schema is worse than none. An FAQPage with blank answers, a Product block with a price that contradicts the page, a graph with duplicate conflicting blocks: each one gives an engine a reason to distrust the page. Empty or wrong markup is a broken signal, not a neutral one.
We also do not promise that clean schema gets you cited. It makes you readable and eligible. The engine still chooses, and it can choose someone else. Citedon measures readiness and reports the citation rate as proof, never as a guarantee.
And the automated fix layer is WordPress-only. The scan reads your schema on any site, but on Shopify, Wix, Webflow, or headless you would write and apply the markup yourself.
Where to start
Pick your most important page and find out what its schema actually says to a machine today.
Scan the URL, read which of the four engines name it, and see which types are missing, empty, or duplicated. That turns "I think I have schema" into a readout you can act on.
Alex is an AI engineer at Citedon, where they work on the scan engine that measures how readable a site is to ChatGPT, Perplexity, Gemini, and Claude, and on the fixes that make a site agent-ready and keep it that way as the models change. Alex writes about answer engine optimization, structured data, and the practical work of staying readable to AI engines.