WQI.web​qualityindex
Method v1.2.0 86 live / 86 total factors methodology

methodology / SEO & Discoverability / #12

Schema.org structured data presence

#12 · Recommended · Web Quality · weighted · SEO & Discoverability · weight 2.7% · impl implemented · method v1.2.0

Web Quality factor

This factor is part of Web Quality — the weighted 0..100 score that sits above Web Standards. Its weight depends on what kind of site is being measured. Web Standards items take priority; this factor only enters the score once Web Standards passes.

Base weight
0.8 applied to every site type unless overridden below
Why this weight
Schema.org structured data is how AI assistants and search engines understand pages. Critical for news (Article) and local biz (LocalBusiness).

Per-site-type overrides

Site type Weight Δ vs base
Blog 0.5 -0.3
E-commerce 1.0 +0.2
News / Publisher 1.2 +0.4
Local business 1.0 +0.2
Personal site 0.3 -0.5
Media / Streaming 1.0 +0.2

Site types not listed inherit the base weight.

Same factor, two depths.

What we measure

Structured data tells Google what kind of business you are — local business, recipe, product, article. With it, Google shows rich results: stars, hours, prices, attorney names. Without it, you get plain blue links.

How to improve your score

Add JSON-LD scripts. For local businesses: `LocalBusiness` schema with name, address, phone, hours, rating. For specific types: `LegalService`, `Restaurant`, `Recipe`, etc. WordPress: Yoast / Rank Math add these automatically when configured.

Implementation

stale · v1 · seeded — no connector publish yet · source: freshcoat-discovery/src/connectors/seo-schema.ts:scoreSchemaPresence

Detection method

Parses ctx.html via linkedom directly. Extracts every <script type="application/ld+json"> block; flattens @graph wrappers; collects all @type values across the flattened nodes. Graded by completeness: Org+WebSite+page-type best, Org-only or WebSite-only mid, no-recognised-types worst.

Detection sources

  1. Homepage HTML via linkedom (canonical)
  2. Browser-UA fallback fetch when initial response looks UA-stripped
  3. Legacy audit endpoint's seo_has_structured_data — only used when connector finds zero blocks

Scoring bands · graded ladder

Score Condition
100 Organization + WebSite + page-specific type (Article/Product/LocalBusiness/etc.)
80 Organization + WebSite
60 Organization-only or WebSite-only or page-specific-only
30 JSON-LD blocks found but no recognised types (vendor schemas / typos)
n/a page chrome present but no h1 + no JSON-LD — UA/IP-stripping suspected (Vercel-style)
n/a no html to parse

Evidence-key dictionary

What every notes string the connector emits means. Surfaces in the per-domain dossier evidence column.

org_website_page_specific
Full triple — top score.
org_and_website
Both Org and WebSite found; no page-type.
org_only
Only Organization-family schema.
website_only
Only WebSite schema.
page_specific_only
Only a page-specific type (Article/Product/etc.) — missing the Org/WebSite umbrella.
no_recognised_types
JSON-LD blocks parse, but no @type matches the recognised set.
no_structured_data
Page genuinely lacks JSON-LD.
ua_or_ip_filter_suspected_no_h1_no_jsonld
Page chrome present but no h1 or JSON-LD — we likely got a UA-filtered or IP-filtered response. Excluded from the composite.

Applicability

Variable tier; weighted by site type (news=1.2, ecommerce=1.0, personal=0.3 per the matrix). When the connector can't see the page clearly (suspected stripping), the factor returns null and is excluded from the composite — we say so explicitly rather than penalising the site for a measurement gap.

Changelog

  • 2026-04-29 · seed Initial seed from MethodologyRegistry bootstrap.

Facts

Ticket
WEBQ-12
Category
SEO & Discoverability
Status
live
Weight
2.7%
Data source
Service cost
Free — HTML parsing
Scoring impl
implemented
Method version
v1.2.0

Scoring

Scoring formulas are versioned with the methodology. The current method (v1.2.0) maps raw measurements to pass, warn, fail. Factor weights determine how much each contributes to the composite — see the methodology index for the full table.

Cited by these standards

Standards in the Standards Library whose satisfiedBy requirement tree references this factor. Each link goes to the standard's full entry — methodology, scope, and the other factors it relies on.

Version history

Version Change Date
v1.2.0 Factor introduced. Status: live. Scoring impl: implemented. 2026-04-25

← back to methodology