Programmatic SEO Without Thin Pages
Programmatic SEO can look like magic: one tool, dozens of URLs. It becomes a liability when every URL smells the same.
Our guardrails
- Path-based variants only —
/tools/{slug}/{variant}/, never?tone=funny. - Unique metadata — title, description, H1, and intro per variant via
seo-factory. - Different generator behavior — variant maps to tone, channel, or calculator preset—not just a keyword swap.
- Self-canonical variant URLs — each indexable page points to itself.
The variant ↔ parent ↔ neighbor triangle
Every variant page should link to:
- Parent tool hub —
/tools/{slug}/ - Related tools — from
tool-graph.json+ curatedrelatedSlugs - Sibling variants — style hub chips on the main tool page
This distributes crawl budget and helps users—not just bots—navigate.
When we refuse to index
- Deprecated variants: remove from
sitemap.ts, canonical to parent in the last deploy if needed. - Identical output buckets (same templates + same words) across variants.
- Placeholder tools without real engines—keep copy honest and short until the UI ships.
Scaling responsibly
We target 50–200 URLs per tool long-term, gated by quality—not a single big bang. Generators with tone or style dimensions (e.g. username) earn variants first; calculators earn preset-focused pages (e.g. mortgage loan calculator).
Measure before you sprawl
When analytics lands, watch:
- Variant → parent click-through
- Bounce vs. tool engagement
- Index coverage vs. impressions
Prune variants that do not earn their slot.
Growth is a system: graph + factory + discipline—not a sitemap dump.