vercel-labs/programmatic-seo
Use when planning many similar pages from a template and a data set: choosing the pattern, deciding whether the data can carry it, and avoiding the thin-content failure that gets page sets deindexed.
npx skills add https://github.com/vercel-labs/marketing-team-eve-template --skill programmatic-seo
Building pages from a template and a data set works when each page answers a real query with something only your data can say. It fails the same way every time: a template with the variable swapped, published at volume, on queries nobody searches. That is the definition of a doorway page, and Google's spam policies name it.
So the question to settle before any of the mechanics is whether the data is worth a page.
Defensibility runs in this order, strongest first:
A set built on public data competes with every other set built on the same public data, so it has to win on presentation, freshness, or aggregation instead. That is possible and it is a much harder brief. Say so rather than shipping 5,000 pages that restate a public API.
Then check demand actually exists: aggregate volume across the pattern, how it splits between head and long tail, and whether the trend is going anywhere. A pattern with 10,000 combinations and no searches for 9,000 of them is a 1,000-page opportunity.
| You have | Consider |
| --- | --- |
| Proprietary data set | Directory, Profiles |
| A product with integrations | Integrations |
| A design or creative product | Templates, Examples |
| Several distinct audience segments | Personas |
| A local footprint | Locations |
| A utility or calculator | Conversions |
| Deep subject expertise | Glossary, Curation |
| A crowded competitive field | Comparisons |
references/playbooks.md covers the twelve patterns, each with its query shape, what data it needs, and how it usually fails.
Patterns layer, and layering is often where the real opportunity is: "best coworking spaces in Austin" is Curation crossed with Locations.
Check that each page has unique value and answers its query, that titles and descriptions are unique, that heading structure and schema are in place, that the set is linked from the site rather than only the sitemap, that no page has a conflicting noindex, and that nothing in the set competes with an existing page for the same query.
After launch, watch what fraction of the set gets indexed, which patterns rank, and whether engagement holds up. Thin-content warnings, a drop across the set, or an indexing rate that stalls well below 100% all mean the same thing: cut, don't add.
Programmatic SEO decides the pattern, the data, the URL shape, the template's sections, and the linking. The words inside a template section are copy: hand the content marketer the template, the target query, and the fields available per page.
Take vercel-labs/programmatic-seo from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.