aeo-optimization
Use this skill when optimizing content for answer engines and SERP features - featured snippets (paragraph, list, table), People Also Ask (PAA) targeting, voice search optimization, knowledge panels, speakable schema, and zero-click search strategies. Triggers on winning position zero, optimizing for Google's answer boxes, voice assistant responses, or FAQ-style content optimization.
marketing seoaeofeatured-snippetsvoice-searchpaaanswer-enginezero-clickWhat is aeo-optimization?
Use this skill when optimizing content for answer engines and SERP features - featured snippets (paragraph, list, table), People Also Ask (PAA) targeting, voice search optimization, knowledge panels, speakable schema, and zero-click search strategies. Triggers on winning position zero, optimizing for Google's answer boxes, voice assistant responses, or FAQ-style content optimization.
aeo-optimization
aeo-optimization is a production-ready AI agent skill for claude-code, gemini-cli, openai-codex, and 1 more. Optimizing content for answer engines and SERP features - featured snippets (paragraph, list, table), People Also Ask (PAA) targeting, voice search optimization, knowledge panels, speakable schema, and zero-click search strategies.
Quick Facts
| Field | Value |
|---|---|
| Category | marketing |
| Version | 0.1.0 |
| Platforms | claude-code, gemini-cli, openai-codex, mcp |
| License | MIT |
How to Install
- Make sure you have Node.js installed on your machine.
- Run the following command in your terminal:
npx skills add AbsolutelySkilled/AbsolutelySkilled --skill aeo-optimization- The aeo-optimization skill is now available in your AI coding agent (Claude Code, Gemini CLI, OpenAI Codex, etc.).
Overview
Answer Engine Optimization (AEO) is the discipline of structuring content so search engines and AI assistants select it as the direct answer to a user's query - appearing as featured snippets, People Also Ask boxes, voice search responses, or knowledge panel entries. As Google serves zero-click answers to roughly half of all searches and AI-powered search (SGE, Perplexity, Bing Copilot) increasingly cites primary sources, AEO has become as important as traditional ranking. The goal is not just to rank on page one but to own the answer slot - position zero - and to become the source that AI systems quote.
Tags
seo aeo featured-snippets voice-search paa answer-engine zero-click
Platforms
- claude-code
- gemini-cli
- openai-codex
- mcp
Related Skills
Pair aeo-optimization with these complementary skills:
Frequently Asked Questions
What is aeo-optimization?
Use this skill when optimizing content for answer engines and SERP features - featured snippets (paragraph, list, table), People Also Ask (PAA) targeting, voice search optimization, knowledge panels, speakable schema, and zero-click search strategies. Triggers on winning position zero, optimizing for Google's answer boxes, voice assistant responses, or FAQ-style content optimization.
How do I install aeo-optimization?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill aeo-optimization in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support aeo-optimization?
This skill works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.
Maintainers
Generated from AbsolutelySkilled
SKILL.md
Answer Engine Optimization (AEO)
Answer Engine Optimization (AEO) is the discipline of structuring content so search engines and AI assistants select it as the direct answer to a user's query - appearing as featured snippets, People Also Ask boxes, voice search responses, or knowledge panel entries. As Google serves zero-click answers to roughly half of all searches and AI-powered search (SGE, Perplexity, Bing Copilot) increasingly cites primary sources, AEO has become as important as traditional ranking. The goal is not just to rank on page one but to own the answer slot - position zero - and to become the source that AI systems quote.
When to use this skill
Trigger this skill when the task involves:
- Winning or defending a featured snippet (paragraph, list, or table format)
- Targeting and expanding coverage of People Also Ask (PAA) boxes
- Optimizing content for voice assistant responses (Google Assistant, Siri, Alexa)
- Getting a brand or entity into a knowledge panel
- Implementing Speakable schema to mark voice-appropriate content
- Developing a zero-click search strategy (capturing visibility without click-throughs)
- Writing or restructuring FAQ sections for maximum snippet and PAA eligibility
- Analyzing why a competitor holds a snippet and reverse-engineering their win
Do NOT trigger this skill for:
- General keyword research and search volume analysis (use
technical-seo-engineeringskill) - Technical crawlability, site speed, or Core Web Vitals issues (technical SEO concerns)
Key principles
Featured snippets have strict format requirements - Paragraph snippets want 40-60 word direct answers. List snippets need clean bullet or numbered HTML elements under clear H2/H3 headers. Table snippets require semantic
<table>markup. Mismatching format to snippet type is the leading cause of eligibility failure.Answer first, elaborate second - Use the inverted pyramid: the direct answer in the first 1-2 sentences, supporting detail below. Google extracts the opening of the answer block; everything after the extraction point is still valuable for human readers but won't appear in the snippet.
PAA is both a content ideation goldmine and an optimization target - People Also Ask questions reveal exactly what users want to know next. Mine PAA boxes for content gaps, then write concise answer blocks for each question found. Answering one PAA question can trigger additional PAA expansions, creating a compounding visibility effect.
Voice search queries are conversational and question-based - Voice users ask full questions ("What is the best way to...?") rather than keyword strings ("best way X"). Content must answer the natural-language question directly. Local intent is amplified in voice - "near me" and time-sensitive queries dominate.
Structured data increases answer eligibility -
FAQPage,HowTo, andSpeakableschema in JSON-LD explicitly tell Google which content is answer-formatted. Structured data does not guarantee selection but significantly raises eligibility, especially for FAQPage rich results and voice responses.
Core concepts
Featured snippet types
| Type | Format | Ideal length | Best for |
|---|---|---|---|
| Paragraph | <p> block |
40-60 words | Definitions, explanations, "what is" |
| Ordered list | <ol> under <h2>/<h3> |
5-8 items | Step-by-step processes, rankings |
| Unordered list | <ul> under <h2>/<h3> |
5-8 items | Ingredient lists, feature comparisons |
| Table | <table> |
3-5 columns, 4-8 rows | Comparisons, pricing, specs |
People Also Ask (PAA)
PAA boxes are dynamic - Google auto-populates them from its answer index, and clicking one question causes more questions to load. Each PAA card can show a snippet from a different domain than the main result. This means a page ranking on page two can still win a PAA card if its answer format is correct. PAA is the fastest path to answer visibility for newer content that hasn't earned top rankings yet.
Voice search characteristics
Voice queries are typically 7-10 words long (vs. 2-4 for typed queries), phrased as full questions, and disproportionately local ("open now", "near me") or time-sensitive. Google Assistant, Siri, and Alexa largely read featured snippet content aloud. Winning the paragraph snippet for a voice-common query is the most reliable path to voice inclusion.
Knowledge panels
Knowledge panels are entity-based, not page-based. Google builds them from its Knowledge
Graph, which is populated via structured data (Organization, Person, LocalBusiness
schema), Wikidata, Wikipedia, and authoritative mentions. You cannot directly edit a
knowledge panel - you earn entity recognition through consistent structured data
implementation and third-party citations.
Zero-click search strategy
Zero-click does not mean zero value. Owning the answer box increases brand trust, recall, and assisted conversions - users who see your brand answer a question are more likely to visit later with purchase intent. The strategy: accept that clicks from snippet queries will be lower, optimize the snippet content for brand visibility and recall, and target zero-click queries as top-of-funnel awareness plays rather than direct traffic drivers.
Common tasks
Format content to win paragraph featured snippets
Structure the page with a clear question as an H2 or H3 header, followed immediately by a direct 40-60 word answer paragraph. The answer paragraph must stand alone - Google extracts it without surrounding context.
Template:
## What is [topic]?
[Topic] is [direct definition in one sentence]. [One sentence of key context or
qualification]. [Optional: one sentence on significance or application]. Keep this
block to 40-60 words and do not include links, callouts, or images within the answer
paragraph itself.Checklist:
- Question phrased exactly as users search it (use keyword tools to confirm)
- Answer paragraph immediately follows the header - no images or callouts between
- Word count 40-60 (longer blocks rarely extract as paragraph snippets)
- No internal links within the answer paragraph
- Page already ranks in positions 1-10 for the target query (snippets rarely trigger for pages outside top 10)
Structure content for list featured snippets
List snippets trigger for "how to", "steps to", "ways to", and "types of" queries. Use
<ol> for ordered/sequential content and <ul> for unordered collections. Each list
item should be short (under 10 words) - Google truncates at 8 items and shows a "More
items" link.
Template:
## How to [task]
1. [Short imperative action phrase - under 10 words]
2. [Short imperative action phrase]
3. [Short imperative action phrase]
4. [Short imperative action phrase]
5. [Short imperative action phrase]
[Expanded detail for each step below as sub-sections for human readers]Key rule: Each list item label must make sense on its own. Google sometimes shows only the label, not the supporting paragraph.
Create content targeting table featured snippets
Table snippets appear for comparison queries ("X vs Y", "best X for Y", "X pricing").
Use semantic HTML <table> with <thead> and <tbody>. Avoid merged cells and keep
columns to 3-5.
Template:
<table>
<thead>
<tr>
<th>[Entity]</th>
<th>[Attribute 1]</th>
<th>[Attribute 2]</th>
<th>[Attribute 3]</th>
</tr>
</thead>
<tbody>
<tr>
<td>[Option A]</td>
<td>[Value]</td>
<td>[Value]</td>
<td>[Value]</td>
</tr>
</tbody>
</table>Precede the table with a short paragraph that frames the comparison - this helps Google understand the table's topic when deciding to extract it.
Mine and target People Also Ask questions
Research workflow:
- Search your target query in Google and expand the PAA box - note every question shown
- Click one question to expand it (loads additional PAA questions) - capture those too
- Use tools like AlsoAsked.com or AnswerThePublic to map question clusters around a topic
- Cross-reference with keyword research data to prioritize by search volume
- Check which domains currently hold the PAA answers - assess replaceability
Prioritize PAA questions where:
- Your site ranks positions 3-15 for the parent query (high swap potential)
- The current PAA holder has a shallow, outdated, or poorly formatted answer
- The question is logically on-topic for a page you already have or plan to create
Optimize for voice search queries
Voice search optimization is mostly paragraph snippet optimization applied to conversational queries. Key differences:
- Target full question phrases, not keyword fragments ("how long does it take to..." not "time to...")
- Page load speed matters more - voice results come from fast-loading pages
- Local pages need
LocalBusinessschema with accurate NAP (name, address, phone) - FAQ sections are prime voice targets - write each Q&A as a standalone spoken answer
FAQ answer format for voice:
**Q: [Question as naturally spoken]**
A: [Answer in 1-2 sentences, under 30 words. Written as if being read aloud.
No lists, no links, no qualifiers that require visual context.]Implement Speakable schema
Speakable schema marks specific sections of a page as appropriate for text-to-speech playback by Google Assistant on smart speakers. It is primarily relevant for news publishers but has broader utility for informational sites.
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "WebPage",
"name": "What is Answer Engine Optimization",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".article-summary", ".key-facts"]
},
"url": "https://example.com/what-is-aeo"
}
</script>Notes:
- Use
cssSelectorto point at specific DOM elements containing the speakable content - Speakable content must be factual, brief, and self-contained (30 seconds max when read aloud)
- Google requires the marked content to be directly accessible in the DOM - not loaded via JS
- Currently only in English and requires Google News partnership for full eligibility
Build an FAQ section optimized for snippets and PAA
An FAQ section structured with FAQPage schema can win both PAA cards and a rich result
in the SERP that expands inline. Each Q&A pair must be visible on the page (not just in
the schema).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is answer engine optimization?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Answer engine optimization (AEO) is the practice of structuring
content so search engines select it as the direct answer in SERP
features like featured snippets, People Also Ask boxes, and voice
search responses."
}
},
{
"@type": "Question",
"name": "How is AEO different from SEO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Traditional SEO focuses on ranking pages in organic results.
AEO focuses on winning the answer position zero - featured snippets,
PAA boxes, and voice responses - which may appear above all organic
results."
}
}
]
}
</script>FAQ section rules:
- Each question must appear as visible text on the page (schema alone is not enough)
- Answers must be 40-60 words for paragraph snippet eligibility
- Questions should match actual search queries - use PAA research to choose them
- Do not use FAQPage schema for commercial/transactional pages; Google limits its use
Anti-patterns / common mistakes
| Anti-pattern | Problem | Fix |
|---|---|---|
| Answer paragraphs over 80 words | Too long for snippet extraction; Google truncates or skips | Keep to 40-60 words; move detail below the answer block |
| Ignoring the current snippet holder's format | Your format may not match what Google wants for that query type | Analyze the current snippet, mirror its format, then differentiate on quality |
| FAQPage schema without matching visible content | Google penalizes hidden schema; rich result eligibility revoked | Every Q&A in schema must have identical visible HTML on the page |
| Targeting snippet queries where you rank on page 2+ | Snippets almost never trigger for positions 11+ | First earn a top-10 ranking, then optimize the snippet format |
| Keyword-stuffing FAQ sections | Unnatural language reduces voice eligibility | Write FAQ answers as you would speak them aloud |
| Using lists for definition queries | Paragraph snippets win "what is" queries; lists don't extract for those | Match content format to the query type |
| Optimizing for snippets without considering zero-click impact | High-traffic snippet queries may drive fewer clicks post-snippet | Balance snippet wins against click-through value; prioritize top-of-funnel awareness queries |
Gotchas
Pages not in the top 10 almost never win snippets - Featured snippets are almost exclusively drawn from positions 1-10. Optimizing snippet format on a page ranking position 15 is wasted effort. Earn the ranking first, then optimize for the snippet.
FAQPage schema without identical visible HTML gets penalized - Every Q&A in
FAQPageschema must have matching visible content on the page. Schema-only Q&A pairs (where the answer is in the JSON-LD but not rendered in the DOM) cause Google to revoke rich result eligibility for the entire page.Snippet wins on high-traffic informational queries often reduce clicks - Zero-click exposure builds brand awareness but does not drive traffic. Before optimizing for a snippet, check whether the query has purchase or navigation intent. Snippet-optimizing a bottom-funnel query that currently drives clicks may hurt conversion.
List snippet items must be self-contained - Google sometimes displays only the label of each list item, not the supporting paragraph. If an item label only makes sense in context ("Step 3: Do this after step 2"), it will be useless in the snippet. Each item must stand alone.
Speakable schema is English-only and requires Google News eligibility - Speakable is not a general-use schema. For non-news sites, it has no confirmed impact on voice results. Focus voice optimization efforts on winning paragraph featured snippets instead, as those are the primary source for voice responses.
References
For detailed guidance on specific snippet mechanics and voice optimization, load:
references/featured-snippets.md- Deep dive on paragraph, list, and table snippet types: optimal formats, trigger patterns, analyzing current snippet holders, defending snippet positions, and snippet volatility. Load when diagnosing a lost snippet or reverse-engineering a competitor's win.references/voice-search-faq.md- Voice search query characteristics, Google Assistant/Siri/Alexa optimization, Speakable schema implementation details, local voice search, FAQ best practices for voice, and measuring voice search impact. Load when building a voice search strategy or implementing Speakable schema.
References
featured-snippets.md
Featured Snippets - Deep Reference
What Google actually extracts
Google's snippet extraction algorithm looks for content that directly answers the inferred search intent with a self-contained block. The key signals:
- Proximity to the question: The best answer block appears immediately below a header phrased as (or closely matching) the search query
- Semantic self-containment: The block makes sense without surrounding context
- Format signal: The HTML element type (p, ol, ul, table) must match the query type
- Authority signal: The page must already rank in positions 1-10 for the query; pages below position 10 almost never win snippets
Paragraph snippets
When Google triggers a paragraph snippet
Paragraph snippets appear for:
- Definition queries ("what is X", "what does X mean")
- Explanation queries ("how does X work", "why does X happen")
- Comparison queries that need a summary answer ("X vs Y" at informational intent)
- Historical/factual queries ("who invented X", "when was X founded")
Optimal format
## What is [topic]?
[Direct definition sentence - subject + verb + predicate]. [One sentence of important
context or qualification]. [Optional: one sentence on relevance or use case].Word count target: 40-60 words. Below 35 words and Google may consider the answer too thin. Above 70 words and extraction becomes less reliable - Google may truncate mid-sentence or skip the block entirely.
"Is" definition pattern
Google strongly prefers answers starting with the subject echoed back:
- Query: "What is semantic search?"
- Winning format: "Semantic search is a search technique that understands the intent and contextual meaning of a query rather than matching keywords literally. It uses natural language processing and knowledge graphs to return results that match what the user means, not just what they typed."
Avoid starting the answer with "I", "You", or a dependent clause. Echo the subject from the question.
Trigger phrases for paragraph snippets
These query modifiers strongly correlate with paragraph snippet extraction:
| Modifier type | Examples |
|---|---|
| Definition | "what is", "what are", "define", "meaning of" |
| Explanation | "how does", "why does", "what causes" |
| Process summary | "how to [abstract action]" (single-step) |
| Fact | "who is", "when did", "where is" |
List snippets
Ordered vs unordered - when to use each
Ordered lists (<ol>) win for:
- Step-by-step processes ("how to set up X", "steps to do Y")
- Ranked lists where order has meaning ("top 5 X", "first steps to Y")
- Sequential workflows
Unordered lists (<ul>) win for:
- Feature or benefit lists ("benefits of X", "features of Y")
- Ingredient or component lists
- Non-sequential collections ("types of X", "examples of Y")
Google respects the semantic distinction. Using <ol> for non-sequential content or
<ul> for step-by-step processes reduces snippet eligibility.
H2/H3 header requirement
List snippets almost always originate from a list that lives under an H2 or H3 header matching (or closely paraphrasing) the search query. Structure:
<h2>How to Optimize for Featured Snippets</h2>
<ol>
<li>Identify queries where a snippet exists in the SERP</li>
<li>Analyze the current snippet holder's format</li>
<li>Write a direct answer block matching that format</li>
<li>Add the header as a question matching the query</li>
<li>Implement FAQPage schema if the page is FAQ-structured</li>
</ol>Item length and truncation behavior
Google shows up to 8 list items in most snippets, with a "More items" link for longer lists. Each item label should be under 10 words. If your list items are long sentences, Google may:
- Show only the first 8 items and truncate
- Fail to extract the list and show a paragraph instead
Best practice: Short, scannable item labels (under 10 words) with expanded explanation in paragraph sub-sections below the list.
Nested lists
Avoid nested lists in content targeting list snippets. Google's extraction algorithm handles them inconsistently - the snippet may display only the outer level, breaking the semantic structure, or may skip the block entirely.
Table snippets
Query types that trigger table snippets
- Comparison queries: "X vs Y", "[product] comparison", "best X for Y"
- Pricing queries: "[product] pricing", "[service] plans"
- Specification queries: "[product] specs", "[device] dimensions"
- Schedule/timetable queries: "[event] schedule", "[transit] times"
HTML requirements
Table snippets require semantic HTML. CSS-styled divs that look like tables do not trigger table snippets. Required structure:
<table>
<thead>
<tr>
<th>Plan</th>
<th>Price</th>
<th>Features</th>
<th>Users</th>
</tr>
</thead>
<tbody>
<tr>
<td>Starter</td>
<td>$9/month</td>
<td>5 projects</td>
<td>1 user</td>
</tr>
<tr>
<td>Pro</td>
<td>$29/month</td>
<td>Unlimited projects</td>
<td>5 users</td>
</tr>
</tbody>
</table>Rules:
- Use
<thead>and<tbody>(not just<tr>rows) - semantic structure aids extraction - Column headers in
<th>elements, not<td>with CSS bold styling - No merged cells (
colspan,rowspan) - they confuse extraction - Keep to 3-5 columns and 4-8 rows; larger tables are truncated inconsistently
- First column should be the entity being compared (the "row identifier")
Introductory paragraph
Precede every table with 1-2 sentences framing the comparison topic. This text provides the context signal that helps Google understand what the table is about:
The following table compares [tool A], [tool B], and [tool C] across price,
key features, and user limits to help teams choose the right plan.
[TABLE]Analyzing current snippet holders
Before writing content to displace a snippet, study the current holder:
Step 1 - Document the current snippet
Search the query in an incognito window and screenshot:
- The exact text extracted in the snippet
- The word count (count manually or use a word counter)
- The HTML element type (paragraph, list, or table)
- The header above the extracted block
- Whether a source URL is shown
Step 2 - Visit the source page
On the snippet holder's page, find the extracted block and note:
- The header phrasing (exact text of the H2/H3 above the block)
- The element type in the actual HTML (inspect element)
- The position of the block on the page (above the fold? Mid-page?)
- Whether FAQPage or other structured data is implemented
Step 3 - Assess replaceability
| Signal | Interpretation |
|---|---|
| Snippet holder is DA 80+ site | Hard to displace; compete on a related but distinct query |
| Answer is outdated or factually thin | High opportunity to displace with better content |
| Current snippet is a list but could be a table | Try a table format for the same query |
| Query shows snippet volatility (changes weekly) | Google is uncertain; fresh, authoritative answer has strong chance |
Step 4 - Reverse-engineer the win
Model your answer block on the current snippet:
- Match the word count within ±10 words
- Use the same element type (p, ol, ul, table)
- Match the header phrasing pattern
- Then differentiate on accuracy, completeness, and recency
Snippet volatility and defense
What causes snippet volatility
A snippet is "volatile" when Google rotates it between multiple sources. Volatility indicates:
- Multiple pages have similar-quality answer blocks
- The query intent is ambiguous (informational vs. navigational)
- Google is testing different formats to see which gets better user signals
Tools like Semrush or SERPWatcher can track snippet ownership over time.
Defending a snippet position
Once you hold a snippet, protect it by:
Keeping the answer block fresh - Update the content when the topic evolves. Stale snippets are the primary displacement vector.
Not moving the block - If a page redesign buries the answer block further down the page, snippet eligibility drops. Keep the answer block in its original position.
Monitoring for displacement - Set up weekly rank tracking for your snippet queries. A drop from snippet to position 1 is a warning signal.
Resisting padding - The temptation to add more content around the answer block to "improve" the page can dilute the block's extractability. The answer block should remain a clean, isolated, self-contained unit.
When you lose a snippet
If you held a snippet and lost it, check in this order:
- Did the page's organic ranking drop below position 10? (Snippet requires top-10 rank)
- Did you move or rewrite the answer block in a recent publish?
- Did a competitor publish a cleaner, more direct answer?
- Did Google change the expected snippet format for this query type?
Re-run your snippet analysis from scratch and treat the displacement as a new optimization opportunity.
Multi-snippet and snippet + PAA strategy
For a high-value topic cluster, it is possible to hold multiple SERP features simultaneously:
- The featured snippet on the head query
- PAA cards on related sub-questions (from the same or different pages)
- A rich result from FAQPage schema on the same page
The strongest content strategy: one pillar page answering the main query (targeting
the featured snippet) with an FAQ section at the bottom answering the 5-8 PAA
questions around that topic, all marked up with FAQPage schema.
Snippet eligibility checklist
Before publishing content targeting a snippet:
- Target query confirmed to show a snippet in current SERP
- Page already ranks or is expected to rank positions 1-10
- Answer block is the correct type (paragraph/list/table) for the query
- Paragraph: 40-60 words, directly below matching H2/H3 header
- List:
<ol>or<ul>under H2/H3, items under 10 words each, 5-8 items - Table: semantic HTML,
<thead>/<tbody>/<th>, 3-5 columns, no merged cells - No internal links within the answer block
- No images between the header and the answer block
- FAQPage or HowTo schema implemented if appropriate
voice-search-faq.md
Voice Search and FAQ Optimization - Deep Reference
How voice search differs from typed search
Understanding the structural difference between voice and typed queries is the foundation of all voice optimization decisions.
| Dimension | Typed query | Voice query |
|---|---|---|
| Average length | 2-4 words | 7-10 words |
| Phrasing | Keyword fragment ("best coffee shop NYC") | Full sentence ("What is the best coffee shop near me?") |
| Question words | Rare | Common (what, how, where, when, why, who) |
| Local intent | Moderate | High - "near me", "open now", "directions to" |
| Speed expectation | Tolerates delay | Expects instant spoken response |
| Ambiguity | Acceptable | Low - voice queries are usually specific |
The conversational shift
Voice queries mirror how people talk, not how they type. This means:
- Long-tail query coverage matters more - conversational phrases have lower individual search volume but collectively capture significant voice traffic
- FAQ content performs strongly because FAQs are inherently structured as the Q&A format that voice assistants prefer to read aloud
- "Stop words" (is, the, a, how, what) that are typically stripped from typed queries are meaningful in voice - optimize for the full phrase, not the stripped keyword
How voice assistants select answers
Google Assistant
Google Assistant answers are almost exclusively pulled from featured snippets. If your page holds the paragraph snippet for a query, Google Assistant will read that snippet aloud when a user asks the equivalent question via voice. The selection process:
- Query is interpreted as natural language
- Google checks for a featured snippet matching the intent
- If found, the snippet text is synthesized to speech and read with attribution
- If no snippet, Google may read from a knowledge panel or decline to answer
Implication: Winning the paragraph featured snippet for voice-common queries IS the voice optimization strategy. There is no separate "voice ranking" - it is the snippet.
Siri (Apple)
Siri uses a combination of:
- Bing search results (for web queries)
- Apple Maps (for local queries)
- Wolfram Alpha (for factual/calculation queries)
- App integrations (calendar, contacts, music)
For general web queries, Siri reads from Bing's featured snippet equivalent. Optimizing for Bing's featured snippets follows the same format principles as Google (paragraph 40-60 words, direct answer, matching header) but Bing places slightly more weight on exact phrase matching.
Amazon Alexa
Alexa primarily uses:
- Bing search results for factual queries
- Alexa's own Skills (developer-built voice apps)
- Specific data providers for weather, news, shopping
For general information queries, Alexa's behavior is similar to Siri - it reads from Bing's answer boxes. For local and shopping queries, Amazon's own ecosystem takes priority.
Key takeaway: Google Assistant is the most impactful target. Paragraph snippet optimization benefits all three platforms simultaneously because Siri and Alexa also use featured-snippet-like extraction from their respective search engines.
Optimizing content for voice queries
Query identification
Find your voice-appropriate queries:
- Filter your keyword research for question-form queries (starts with who/what/where/ when/why/how)
- Identify queries with a featured snippet already showing in SERP (high voice eligibility indicator)
- Cross-reference with PAA data - PAA questions are frequently voice queries
- Use Google Search Console to find queries where your pages appear for question-form searches with low CTR (a snippet exists but it is not yours)
Answer writing for voice
Voice answers have different requirements than written answers:
Write for the ear, not the eye:
- No bullet points or lists in the answer (lists don't read aloud coherently)
- No parenthetical asides - they sound unnatural when synthesized
- No abbreviations or acronyms without expansion on first use
- No links, citations, or asterisks
- Short sentences - complex syntax sounds robotic when read aloud
- Active voice: "You can do X" not "X can be done"
Target length for voice answers:
- 20-30 words for simple factual queries
- 40-60 words for explanatory queries (same as paragraph snippet target)
- Never more than 60 words - voice assistants truncate or skip longer blocks
Template:
[Query]: How long does keyword research take?
[Voice-optimized answer]: Keyword research typically takes 2 to 4 hours for a focused
topic cluster and 1 to 2 days for a full site audit. The time varies based on your
industry, the number of target pages, and the tools you use.Page speed for voice results
Google's voice results are served from fast-loading pages. The technical benchmarks that improve voice eligibility:
- LCP (Largest Contentful Paint) under 2.5 seconds
- Page is served over HTTPS
- Page is mobile-responsive (most voice queries originate from mobile)
- No render-blocking JavaScript on the answer block
Local voice search optimization
Local voice queries represent a disproportionately large share of voice traffic. Common patterns:
- "[Business type] near me"
- "[Business type] open now"
- "Hours for [Business name]"
- "Directions to [Business name]"
- "Phone number for [Business name]"
LocalBusiness schema
For any location-based business, LocalBusiness schema is the single most impactful
technical implementation for local voice eligibility:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme Coffee Roasters",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
},
"telephone": "+1-415-555-0100",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday", "Sunday"],
"opens": "08:00",
"closes": "17:00"
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.7749,
"longitude": -122.4194
},
"url": "https://acmecoffeeroasters.com",
"sameAs": [
"https://www.yelp.com/biz/acme-coffee",
"https://www.facebook.com/acmecoffee"
]
}
</script>NAP consistency
NAP (Name, Address, Phone) consistency across the web directly affects local voice eligibility. Google cross-references your LocalBusiness schema against:
- Google Business Profile
- Yelp, Tripadvisor, Bing Places, Apple Maps
- Industry directories
Inconsistencies lower confidence in the data and reduce voice answer reliability. Audit NAP across all citations quarterly.
"Near me" optimization
You cannot literally target "near me" in content - Google replaces it with the user's actual location at query time. What you can do:
- Ensure your Google Business Profile is complete and accurate
- Include city and neighborhood names in your page content naturally
- Implement LocalBusiness schema with precise geo coordinates
- Get citations on local directories (drives confidence in location data)
FAQ page best practices for voice
FAQ pages are the highest-leverage content format for voice because each Q&A pair is inherently structured for voice extraction. An FAQ page done right can provide dozens of voice answers from a single content investment.
FAQ structure for voice eligibility
Question phrasing: Write questions exactly as users would speak them, including stop words. "What are the hours?" not "Hours?"
Answer format: Prose paragraphs only. No bullet lists, no tables, no images within the FAQ answer block.
Answer length: 20-60 words. Under 20 words may be too thin; over 60 words will not be read aloud in full.
Self-contained answers: Each answer must make sense without the question being visible. Voice assistants read the answer, sometimes with the question prefix and sometimes without.
Markup: Use
<details>/<summary>for expandable FAQs only if you also have the FAQ visible in flat HTML format (Google can index hidden text but treats it with lower confidence).
FAQPage schema for voice and rich results
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does SEO take to work?",
"acceptedAnswer": {
"@type": "Answer",
"text": "SEO typically takes 3 to 6 months to show significant results for
a new site. Established sites with strong authority can see ranking
improvements within 4 to 8 weeks of publishing optimized content."
}
}
]
}
</script>FAQPage schema rules:
- Maximum 4-5 Q&A pairs recommended per page for rich result eligibility (Google shows 2 questions expanded in the SERP; more are clickable)
- Never use FAQPage schema on e-commerce product pages or ad-heavy pages (against Google guidelines and rich result eligibility rules)
- Answers in schema must exactly match visible page text
Speakable schema - implementation details
Speakable schema (SpeakableSpecification) was introduced for news publishers but
applies to any page with content appropriate for audio playback.
When to implement Speakable
Use Speakable schema when:
- The page has a clearly defined summary or key facts section
- Content is factual and time-relevant (current events, informational)
- You are a Google News-approved publisher (full Speakable eligibility)
For non-news sites, Speakable implementation has limited verified impact but no downside - implement it on pages with strong FAQ or summary content.
cssSelector approach (recommended)
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "WebPage",
"name": "What is Answer Engine Optimization",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [
".article-lead",
".key-takeaways",
"#summary"
]
},
"url": "https://example.com/what-is-aeo"
}
</script>The CSS selectors should point to elements containing:
- 1-3 short paragraphs (not lists or tables)
- Self-contained factual statements
- Content that makes sense when read aloud without visual context
xpath approach (alternative)
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "WebPage",
"speakable": {
"@type": "SpeakableSpecification",
"xpath": [
"/html/head/title",
"/html/body/article/section[@class='summary']/p[1]"
]
}
}
</script>Use xpath only if your CMS makes CSS class targeting unreliable.
Content requirements for Speakable sections
- Maximum 30 seconds of read-aloud time (approximately 75-100 words at natural speech rate)
- No links, image references, or formatting instructions ("see the table above")
- Factual and declarative - no calls to action
- Content must be in the DOM on initial page load (no lazy loading)
Measuring voice search impact
The honest limitation: there is no direct voice search data in Google Search Console. Google does not segment queries by input modality (voice vs. typed). Measurement requires indirect proxies.
Proxy metrics in Google Search Console
Filter queries to identify likely voice candidates:
- Queries containing question words (how, what, where, when, why, who)
- Queries of 6+ words
- Queries with featured snippet appearances (Impressions with Position = 0)
- Position 0 impressions with low CTR (snippet is showing but users aren't clicking - may be voice)
A rising volume of question-form queries combined with growing Position 0 impressions is the closest available proxy for growing voice traffic.
Tracking snippet ownership
Voice traffic is downstream of snippet ownership. Track snippet ownership as the leading indicator:
- Weekly rank tracking for target queries with
Features: Featured Snippetfilter - Screenshot and timestamp snippet wins and losses
- Correlate snippet ownership changes with organic traffic changes
Conversion attribution
For local businesses, attribute voice-driven conversions via:
- "How did you hear about us?" survey data (some users will mention voice/Siri/Alexa)
- Google Business Profile insights (calls, direction requests - these spike with local voice visibility)
- Phone call tracking numbers in LocalBusiness schema and GBP
Voice search optimization checklist
- Question-form queries identified and prioritized by snippet eligibility
- Voice answer blocks written as 20-60 word prose (no lists, no links)
- FAQ page structured with conversational question phrasing
- FAQPage schema implemented on all FAQ pages (max 5 Q&A pairs)
- LocalBusiness schema implemented for location-based pages
- NAP consistency verified across all major directories
- Speakable schema added to pages with summary/key-facts sections
- Page LCP under 2.5 seconds and HTTPS enforced
- Google Business Profile complete and verified
- GSC voice proxy metrics (question-form queries, Position 0 impressions) baselined
Frequently Asked Questions
What is aeo-optimization?
Use this skill when optimizing content for answer engines and SERP features - featured snippets (paragraph, list, table), People Also Ask (PAA) targeting, voice search optimization, knowledge panels, speakable schema, and zero-click search strategies. Triggers on winning position zero, optimizing for Google's answer boxes, voice assistant responses, or FAQ-style content optimization.
How do I install aeo-optimization?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill aeo-optimization in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support aeo-optimization?
aeo-optimization works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.