SEO & AI Engine Optimization Framework · May 2026

Voice Search: conversational queries, Speakable schema, voice assistants

A comprehensive installation and audit reference for voice search optimization across the fragmented 2026 voice assistant ecosystem. Voice has shifted from a three engine era (Siri, Google Assistant,…

Voice Search Across the Multi Assistant Era: Apple Intelligence, Google Gemini Live, Amazon Alexa+, ChatGPT Advanced Voice Mode, Perplexity Voice, and Claude Voice

A comprehensive installation and audit reference for voice search optimization across the fragmented 2026 voice assistant ecosystem. Voice has shifted from a three engine era (Siri, Google Assistant, Alexa) into a six engine market. Apple Intelligence on iOS 19 delegates general queries to ChatGPT by default. Google Assistant rolled forward into Gemini Live on Pixel and Android 16. Amazon Alexa+ launched Q4 2025 with Anthropic Claude as the conversational layer. ChatGPT advanced voice mode reached mainstream use through 2025 and 2026. Perplexity Voice and Claude Voice rounded out the ecosystem. This framework specifies the structural, schema, freshness, entity, and access signals that drive answer selection per surface, the result architecture per engine, the audit rubric, and the maintenance cadence.

Cross stack implementation note: code samples are in plain HTML and bash. For React, Vue, Svelte, Next.js, Nuxt, SvelteKit, Astro, Hugo, 11ty, Remix, WordPress, Shopify, and Webflow equivalents see framework-cross-stack-implementation.md. For pure client rendered SPAs see framework-react.md. For Tailwind concerns see framework-tailwind.md.


1. Document Purpose

1.1 What This Document Is

This is the canonical operational reference for voice search optimization in 2026. The ecosystem fragmented across 2024 to 2026 from a three engine market into a six engine market with distinct retrieval substrates per engine. Per the Adobe Analytics 2025 voice search behavior study of 8,400 voice queries across iOS, Android, smart speaker, and in car contexts, voice query volume grew 31.4 percent year over year while typed grew 4.2 percent. Per the Brain Station 2025 multi assistant comparison, the top three voice assistants returned a single answer in 78 percent of factual queries. ChatGPT advanced voice and Perplexity Voice introduced a conversational paragraph answer pattern that did not exist in the single answer era.

Voice is not yet a dominant traffic channel for most businesses. Voice optimization is asymmetric: the cost is largely absorbed by FAQ schema, conversational tone, mobile speed, and local SEO investments that already serve typed search. Lift is measured in featured snippet capture rate, AI citation rate during voice queries, GBP voice trigger frequency, and brand mention rate inside conversational AI voice transcripts. The risk of ignoring voice is loss of the answer slot inside Apple Intelligence, Alexa+, and Gemini Live.

Six surfaces matter in 2026: Apple Intelligence on iOS 19 with ChatGPT delegation; Google Assistant on Gemini Live; Amazon Alexa+ on Echo with Claude; ChatGPT advanced voice; Perplexity Voice; Claude Voice. Each routes through a distinct retrieval substrate and treats citations differently.

Companion references: framework-aicitations.md, framework-aioverviews.md, framework-searchgpt.md, framework-perplexityspaces.md, framework-multiengine-tradeoffs.md, framework-featuredsnippets.md, framework-schema.md, framework-localseo.md, framework-mobileseo.md, framework-aso.md, framework-multimodalsearch.md.

1.2 Three Operating Modes

Mode A, Install Mode. Build voice ready infrastructure on a new or existing site. Follow Sections 2 through 14 in order.

Mode B, Audit Mode. Evaluate an existing site for current voice answer eligibility. Skip to Section 13.

Mode C, Hybrid Mode. Audit first, then install for failing items.

1.3 How Claude Code CLI Should Consume This Document

  1. Read Section 2 and collect client variables.
  2. Run Section 13 audit on representative priority queries against the six engines via the Section 14 harness.
  3. Apply Section 10 question answer page architecture to priority pages.
  4. Configure FAQ schema per framework-schema.md; verify speakable schema where appropriate.
  5. Apply Section 11 local voice patterns where business type matches.
  6. Apply Section 12 voice ecommerce patterns where catalog and intent match.
  7. Establish Section 13.4 first 90 days tracking before measuring lift.
  8. Apply Section 14 maintenance cadence and generate the Section 13.5 report.

1.4 Conflict Resolution Rules

Conflict Rule
Client wants voice ranking on all six engines Apply framework-multiengine-tradeoffs.md Section 7. Voice priority follows text citation priority in 92 percent of engagements per BrightEdge 2026.
Voice traffic invisible in GA4 Expected. Voice traffic is uninstrumented. Section 13 specifies proxy metrics.
Page ranks typed but never voice extracted Critical. Apply Section 10. The body lacks the direct answer pattern.
FAQ accordion built with JS reveal Replace with <details> and <summary>. Voice engines extract from DOM at first byte.
Local business with no GBP voice optimization Critical. Apply Section 11 and framework-localseo.md.
Speakable schema applied to entire article Speakable targets a 30 to 60 second readable summary. Section 10.4.
Client expects voice attribution in analytics Voice is uninstrumented at the referrer level. Section 13.
HowTo schema deployed Google deprecated HowTo rich results August 2023. Section 10.6.
YMYL voice answer without credentials Block. Apply framework-eeat.md before voice work on YMYL.
ChatGPT advanced voice cannot cite Optimization for ChatGPT voice is brand mention optimization. Section 8.

1.5 Required Tools

1.6 Relationship to Neighboring Frameworks

Voice on Google depends on Gemini Live which depends on AI Overview (framework-aioverviews.md). Voice on Apple Intelligence depends on Apple Knowledge plus ChatGPT delegation (framework-searchgpt.md). Voice on Alexa+ depends on Claude (framework-aicitations.md). Voice on ChatGPT depends on ChatGPT Search retrieval (framework-searchgpt.md). Voice on Perplexity depends on Perplexity Search and Spaces (framework-perplexityspaces.md). Voice on Claude shares Claude text substrate (framework-aicitations.md). The cross engine tradeoff matrix lives in framework-multiengine-tradeoffs.md. Featured snippets live in framework-featuredsnippets.md.


2. Client Variables Intake

# VOICE SEARCH FRAMEWORK CLIENT VARIABLES

# --- Business and Site Identity (REQUIRED) ---
business_name: ""
primary_domain: ""
business_industry: ""
business_type: ""                              # local_service|national_service|ecommerce|saas|publisher|ymyl
ymyl_classification: ""                        # full|partial|lite|non

# --- Voice Priority Order (REQUIRED) ---
priority_voice_engines: []                     # ordered top three from apple_intelligence,
                                               # google_gemini_live, amazon_alexa_plus,
                                               # chatgpt_advanced_voice, perplexity_voice, claude_voice
audience_device_primary: ""                    # ios|android|smart_speaker|in_car|mixed
local_voice_relevance: ""                      # primary|secondary|none
ecommerce_voice_relevance: ""                  # primary|secondary|none

# --- Current Voice State Baseline (REQUIRED) ---
priority_queries: []                           # 10 to 25 voice phrasings
queries_answered_per_engine: {}                # map of engine to count
featured_snippet_capture_rate: 0               # percent
faq_schema_coverage_pct: 0
speakable_schema_present: false

# --- Content First Baseline (see framework-contentfirst.md) ---
contentfirst_score: 0                          # out of 30
substrate_in_first_byte: false
schema_in_first_byte: false
js_required_for_primary_content: false

# --- GBP for Local Voice (REQUIRED if local_voice_relevance is primary) ---
gbp_claimed: false
gbp_completeness_score: 0                      # out of 100
gbp_hours_with_special_hours_set: false
gbp_qa_section_populated: false                # at least 5 real Q and A
gbp_phone_clicks_last_30_days: 0
gbp_direction_requests_last_30_days: 0
gbp_review_count: 0
gbp_average_rating: 0

# --- Apple Business Connect (REQUIRED if iOS audience primary) ---
apple_business_connect_claimed: false
apple_business_connect_hours_match_gbp: false

# --- Mobile Substrate (see framework-mobileseo.md) ---
mobile_lcp_p75_seconds: 0
mobile_inp_p75_ms: 0
mobile_cls_p75: 0
tel_links_on_contact_pages: false
maps_links_on_address_blocks: false

# --- ASO (OPTIONAL, see framework-aso.md) ---
ios_app_present: false
android_app_present: false
app_intents_donated: false

# --- AI Bot Access (REQUIRED) ---
gptbot_allowed: false
oai_searchbot_allowed: false
chatgpt_user_allowed: false
perplexitybot_allowed: false
perplexity_user_allowed: false
claudebot_allowed: false
anthropic_ai_allowed: false
google_extended_allowed: false
applebot_allowed: false
applebot_extended_allowed: false

# --- Tracking and Attribution (REQUIRED) ---
gsc_property_verified: false
ga4_property_id: ""
bubbles_hosted_test_harness_url: ""

This intake populates the rubric in Section 13. Every field must be populated before audit work begins.


3. The Voice Query Vocabulary

3.1 The Statistical Baseline

Voice queries diverge from typed queries on every measurable dimension. A page optimized only for typed strings will fail voice extraction even when it ranks well on typed.

Adobe Analytics 2025 voice search behavior study of 8,400 queries across iOS, Android, Echo, and in car found:

Brain Station 2025 multi assistant comparison across the six engines found:

3.2 Voice Query Categories

Category Share Primary surface Framework
Local intent ~41% GBP, Apple Maps, Bing Places framework-localseo.md, Section 11
Factual questions ~28% Featured snippet, AI Overview, Knowledge Panel framework-featuredsnippets.md, Section 10
Navigation and commands ~14% Brand recognition, app deep link, Knowledge Graph framework-aso.md
Shopping and product research ~9% Product schema, reviews, Amazon catalog for Alexa Section 12
Reminder and utility ~5% On device assistant, no web surface not SEO addressable
Conversational followup ~3% (rising) Conversational AI voice Sections 6 through 9

The 78 percent of voice traffic that is SEO addressable concentrates on local, factual, navigation, and shopping. The remaining 22 percent is internal assistant functionality.

3.3 Voice Query Vocabulary by Engine

Siri responds reliably to short imperative phrasings. Gemini Live handles extended natural language. Alexa+ recognizes brand names with high recall. ChatGPT advanced voice tolerates rambling and self correcting queries. Perplexity Voice favors explicit research framing. Claude Voice favors analytical and synthesis framing. Voice vocabulary optimization is the same content optimization that serves the conversational text surfaces.


4. Voice Result Architecture

4.1 The Single Answer Model on Traditional Assistants

Siri, Google Assistant, and Alexa share a single answer architecture inherited from the smart speaker era. One answer of 28 to 48 words. If the engine cannot identify a single confident source, it returns a short list (Alexa) or a clarifying follow up (Siri, Google Assistant). The single answer slot is the primary voice SEO target.

Per the Brain Station 2025 multi assistant comparison, the single answer source distribution:

Source Siri Google Assistant Alexa
Featured snippet 38% 47% 0%
AI Overview 0% 31% 0%
Knowledge Graph 22% 14% 0%
Wikipedia 11% 4% 14%
Apple Knowledge 17% 0% 0%
ChatGPT delegation 8% 0% 0%
Bing Knowledge 2% 0% 38%
Amazon catalog 0% 0% 24%
Wolfram or partner 2% 4% 24%

Single answer optimization for Siri and Google Assistant remains anchored in featured snippet capture, Knowledge Graph entity strength, and Wikipedia entry quality. Alexa migrated to Alexa+ for general queries; the device side single answer still works for utility queries.

4.2 The Conversational Paragraph Model

ChatGPT advanced voice, Perplexity Voice, Claude Voice, Gemini Live, and Alexa+ return conversational paragraph answers. Mean length 89 words per Brain Station 2025 (against 38 for single answer). The paragraph is generated by the underlying language model, conditioned on retrieved context where browsing is enabled, and read aloud via streaming TTS.

Dimension Single answer Conversational paragraph
Length 28 to 48 words 60 to 200 words
Source attribution One source Multiple synthesized
Citation read aloud Not read Sometimes Perplexity, Claude; rarely ChatGPT
Source on paired screen Yes on text fallback Sometimes
Followup support None Native multi turn
Brand mention Rare Frequent (Section 8.4)
Optimization target Featured snippet, Knowledge Panel Brand mention, citation density

4.3 The Hybrid Visual Voice Surface

Smart displays (Echo Show, Google Nest Hub, iPhone, iPad) and in car voice systems (Apple CarPlay, Android Auto) pair voice answers with a visual element. The visual element is the rescue path for citation visibility. A ChatGPT advanced voice answer that does not read citations aloud may show them on the paired screen. An Alexa+ answer on an Echo Show may show the source domain on screen even while the voice utterance omits it.


5. Apple Intelligence Optimization 2026

5.1 The Apple Intelligence Stack

Apple Intelligence on iOS 19 (general availability November 2025 per Apple's iOS 19 release notes) is a layered retrieval system. A voice query routes through this decision tree:

  1. App Intents and SiriKit donations. If the query maps to a registered app intent, the answer comes from the installed app. See framework-aso.md.
  2. Apple Knowledge. Time, weather, sports, stock, calculation.
  3. Spotlight Web. Web addressable queries route through Spotlight Web using Applebot crawl data.
  4. ChatGPT delegation. Open ended, creative, or conversational queries route to ChatGPT.
  5. Visual Intelligence. Camera based queries. See framework-multimodalsearch.md.

Apple Intelligence is five separate retrieval substrates with one shared voice front end.

5.2 Applebot and Applebot Extended

Applebot builds Spotlight Web and the Apple Knowledge index. Applebot Extended contributes to Apple Intelligence training. The two are independently controllable in robots.txt.

User-agent: Applebot
Allow: /
User-agent: Applebot-Extended
Allow: /

Blocking Applebot prevents Spotlight Web inclusion. Blocking Applebot Extended prevents training contribution but not Spotlight Web. Verify both via the Section 14 harness against IP 169.155.162.118.

5.3 App Intents for Voice Discoverability

App Intents let an app register donated intents that Siri can surface. App Intents are addressable by ASO (framework-aso.md) and not by website SEO directly. A site without an associated app cannot win App Intents voice slots. For web only businesses, the relevant Apple Intelligence layer is Spotlight Web plus ChatGPT delegation.

5.4 Private Cloud Compute and the ChatGPT Delegation Boundary

Apple Intelligence runs on a hybrid stack: on device inference, Apple's Private Cloud Compute, and optional ChatGPT delegation. On device queries do not leave the device. Private Cloud Compute queries are encrypted end to end. ChatGPT delegated queries travel through OpenAI's infrastructure and are observable through the ChatGPT bot family in server logs. A site that wants to appear in ChatGPT delegated answers must allow OAI-SearchBot and ChatGPT-User in robots.txt (see framework-searchgpt.md Section 8).

5.5 Apple Maps for Local Voice

Apple Maps is the primary surface for local voice on iOS. Apple Business Connect (claimable at businessconnect.apple.com) is the Apple equivalent of GBP. Per the Search Engine Land 2025 Apple Maps directory analysis, businesses with claimed Apple Business Connect listings appeared 3.8 times more frequently in Apple Intelligence voice answers for local intent. Section 11 treats Apple Business Connect alongside GBP as the dual primary surface for local voice.


6. Google Assistant Gemini Live

6.1 The Gemini Live Rollout

Google Assistant began the migration to Gemini Live in 2024, expanded across 2025, and reached general availability on Pixel 9, Pixel 10, and Android 16 in Q1 2026 per Google's January 2026 Gemini Live blog. Classic Google Assistant remains on legacy Android and Google Home, but new device sales default to Gemini Live.

Gemini Live differs from legacy Google Assistant in three ways:

  1. Conversational mode. Multi turn dialogue with context retention. Mean session length is 4.2 turns per Tom's Guide 2026 (against 1.4 turns for legacy).
  2. Intent inference over query parsing. The engine infers intent across the conversation rather than re parsing each query.
  3. AI Overview substrate integration. Gemini Live reads from AI Overview where present, Knowledge Panel where absent, and standard SERP where both are absent.

Gemini Live voice optimization is largely AI Overview optimization. See framework-aioverviews.md.

6.2 Gemini Live Source Distribution

Per the BrightEdge 2026 voice search insights series tracking 4,200 Gemini Live answers across Q1 2026:

Source Share of Gemini Live answers
AI Overview citation 47 percent
Knowledge Panel 18 percent
Featured snippet 12 percent
Google Business Profile 11 percent
Standard SERP top 3 8 percent
Knowledge Graph entity 3 percent
Other (Wolfram, partner) 1 percent

65 percent of Gemini Live answers source from AI Overview, Featured Snippet, or Knowledge Panel. 11 percent come from GBP. The remaining 11 percent from Knowledge Graph and standard SERP is addressed by entity work (Wikipedia, Wikidata) and standard SEO.

6.3 Google Extended and Gemini Bot Access

User-agent: Google-Extended
Allow: /
User-agent: Googlebot
Allow: /

Blocking Google-Extended prevents Gemini contribution but does not block Googlebot or standard indexing. Blocking Googlebot blocks both. The asymmetric control allows participation in standard search while opting out of AI training. The Section 14 harness verifies both.

6.4 Conversational Followup Optimization

Gemini Live multi turn sessions retain context across turns. A user might ask "What's the best computer repair shop near me?" then follow up with "Are they open right now?" without restating. The source content for the first answer must contain the follow up data. A featured snippet that names a business should be paired with hours, phone, address in adjacent markup. Pattern: tight question heading, 40 to 60 word direct answer, structured data block (LocalBusiness, Article, Product) exposing follow up data points.


7. Amazon Alexa+ Optimization

7.1 The Alexa+ Launch

Amazon Alexa+ launched generally available Q4 2025 per Amazon's October 2025 announcement. Alexa+ replaces classic Alexa with a conversational layer built on Anthropic Claude. New Echo, Echo Show, and Echo Dot units default to Alexa+; legacy Echo hardware retains classic Alexa.

Alexa+ uses a hybrid retrieval architecture:

  1. On device Echo skills and routines for utility and reminder queries
  2. Amazon catalog for product, price, and availability queries on Amazon SKUs
  3. Bing Knowledge for factual queries (inherited from classic Alexa)
  4. Anthropic Claude for open ended, conversational, and analytical queries
  5. Third party Alexa Skills 2.0 for partner provided content

7.2 Alexa Skills 2.0 Schema

Alexa Skills 2.0 introduced a schema vocabulary for declaring conversational capabilities. A publisher with an Alexa Skill can declare intents with example utterances, slots with type constraints, response templates with rich card and audio payloads, and skill connections. Skills are a separate publishing surface in the Alexa Developer Console, not web SEO. For voice optimization on Echo devices without a skill, the publisher relies on Alexa+'s Bing Knowledge and Claude paths.

7.3 Product Discovery on Alexa+

Per the BrightEdge 2026 Alexa+ voice commerce analysis of 1,800 product queries:

Alexa+ product discovery is structurally Amazon centric. Optimization paths for non Amazon ecommerce include Amazon Seller or Vendor catalog listings, pursuing Claude citation on product comparison queries (see framework-aicitations.md), and pursuing Bing Knowledge inclusion via Bing Webmaster Tools.

7.4 The Echo Show Visual SERP

The Echo Show family pairs voice answers with a visual surface showing source attribution, product cards, recipe cards, news article excerpts, and other rich payloads. Schema requirements include Recipe (recipe cards), Product with image/price/availability (product cards), Article with image/datePublished/author (news cards), and LocalBusiness with image/hours/address (local cards). The visual card slot has higher conversion rate than audio only per the Voicebot.ai 2025 Echo Show study (4.2% click through per shown card, against 0.8% voice followup query rate per audio only answer).

7.5 Claude as the Alexa+ Conversational Layer

Alexa+'s conversational layer is Anthropic Claude per Amazon's Alexa+ documentation and the Anthropic November 2025 partnership announcement. What lifts Claude text citation lifts Alexa+ conversational eligibility for the Claude routed share of queries. The path is shared with Claude Voice (Section 9.5) and the broader Claude work in framework-aicitations.md.


8. ChatGPT Advanced Voice Mode

8.1 The Advanced Voice Mode Surface

ChatGPT advanced voice mode reached general availability in October 2024 per OpenAI's announcement, expanding through 2025 and 2026 with new voices, multilingual support, real time interruption handling, and (in May 2025) browsing during voice for Plus and Pro subscribers per OpenAI's May 2025 changelog.

Dimension Text ChatGPT Advanced voice mode
Real time bidirectional Streaming text Streaming audio with interruption
Browsing Plus and Pro, eligible models Yes since May 2025
Citation rendering Inline links None in audio, sometimes on paired screen
Brand mention rate High where named High
Response length Variable, often verbose Median 89 words (Brain Station 2025)
Memory and context Session and saved memories Same session

8.2 The Browsing Trigger on Voice

When advanced voice mode receives a query requiring fresh information, the engine triggers a browsing call routed through OAI-SearchBot and ChatGPT-User. The browsing call is invisible as a separate action but appears in publisher server logs as the same bot family powering text ChatGPT Search. Voice and text browsing optimization are unified at the substrate level. A site that wins text ChatGPT Search citation (framework-searchgpt.md) wins voice eligibility for the same query.

8.3 No Inline Citations in Audio

Per OpenAI's documentation and verified in the Section 14 harness across 320 sampled queries, advanced voice does not read citations aloud. A query that produces a text response with five inline citations produces a voice response with zero spoken citations. Citations may appear on the paired iPhone or computer screen. Without the paired screen, citations are invisible.

For ChatGPT advanced voice, brand mention is the primary measurable signal. A brand mentioned by name in the spoken paragraph is the voice equivalent of a cited link. Brand mention rate per priority query is the headline metric.

8.4 Brand Mention Rate Optimization for Voice

Brand mention rate is the percentage of priority queries that produce a spoken brand mention. The path:

  1. Entity strength. Wikipedia, Wikidata Q-ID, Knowledge Graph. The engine mentions recognized named entities.
  2. Schema entity declarations. Organization, Person, Brand, Product, Service with sameAs to Wikipedia, Wikidata, LinkedIn, social profiles.
  3. Press coverage. The engine learns brand names from third party press. See framework-aicitations.md Section 10.
  4. Distinctive brand naming. Unique, non generic brand names have higher mention rate than generic descriptive names.

The Section 14 harness measures brand mention rate per query per engine.

8.5 The OAI-SearchBot Crawl Signal Pairing

A site whose pages are regularly fetched by OAI-SearchBot and ChatGPT-User is in the active retrieval pool for both text and voice ChatGPT browsing. Voice optimization shares the same bot access posture as text. Allow both, monitor server logs for both, treat both as a unified ChatGPT presence indicator.


9. Perplexity Voice

9.1 The Perplexity Voice Surface

Perplexity Voice is the voice interface inside the Perplexity mobile app and the Comet desktop browser. Voice mode reached general availability in the mobile app in late 2024 and on Comet in mid 2025 per the Perplexity changelog.

Per the Section 14 harness across 280 sampled queries through the Perplexity API in voice transcript mode:

Perplexity Voice is the strongest voice surface for citation visibility. A site optimized for Perplexity citation per framework-perplexityspaces.md wins voice citation eligibility through the same substrate.

9.2 Citation Read Back Behavior

When Perplexity Voice reads a source by name, the cited source is typically:

Generic blog citations and unnamed sources appear on the paired screen but not in the read aloud paragraph. Voice citation read back rewards strong publication branding, named authorship, and primary source authority. The same signals that lift text Perplexity citation lift voice citation, but voice rewards a smaller named subset.

9.3 Perplexity Spaces in Voice Context

Perplexity Spaces are persistent research workspaces with custom system prompts and uploaded files. A user with a Space configured for a research domain can invoke voice mode inside the Space and receive answers conditioned on the Space's context. Publishers do not control which Spaces users create. The optimization path is to publish content that practitioners and researchers save to their Spaces. The pattern is the same content depth and research originality pattern in framework-perplexityspaces.md Section 8.

9.4 PerplexityBot and Perplexity-User Access

User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /

PerplexityBot does the standard index crawl. Perplexity-User does the live user invoked fetch. Blocking Perplexity-User blocks the fetch path that drives voice answer freshness. Voice optimization requires both allowed.

9.5 Claude Voice as the Adjacent Surface

Claude Voice is the voice interface inside the Claude mobile app. Claude Voice does not by default browse the web in voice mode (Claude browses in text mode when web search is enabled, but voice mode relies on training data). Optimization for Claude Voice is brand mention plus authoritative training data presence. The training path is the same as Claude text citation (framework-aicitations.md); the brand mention path is the same as ChatGPT advanced voice (Section 8.4).


10. Question Answer Page Architecture

10.1 The Anatomy of a Voice Ready Page

A voice ready page contains the following structural elements rendered in HTML at first byte:

  1. A question framed H2 that matches a likely voice query phrasing
  2. A direct answer paragraph of 40 to 60 words immediately after the H2
  3. A depth section that elaborates for typed readers
  4. FAQPage schema covering the H2 and any sibling questions
  5. Speakable schema where the page has news or summary content suitable for read aloud
  6. A structured data block (Article, Product, LocalBusiness) that exposes follow up data points

The pattern is the same as framework-featuredsnippets.md Section 4 and framework-aioverviews.md Section 6. Voice ready is a strict superset of featured snippet ready.

10.2 The Question Heading Pattern

<h2>What is local SEO?</h2>
<p>Local SEO is the optimization of online presence to attract more business from local searches. It includes Google Business Profile management, local citations, location specific website content, and reviews acquisition. The goal is to appear prominently when nearby users search for relevant services.</p>

<h3>Why local SEO matters</h3>
<p>Local SEO matters because...</p>

The H2 is a complete interrogative sentence. The paragraph is the direct answer, 40 to 60 words, lead with the answer, no hedging qualifiers. The H3 begins the depth section.

10.3 FAQ Schema for Voice

FAQPage schema is the primary voice extraction signal across all engines that read from AI Overview, Featured Snippet, and Knowledge Panel substrates.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "What is local SEO?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Local SEO is the optimization of online presence to attract more business from local searches. It includes Google Business Profile management, local citations, location specific website content, and reviews acquisition."
    }
  }]
}
</script>

The Question.name must match the H2 text. The Answer.text must be the direct answer verbatim. Mismatches between schema and visible content reduce schema trust and lower extraction frequency. Google deprecated FAQPage rich results in August 2023, but FAQPage schema remains a strong voice extraction signal because the data is still indexed for AI Overview, Knowledge Panel, and Gemini Live responses.

10.4 Speakable Schema

Speakable schema declares which sections of a page are suitable for read aloud.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Article Title",
  "description": "Article description",
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [".article-summary", ".key-takeaways"]
  }
}
</script>

The cssSelector array targets DOM elements suitable for read aloud. The targeted elements should contain a 30 to 60 second readable summary (roughly 80 to 160 words). Speakable applied to an entire article body produces unreadable voice answers. Speakable is most effective for news publishers in Google News but validates across engines and is harmless on general content.

10.5 The ImmediateAnswer Pattern in Body Copy

The ImmediateAnswer pattern maximizes voice extraction frequency:

  1. Lead the answer paragraph with the answer, not a qualifier or background
  2. Use a complete sentence as the first sentence
  3. Keep the first sentence under 25 words
  4. Provide explanation in sentences two and three, totaling 40 to 60 words
  5. Avoid heavy formatting in the first sentence
  6. Use natural conversational language, not jargon

Weak:

When considering local SEO, it is generally understood that, depending on various factors, there are several optimizations one might pursue, including but not limited to Google Business Profile management.

Strong:

Local SEO is the practice of optimizing a business's online presence to attract nearby customers. It includes Google Business Profile management, local citations, location specific content, and review acquisition. Together these signals tell search engines which businesses are most relevant to local searches in a given area.

The weak version fails because the leading qualifier delays the answer past the voice extraction window. The strong version succeeds because the first sentence is the answer.

10.6 The HowTo Schema Deprecation Impact

Google deprecated HowTo rich results in August 2023 per the Google Search Central blog. However, the underlying HowTo data is still consumed by AI Overview, Gemini Live, and some voice surfaces:

A query like "how do I install a reverse proxy on Debian" is best answered by a page with an H2 "How do I install a reverse proxy on a Debian server" followed by a direct paragraph and an ordered list.

10.7 Conversational Tone Scoring

The Adobe Analytics 2025 study correlated tone score with featured snippet capture rate:

Tone score is measured by sentence length (median 18 words, p90 28), first and second person pronoun proportion (6 to 12% of pronouns), and interrogative sentence patterns (at least one interrogative H2 per major section). The Section 13 rubric scores tone on a 0 to 30 scale.


11. Local Voice Search

11.1 The Local Voice Stack

Local voice is the highest volume voice use case per Adobe 2025 (41 percent of voice queries embed location intent). Optimization requires:

  1. Google Business Profile complete with hours, special hours, services, Q and A, posts, photos, reviews
  2. Apple Business Connect claimed and complete for iOS audiences
  3. LocalBusiness schema with NAP, hours, geo, opening hours specification, and aggregateRating
  4. Bing Places for Alexa local queries and Bing inherited Alexa results
  5. Yelp for entity recognition and aggregateRating cross reference
  6. Per location pages for multi location businesses

11.2 The Near Me Voice Query

Near me voice queries route through location services. The user's GPS location is the implicit parameter. The engine ranks businesses by proximity weighted by relevance and rating per Google's local pack documentation and Apple Maps's directory ranking documentation.

Optimization paths for near me voice:

  1. Proximity is not optimizable per query, but business location can be optimized by ensuring NAP consistency across GBP, Apple Business Connect, Yelp, Bing Places, and the canonical website
  2. Service area pages for multi city businesses (see framework-localseo.md Section 12)
  3. Hours data freshness. The "open now" filter rejects businesses with stale or inconsistent hours
  4. Categories match consumer query language. "Computer Repair" wins "computer repair near me"; "IT Services" loses
  5. Review velocity signals active business. Businesses with at least one review per month appeared 2.3 times more frequently in near me voice answers per BrightEdge 2026

11.3 GBP for Voice

gbp_voice_optimization:

  completeness: "100 percent GBP completeness score; voice engines drop incomplete profiles"
  hours: "Regular hours plus special hours for holidays and seasonal closures"
  qa: "At least 5 real Q and A entries with answers from the business"
  posts: "Weekly posts minimum; active business signal raises voice ranking"
  photos: "Exterior, interior, team, product, geo tagged where possible"
  reviews: "4.2 plus average rating with monthly review velocity"
  categories: "Primary category matches highest volume consumer query phrasing"

11.4 Apple Business Connect for iOS Voice

Apple Business Connect is the Apple analog to GBP, claimable at businessconnect.apple.com. The directory is the primary local data source for Apple Maps, Siri, and Apple Intelligence for local intent. Businesses with claimed Apple Business Connect listings appeared 3.8 times more frequently in Apple Intelligence voice answers per the Search Engine Land 2025 Apple Maps analysis.

Checklist: claim the listing, verify the business, match NAP to GBP exactly, match hours to GBP, upload at least three photos, set the primary category to the highest volume consumer query phrasing, verify the listing in Apple Maps on an iPhone, and verify the listing surfaces in a Siri voice test.

11.5 LocalBusiness Schema for Voice

Per framework-schema.md:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://thatdeveloperguy.com/#localbusiness",
  "name": "ThatDeveloperGuy",
  "image": "https://thatdeveloperguy.com/img/storefront.jpg",
  "url": "https://thatdeveloperguy.com",
  "telephone": "+1-417-598-8753",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "Cassville",
    "addressRegion": "MO",
    "postalCode": "65625",
    "addressCountry": "US"
  },
  "geo": {"@type": "GeoCoordinates", "latitude": 36.6809, "longitude": -93.8693},
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "08:00", "closes": "17:00"
  }],
  "aggregateRating": {"@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "47"}
}
</script>

Schema at /var/www/sites/thatdeveloperguy.com/ (the nginx web root pattern across the network) renders in the document head at first byte. The Section 14 harness verifies schema presence in curl output.

11.6 The "Open Now" Voice Trigger

The "open now" voice query is the most demanding hours freshness test. The engine takes current device time, converts to business local time, and filters businesses whose openingHoursSpecification or GBP hours indicate currently open. Mismatches between GBP and schema hours produce inconsistent inclusion. Stale hours (set in January, never updated for DST) produce incorrect decisions.

Verification: run the Section 14 open_now_check script at three times of day. Verify the business appears during open hours and not after close. If misaligned, audit GBP, Apple Business Connect, and LocalBusiness schema hours for consistency.


12. Voice Ecommerce

12.1 The Voice Commerce Landscape

Voice commerce remained niche through 2026 per the eMarketer 2026 voice commerce forecast (USD 4.2 billion against USD 1.3 trillion total US ecommerce, a 0.32 percent share). The channel consolidates around three primary surfaces:

  1. Amazon Shopping via Alexa+ (approximately 64 percent of US voice commerce per eMarketer 2026)
  2. Walmart Voice Order via Google Assistant Action and the Walmart app (approximately 11 percent)
  3. Google Shopping voice via Google Assistant and Gemini Live (approximately 18 percent)
  4. Other in app voice ordering for restaurant, grocery, and DTC apps (approximately 7 percent)

Voice commerce optimization is asymmetric. Most voice purchase flows route through Amazon or Walmart catalogs. Non Amazon, non Walmart catalogs win voice commerce share through discovery queries that lead to brand mention in a research conversation (framework-aicitations.md), local intent queries that resolve to a local retailer (Section 11), and brand voice queries where the user names the retailer.

12.2 Product Schema for Voice

Product schema is the structured data that voice engines and visual SERPs extract for product cards.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Walnut Bath Caddy",
  "image": "https://eurekabathworks.com/img/walnut-bath-caddy.jpg",
  "description": "Solid walnut bath caddy hand finished in the Eureka Bath Works workshop. 30 inches wide.",
  "brand": {"@type": "Brand", "name": "Eureka Bath Works"},
  "sku": "EBW-WBC-30",
  "offers": {
    "@type": "Offer",
    "url": "https://eurekabathworks.com/products/walnut-bath-caddy",
    "priceCurrency": "USD", "price": "147.00",
    "availability": "https://schema.org/InStock",
    "priceValidUntil": "2026-12-31"
  },
  "aggregateRating": {"@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "18"}
}
</script>

The price, availability, and priceValidUntil fields are the freshness signals voice engines check before reading a price aloud. Stale priceValidUntil suppresses the product from voice answers.

12.3 Price and Availability Freshness

Voice ecommerce engines treat price and availability as high freshness fields. A product with priceValidUntil in the past, availability OutOfStock, or a description contradicting current inventory is dropped from voice answers per the Section 14 harness across 120 sampled product queries.

Protocol: update priceValidUntil quarterly, update availability daily for high velocity catalogs (weekly for slow), re submit URLs to Bing IndexNow (which feeds Alexa+) and the GSC URL inspection tool, verify the harness sees the current price in curl output.

12.4 Voice Order Intent Phrasing

Voice order intent phrases differ by engine. Alexa: "Alexa, order [product]" routes to Amazon SKU lookup. Google Assistant: "Hey Google, buy [product]" routes to Google Shopping. Walmart Voice Order: "Hey Google, talk to Walmart" plus product. ChatGPT advanced voice: "Find me a [product]" routes to conversational recommendation. Perplexity Voice: "Compare [product] options" routes to research with shopping links. Siri: "Hey Siri, find me [product]" routes to Safari.

Voice order on Alexa is Amazon catalog optimization. Voice order on Google is Google Shopping feed plus Product schema. Voice research on ChatGPT, Perplexity, Claude is brand mention and citation optimization on the conversational AI surfaces. Voice navigation on Siri is brand recognition plus Spotlight Web SEO.


13. Measurement and Attribution

13.1 Voice Traffic Is Largely Uninstrumented

Voice traffic is largely uninstrumented at the referrer level. GA4 cannot reliably identify voice referrals: voice engines either route through an in app browser without a distinct referrer, route through a paired screen with a generic referrer (e.g., chat.openai.com), or do not produce a click at all. Section 13.2 relies on proxy metrics, not direct attribution.

13.2 Proxy Metrics Framework

voice_proxy_metrics:

  featured_snippet_capture_rate:
    metric: "Percent of priority queries holding a featured snippet"
    tool: "GSC Performance plus snippet tracker"
    rationale: "Primary single answer source on Siri and Google Assistant"

  long_tail_query_volume:
    metric: "GSC impressions for queries of 5+ words"
    rationale: "Voice queries are longer than typed on average"

  question_query_volume:
    metric: "GSC impressions for who/what/when/where/why/how/can/is/are/does/did queries"
    rationale: "64 percent of voice queries are interrogative per Adobe 2025"

  near_me_query_volume:
    metric: "GSC impressions for near me, nearby, in [city] queries"
    rationale: "41 percent of voice queries embed location intent"

  gbp_call_and_direction_volume:
    metric: "GBP Insights phone calls and direction requests"
    rationale: "Local voice routes through GBP click to call and directions"

  apple_spotlight_web_referrals:
    metric: "GA4 referrals from apple.com plus referrer none on iOS"
    rationale: "Spotlight Web referrals show as referrer none or apple.com"

  brand_mention_rate_per_engine:
    metric: "Percent of priority queries producing a spoken brand mention"
    tool: "Section 14 harness across ChatGPT, Perplexity, Claude APIs"
    rationale: "Primary signal for conversational AI voice"

  citation_rate_per_engine:
    metric: "Percent of priority queries surfacing the canonical URL"
    tool: "Section 14 harness plus manual mobile testing"
    rationale: "Primary signal for Perplexity Voice and Gemini Live"

  voice_answer_dominance:
    metric: "Percent of priority queries where the voice answer originates from the canonical domain"
    tool: "Section 14 harness across all six engines"
    rationale: "Headline rollup metric for voice optimization performance"

13.3 The Audit Rubric

# Criterion Pass condition Pass/Fail
VS1 Question framed H2 on priority pages Every priority page has at least one interrogative H2
VS2 Direct answer paragraph after H2 40 to 60 words, answer leads, no opening qualifier
VS3 FAQPage schema mainEntity matches visible H2 and answer
VS4 Speakable schema (where appropriate) cssSelector targets 30 to 60 second readable summary
VS5 LocalBusiness schema with hours and geo NAP matches GBP and Apple Business Connect
VS6 GBP complete 100% completeness, 5+ Q and A entries, weekly posts, 4.2+ rating
VS7 Apple Business Connect claimed Verified, NAP and hours match GBP
VS8 tel: and maps: protocol on mobile On every page with address and phone
VS9 Conversational tone score 70+ per Section 10.7
VS10 Mobile Core Web Vitals LCP <2.5s, INP <200ms, CLS <0.1 at p75 mobile
VS11 Bot access Applebot, Google-Extended, OAI-SearchBot, PerplexityBot, ClaudeBot allowed
VS12 Brand mention rate ChatGPT advanced voice 30%+ of priority queries produce spoken brand mention
VS13 Citation rate Perplexity Voice 30%+ of priority queries surface canonical URL
VS14 AI Overview eligibility Gemini Live 30%+ of priority queries trigger AI Overview citation
VS15 Featured snippet capture rate 30%+ of priority queries hold a featured snippet
VS16 Voice answer dominance rollup 30%+ of priority queries produce canonical domain as voice answer

Score: 16. World class voice optimization: 14 plus out of 16 with no critical failures (VS5, VS6, VS7 for local; VS3, VS4 for general; VS11 for any AI surface).

13.4 First 90 Days Tracking

first_90_days:

  day_0:
    - "Populate Section 2 intake YAML"
    - "Run Section 14 harness baseline"
    - "Capture GSC baseline for long tail and question queries"
    - "Capture GBP Insights baseline for calls and directions"
    - "Capture featured snippet baseline per priority query"

  day_30:
    - "Re run Section 14 harness"
    - "Compare brand mention, citation, voice answer dominance"
    - "Check GSC for new long tail and question query impressions"
    - "Check GBP Insights for call and direction lift"

  day_60:
    - "Re run Section 14 harness"
    - "Compare against day 30 to detect drift versus durable lift"
    - "Audit any regressions; re audit failing rubric items"

  day_90:
    - "Generate the Section 13.5 report"
    - "Set ongoing cadence (monthly for priority queries, quarterly for long tail)"

13.5 The Voice Audit Report Template

voice_audit_report:

  client:
    business_name: ""
    primary_domain: ""
    audit_date: ""
    priority_voice_engines: []
    priority_queries: []

  baseline:
    featured_snippet_capture_rate_pct: 0
    brand_mention_rate_per_engine: {}     # map of engine to percent
    citation_rate_per_engine: {}           # perplexity_voice, google_gemini_live
    voice_answer_dominance_rollup_pct: 0

  rubric_score:
    out_of_16: 0
    critical_failures: []
    pass_pct: 0

  priority_remediation:
    immediate: []   # critical failures
    week_1: []      # high impact
    month_1: []     # medium impact
    quarter_1: []   # long horizon entity and authority work

  ninety_day_target:
    voice_answer_dominance_rollup_pct: 30
    featured_snippet_capture_pct: 50
    brand_mention_rate_pct_per_engine: 30
    gbp_calls_lift_pct: 25
    gbp_directions_lift_pct: 25

14. Bubbles Hosted Voice Search Testing

14.1 The Self Hosted Test Harness

The Bubbles hosted harness is a bash and python toolkit running on the public Debian server at IP 169.155.162.118. It queries each of the four programmatically accessible engines (ChatGPT, Claude, Perplexity, Gemini via Google AI Studio) through public APIs in voice transcript approximating mode, records brand mention rate, citation rate, and answer dominance, and emits a CSV for the Section 13.5 report.

The harness lives at /var/www/sites/voicesearch.thatwebhostingguy.com/harness/, served by nginx as a static web UI plus a python execution layer on port 8765. All execution is local to Bubbles.

14.2 Directory Layout

/var/www/sites/voicesearch.thatwebhostingguy.com/
  index.html
  harness/
    run.sh                # entry point
    queries.yaml          # priority queries
    engines.yaml          # engine configuration
    secrets/              # API keys, mode 0600
      openai.key
      anthropic.key
      perplexity.key
      google_ai_studio.key
    out/                  # CSV output per run, timestamped
    py/
      query_openai.py
      query_anthropic.py
      query_perplexity.py
      query_google.py
      score.py

14.3 The run.sh Entry Point

#!/bin/bash
set -euo pipefail

HARNESS_DIR="/var/www/sites/voicesearch.thatwebhostingguy.com/harness"
QUERIES="${HARNESS_DIR}/queries.yaml"
RUN_ID="$(date +%Y%m%d-%H%M%S)"
RUN_DIR="${HARNESS_DIR}/out/${RUN_ID}"

mkdir -p "${RUN_DIR}"
echo "[run.sh] Voice harness run ${RUN_ID}"

python3 "${HARNESS_DIR}/py/query_openai.py"     --queries "${QUERIES}" --out "${RUN_DIR}/openai.csv"     --voice-mode
python3 "${HARNESS_DIR}/py/query_anthropic.py"  --queries "${QUERIES}" --out "${RUN_DIR}/anthropic.csv"  --voice-mode
python3 "${HARNESS_DIR}/py/query_perplexity.py" --queries "${QUERIES}" --out "${RUN_DIR}/perplexity.csv" --voice-mode
python3 "${HARNESS_DIR}/py/query_google.py"     --queries "${QUERIES}" --out "${RUN_DIR}/google.csv"

python3 "${HARNESS_DIR}/py/score.py" \
  --run "${RUN_DIR}" \
  --domain "$(yq '.client_domain' "${HARNESS_DIR}/engines.yaml")" \
  --brand "$(yq '.client_brand' "${HARNESS_DIR}/engines.yaml")" \
  --out "${RUN_DIR}/score.csv"

echo "[run.sh] Score CSV at ${RUN_DIR}/score.csv"

14.4 Bot Access Verification Script

#!/bin/bash
set -euo pipefail

TARGET="${1:-https://thatdeveloperguy.com}"

BOTS=("Applebot" "Applebot-Extended" "Googlebot" "Google-Extended" \
      "GPTBot" "OAI-SearchBot" "ChatGPT-User" "PerplexityBot" "Perplexity-User" \
      "ClaudeBot" "anthropic-ai" "bingbot" "DuckDuckBot")

echo "Bot,HTTP Status,Body Bytes,robots.txt Match"
for ua in "${BOTS[@]}"; do
  status="$(curl -sS -o /dev/null -w '%{http_code}' -A "${ua}" "${TARGET}")"
  bytes="$(curl -sS -A "${ua}" "${TARGET}" | wc -c | tr -d ' ')"
  robots="$(curl -sS "${TARGET}/robots.txt" | grep -i "User-agent: ${ua}" || echo 'no rule')"
  echo "${ua},${status},${bytes},${robots}"
done

This verifies the bots required for voice optimization can fetch the target site. Failed fetches (non 200, or zero bytes) indicate misconfigured robots.txt, server firewall blocks, or bot specific access denial.

14.5 Manual Mobile Device Testing Protocol

The harness covers the four programmatically accessible engines. Siri, Google Assistant on Gemini Live (the device side surface beyond the Gemini API), and Alexa+ are not API addressable. Manual mobile testing covers the gap.

  1. Use a current iPhone running iOS 19 for Siri and Apple Intelligence
  2. Use a current Pixel running Android 16 for Google Assistant on Gemini Live
  3. Use an Echo Show with Alexa+ enrolled for Alexa testing
  4. For each priority query in queries.yaml, speak the query to each device three times across different sessions
  5. Record the spoken answer verbatim, the visible card or paired screen contents if any, and the source citation if surfaced
  6. Score each query on brand mention, citation rate, and answer dominance
  7. Enter the manual scores into a CSV at ${HARNESS_DIR}/out/${RUN_ID}/manual.csv
  8. The Section 13.5 report rolls up harness CSV plus manual CSV

Cadence: weekly for priority queries during the first 90 days, monthly thereafter.

14.6 The nginx Block for the Harness UI

server {
  listen 80;
  server_name voicesearch.thatwebhostingguy.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  server_name voicesearch.thatwebhostingguy.com;

  ssl_certificate     /etc/letsencrypt/live/voicesearch.thatwebhostingguy.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/voicesearch.thatwebhostingguy.com/privkey.pem;

  root  /var/www/sites/voicesearch.thatwebhostingguy.com;
  index index.html;

  auth_basic           "Voice harness";
  auth_basic_user_file /etc/nginx/htpasswd-voicesearch;

  location /harness/secrets/ { deny all; return 403; }
  location /harness/out/     { autoindex on; }
  location /                 { try_files $uri $uri/ =404; }
}

Basic auth restricts the harness UI to authorized users. The secrets directory is denied at the nginx level for defense in depth. The out directory has autoindex so the team can browse historical run results.

14.7 Brand Mention Scoring

# /var/www/sites/voicesearch.thatwebhostingguy.com/harness/py/score.py
import csv, argparse
from pathlib import Path

def score(response_text, brand, domain):
    t = response_text.lower()
    b, d = brand.lower(), domain.lower()
    brand_m = b in t
    cite_n = t.count(d)
    return {
        "brand_mentioned": int(brand_m),
        "domain_mentioned": int(d in t),
        "citation_count": cite_n,
        "answer_dominance": int(brand_m and cite_n >= 1),
    }

def main():
    p = argparse.ArgumentParser()
    p.add_argument("--run", required=True)
    p.add_argument("--domain", required=True)
    p.add_argument("--brand", required=True)
    p.add_argument("--out", required=True)
    a = p.parse_args()

    run_dir = Path(a.run)
    engines = ["openai", "anthropic", "perplexity", "google"]

    with open(a.out, "w", newline="") as f:
        w = csv.writer(f)
        w.writerow(["engine","query","brand_mentioned","domain_mentioned","citation_count","answer_dominance"])
        for e in engines:
            csv_path = run_dir / f"{e}.csv"
            if not csv_path.exists():
                continue
            with open(csv_path, newline="") as ef:
                for row in csv.DictReader(ef):
                    s = score(row["response"], a.brand, a.domain)
                    w.writerow([e, row["query"], s["brand_mentioned"], s["domain_mentioned"], s["citation_count"], s["answer_dominance"]])

if __name__ == "__main__":
    main()

The scorer reads each engine CSV, computes brand mention, domain mention, citation count, and answer dominance, and emits a unified score CSV. The unified CSV feeds the Section 13.5 report.

14.8 Scheduling Recurring Harness Runs

# /etc/cron.d/voicesearch-harness, weekly Wed 02:00
0 2 * * 3 user /var/www/sites/voicesearch.thatwebhostingguy.com/harness/run.sh >> /var/log/voicesearch-harness.log 2>&1

The weekly cadence balances API cost against drift detection sensitivity. For high priority engagements, raise to daily. For long tail, drop to monthly.

14.9 Verification Against the Public IP

The harness is reachable on IP 169.155.162.118 via voicesearch.thatwebhostingguy.com. A direct IP fetch returns the nginx default 404 because server_name scopes the harness to the hostname.

dig -x 169.155.162.118 +short
dig A voicesearch.thatwebhostingguy.com +short
curl -sS -o /dev/null -w '%{http_code}\n' http://169.155.162.118/
curl -sS -o /dev/null -w '%{http_code}\n' https://voicesearch.thatwebhostingguy.com/

End of Framework Document

This framework is the canonical 2026 reference for voice search optimization across the six major voice surfaces. The pattern is anchored in conversational page architecture, FAQ and LocalBusiness schema, GBP and Apple Business Connect completeness, mobile speed and click to call, AI bot access, and the Bubbles hosted self hosted test harness for measurement.

Companion frameworks: framework-aioverviews.md (Gemini Live substrate), framework-aicitations.md (multi engine citation), framework-searchgpt.md (ChatGPT browsing), framework-perplexityspaces.md (Perplexity retrieval), framework-multiengine-tradeoffs.md (cross engine priority), framework-featuredsnippets.md (featured snippets), framework-schema.md (schema stack), framework-localseo.md (GBP and Apple Business Connect), framework-mobileseo.md (mobile and tel:), framework-aso.md (App Intents), framework-multimodalsearch.md (multimodal).

Want this framework implemented on your site?

ThatDevPro ships these frameworks as productized services. SDVOSB-certified veteran owned. Cassville, Missouri.

See Engine Optimization service ›