programmatic-seo
Skill0 starsChanged 2 months agoMITView on GitHub
Design and build templated page systems that scale to hundreds or thousands of URLs without triggering scaled content abuse. Use whenever the user mentions programmatic SEO, pSEO, page generation at scale, templated landing pages, location pages, "X for Y" pages, integration pages, comparison page generation, directory sites, or wants to generate many pages from a dataset. Also use when a site already has thousands of generated pages that aren't indexed or aren't ranking.
109 other projects use a version of this.
Adopted by
Most recently taken up by
- oivanfelipe/claude-skillstheir own version, first seen Nov 8, 2026
- darkweb19/skillstheir own version, first seen Nov 8, 2026
- bradydwardai/claude-skillstheir own version, first seen Nov 8, 2026
- yht-4403/jc-agent-skillstheir own version, first seen Nov 8, 2026
- insight68/Skillstheir own version, first seen Nov 8, 2026
- ftzi/livespectheir own version, first seen Nov 8, 2026
Used with
Projects with it also use popups, paywalls and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
CesarjoquinSkillpopups
When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes. Also use when the user mentions "exit intent," "popup conversions," "modal optimization," "lead capture popup," "email popup," "announcement banner," "overlay," "collect emails with a popup," "exit popup," "scroll trigger," "sticky bar," or "notification bar." Use this for any overlay or interrupt-style conversion element. For forms outside of popups, see cro. For general page conversion optimization, see cro.
Also in 16 projects that use this
CesarjoquinSkillpaywalls
When the user wants to create or optimize in-app paywalls, upgrade screens, upsell modals, or feature gates. Also use when the user mentions "paywall," "upgrade screen," "upgrade modal," "upsell," "feature gate," "convert free to paid," "freemium conversion," "trial expiration screen," "limit reached screen," "plan upgrade prompt," "in-app pricing," "free users won't upgrade," "trial to paid conversion," or "how do I get users to pay." Use this for any in-product moment where you're asking users to upgrade. Distinct from public pricing pages (see cro) — this focuses on in-product upgrade moments where the user has already experienced value. For pricing decisions, see pricing.
Also in 16 projects that use this
silvainfmSkillpopup-cro
When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes. Also use when the user mentions "exit intent," "popup conversions," "modal optimization," "lead capture popup," "email popup," "announcement banner," or "overlay." For forms outside of popups, see form-cro. For general page conversion optimization, see page-cro.
Also in 26 projects that use this
ukunal91appSkillrevops
When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. Also use when the user mentions 'RevOps,' 'revenue operations,' 'lead scoring,' 'lead routing,' 'MQL,' 'SQL,' 'pipeline stages,' 'deal desk,' 'CRM automation,' 'marketing-to-sales handoff,' 'data hygiene,' 'leads aren't getting to sales,' 'pipeline management,' 'lead qualification,' or 'when should marketing hand off to sales.' Use this for anything involving the systems and processes that connect marketing to revenue. For cold outreach emails, see cold-email. For email drip campaigns, see email-sequence. For pricing decisions, see pricing-strategy.
Also in 33 projects that use this
ukunal91appSkillcommunity-marketing
Build and leverage online communities to drive product growth and brand loyalty. Use when the user wants to create a community strategy, grow a Discord or Slack community, manage a forum or subreddit, build brand advocates, increase word-of-mouth, drive community-led growth, engage users post-signup, or turn customers into evangelists. Trigger phrases: "build a community," "community strategy," "Discord community," "Slack community," "community-led growth," "brand advocates," "user community," "forum strategy," "community engagement," "grow our community," "ambassador program," "community flywheel.
Also in 22 projects that use this
silvainfmSkillsignup-flow-cro
When the user wants to optimize signup, registration, account creation, or trial activation flows. Also use when the user mentions "signup conversions," "registration friction," "signup form optimization," "free trial signup," "reduce signup dropoff," or "account creation flow." For post-signup onboarding, see onboarding-cro. For lead capture forms (not account creation), see form-cro.
Also in 26 projects that use this
- +6 more from Cesarjoquin
Other versions109 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 109
- coreyhaines31/marketingskills★ 59ksame name
- TheCraigHewitt/seomachine★ 7.5ksame name
- nowork-studio/toprank★ 4.1ksame name
- nowork-studio/notfair-plugin★ 4.1ksame name
- yoopta-editor/Yoopta-Editor★ 3.1ksame name
- VladSez/easy-invoice-pdf★ 1.1ksame name
- KartikLabhshetwar/screenshot-studio★ 1.1ksame name
- KartikLabhshetwar/stage★ 1.1ksame name
- kostja94/marketing-skills★ 1.1ksame name
- LeoYeAI/openclaw-marketing-skills★ 1ksame name
99 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository29 other files it gives its agents.
- ai-bot-log-analysisSkill
- ai-crawler-policySkill
- ai-visibility-auditSkill
- best-of-listicle-pagesSkill
- canonical-duplicate-contentSkill
- comparison-alternatives-pagesSkill
- content-refreshSkill
- core-web-vitalsSkill
- ecommerce-seoSkill
- eeat-author-pagesSkill
- entity-brand-consistencySkill
- featured-snippet-passagesSkill
- glossary-definition-hubSkill
- hreflang-international-seoSkill
- image-seoSkill
- internal-linking-architectureSkill
- keyword-cannibalizationSkill
- keyword-research-briefsSkill
- link-building-outreachSkill
- local-seoSkill
- nextjs-seoSkill
- redirect-migration-planSkill
- schema-markupSkill
- search-console-analysisSkill
- shopify-seoSkill
- technical-seo-auditSkill
- topical-authority-mapSkill
- video-seoSkill
- wordpress-seoSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 106 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Before designing anything, answer these four.
- Distinctive: line 54
Cut by demand: Keep combinations with real search volume or a real business reason.
- Distinctive: line 55
Cut by data completeness: If a combination has fewer than N data points, don't generate a page.
- Distinctive: line 56
Cut nonsense combinations: Every axis product contains absurdities.
- Distinctive: line 93
Watch indexation rate: If Google indexes 300 of 2,000 pages and stops, that's a verdict on quality.
“Common” is measured: kept by at least 6 in 10 of the 106 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Programmatic SEO
Programmatic SEO works when you have a dataset that's genuinely useful and a query pattern that genuinely repeats. It fails when you have a template and a list of words.
The distinction isn't stylistic. Google's scaled content abuse policy targets pages produced at scale that don't add value, regardless of how they were produced. The dataset is what makes the difference.
The qualifying test
Before designing anything, answer these four. If any answer is no, don't build it.
- Is there a repeating query pattern with real demand? Not "there could be". Check that people search
[thing] in [place]or[tool] vs [tool]or[job] salary in [city]at meaningful volume across many of the combinations, not just the top three. - Do you have unique data for each page? Real, differing values. Not the same paragraph with a variable substituted.
- Would a human find each page useful on its own? Open the worst combination in your set. If that page is embarrassing, the system generates embarrassing pages.
- Can you maintain it? Stale programmatic pages rot faster than editorial ones because there are more of them and nobody reads them.
The honest version of this conversation is often: you have 12 combinations with real demand and a long tail of 4,000 with none. Build 12 good pages.
What "unique data per page" means
| Works | Doesn't work |
| Real numbers that differ per page: prices, salaries, counts, distances, availability | The same sentence with the city name swapped |
| Actual inventory or listings for that combination | "We serve [City] and the surrounding area" |
| Aggregated user data you own: reviews, usage, benchmarks | Spun paragraphs from a thesaurus |
| Genuinely different specs, requirements or regulations | An LLM asked to write 400 unique words about nothing |
| Content that changes when the underlying data changes | Content generated once and frozen |
The reliable pattern: the page exists to display data, and prose is the frame around it. Not the reverse. A page showing 40 real listings with 100 words of context is a good programmatic page. A page with 800 generated words and no data is not.
Step 1: Model the pattern
Pick exactly one pattern per system. Mixing them produces an unmaintainable template.
[service] in [city] needs: local data per city
[tool A] vs [tool B] needs: real feature and pricing data for both
best [category] for [use case] needs: genuine evaluation per combination
[integration] + [integration] needs: the integration to actually exist
[job title] salary in [location] needs: a salary dataset
how to [task] in [software] needs: the task to be real in that softwareThen define the axes and be ruthless about size. Two axes of 50 values each is 2,500 pages, and almost certainly 2,400 of them have no demand and no data.
Step 2: Filter the combinations before generating
This step is what separates a working system from a penalty.
- Cut by demand. Keep combinations with real search volume or a real business reason. Drop the rest entirely rather than generating thin pages for them.
- Cut by data completeness. If a combination has fewer than N data points, don't generate a page. Set N high enough that the thinnest page is still worth reading.
- Cut nonsense combinations. Every axis product contains absurdities. "Snow tyre fitting in Valletta" and "vegan butcher in a town of 200" need to not exist.
- Start with the top 50. Ship those, get them indexed, confirm they rank, then expand. Publishing 5,000 pages on day one and finding out they're all thin is a six-month cleanup.
Step 3: Design the template
Each page needs a reason to exist that a reader can see in the first screen.
H1 The specific combination, in natural language
Direct answer The data point someone came for, immediately.
A number, a table, a count, a yes/no.
The data The actual dataset for this combination, rendered.
This is the page. Everything else supports it.
Context What the data means, varying with the values.
Conditional logic, not one paragraph with slots.
Related Links to sibling and parent pages. This is how they get crawled.
Parent link Up to the hub page for the pattern.Techniques that make templated pages read as real:
- Conditional prose. Different sentences trigger at different data thresholds. "Prices here run about 30% above the national average" only appears when they do.
- Vary the structure, not just the values. Pages with more data get more sections.
- Include the comparisons a reader would want, computed from the data rather than written.
- Let some pages say "not much here". A page that honestly reports thin data is more trustworthy than one that pads. Better still, don't generate it.
- Add one genuinely editorial element per page where you can: a real photo, a local note, a hand-written line. Expensive, and it's often the difference.
Step 4: The technical layer
Programmatic systems fail technically in predictable ways.
- URLs: readable, stable, lowercase, hyphenated, one canonical form.
/salaries/software-engineer/berlinnot/s?j=142&l=88. - Internal linking is the whole indexing strategy. Generated pages are orphans by default. Build hub pages per axis, link siblings to each other, and link from real editorial content into the best of them. A sitemap alone will not get 2,000 pages indexed. See
internal-linking-architecture. - Server-render. These pages exist to be crawled. Client-side rendering of the data defeats the purpose, especially for AI retrieval agents that don't execute JavaScript.
- Split sitemaps by pattern so Search Console's coverage report tells you which segment is failing.
- Unique title and meta description per page, generated from the data, not from a single template string with one variable.
- Handle empty states with a 404 or a redirect, never a 200 with "no results".
- Watch indexation rate. If Google indexes 300 of 2,000 pages and stops, that's a verdict on quality. Cut the weakest 1,700 rather than pushing harder.
Step 5: Diagnose an existing system that isn't working
| Symptom | Cause | Fix |
| Indexed, no impressions | No demand for those combinations | Prune to the ones with demand |
| Not indexed at all | Thin, orphaned, or judged low quality | Internal links first, then cut the weakest half |
| Indexed then dropped | Quality re-assessment | Cut aggressively, add real data |
| A few rank, most don't | The pattern works, the tail doesn't | Delete the tail. It's dragging the site |
| Traffic fell after a core update | Scaled content assessment | Prune hard and improve the survivors |
Pruning is almost always the answer, and it's almost always resisted. A site with 200 good generated pages outperforms the same site with 200 good ones plus 3,000 thin ones, because the thin ones are evidence about the site as a whole.
Don't do these
- Don't generate prose with an LLM to fill a template. This is the exact pattern the policy names. Generate pages from data; use language models to help build the system, not to manufacture the substance.
- Don't spin text. It's transparent and it's been transparent for fifteen years.
- Don't build a page per keyword variation. "Cheap X", "affordable X" and "low cost X" are one page.
- Don't launch the full matrix. Ship 50, measure, expand.
- Don't skip the maintenance plan. Decide now how the data refreshes and what happens when a combination goes empty.
- Don't do this at all if the dataset is imaginary. It's the most common reason these projects fail, and it fails before a line of code is written.
Where the data comes from
The whole approach depends on knowing which combinations have demand, and that's the input people skip because checking a few thousand combinations by hand isn't practical. Getting it wrong means building the wrong 2,000 pages.
Search Console will show demand for combinations you already have impressions for. For the ones you don't, Keupera covers bulk keyword research, volume and difficulty across large sets plus gap analysis, and can schedule and publish the resulting pages through the content calendar and CMS connections. Over MCP:
claude mcp add --transport http keupera https://mcp.keupera.com/mcp -s userIf you're running any automated pipeline at this scale, keep approval mode on for anything commercial, and apply the qualifying test to the queue rather than to individual pages. Volume without an editorial bar is how sites end up pruning half their pages a year later.
Related skills
internal-linking-architecture, local-seo, ecommerce-seo, comparison-alternatives-pages, topical-authority-map, technical-seo-audit
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

