Agency OS Skill Library

Programmatic SEO Page Systems

Designs and builds SEO pages at scale from one template plus a dataset, using twelve proven page playbooks.

Web and SEO First result: a full afternoon programmatic-seo
Back to all skills

What it does

Produces a pSEO strategy document, a page template, and the populated dataset that together generate a set of ranking pages from one repeating keyword pattern. It picks from 12 playbooks (locations, comparisons, integrations, personas, glossary, directory, templates, curation, conversions, examples, translations, profiles), designs the URL structure and schema markup, plans the hub-and-spoke internal linking, and sets the indexation strategy. It also emits a pseo-plan-v1 schema block recording the playbook, keyword pattern, planned page count, data sources and build stack. Whether the pages actually go live depends on your stack, which it confirms before designing anything.

Say this to start

This skill has no button. You start it by saying what you want. Any of these will do it:

> programmatic SEO
> pSEO
> location pages
> comparison pages
> generate 100 pages
> templated landing pages

When to reach for it

When NOT to use it

If you actually wantUse this instead
designing and building a single landing pagefrontend-design
fewer than roughly 30 pages, which is a landing-page project not a pSEO onefrontend-design
keyword volume and difficulty research on its ownkeyword-research
writing one editorial articleblog-writer
coding the template's actual HTML and CSSfrontend-design
fitting the page set into the site's pillar and content structurecontent-system-architect

Before you start

What you needWhy
A way to build pages from data: a site codebase you can edit (Astro, Next.js, Hugo, Eleventy, or a plain HTML build script), or a CMS with bulk-page capability (a WordPress custom post type, Webflow CMS collections, or an API or CSV import)with neither, you get a strategy document, a template and a data file for someone else to implement, not live pagesRequired
The dataset itself: one row per page, carrying every field the template renders. For a locations playbook that means per-city local providers, local pricing and local regulations. For comparisons it means real feature-by-feature data on each product. For a directory it means the actual entries and their attributesa dataset that only holds the variable (the city name, the competitor name) produces the same page repeated, which is the thin-content failure this skill exists to avoidRequired
An answer on where the data came from and how it stays current: first-party, product-derived, user-generated, licensed, or publicthe skill ranks defensibility by source and a stale dataset produces a decaying page setRequired
A repeatable keyword pattern with its variables named, e.g. [service] in [city], plus how many unique combinations existwithout the pattern there is nothing to template and no way to size the opportunityRequired
context.md in brand memory stating the website and tech stackthe skill confirms the stack against its platform requirements before it designs anythingRequired
brand/[workspace]/verified-claims.md with any number, result or testimonial that will appear in page copy, marked consent: ok-as-statedunbacked specifics get genericised or marked as a proof gap, and a template claim repeats on every pageRequired
ica-output.md for search intent and audience language, and owner-profile.md for positioningwithout them the intro and CTA on each page read as generic fillerOptional
keyword-plan.md from a prior keyword-research runpatterns anchor to already-validated targets instead of estimated demandOptional

How it runs

  1. Stack checkBefore designing anything, it confirms you have a codebase or a bulk-page CMS. If you do not, it says so plainly and offers the honest fallbacks: strategy and handoff, a scoped manual batch of the 10 to 25 highest-value pages, or a stack change scoped as its own separate project.
  2. Load contextDetects whether the workspace is your agency (_default) or a client (client--*), loads the brand files subject to freshness rules, and reads past learnings.md entries tagged programmatic-seo.
  3. Initial assessmentAsks what the product is, who the audience is, what a visitor should do on these pages, what repeatable search patterns exist, how many pages that implies, who currently ranks, and whether the site's authority can realistically compete.
  4. Playbook selectionMatches what the workspace actually has to one of the 12 playbooks. Proprietary data points to Directory or Profiles, a local presence to Locations, a crowded competitor set to Comparisons. Playbooks layer, so 'best coworking spaces in San Diego' is Curation plus Locations.
  5. Pattern and data workValidates aggregate demand and head-versus-long-tail distribution for the pattern, then defines what data populates each page and how it stays current. It will not invent search-volume numbers and labels any estimate [ESTIMATED].
  6. Template designSpecifies URL structure (subfolders, never subdomains), title and meta templates, the content outline, and the uniqueness levers: conditional sections that render only when the data supports them, per-page analysis, and per-page proof drawn from the verified-claims registry.
  7. Linking and indexationPlans hub-and-spoke internal linking with cross-links between related pages and no orphans, adds breadcrumbs and page-type schema (FAQPage, Product, LocalBusiness, BreadcrumbList), and splits sitemaps by page type so indexation is measurable per playbook.
  8. Quality gate and outputRuns the pre-launch checklist on content, proof, technical, linking and indexation, including the two-tier claim check on the template AND on a sample of generated pages. Then writes the strategy document, template and dataset and logs them to assets.md.

What you get

Honest limits

Read this before you rely on it

Where people go wrong

The mistakeDo this instead
Bringing a spreadsheet that is just a list of cities or competitor names and expecting pages from itBring one row per page with several genuine fields per row: local pricing, local regulations, real feature values, actual entries. If you cannot fill the row, that page should not exist.
Chasing a page-count targetTreat any number as a rule of thumb, not a goal. A small set of pages that each earn their place beats a large set of thin ones, and the thin ones drag the good ones down.
Publishing every combination the pattern allowsPrioritise high-volume patterns for generation and internal-link weight, and noindex the very thin variations instead of publishing them.
Putting the page set on a subdomainUse subfolders. Subfolders consolidate domain authority, subdomains split it. site.com/templates/resume/, not templates.site.com/resume/.
Running this for a 15-page buildBelow roughly 30 pages, treat it as a landing-page project and chain frontend-design instead.
Assuming the strategy document means pages existConfirm who is running the generation and where. Strategy, template and data are files, not a live page set.
Worth knowing

Build the uniqueness levers into the template as conditional sections that render only when a row actually holds that data. Rows with richer data then produce visibly richer pages, instead of every page arriving at the same shape with different words in the slots. Pair that with one piece of per-page analysis or insight, and the page set stops looking templated to both readers and crawlers.