Programmatic SEO
Done well, one template covers thousands of real searches. Done badly, it is a mass of thin pages
that damages the whole domain.
Qualify before building
All four must hold:
- A real query pattern with verified volume across many instances — not one popular term and a
long tail of zeroes.
- Data you actually have, at quality, for most instances. Missing data produces empty pages,
and empty pages are the failure mode.
- Genuine per-page value. If two pages differ only by a swapped noun, they are duplicates
however they are generated.
- A reason to be better than what ranks now. Usually completeness, freshness, or data nobody
else has.
Fail any one and the answer is fewer, better pages.
Building
- Design the best single page first, by hand, and confirm it is genuinely useful. Then find what
in it is variable. Templating before you know the good page scales a mediocre one.
- Vary the substance, not just the strings. Each page needs data, comparisons, or context
specific to it.
- Set a minimum data threshold. Below it, the page does not get generated. This single rule
prevents most programmatic disasters.
- Internal linking is not optional — thousands of orphaned pages will not be crawled. Build hub
pages and cross-links into the template.
- Roll out in batches. Publish a few hundred, wait for indexation and performance, then
continue. A full launch that goes wrong is hard to unwind.
Maintaining
Stale programmatic pages rot faster than editorial ones because there are so many. Set a refresh
cadence tied to the data source, and prune: pages with no impressions after two quarters should be
consolidated or removed. Volume is not the goal.
Sources
references/sources.md in this skill lists the outside authorities that settle the questions
here — what each one is authoritative for, and what you may do with it. Check them before
answering on anything they cover, and cite what you used. Most are free to read and not free
to reproduce; the use note on each is binding.
Never
- Generate pages for instances with no data.
- Spin text to create the appearance of uniqueness.
- Launch without a plan for removing what does not work.