AEO rules
Answer-engine specific checks: AI crawler access, server rendering, entity markup and extractable answers.
FAQ or QA schema is present
aeo.faq-qa-schema · Severity: high · Weight: 8
FAQPage/QAPage markup feeds answer engines ready-made Q&A pairs.
Fix: Mark up your FAQ section with FAQPage JSON-LD.
Skill: aeo-faq-qa-schema teaches an agent how to fix this in your stack.
Content is in the HTML without running JavaScript
aeo.content-server-rendered · Severity: high · Weight: 9
Answer engines and most AI crawlers read the HTML they are served and do not execute JavaScript. Content that only appears after hydration is invisible to them.
Fix: Server-render or pre-render the page so its content is in the initial HTML response.
Skill: aeo-server-rendering teaches an agent how to fix this in your stack.
Content uses question-shaped headings
aeo.question-headings · Severity: high · Weight: 7
Headings phrased as questions match how users query AI assistants.
Fix: Add headings like “How does X work?” above their answers.
Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.
Content is answerable (sufficient depth + lists)
aeo.answerable-content · Severity: medium · Weight: 6
Engines prefer pages with enough text and scannable lists to quote.
Fix: Aim for 300+ words and use lists for key facts.
Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.
Article and author schema are present
aeo.article-author-schema · Severity: medium · Weight: 5
Article + Person markup attributes content for E-E-A-T and citation.
Fix: Add Article JSON-LD with an author of type Person.
Skill: aeo-article-author-schema teaches an agent how to fix this in your stack.
Organization schema is present
aeo.organization-schema · Severity: medium · Weight: 5
Organization markup builds entity identity that engines trust.
Fix: Add Organization JSON-LD with name, url, and logo.
Skill: aeo-organization-entity teaches an agent how to fix this in your stack.
Organization identity is consistent across pages
aeo.entity-identity-consistent · Severity: high · Weight: 6
Every page should describe the same entity. Conflicting @id or url values on Organization nodes split one company into several the engine cannot merge.
Fix: Give Organization one stable @id (e.g. https://example.com/#organization) and one url, and reuse them verbatim on every page and property.
Skill: aeo-organization-entity teaches an agent how to fix this in your stack.
AI crawlers are not blocked
aeo.ai-bots-allowed · Severity: critical · Weight: 9
Blocking GPTBot/ClaudeBot/PerplexityBot removes you from AI answers.
Fix: Allow key AI user-agents in robots.txt unless you must opt out.
Skill: aeo-ai-crawler-access teaches an agent how to fix this in your stack.
llms.txt is present for answer engines
aeo.llms-txt-present · Severity: medium · Weight: 5
llms.txt is the emerging standard manifest for LLM-friendly content.
Fix: Generate and publish an llms.txt at your site root.
Skill: aeo-llms-txt teaches an agent how to fix this in your stack.
Content has structured, extractable answers
aeo.speakable-structured-answers · Severity: low · Weight: 3
Speakable markup or HowTo/QA structure yields voice/AI-ready answers.
Fix: Add Speakable or HowTo schema to highlight answer passages.
Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.
Breadcrumb structured data is present
aeo.breadcrumbs · Severity: low · Weight: 3
BreadcrumbList markup clarifies site structure for engines.
Fix: Add BreadcrumbList JSON-LD reflecting your navigation path.
Skill: aeo-site-structure teaches an agent how to fix this in your stack.
Content is extractable (paragraphs + lists/tables)
aeo.content-extractability · Severity: medium · Weight: 5
Engines extract best from well-formed paragraphs, lists, and tables.
Fix: Structure content into clear paragraphs, lists, and tables.
Skill: aeo-answer-first-content teaches an agent how to fix this in your stack.
Content declares a modification date
aeo.content-freshness · Severity: medium · Weight: 5
A parseable dateModified gives engines a reason to cite the page over undated competitors.
Fix: Add dateModified (or datePublished) in ISO 8601 to your Article/WebPage JSON-LD.
Skill: aeo-content-freshness teaches an agent how to fix this in your stack.
AEO Toolkit is an open-source instrument by Advance Labs.