diff --git a/agents/geo-analyzer.md b/agents/geo-analyzer.md index 307e918..c3e9e3b 100644 --- a/agents/geo-analyzer.md +++ b/agents/geo-analyzer.md @@ -459,6 +459,12 @@ Load: `~/.claude/agents/resources/content-shape-for-ai.md` Sample 5-10 key pages (homepage + top service/blog pages). For each: +**Record the denominator.** This samples; the report says "audit". Count the +URLs in `sitemap.xml` for the coverage ratio, and carry it into the GEO +SCORING block. No sitemap → total UNKNOWN, say so. Content shape is the +axis most damaged by silent sampling: it is judged per page, so a 6-page +sample of a 300-page site says nothing about the other 294. + ### Checks 1. **Definition Lead** — does the first sentence (or H1) follow @@ -586,6 +592,7 @@ Score each axis. Use concrete findings from STEP 2-9. ``` GEO SCORING () +COVERAGE : of sitemap URLs (

%) | pages, total UNKNOWN AI Crawlers Policy : XX/20 llms.txt : XX/20 Schema.org for AI : XX/20 @@ -596,6 +603,12 @@ AI Visibility (live) : XX/20 | N/A (LOCAL) GEO GLOBAL (weighted) : XX.X/20 () ``` +**COVERAGE is mandatory, never omitted, never rounded up.** It bounds the +per-page axes — Content Shape above all, and the page-level share of +Schema.org. Site-wide axes (AI Crawlers Policy, llms.txt) are unaffected: +robots.txt and llms.txt are single files, fully read. Say which is which +rather than letting one ratio discredit the whole report. + Per user instruction: **GEO weight in combined SEO+GEO report = 20% for local, 25% for national/SaaS/content.** diff --git a/agents/seo-analyzer.md b/agents/seo-analyzer.md index b00fdbd..4536e6e 100644 --- a/agents/seo-analyzer.md +++ b/agents/seo-analyzer.md @@ -400,8 +400,22 @@ Fetch rendered HTML. Extract and analyze: ## STEP 5 — ON-PAGE AUDIT `[both]` +**Record the denominator BEFORE sampling.** This step samples; the report +says "audit". Count the URLs in `sitemap.xml` (fetch it in full — the +`head -50` in STEP 4 is a preview, not a count). That count is the coverage +denominator, and it feeds the mandatory COVERAGE line in STEP 9. No sitemap +→ denominator unknown: say so, never let silence imply full coverage. On a +500-page site a 12-page sample is 2.4% — the On-page score is an +extrapolation from it, and the reader cannot know that unless you print it. + ### Meta tags per page (sample 5-15 key pages) +Sample by risk, not convenience: homepage + top templates (one per page +type: service, city, blog, product, legal) + any page GSC flags as a +position 4-10 quick win. Same template audited twice buys nothing; an +un-sampled template is an un-audited template — name the templates you +skipped. + For each sampled page: ``` PAGE: @@ -738,6 +752,8 @@ misroutes the client-handover gate and the user's effort. ``` SEO SCORING () +COVERAGE : of sitemap URLs (

%) — templates skipped: + | pages, total UNKNOWN (no sitemap) Technical : XX/20 On-page : XX/20 SEO Local : XX/20 | N/A @@ -749,6 +765,12 @@ Legal : XX/20 SEO GLOBAL (weighted): XX.X/20 () ``` +**COVERAGE is mandatory, never omitted, never rounded up.** It is the +honesty bound on every page-level axis: On-page and the on-page share of +Technical are extrapolations from the sample. If coverage < 25%, repeat it +in §0 as a major alert — a 17/20 drawn from 3% of a site is not a 17/20, and +`/client-handover` gates on these numbers. + Per user instruction: this score represents **80% of the combined final score for local B2C (20% for GEO), or 75% for SaaS/national (25% for GEO)**. The `/seo` dispatcher combines SEO and GEO scores.