Schema for AEO: Which Types Actually Matter

Schema.org defines hundreds of types. For AI visibility you need about four, and adding more produces diminishing returns quickly.
Here is what each of the four does, in the order I would implement them.
Organization
Goes on the homepage, once, site-wide. It states your legal name, logo, official URL and sameAs links to verified profiles.
Its job is identity. It turns an ambiguous website into a named entity a system can match against mentions elsewhere on the web. Without it, a model reading about you on a review site has to work out whether that company is the same one as yours.
One condition: the name in the schema must match the name you use everywhere else. Where they differ, the markup stops resolving ambiguity and starts creating it.
FAQPage
Goes on any page with question-and-answer content. It labels each pair explicitly, so a machine does not have to infer where one answer ends and the next begins.
This is the highest return per hour of anything on the list, because answer engines reuse question-and-answer content more readily than any other format — and marking it up requires no new writing.
Two rules. The marked-up answer must be visible on the page; hiding content in schema that users cannot see is a policy violation and generally backfires. And the answer should stand alone, because it will be quoted without the paragraph above it.
DefinedTerm
Goes on glossary entries. It states that a string is a term and a specific sentence is its definition.
Nothing else in the vocabulary is so narrowly targeted at the "what is X" question, which is among the most common shapes assistants handle. Group entries under a DefinedTermSet so a machine can tell that forty pages form one reference work.
Keep the definition in the schema identical to the first sentence on the page and to the meta description. Three matching versions give a model nothing to choose between.
Article, with a real author
Goes on blog posts and guides. The valuable part is not the article type itself but the author reference — a named person, with a role and a sameAs link to a profile that exists elsewhere.
This is where structured data intersects with credibility. Content attributed to a verifiable person is treated differently from content attributed to nobody, and schema is how you state the attribution unambiguously.
Example: LocalBusiness schema for a pizzeria (Franco Manca, London)
JSON-LD
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Franco Manca",
"image": "https://example.com/images/franco-manca-chelsea.jpg",
"url": "https://example.com/locations/chelsea",
"telephone": "+44-20-7000-0000",
"priceRange": "££",
"servesCuisine": ["Italian", "Pizza", "Neapolitan"],
"acceptsReservations": "True",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 King's Road",
"addressLocality": "Chelsea, London",
"postalCode": "SW3 4XX",
"addressCountry": "GB"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.4875,
"longitude": -0.1687
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Sunday"],
"opens": "12:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday", "Saturday"],
"opens": "12:00",
"closes": "23:00"
}
],
"menu": "https://example.com/locations/chelsea/menu",
"sameAs": [
"https://www.instagram.com/francomanca",
"https://www.facebook.com/francomanca"
]
}
</script>What schema cannot do
It is not a ranking boost. Adding markup to a weak page does not make it authoritative. Structured data removes guesswork about what a page says; it does not change whether that is worth citing.
It cannot describe content that is not there. Markup asserting facts the page does not display is both a policy violation and self-defeating.
It does not fix crawlability. If your content renders only after JavaScript runs, an AI crawler may see neither your page nor your schema.
Implementation order
- Organization on the homepage. One block, thirty minutes, affects everything.
- FAQPage wherever you already have questions. An afternoon, no new writing.
- DefinedTerm if you have a glossary. If you do not, that is a bigger decision than a markup one.
- Article with author across editorial content.
Stop there. Product schema if you sell products, LocalBusiness if you have a physical location. Beyond that you are adding markup for its own sake.
How to check it works
Validate with a structured data testing tool, then do the more useful test: view your page's raw source and confirm the schema is actually in the HTML rather than injected by a script that runs afterwards.
Plenty of tag manager implementations pass validation in a browser and are invisible to crawlers that do not execute JavaScript. That is a common and entirely silent failure.


