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

  1. Path-based variants only/tools/{slug}/{variant}/, never ?tone=funny.
  2. Unique metadata — title, description, H1, and intro per variant via seo-factory.
  3. Different generator behavior — variant maps to tone, channel, or calculator preset—not just a keyword swap.
  4. 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 + curated relatedSlugs
  • 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.

← All posts