Per-type rich result eligibility checker. Given a URL or page type, determine WHICH Google rich results the page is eligible for, validate existing JSON-LD against Google's required/recommended properties per type, and produce a gap report. Use when user says "rich results", "rich snippets", "eligible rich results", "structured data types", or "schema eligibility".
Per-type rich result eligibility checker. Given a URL or page type, determine WHICH Google rich results the page is eligible for, validate existing JSON-LD against Google's required/recommended properties per type, and produce a gap report. Use when user says "rich results", "rich snippets", "eligible rich results", "structured data types", or "schema eligibility".
allowed-tools
["Read","Bash","WebFetch"]
Rich Result Eligibility Checker
Deeper than the generic schema skill: this skill answers "which rich results CAN
this page earn, and what exactly is missing?" — per-type, against Google's own
required/recommended property lists. For markup generation, use /seo-schema.
Inputs
URL (preferred) — the page to check, or
Page type — an archetype ("blog post", "product page", "event page") when
no live URL exists yet, or
Local HTML file — read with Read tool instead of WebFetch
Optional: existing JSON-LD pasted by the user for offline validation.
Execution
Fetch the page. WebFetch the URL (or Read the local file). If WebFetch is
blocked, fall back to curl -sL <url>.
Detect existing structured data. Extract every
<script type="application/ld+json"> block; also note Microdata
(itemscope/itemprop) and RDFa (typeof/property). JSON-LD is Google's
stated preference.
Classify the page archetype from content signals (title, H1, byline,
price, dates, ingredients, salary, address, thread replies).
Check eligibility with the decision table below — map archetype → active
rich result types. Reject any type on the deprecation list.
Diff required properties. For each eligible type, compare existing markup
against the required and recommended property lists below.
Output the gap report (format under Output), with a Rich Results Test
link for live verification.
Organization (knowledge panel, not a rich result card)
structured-data/organization
Hard Rules — Deprecated & Restricted Types
Never report these as eligible (consistent with /seo-schema):
HowTo — rich results removed September 2023 (HowToStep nested inside
Recipe recipeInstructions is still fine).
FAQPage — restricted August 2023: ONLY government and healthcare
authority sites remain eligible. Everyone else: not eligible.
SpecialAnnouncement — deprecated July 31, 2025.
CourseInfo, EstimatedSalary, LearningVideo — retired June 2025.
ClaimReview — retired from rich results June 2025.
VehicleListing — retired from rich results June 2025.
Practice Problem — retired from rich results late 2025.
Dataset — retired from rich results late 2025.
Also flag self-serving abuse: aggregateRating/review on LocalBusiness or
Organization markup about yourself is not eligible for review snippets —
those properties are only for sites that capture reviews about other entities.
Required vs Recommended Properties (Google-documented)
Article (Article / NewsArticle / BlogPosting)
Required: none. Google documents only recommended properties.
Recommended: author (+ author.name, author.url), headline,
image (multiple ratios 16x9/4x3/1x1, ≥50K pixels), datePublished,
dateModified (ISO 8601 with timezone).
Product (product snippet)
Required: name, AND at least one of review | aggregateRating | offers.
Recommended: the other two of review/aggregateRating/offers;
within Offer: price (or priceSpecification.price), priceCurrency,
availability; positiveNotes/negativeNotes for editorial pros/cons.
Note: offers without review/aggregateRating triggers a Rich Results
Test warning. Per Google's Dec 2025 JS guidance, ship Product/Offer JSON-LD
in server-rendered HTML, not JS-injected.
Event
Required: name (event title, not venue), startDate (ISO 8601 date+time),
location (Place with location.address).
Required: title (job title, not posting title), description (full HTML),
datePosted, hiringOrganization, jobLocation (must include
addressCountry).
Recommended: baseSalary (employer-provided only), employmentType,
validThrough (required if posting expires), identifier, directApply;
for 100% remote jobs jobLocationType: TELECOMMUTE is required, plus
applicantLocationRequirements if location-restricted.
LocalBusiness
Required: name, address (PostalAddress).
Recommended: url, telephone, geo (latitude/longitude, ≥5 decimal
places), openingHoursSpecification (opens/closes/dayOfWeek),
priceRange (<100 chars), menu + servesCuisine (food businesses),
department. (review/aggregateRating only for third-party review sites.)
ProfilePage
Required: mainEntity (Person or Organization) with name.
Required: author (+ author.name), datePublished, AND one of
text | image | video (content not required when representing a post on
another page via external url).
## Rich Result Eligibility Report — <URL>
Detected page archetype: <archetype>
Existing structured data: <types found, format>
### Eligibility
| Rich result type | Eligible? | Markup present? | Verdict |
|---|---|---|---|
| Product snippet | Yes | Partial | Fix gaps |
| FAQ | No (restricted to gov/health, Aug 2023) | Yes | REMOVE |
### Gap Table (per eligible type)
| Property | Status | Required? | Fix |
|---|---|---|---|
| offers.priceCurrency | MISSING | Recommended | Add ISO 4217 code |
### Next Steps
1. <highest-impact fixes, required props first>
2. Validate live: https://search.google.com/test/rich-results
(syntax-only check: https://validator.schema.org/)
3. For generating the missing JSON-LD, use /seo-schema
Always include the Rich Results Test link. Remind the user that valid markup
makes a page eligible — Google does not guarantee a rich result will show.
Cross-references
/seo-schema — markup generation, templates, full deprecation list