Skip to content
All modules

FAQ & Schema Intelligence

Detect, validate and remediate structured data site-wide, with source-grounded JSON-LD.

24 active of 24 published rules · each active rule is versioned and backed by evidence. Planned rules are on the roadmap.

Medium Active

No structured data

RULE-SCHEMA-001 · v1.0.0

The page exposes no JSON-LD structured data.

What it checks

Counts JSON-LD blocks on the page; flags pages with none.

Confidence

High — derived from evidence quality, not asserted.

High Active

Structured data fails to parse

RULE-SCHEMA-002 · v1.0.0

A JSON-LD block is present but is not valid JSON, so it cannot be read by search engines.

What it checks

Attempts to JSON-decode each JSON-LD block; flags any that fail.

Confidence

High — derived from evidence quality, not asserted.

High Active

Entity missing a required property

RULE-SCHEMA-003 · v1.0.0

A structured-data entity omits a property that schema.org marks as required for its type.

What it checks

Parses each entity and checks the required properties for its type (Article headline, Product name, …).

Confidence

High — derived from evidence quality, not asserted.

High Active

Property value fails type validation

RULE-SCHEMA-005 · v1.0.0

A schema property holds a value of the wrong data type (e.g. a date field with no valid date).

What it checks

Validates typed properties such as datePublished/dateModified against their expected format.

Confidence

Medium — derived from evidence quality, not asserted.

Medium Active

Headline contradicts the visible H1

RULE-SCHEMA-007 · v1.0.0

The schema headline and the visible H1 are too dissimilar, so the structured data may not reflect the page.

What it checks

Compares the schema headline to the H1 text (similarity below 0.6 fails).

Confidence

Medium — derived from evidence quality, not asserted.

High Active

AggregateRating with no reviews

RULE-SCHEMA-008 · v1.0.0

The page declares an aggregate rating in schema but no reviews are present — a pattern search engines penalise.

What it checks

Detects AggregateRating with no accompanying Review entity.

Confidence

Medium — derived from evidence quality, not asserted.

Low Active

FAQPage with fewer than 2 questions

RULE-SCHEMA-011 · v1.0.0

A page marked as FAQPage contains fewer than two Question entities — too thin to justify the schema.

What it checks

Counts Question entities in a FAQPage’s mainEntity.

Confidence

High — derived from evidence quality, not asserted.

Medium Active

FAQ answer empty or too short

RULE-SCHEMA-012 · v1.0.0

An FAQ question’s acceptedAnswer is empty or under 20 characters — effectively no real answer.

What it checks

Reads each Question’s acceptedAnswer text length.

Confidence

High — derived from evidence quality, not asserted.

Medium Active

Same @id used for different types

RULE-SCHEMA-013 · v1.0.0

The same schema @id identifies entities of different @type across the site — an internal contradiction.

What it checks

Collects @id → @type across crawled pages and flags any @id with more than one type.

Confidence

High — derived from evidence quality, not asserted.

Info Active

Microdata/RDFa used instead of JSON-LD

RULE-SCHEMA-014 · v1.0.0

The page uses an older structured-data format instead of the now-preferred JSON-LD. Informational.

What it checks

Detects Microdata/RDFa markup with no JSON-LD present.

Confidence

High — derived from evidence quality, not asserted.

Low Active

Organization missing logo

RULE-SCHEMA-015 · v1.0.0

Organization schema exists but declares no logo — relevant for knowledge-panel eligibility.

What it checks

Checks Organization entities for a logo property.

Confidence

High — derived from evidence quality, not asserted.

High Active

Offer price with missing/invalid currency

RULE-SCHEMA-016 · v1.0.0

A product Offer declares a price but no valid ISO priceCurrency, which can make the listing ineligible for rich results.

What it checks

Checks each Offer with a price for a 3-letter priceCurrency code.

Confidence

High — derived from evidence quality, not asserted.

High Active

Review with no itemReviewed

RULE-SCHEMA-017 · v1.0.0

A Review entity does not specify what is being reviewed.

What it checks

Checks Review entities for an itemReviewed reference.

Confidence

High — derived from evidence quality, not asserted.

Medium Active

VideoObject missing thumbnail or upload date

RULE-SCHEMA-018 · v1.0.0

Video structured data is missing thumbnailUrl or uploadDate — fields required for rich results.

What it checks

Checks VideoObject entities for thumbnailUrl and uploadDate.

Confidence

High — derived from evidence quality, not asserted.

Low Active

BreadcrumbList positions out of order

RULE-SCHEMA-020 · v1.0.0

The position values in a breadcrumb list skip numbers or repeat, breaking the intended ordering.

What it checks

Checks BreadcrumbList item positions are a sequential 1..n.

Confidence

High — derived from evidence quality, not asserted.

High Active

LocalBusiness missing address or geo

RULE-SCHEMA-021 · v1.0.0

A LocalBusiness entity lacks both address and geo-coordinates — critical for local search.

What it checks

Checks LocalBusiness entities for an address or geo property.

Confidence

High — derived from evidence quality, not asserted.

Medium Active

Structured-data image returns a broken link

RULE-SCHEMA-022 · v1.0.0

An image referenced in structured data returns an error status when fetched.

What it checks

Fetches image URLs from structured data (SSRF-guarded, capped) and flags 4xx/5xx.

Confidence

High — derived from evidence quality, not asserted.

Info Active

Offer price with no priceValidUntil

RULE-SCHEMA-024 · v1.0.0

A product price is declared without an expiration date. Informational — common but not ideal.

What it checks

Checks priced Offers for a priceValidUntil property.

Confidence

High — derived from evidence quality, not asserted.

Low Active

Entity missing a recommended property

RULE-SCHEMA-004 · v1.0.0

A structured-data entity omits a property schema.org recommends (but does not require) for its type.

What it checks

Checks each entity against a recommended-property profile for its type (e.g. Article author/image).

Confidence

Medium — derived from evidence quality, not asserted.

Medium Active

@type not a recognised schema.org type

RULE-SCHEMA-006 · v1.0.0

A declared @type does not match the bundled schema.org vocabulary — likely a typo or invented type.

What it checks

Compares each top-level @type against the bundled schema.org vocabulary snapshot (v1).

Confidence

Medium — derived from evidence quality, not asserted.

Medium Active

Duplicate entities with conflicting values

RULE-SCHEMA-009 · v1.0.0

Two entities of the same type and name declare contradictory values (e.g. two Products with different prices).

What it checks

Groups Product/Offer entities by name and flags differing prices.

Confidence

Medium — derived from evidence quality, not asserted.

Low Active

BreadcrumbList links off-domain

RULE-SCHEMA-010 · v1.0.0

A breadcrumb item points to a different host than the page, so it does not reflect the site hierarchy.

What it checks

Compares BreadcrumbList item URLs against the page host.

Confidence

Medium — derived from evidence quality, not asserted.

Medium Active

WebPage and Article both primary, unlinked

RULE-SCHEMA-019 · v1.0.0

Both WebPage and Article entities are declared without a mainEntityOfPage link, leaving the canonical entity ambiguous.

What it checks

Detects co-present WebPage + Article with no mainEntityOfPage relationship.

Confidence

Medium — derived from evidence quality, not asserted.

Low Active

Schema publish date not shown on the page

RULE-SCHEMA-023 · v1.0.0

The Article datePublished year does not appear anywhere in the visible page text.

What it checks

Compares the schema datePublished year against the visible page text.

Confidence

Low — derived from evidence quality, not asserted.

Every finding this module produces is backed by an evidence record, scored by published formula, and marked with its provenance. Where the evidence isn’t sufficient, the module reports “insufficient evidence” rather than guessing.