From 57c67f2f7507c19ebc28b0d8131402279f789c90 Mon Sep 17 00:00:00 2001 From: Bastien Chanot Date: Thu, 16 Jul 2026 16:14:12 +0200 Subject: [PATCH] =?UTF-8?q?fix(seo):=20I1=20=E2=80=94=20scope=20Off-page?= =?UTF-8?q?=20axis=20to=20what=20is=20actually=20measured?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Axis was defined "backlinks, mentions, authority" (10% local / 15% national of the FULL score) but only mentions have a data source (STEP 6 web_search "" -site:). Backlinks and authority have no index, no API — the agent had to invent 2/3 of the number, and that number reaches a client via /client-handover. - Axis label names what is measured + points at §14. - Off-page axis note: score mentions ONLY; never price in unmeasured sub-components; a low mention count is NOT evidence of a weak backlink profile. Mandatory verbatim §14 line naming the gap + the nearest free source (Common Crawl) so the omission is legible, not silent. - LOCAL N/A label: was `N/A — requires FULL audit`, a promise FULL cannot keep for backlinks. Now states FULL covers brand mentions only. Weights deliberately unchanged: re-deriving now and again when a backlink source lands would churn historical scores twice. Revisit when the axis widens back (Common Crawl, phase 5). Note: initial plan was to mark the axis N/A in FULL and redistribute the weight. Reading the real spec (seo-analyzer.md:622 + STEP 6) showed that over-corrects — it discards the mentions data, which IS gathered. Narrowed the definition instead; composes with the Common Crawl work later. Verified: make test 35 GREEN / 0 RED. --- agents/seo-analyzer.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/agents/seo-analyzer.md b/agents/seo-analyzer.md index c60610a..43c36bb 100644 --- a/agents/seo-analyzer.md +++ b/agents/seo-analyzer.md @@ -619,7 +619,7 @@ FIX: AUTO () | USER () | Technical (perf, CWV, security headers, indexability) | 20% | 30% | | | On-page (content, meta, headings, images, video, a11y, i18n) | 20% | 30% | | | SEO Local (NAP, GMB, citations) | 25% | 5% | | -| Off-page (backlinks, mentions, authority) | 10% | 15% | | +| Off-page (unlinked brand mentions — backlinks/authority NOT auditable, §14) | 10% | 15% | | | Social presence | 10% | 5% | | | Competitive position | 5% | 10% | | | Legal compliance | 10% | 5% | | @@ -628,6 +628,23 @@ FIX: AUTO () | USER () real users, from STEP 4) when available; otherwise lab PageSpeed Lighthouse run. +**Off-page axis note (I1).** Score ONLY the unlinked brand mentions +gathered in STEP 6 (`web_search "" -site:`). +Backlink profile and domain authority have NO data source here — no index, +no API, nothing. NEVER price them into the number: an unmeasured +sub-component cannot be judged, and this axis carries 10-15% of a score +that reaches a client via `/client-handover`. A low mention count is a low +mention count — it is NOT evidence of a weak backlink profile. + +Mandatory §14 line whenever depth=FULL, verbatim: +`Backlinks / domain authority — NOT audited: no backlink index wired. +Nearest free source: Common Crawl hyperlinkgraph. Commercial: Ahrefs / +Semrush / Majestic. The Off-page score above prices in brand mentions only.` + +Weight deliberately unchanged despite the narrower scope: re-deriving it +now, then again when a backlink source lands, would churn historical +scores twice. Revisit the 10/15% only when the axis widens back. + ### LOCAL depth — 4 axes | Axis | Weight (local B2C) | Weight (SaaS/national/content) | Score /20 | @@ -638,7 +655,11 @@ Lighthouse run. | Legal compliance (pages, CMP, mentions) | 20% | 15% | | LOCAL axes not audited (Off-page, Social, Competitive) appear as -`N/A — requires FULL audit` in the report. +`N/A — requires FULL audit` in the report. Off-page is the exception to +that promise: FULL audits its brand-mentions share ONLY — backlinks and +authority are unauditable at EVERY depth (see the Off-page axis note). +Print `N/A — FULL audits brand mentions only` for it, never a bare +"requires FULL audit" that FULL cannot keep. ### Projected code-only score + trajectory to 17/20 (mandatory)