Pular para o conteúdo

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.

Terminal window
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 .html file outside the sitemap: de-indexed topic scopes, redirect aliases, robots-disallowed paths, on-disk noindex, 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.