fix(seo): I1 — scope Off-page axis to what is actually measured
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 "<name>" -site:<domain>). 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.
This commit is contained in:
+23
-2
@@ -619,7 +619,7 @@ FIX: AUTO (<what agent will do>) | USER (<what user must do>)
|
||||
| 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 (<what agent will do>) | USER (<what user must do>)
|
||||
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 "<business-name>" -site:<domain>`).
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user