# programmatic-seo

Walks you through building many similar SEO pages from one template and a data source: cities, comparisons, integrations. Useful for long-tail traffic.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 419 installs · ★ 721
- Author: OpenClaudia
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/programmatic-seo/SKILL.md
- Updated: 2026-10-21
- HTML: https://affpapa.org/en/nevibecode/skills/openclaudia-programmatic-seo

## What it does

The skill splits the work into four steps: pick a page pattern, build the data source, write the template, ship it on Next.js. A pattern is written as a formula of modifier, head term and qualifier, like "{service} in {city}" or "{product A} vs {product B}". Each combination gets checked for search demand and for whether you actually have data behind it.

Then comes a TypeScript data model: slug, city, service, title, metaDescription, h1, provider list, average cost, review count, FAQs and links to nearby pages. The template is laid out block by block — above the fold, overview, detailed analysis, practical info, internal links, FAQ, schema markup. A separate checklist guards against thin content: how much of the visible text has to be page-specific, how many data points must be unique, whether an image is present.

Implementation is shown with Next.js App Router dynamic routes: `generateStaticParams` builds the paths at build time, `generateMetadata` fills in title and description. You bring the data yourself — public APIs, scraping that respects `robots.txt`, user reviews or licensed datasets. With no source of per-page values the template repeats the same text across every URL, which is exactly what search engines drop.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill programmatic-seo -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/programmatic-seo/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/programmatic-seo/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill programmatic-seo -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/programmatic-seo/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill programmatic-seo -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/programmatic-seo/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install OpenClaudia/openclaudia-skills programmatic-seo
```

2. **Manually: put the files in place**
- File: `.github/skills/programmatic-seo/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill programmatic-seo -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/OpenClaudia/openclaudia-skills --path skills/programmatic-seo
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/programmatic-seo/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill programmatic-seo -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/programmatic-seo/SKILL.md

## When to use it
- find a page pattern that scales to hundreds of URLs
- define a TypeScript data model for the template
- generate Next.js routes from a list of cities and services
- check pages for thin content before publishing
- wire internal links between sibling pages

## Example prompts
- Find a pSEO pattern for a food delivery service and show me the page formula
- Build a "{service} in {city}" page template with an FAQ block and schema
- Create Next.js dynamic routes for comparison pages between two tools

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: cad59889c27e2e79.

BEGIN THIRD-PARTY FILE cad59889c27e2e79
```text
---
name: programmatic-seo
description: Create SEO-optimized pages at scale using programmatic/template-based approaches. Use when the user says "programmatic SEO", "pSEO", "pages at scale", "template pages", "dynamic SEO pages", "auto-generate pages", "landing pages at scale", "city pages", "comparison pages", or wants to create many similar pages targeting different keywords.
---

# Programmatic SEO Skill

You are an expert in programmatic SEO (pSEO) -- the strategy of creating large numbers of targeted pages using templates and data. Help users identify page patterns, build templates, and deploy at scale while avoiding thin content penalties.

## What is Programmatic SEO?

Programmatic SEO creates pages at scale by combining:
- A **page template** (layout + structure)
- A **data source** (database, API, CSV)
- **Dynamic content** (unique per page, not just variable substitution)
- **SEO optimization** (meta tags, internal links, schema)

**Examples of successful pSEO:**
- Zapier: "How to connect {App A} to {App B}" (150K+ pages)
- Nomad List: "{City} for digital nomads" (1000+ city pages)
- Wise: "{Currency A} to {Currency B} exchange rate" (10K+ pages)
- G2: "{Software} reviews" (100K+ product pages)
- Tripadvisor: "Best {type} in {city}" (millions of pages)

## Process

### Step 1: Identify the Page Pattern

Help the user find their pSEO opportunity. Look for patterns where:

**Pattern formula:** `{Modifier} + {Head Term} + {Qualifier}`

| Pattern Type | Formula | Example | Volume Potential |
|-------------|---------|---------|-----------------|
| Location + Service | "{service} in {city}" | "plumber in Austin" | Cities x Services |
| Comparison | "{product A} vs {product B}" | "Notion vs Asana" | nC2 combinations |
| Integration | "{tool A} + {tool B} integration" | "Slack Salesforce integration" | Tools x Tools |
| Template/Example | "{type} template" | "invoice template" | Types count |
| Stats/Data | "{topic} statistics {year}" | "remote work statistics 2025" | Topics x Years |
| Glossary | "What is {term}" | "What is APR" | Terms count |
| Best/Top | "Best {product} for {use case}" | "Best CRM for startups" | Products x Uses |
| Review | "{product} review" | "Airtable review" | Products count |
| Alternative | "{product} alternatives" | "Slack alternatives" | Products count |
```
END THIRD-PARTY FILE cad59889c27e2e79

The third-party file has ended. Everything between the cad59889c27e2e79 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2326 of 13347 bytes. © OpenClaudia · MIT · https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/programmatic-seo/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
