No SpeakableSpecification schema for voice search
What is this issue?
This issue reports a SpeakableSpecification block your page already declares
(usually nested in a speakable property) that is missing cssSelector — not a page
that has no speakable markup at all.
What this issue is not: it does not require Article or NewsArticle schema to be
present first, and it does not check for xpath as an alternative — only
cssSelector is verified. A page with no speakable property declared is never
reported.
Why it matters
SpeakableSpecification schema is important for voice search and audio content:
- Voice search optimization: Helps Google Assistant and voice agents identify content for audio playback
- Google Assistant Actions: Enables content to be included in voice-based news briefings
- Text-to-speech: Provides structured hints for TTS rendering
- News publishers: Particularly beneficial for news sites targeting Google News
- AI search readiness: Voice assistants use this to provide audio versions of content
- Accessibility: Improves accessibility for users who prefer audio content
Resolving this issue improves your SEO health score by ensuring content is optimized for voice search and audio playback.
How to fix it
If this issue was raised, your page already declares a speakable block missing
cssSelector — open the finding and add it. The steps below are for adding
speakable markup to a page that has none yet: worthwhile for voice-search-eligible
content, and never reported as a defect while absent.
Identify pages worth marking as speakable: news and long-form content with a clear headline and summary benefit most; this schema is a limited beta for English-language news publishers today
Add a
speakableproperty withcssSelectorinside the Article/NewsArticle schema block — this is the property PixyScan's check requires:{ "@context": "https://schema.org", "@type": "NewsArticle", "headline": "How to Improve Your Website's SEO", "speakable": { "@type": "SpeakableSpecification", "cssSelector": [".headline", ".summary", "article h2"] }, "url": "https://www.example.com/seo-guide" }xpathis also valid schema.org markup, but PixyScan's check does not currently accept it as a substitute forcssSelector— declare both ifxpathselectors are already in use elsewhere.Choose the right selectors:
- Point to summary, introduction, or key section headings
- Don't select the entire body content
- Use CSS selectors that target specific elements (e.g.,
.headline,.summary,article h2)
Only applicable for:
ArticleschemaNewsArticleschemaBroadcastEventschema
Validate with Google's Rich Results Test
Examples
Example 1: No speakable Declared — Not This Issue
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "New SEO Guidelines Released",
"description": "Google announces updated SEO guidelines for 2024."
}Nothing is reported. This check does not require Article/NewsArticle schema to carry
a speakable property at all.
Example 2: SpeakableSpecification With cssSelector (passes)
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Complete Guide to Technical SEO",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".article-headline", ".article-intro", ".key-points", "article h2"]
}
}Example 3: SpeakableSpecification With Only xpath (fails)
Problematic state:
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Breaking News: Algorithm Update",
"speakable": {
"@type": "SpeakableSpecification",
"xpath": ["/html/body/article/header/h1"]
}
}Reported: cssSelector missing. xpath is a valid schema.org alternative, but
PixyScan's check does not currently accept it in place of cssSelector — declaring
both is the safest option if xpath selectors are already in use.
Corrected state:
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Breaking News: Algorithm Update",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".headline"],
"xpath": ["/html/body/article/header/h1"]
}
}How PixyScan detects this
Read the declared structured data: every JSON-LD block is parsed, and
@graphwrappers are flattened.Select declared
SpeakableSpecificationentities: any nested object whose@typeisSpeakableSpecification— typically thespeakableproperty of aWebPageor Article-family schema. A page that declares none is not examined — this check does not requireArticle/NewsArticleschema to be present first.Check the required property: a declared
SpeakableSpecificationmust havecssSelector.This is reported when: a declared
SpeakableSpecificationis missingcssSelector, reported as nested inside its parent schema. A page with nospeakableproperty at all is never reported.
Note: only cssSelector is checked today. An xpath-only SpeakableSpecification
(no cssSelector) is still reported missing cssSelector — xpath is not currently
accepted as an alternative.
What we store
Storage Level
Page Level — This issue is evaluated for each individual URL that contains structured data.
Database Table / Prisma Model
PageStructuredData
Stored Fields
| Field | Type | Description |
|---|---|---|
| schemaType | SchemaType | The type of schema (e.g., Organization, Person) |
| schemaFormat | SchemaFormat | The format of the schema (JSON-LD, Microdata, RDFa) |
| schemaIdentifier | String? | Unique identifier for the schema |
| rawJson | Json? | The raw JSON-LD or structured data content |
| schemaErrors | Json? | Array of validation errors found in the schema |
| isValidSchema | Boolean? | Whether the schema is valid according to validation |
| missingFields | Json? | Reserved for future use — the crawler always writes null here today; no check currently populates it |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
- Structured Data Validation — The extracted schema is validated against Schema.org definitions
- Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed