Index Check Ops → URL list assembly

Building URL Lists From Sitemaps and Server Logs

Every index check is exactly as good as its input list. Feed a checker duplicates, parameter variants, and dead URLs, and the output is a percentage of noise. List assembly is unglamorous, fully automatable, and the highest-return step in the whole system.

The three sources and what each is for

Normalization as a script, not a habit

# assemble.sh — sitemap set, normalized and deduped
cat sitemap-urls.txt \
  | sed -E 's/[?&](utm_[^&=]+|gclid|fbclid)=[^&]*//g' \
  | sed -E 's/\?$//' \
  | awk '!seen[$0]++' \
  > checkable.txt
wc -l checkable.txt   # the number that goes in the log

Two rules the script can't skip: resolve to final canonical targets (checking a URL that declares its canonical elsewhere produces a meaningless "not indexed"), and drop non-200s before the check — dead URLs belong in a fix list, not an index report.

Tag by template while you're there

A one-column list answers "how many". A two-column list — URL plus template tag — answers "what broke". Tagging is usually a regex per URL pattern, done once. Every downstream piece, from delta alerts to client reports, gets sharper when the batch sent to the bulk index checker carries template structure the report can be grouped by afterward.

Cadence: regenerate lists on every sitemap change or weekly, whichever comes first. A stale list quietly turns "monitoring" back into "guessing".
Related: CI/CD integration · Multi-engine checks · The full architecture