AEO Schema
Source: github.com/psyduckler/aeo-skills
Part of: AEO Skills Suite (v2 Core)
Previously: aeo-schema-optimizer — renamed in v2 for namespace consistency
Generate structured data (JSON-LD) optimized for AI citation. Help Gemini 3 Flash and other AI models find, understand, and cite your content.
Why Structured Data Matters for AEO
When Gemini 3 Flash generates AI Overviews, it needs to quickly identify:
- What type of content is on the page (article, FAQ, how-to guide, product)
- What questions it answers
- What entities it covers (people, products, organizations)
- How authoritative the source is (author, publication date, organization)
Schema markup explicitly declares all of this. Pages with proper schema give AI models a structured signal layer on top of the content — making them easier to parse, trust, and cite.
Requirements
web_fetch — to analyze the target page
- LLM reasoning — to determine optimal schema types and generate JSON-LD
- Templates in
references/schema-templates.md
No API keys required.
Input
- URL (required) — the page to optimize
- Target prompt (optional) — the AI prompt this page should win citations for
Workflow
Step 1: Fetch and Analyze the Page
Use web_fetch on the target URL. Extract:
- Page title and meta description
- Content structure — headings (H1-H3), sections, lists
- Content type — determine what kind of page this is:
- Article/Blog — long-form content, guides, analysis
- FAQ — question-and-answer format
- How-To — step-by-step instructions
- Product — product page with specs, pricing, reviews
- Local Business — location with address, hours, contact
- Landing Page — mixed content, multiple purposes
- Key entities — people (authors), organizations, products, tools mentioned
- Existing schema — check for any
<script type="application/ld+json"> blocks
Step 2: Audit Existing Schema
If schema already exists:
- Is it valid JSON-LD?
- Does it match the page content type?
- Is it complete (all recommended properties filled)?
- Are there missing schema types that would help? (e.g., article page without FAQ schema for Q&A sections)
- Are dates current (datePublished, dateModified)?
Output audit findings: what's present, what's missing, what's incorrect.
Step 3: Determine Optimal Schema Strategy
Based on content type and structure, recommend which schema types to implement:
| Content Type |
Primary Schema |
Additional Schema |
| Guide/Article |
Article |
FAQ (if Q&A sections), BreadcrumbList, HowTo (if steps) |
| FAQ Page |
FAQPage |
Article, BreadcrumbList |
| Tutorial/How-To |
HowTo |
Article, FAQ (for troubleshooting), BreadcrumbList |
| Product Page |
Product |
FAQ, BreadcrumbList, AggregateRating |
| Local Business |
LocalBusiness |
FAQ, BreadcrumbList |
| Comparison |
Article |
FAQ, ItemList, BreadcrumbList |
| Listicle |
Article + ItemList |
BreadcrumbList |
Key principle: Layer multiple schema types. An article that includes a FAQ section should have both Article AND FAQPage schema. This gives AI models multiple structured entry points.
Step 4: Generate Optimized JSON-LD
Use templates from references/schema-templates.md and populate with actual page data.
Critical properties for AI citation:
For Article:
headline — match the H1, keep under 110 chars
description — the meta description or a 150-char summary
author — full name + credentials URL (sameAs)
datePublished + dateModified — ISO 8601, must be current
publisher — organization with logo
mainEntityOfPage — canonical URL
about — what the article covers (link to entities)
For FAQPage:
- Extract every Q&A pair from the page
- Each
Question gets the exact heading text
- Each
acceptedAnswer gets the first 1-2 sentences (the direct answer)
- Limit to 10 most important Q&As
For HowTo:
name — the process being described
step — each step with name and text
totalTime — ISO 8601 duration if mentioned
estimatedCost — if applicable
supply / tool — materials or tools needed
For Product:
name, description, brand
offers — pricing, availability
aggregateRating — if reviews exist
review — individual reviews
For LocalBusiness:
name, address, telephone
openingHoursSpecification
geo — latitude/longitude
priceRange
Step 5: Validate and Deliver
Before delivering the JSON-LD:
- Validate JSON syntax — ensure it parses correctly
- Check required properties — every schema type has required fields
- Verify entity consistency — author, publisher, dates match across schema blocks
- Test nested structures — FAQ questions, HowTo steps are properly structured
- Check URL references — mainEntityOfPage, sameAs, url fields are correct
Output:
- Complete JSON-LD block(s) ready to paste into
<head>
- Implementation notes (where to place, what to update when content changes)
- If existing schema was found: diff showing what changed
Step 6: Verification Guidance
After implementation, recommend:
Schema Types Gemini Prioritizes
Based on observed AI Overview behavior, these schema signals matter most:
- FAQPage — directly provides Q&A pairs the AI can cite; highest impact for question prompts
- Article with dateModified — freshness signal; AI models prefer recently-updated content
- HowTo — structured steps are easy for AI to extract and present
- Author with credentials — expertise signal (E-E-A-T); helps for YMYL topics
- BreadcrumbList — helps AI understand site structure and topic hierarchy
- Product with reviews — for commercial queries; aggregateRating is a trust signal
Tips
- Don't over-schema. Only add schema types that match actual page content. Misleading schema can trigger penalties.
- FAQ is the highest-ROI schema for AEO. If your page answers questions (even implicitly), extract those Q&As into FAQPage schema.
- Keep dateModified current. Every time you update content, update the dateModified. Stale dates signal stale content.
- Author schema matters for YMYL. Health, finance, legal content benefits enormously from detailed author schema with credentials.
- Pair with content optimization. Schema helps AI find your answers; the answers themselves still need to be clear, concise, and extractable. Use
aeo-content-free for that.
1---2name: aeo-schema3description: Analyze web pages and generate structured data (JSON-LD) optimized for AI citation. Fetches a page, analyzes its content structure, checks existing schema markup, and generates optimized JSON-LD that helps Gemini 3 Flash and other AI models identify and cite the content. Includes templates for Article, FAQ, HowTo, Product, LocalBusiness, and BreadcrumbList. SKILL.md-only skill — no script, the agent follows the methodology. Use when a user wants to: add or improve structured data on a page, optimize schema for AI Overviews, generate JSON-LD for their content, audit existing schema markup, or implement an aeo-optimize recommendation that calls for new structured data.4---56# AEO Schema78> **Source:** [github.com/psyduckler/aeo-skills](https://github.com/psyduckler/aeo-skills/tree/main/aeo-schema)9> **Part of:** [AEO Skills Suite](https://github.com/psyduckler/aeo-skills) (v2 Core)10> **Previously:** `aeo-schema-optimizer` — renamed in v2 for namespace consistency1112Generate structured data (JSON-LD) optimized for AI citation. Help Gemini 3 Flash and other AI models find, understand, and cite your content.1314## Why Structured Data Matters for AEO1516When Gemini 3 Flash generates AI Overviews, it needs to quickly identify:17- **What type of content** is on the page (article, FAQ, how-to guide, product)18- **What questions** it answers19- **What entities** it covers (people, products, organizations)20- **How authoritative** the source is (author, publication date, organization)2122Schema markup explicitly declares all of this. Pages with proper schema give AI models a structured signal layer on top of the content — making them easier to parse, trust, and cite.2324## Requirements2526- `web_fetch` — to analyze the target page27- LLM reasoning — to determine optimal schema types and generate JSON-LD28- Templates in `references/schema-templates.md`2930No API keys required.3132## Input3334- **URL** (required) — the page to optimize35- **Target prompt** (optional) — the AI prompt this page should win citations for3637## Workflow3839### Step 1: Fetch and Analyze the Page4041Use `web_fetch` on the target URL. Extract:42431. **Page title** and meta description442. **Content structure** — headings (H1-H3), sections, lists453. **Content type** — determine what kind of page this is:46 - **Article/Blog** — long-form content, guides, analysis47 - **FAQ** — question-and-answer format48 - **How-To** — step-by-step instructions49 - **Product** — product page with specs, pricing, reviews50 - **Local Business** — location with address, hours, contact51 - **Landing Page** — mixed content, multiple purposes524. **Key entities** — people (authors), organizations, products, tools mentioned535. **Existing schema** — check for any `<script type="application/ld+json">` blocks5455### Step 2: Audit Existing Schema5657If schema already exists:58- Is it valid JSON-LD?59- Does it match the page content type?60- Is it complete (all recommended properties filled)?61- Are there missing schema types that would help? (e.g., article page without FAQ schema for Q&A sections)62- Are dates current (datePublished, dateModified)?6364Output audit findings: what's present, what's missing, what's incorrect.6566### Step 3: Determine Optimal Schema Strategy6768Based on content type and structure, recommend which schema types to implement:6970| Content Type | Primary Schema | Additional Schema |71|---|---|---|72| Guide/Article | `Article` | `FAQ` (if Q&A sections), `BreadcrumbList`, `HowTo` (if steps) |73| FAQ Page | `FAQPage` | `Article`, `BreadcrumbList` |74| Tutorial/How-To | `HowTo` | `Article`, `FAQ` (for troubleshooting), `BreadcrumbList` |75| Product Page | `Product` | `FAQ`, `BreadcrumbList`, `AggregateRating` |76| Local Business | `LocalBusiness` | `FAQ`, `BreadcrumbList` |77| Comparison | `Article` | `FAQ`, `ItemList`, `BreadcrumbList` |78| Listicle | `Article` + `ItemList` | `BreadcrumbList` |7980**Key principle:** Layer multiple schema types. An article that includes a FAQ section should have both `Article` AND `FAQPage` schema. This gives AI models multiple structured entry points.8182### Step 4: Generate Optimized JSON-LD8384Use templates from `references/schema-templates.md` and populate with actual page data.8586**Critical properties for AI citation:**8788For `Article`:89- `headline` — match the H1, keep under 110 chars90- `description` — the meta description or a 150-char summary91- `author` — full name + credentials URL (sameAs)92- `datePublished` + `dateModified` — ISO 8601, must be current93- `publisher` — organization with logo94- `mainEntityOfPage` — canonical URL95- `about` — what the article covers (link to entities)9697For `FAQPage`:98- Extract every Q&A pair from the page99- Each `Question` gets the exact heading text100- Each `acceptedAnswer` gets the first 1-2 sentences (the direct answer)101- Limit to 10 most important Q&As102103For `HowTo`:104- `name` — the process being described105- `step` — each step with `name` and `text`106- `totalTime` — ISO 8601 duration if mentioned107- `estimatedCost` — if applicable108- `supply` / `tool` — materials or tools needed109110For `Product`:111- `name`, `description`, `brand`112- `offers` — pricing, availability113- `aggregateRating` — if reviews exist114- `review` — individual reviews115116For `LocalBusiness`:117- `name`, `address`, `telephone`118- `openingHoursSpecification`119- `geo` — latitude/longitude120- `priceRange`121122### Step 5: Validate and Deliver123124Before delivering the JSON-LD:1251261. **Validate JSON syntax** — ensure it parses correctly1272. **Check required properties** — every schema type has required fields1283. **Verify entity consistency** — author, publisher, dates match across schema blocks1294. **Test nested structures** — FAQ questions, HowTo steps are properly structured1305. **Check URL references** — mainEntityOfPage, sameAs, url fields are correct131132Output:133- Complete JSON-LD block(s) ready to paste into `<head>`134- Implementation notes (where to place, what to update when content changes)135- If existing schema was found: diff showing what changed136137### Step 6: Verification Guidance138139After implementation, recommend:140- Test with [Google Rich Results Test](https://search.google.com/test/rich-results)141- Validate with [Schema.org Validator](https://validator.schema.org)142- Wait 2-4 weeks for Google to re-crawl and process143- Use `aeo-ai-overview-simulator` to measure citation impact before/after144145## Schema Types Gemini Prioritizes146147Based on observed AI Overview behavior, these schema signals matter most:1481491. **FAQPage** — directly provides Q&A pairs the AI can cite; highest impact for question prompts1502. **Article with dateModified** — freshness signal; AI models prefer recently-updated content1513. **HowTo** — structured steps are easy for AI to extract and present1524. **Author with credentials** — expertise signal (E-E-A-T); helps for YMYL topics1535. **BreadcrumbList** — helps AI understand site structure and topic hierarchy1546. **Product with reviews** — for commercial queries; aggregateRating is a trust signal155156## Tips157158- **Don't over-schema.** Only add schema types that match actual page content. Misleading schema can trigger penalties.159- **FAQ is the highest-ROI schema for AEO.** If your page answers questions (even implicitly), extract those Q&As into FAQPage schema.160- **Keep dateModified current.** Every time you update content, update the dateModified. Stale dates signal stale content.161- **Author schema matters for YMYL.** Health, finance, legal content benefits enormously from detailed author schema with credentials.162- **Pair with content optimization.** Schema helps AI *find* your answers; the answers themselves still need to be clear, concise, and extractable. Use `aeo-content-free` for that.