Page-value Report (page-value-report)
Page-value report
go run . page-value-report is the repeatable read behind issue #210: which
of the estate’s URLs deserve to exist, decided from measured data instead of
opinion. It joins three sources that already exist on the machine — the
sitemap, a Search Console Performance export and the on-disk public/ tree —
and writes its result to cache/page-value/report-<data-end>.{json,md}.
Nothing outside that directory is written; the estate is never touched.
cd site && go run . page-value-report \ --gsc "cache/gsc/inbox/processed/<run>/redecasas.com.br-Performance-on-Search-*.zip"What it measures
- Per sitemap URL (JSON row per URL): word count, internal in-links from indexed pages, GSC clicks/impressions, a documented 0–100 score (40×words + 25×data + 20×links + 15×traffic), and exactly one bucket.
- Buckets are rule-based so every decision is auditable:
keep(earner with real content, or real content long-tail),enrich(earner but thin — the DeepSeek/Serper refetch band),merge(thin, unearned, but linked — consolidate into the link target),noindex(thin, unearned, unlinked),redirect-stub(a Worker 301 that leaked into the sitemap, #202). - /estado/ cities additionally report agency-cache health: zero-result caches and no-data cities (no cache and no insights fallback) are counted per family.
- Disk classes classify every
.htmlfile outside the sitemap: de-indexed topic scopes, redirect aliases, robots-disallowed paths, on-disknoindex, and unlisted files — so the R2-cleanup and consolidation decisions (#206) start from a reconciled inventory. - Query gaps: top GSC queries whose entity tokens no sitemap path covers — the data-driven CREATE candidate list.
Reading it honestly
Pages.csv is the top 1,000 pages by clicks. “Non-earner” therefore means absence of measured traffic, not proof of zero impressions — the exact limitation the #206 retarget warns about (“prune must be driven by measured impressions per URL”). Query-gap coverage is a token heuristic and every candidate needs human review. These caveats ship inside the report’s Notes section; cite them with the numbers.
Doctrine
The report is analysis only. Enforcing buckets at build time (noindex / merge registration in the generator) is #210’s remaining action item and is sequenced post-trend: mass URL changes before the week-over-week verdict (~Nov 12) would confound the recovery attribution. Until then the report is the objective input the delete list will be built from, not the delete list.