Programmatic SEO — plan and audit pages generated at scale from structured data sources (CSV/API/DB). Covers template architecture, URL patterns, internal-linking automation, thin-content/quality-at-scale gates (2025-2026 Scaled Content Abuse enforcement), canonical strategy, sitemap integration, and index bloat prevention for large page sets.
Installs into .claude/skills of the current project.
Are you the author of Seo Programmatic?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/trungdo9-seo-programmatic)
---
name: seo-programmatic
description: Programmatic SEO — plan and audit pages generated at scale from structured data sources (CSV/API/DB). Covers template architecture, URL patterns, internal-linking automation, thin-content/quality-at-scale gates (2025-2026 Scaled Content Abuse enforcement), canonical strategy, sitemap integration, and index bloat prevention for large page sets.
allowed-tools: Read, Write, Glob, Grep, Bash
---
# SEO Programmatic — Pages at Scale
> A programmatic page set lives or dies on one question per page: would this be worth publishing if no sibling page existed? Template architecture and quality gates are how you keep answering yes at 10,000 pages.
## When this skill activates
**Implicit:** "programmatic SEO", "pages at scale", "dynamic pages", "template pages", "generated pages", "data-driven SEO", "build pages from this CSV/API/database".
**Explicit:** "Use the seo-programmatic skill to [task]."
**Routed from:** `/mk:seo programmatic`, `.claude/skills/marketing/seo/SKILL.md` (orchestrator).
## Scope
Covers:
- Data-source assessment (CSV/API/DB) for programmatic-page fitness.
- Template architecture — variable injection points, static vs. dynamic blocks, standalone-value test.
- URL pattern strategy and internal-linking automation for large page sets.
- Thin-content / quality-at-scale gates, including 2025-2026 Scaled Content Abuse enforcement context.
- Canonical strategy, sitemap integration, and index bloat prevention at scale.
Does NOT cover:
- E-commerce category/filter pages specifically (faceted navigation UX, merchandising rules) → [[seo-ecommerce]].
- Topic-cluster modeling / pillar-sub-pillar-cluster trees for hand-written content → [[seo-cluster]].
- Crawl-budget diagnostics, Core Web Vitals, and JS-rendering audits at scale → [[seo-technical]].
- Writing the actual page copy for a single article → [[seo-content]].
## Data source assessment
Evaluate the data powering programmatic pages before any template gets built:
- **CSV/JSON files** — row count, column uniqueness, missing values.
- **API endpoints** — response structure, data freshness, rate limits.
- **Database queries** — record count, field completeness, update frequency.
- Data quality checks:
- Each record must carry enough unique attributes to generate genuinely distinct content.
- Flag duplicate or near-duplicate records (>80% field overlap) — they will produce duplicate pages.
- Verify data freshness; stale data produces stale pages, and stale programmatic pages are the easiest ones to deprioritize.
## Template architecture
Design templates that produce unique, valuable pages, not keyword mad-libs:
- **Variable injection points** — title, H1, body sections, meta description, schema.
- **Content blocks** — static (shared across all pages) vs. dynamic (unique per page). The dynamic share is what carries the SEO value.
- **Conditional logic** — show/hide sections based on data availability so missing fields don't leave visible gaps.
- **Supplementary content** — related items, contextual tips, user-generated content (reviews, Q&A) that a template alone can't fabricate.
Template review checklist:
- Each page must read as a standalone, valuable resource on its own.
- No "mad-libs" pattern — swapping city/product names into otherwise identical text.
- Dynamic sections must add genuine information, not just keyword variations of the same sentence.
## URL pattern strategy
Common patterns:
- `/tools/[tool-name]` — tool/product directory pages.
- `/[city]/[service]` — location + service pages.
- `/integrations/[platform]` — integration landing pages.
- `/glossary/[term]` — definition/reference pages.
- `/templates/[template-name]` — downloadable template pages.
URL rules:
- Lowercase, hyphenated slugs derived from data.
- Logical hierarchy reflecting site architecture.
- No duplicate slugs; enforce uniqueness at generation time.
- Keep URLs under 100 characters.
- No query parameters for primary content URLs.
- Consistent trailing-slash usage (match the existing site pattern).
## Internal linking automation
- **Hub/spoke model** — category hub pages link out to individual programmatic pages.
- **Related items** — auto-link to 3-5 related pages based on shared data attributes.
- **Breadcrumbs** — generate `BreadcrumbList` schema from the URL hierarchy.
- **Cross-linking** — link between programmatic pages sharing attributes (same category, same city, same feature).
- **Anchor text** — descriptive, varied anchor text; avoid exact-match keyword repetition on every instance.
- **Link density** — 3-5 internal links per 1000 words, matching [[seo-content]] guidelines.
## Thin content & quality-at-scale gates
### Quality gates
| Metric | Threshold | Action |
|---|---|---|
| Pages without content review | 100+ | WARNING — require a content audit before publishing |
| Pages without justification | 500+ | HARD STOP — require explicit user approval + thin-content audit |
| Unique content per page | <40% | Flag as thin content (penalty risk) |
| Word count per page | <300 | Flag for review (may lack sufficient value) |
### Scaled Content Abuse: enforcement context (2025-2026)
Google's Scaled Content Abuse policy (introduced March 2024) saw major enforcement escalation through 2025:
- **June 2025** — a wave of manual actions targeted sites running AI-generated content at scale.
- **August 2025** — third-party/SEO-community reporting described stronger SpamBrain detection for AI-generated link schemes and content farms.
- **Result** — Google reported a 45% reduction in low-quality, unoriginal content in search results following the March 2024 enforcement.
Enhanced quality gates for programmatic pages:
- **Content differentiation** — ≥30-40% of content must be genuinely unique between any two programmatic pages (not just city/keyword string replacement).
- **Human review** — minimum 5-10% sample review of generated pages before publishing.
- **Progressive rollout** — publish in batches of 50-100 pages; monitor indexing and rankings for 2-4 weeks before expanding. Never publish 500+ programmatic pages simultaneously without explicit quality review.
- **Standalone value test** — each page should pass: "would this page be worth publishing even if no other similar pages existed?"
- **Site reputation abuse** — Google clarified site-reputation-abuse language on 2024-11-19; treat third-party/hosted programmatic content as a policy risk.
The WARNING gate at <40% unique content remains appropriate as a baseline. Given 2025-2026 enforcement, treat <30% unique content as a HARD STOP, not just a warning, to keep margin against scaled-content-abuse risk.
### Safe at scale vs. penalty risk
Safe programmatic pages:
- Integration pages with real setup docs, API details, screenshots.
- Template/tool pages with downloadable content and usage instructions.
- Glossary pages with 200+ word definitions, examples, related terms.
- Product pages with unique specs, reviews, comparison data.
- Data-driven pages with unique statistics, charts, analysis per record.
Penalty risk — avoid at scale:
- Location pages with only the city name swapped into identical text.
- "Best [tool] for [industry]" pages without industry-specific value.
- "[Competitor] alternative" pages without real comparison data.
- AI-generated pages published without human review or unique value-add.
- Pages where >60% of content is shared template boilerplate.
### Uniqueness calculation
`Unique content % = (words unique to this page) / (total words on page) × 100`
Measure against every other page in the programmatic set. Shared headers, footers, and navigation are excluded from the calculation; template boilerplate text IS included, since that's exactly what erodes uniqueness at scale.
## Canonical strategy
- Every programmatic page carries a self-referencing canonical tag.
- Parameter variations (sort, filter) canonical to the base URL when duplicate or low-value.
- Paginated series — self-canonical each page when content differs; keep crawlable links between pages.
- If a programmatic page overlaps with a manually authored page, the manual page is canonical.
- No canonical to a different domain unless the cross-domain setup is intentional.
## Sitemap integration
- Auto-generate sitemap entries for all programmatic pages.
- Split at 50,000 URLs or 50MB uncompressed per sitemap file, whichever comes first (protocol limit).
- Use a sitemap index if multiple sitemap files are needed.
- `<lastmod>` reflects the actual data-update timestamp, not the page-generation time.
- Exclude noindexed programmatic pages from the sitemap.
- Register the sitemap in `robots.txt`.
- Update the sitemap dynamically as new records land in the data source.
## Index bloat prevention
- **Noindex low-value pages** — anything that fails the quality gates above.
- **Pagination** — reserve noindex/canonical consolidation for true duplicates or low-value filtered views.
- **Faceted navigation** — reserve noindex/canonical to the base category for true duplicates or low-value filtered views.
- **Crawl budget** — for sites with >10k programmatic pages, monitor crawl stats in Search Console; escalate to [[seo-technical]] if crawl rate can't keep pace with the page count.
- **Thin-page consolidation** — merge records with insufficient data into aggregated pages instead of publishing them thin.
- **Regular audits** — monthly review of indexed page count vs. intended count; a growing gap signals either a technical block or a quality-gate failure.
## Key concepts
- **Standalone value test** — the single question that separates a legitimate programmatic page from scaled content abuse: would this page justify itself with zero siblings?
- **Uniqueness %** — the quantified proxy for standalone value; template boilerplate counts against it, shared chrome doesn't.
- **Progressive rollout** — publishing in monitored batches (50-100 pages, 2-4 week bake) instead of dumping the full set, so a quality problem is caught at 100 pages, not 10,000.
- **Index bloat** — pages that get crawled and indexed but carry no ranking value; left unchecked, it dilutes crawl budget and site-quality signals for the whole domain.
## Output
- A programmatic SEO score report (data quality, template uniqueness, URL structure, internal linking, thin-content risk, index management) with Critical/High/Medium/Low findings and remediation recommendations, written to `plans/marketing/<campaign>/seo-programmatic.md`.
- Inline recommendations in the conversation when used for a quick pre-build check rather than a full audit.
## Cross-references
- `plans/marketing-context.md` — required hub (business context filters which data sources are worth templating)
- [[seo-content]] — link-density guideline this skill matches; writes the supplementary/dynamic content blocks
- [[seo-cluster]] — topic-cluster modeling for hand-authored content; use instead of this skill when pages aren't data-driven
- [[seo-ecommerce]] — category/filter-page specifics when the programmatic set is a product catalog
- [[seo-technical]] — crawl-budget and indexation diagnostics when the page count pushes past what Search Console shows as fully crawled
- `.claude/workflows/marketing-rules.md` — content quality rules
- `.claude/skills/marketing/README.md` — full kit overview
- `.claude/skills/marketing/seo/SKILL.md` — orchestrator (parent)
## Provenance
Imported from `AgriciDaniel/claude-seo` (`skills/seo-programmatic/SKILL.md`) and adapted for KitForge: reformatted into the ClauKit skill template, scoped to the marketing kit namespace (`/mk:`), output path repointed to `plans/marketing-context.md`/`plans/marketing/<campaign>/`. The prior duplicate `programmatic-seo` skill (coreyhaines31 import) was retired in favor of this one — see `docs/clauKit-registry.md` §4f — so this file carries the full domain content standalone; no sibling skill covers the gaps. Data-source assessment, template architecture, URL/linking rules, quality gates (including the 2025-2026 Scaled Content Abuse enforcement notes), canonical/sitemap/index-bloat guidance preserved from source with no facts invented. The source's `## Error Handling` table (URL-unreachable / no-pages-detected / threshold-exceeded runtime responses) was intentionally not carried over — it described a live-crawl audit tool's error paths, which don't apply to this skill's plan/audit-from-supplied-data usage in ClauKit; its substantive quality thresholds are preserved above in Thin content & quality-at-scale gates instead.