Methodology

The score must survive a skeptical SEO.

Every scored line cites its evidence and its measured lift. The model scores only community-accepted signals, shows debated ones as informational, flags debunked ones as anti-patterns — and never lets an LLM decide your number.

The two-layer model

finalScore = round(contentScore × eligibility), 0–100, fully rule-based (no LLM). Eligibility gates are multiplicative because a live citation pilot proved they are gates, not slices: a blocked AI bot, a JavaScript-only page, or an unindexed URL each make a page uncitable — treating them as small additive point deductions (the old flat Σ(points) model) wrongly let good content "outweigh" being invisible. Content quality is additive and sums to 100.

Content quality: five signals

Signal Weight From zero to full
Evidence density 30 none → 1 of {statistics, quotations, authoritative citations} → 2+; a puffery guard drops a band on fluff-heavy pages
Answer-shape 25 wall of text → lead answer OR structure → both (+tables, +FAQ/HowTo schema)
Trust (entity-type-aware) 22 markers appropriate to the entity; bonus for schema sameAs + authoritative outbound links
Freshness (page-type-conditional) 13 article: undated → >1yr → <1yr → <3mo; an evergreen page with no date gets benefit of the doubt
Fundamentals 10 title + meta description + ≥300 words (indexability moved to a gate)
Evidence density30
Answer-shape25
Trust (entity-aware)22
Freshness13
Fundamentals10

Weights are anchored to measured effect sizes: Aggarwal et al. 2024 (quotations, statistics and citations are the top levers for generative-engine visibility), Kevin Indig's analysis (44% of AI citations come from a page's first third), and Ahrefs' recency data.

Entity-aware Trust

Trust scores the markers that matter for the kind of page — a portfolio's trust is a verifiable person, not a brand's About page. Entity type is read from JSON-LD (decisive) plus URL heuristics. The model scores the presence of markers, never actual trustworthiness.

Entity Trust markers
person / portfolio credited name + bio/credential + professional sameAs (LinkedIn, GitHub, ORCID…)
product About + Contact + brand-in-title + ratings (AggregateRating)
local business About + Contact + NAP (name/address/phone) + name-in-title
organization About + Contact + official sameAs
article author E-E-A-T (name → +credential)
generic page brand trust (About + Contact + brand-in-title)

Intent re-weighting (QDF / QDD / YMYL)

Default weights are re-weighted by the page's query intent, detected from its own topic signals (title/H1/body), language-scoped (en/id/de; an unlisted or undetected language gets flat weights, never a penalty):

Each signal keeps its earned fraction; only its weight (its maximum) changes. The applied profile is shown in the UI ("weighted for: …"). The vector always sums to 100 (largest-remainder rounding). It is a heuristic, not a certainty — and the UI says so.

What it refuses to score

The model never scores debunked signals — schema markup as a ranking lever, or llms.txt — and deliberately leaves a section empty rather than fabricate a suggestion it can't stand behind. Debated signals are shown as informational only.

Add to Chrome — free Back to overview