plugins/seo/skills/programmatic-seo/SKILL.md
Builds and scales programmatic SEO — auto-generated landing pages from templates + structured data targeting thousands of long-tail keywords. Use when planning database-driven page generation (integration pages, comparison pages, city/location pages, template galleries, directory/aggregator pages), scaling organic traffic with repeatable patterns, or building product-led SEO experiences. Trigger phrases include "programmatic SEO", "pSEO", "auto-generate pages", "template pages at scale", "database-driven pages", "long-tail at scale". NOT for hand-written editorial content (use on-page-seo), keyword research phase (use keyword-research), fixing crawl/speed/indexing issues (use technical-seo), or optimizing for AI search engines (use ai-ready).
npx skillsauth add petrogurcak/skills programmatic-seoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When to use this skill:
When NOT to use:
on-page-seokeyword-researchtechnical-seoai-readyon-page-seo| User says... | Go to... | | -------------------------------------------------------- | ------------------------ | | "should I do programmatic SEO?", "is pSEO right for us?" | Qualification Check | | "what type of pages?", "template ideas" | Playbook Types | | "how to implement", "build pSEO pages" | Implementation Workflow | | "data sources", "where to get data" | Data Enrichment Pipeline | | "avoid penalties", "Google safe?", "thin content" | Quality Gate | | "tech stack", "what tools" | Tech Stack Options | | "examples", "case studies", "who does this well" | Case Studies |
Before building anything, answer these five questions. All must be YES.
| # | Question | Requirement | | --- | -------------------------------------------------------- | -------------------------------------------------------------- | | 1 | Do people search for your topic with variable modifiers? | e.g., "[tool A] + [tool B] integration", "[city] + [category]" | | 2 | Can you generate unique, valuable data per page? | Not just swapping city names in the same text | | 3 | Is total search volume worth the effort? | 1,000+ keyword variations with combined 10K+ monthly searches | | 4 | Can each page serve genuine user intent? | User finds what they need, not a doorway to your real product | | 5 | Do you have (or can you build) a structured dataset? | Database, API, scraped data, UGC, or proprietary data |
If any answer is NO: Stop. Use editorial SEO via on-page-seo instead.
The core test (Eli Schwartz): "The ideal Product-Led SEO strategy is programmatic and scalable, creates something new, and addresses untapped search demand." Your pSEO pages should be product experiences, not thin content wrappers.
Every pSEO project starts with this pattern:
[Head Term] + [Modifier A] + [Modifier B (optional)]
Real examples:
| Company | Head Term | Modifier A | Modifier B | Pages | | ----------- | ----------------- | ---------- | ---------- | ----- | | Wise | "convert" | currency A | currency B | 10K+ | | Zapier | "connect" | app A | app B | 50K+ | | TripAdvisor | "best" + category | city | -- | 7M+ | | NomadList | "live in" | city | -- | 2K+ | | G2 | "vs" | software A | software B | 100K+ | | Canva | template type | use case | -- | 100K+ |
Finding your pattern: List every variable dimension your product touches. Cross-multiply. If the matrix produces 500+ unique combinations with search demand, you have a pSEO opportunity.
Pattern: "[Tool A] + [Tool B] integration" Example: Zapier -- 50K+ pages, 2.6M monthly organic traffic Data needed: App names, logos, integration steps, use cases, pricing Why it works: Each page IS the product. User can set up the integration right there. Best for: SaaS with APIs, iPaaS, automation platforms
Pattern: "[Product A] vs [Product B]" or "[Product] alternatives" Example: G2 -- 6M+ monthly organic, covers every B2B software category
For content strategy, schema markup, fairness guidelines, and conversion optimization → see competitor-pages skill.
This playbook covers the programmatic scaling aspects only:
Pattern: "best [category] in [city]" or "[service] in [location]" Example: TripAdvisor -- 226M monthly organic, 7M indexed pages Data needed: Local listings, reviews, ratings, photos, maps Why it works: Hyperlocal targeting with UGC for uniqueness. Best for: Travel, local services, real estate, directories
Pattern: "[type] template" or "[use case] design" Example: Canva -- 100M+ monthly organic traffic Data needed: Template thumbnails, categories, descriptions, use-case tags Why it works: Transactional intent -- users want to USE the template immediately. Best for: Design tools, document platforms, website builders
Pattern: "[metric A] to [metric B]" or "[calculation] calculator" Example: Wise -- 60.5M monthly organic via currency conversion pages Data needed: Real-time data feeds, historical data, calculation logic Why it works: Functional tool embedded in the page. Real-time data = always fresh. Best for: Finance, analytics, conversion tools
Pattern: "[category] companies" or "[type] directory" Example: Yelp, Zillow, NerdWallet Data needed: Listings, structured attributes, reviews, ratings Why it works: Complete coverage + UGC = hard to replicate. Best for: Marketplaces, review platforms, industry directories
Pattern: "what is [term]" or "[term] definition" Data needed: Term definitions, related concepts, examples, visuals Why it works: Informational intent at scale. Builds topical authority. Best for: Technical products, education, B2B SaaS
Use keyword-research skill to:
Output: Spreadsheet with columns: keyword, search volume, KD, intent, priority
Build your dataset. Every page needs enough unique data to avoid thin content.
Data sources by type:
| Source | Examples | Cost | | ---------------- | ------------------------------------------ | ------------------------- | | APIs | Currency rates, weather, stock prices | Free-$$ | | Scraping | Product specs, pricing, reviews | Free (respect robots.txt) | | Public databases | Census, government data, open datasets | Free | | User-generated | Reviews, ratings, photos, Q&A | Requires user base | | Proprietary | Your product data, analytics, calculations | Your competitive moat | | AI-generated | Descriptions, analysis, summaries | API costs |
Enrichment pipeline (layer these for uniqueness):
Base data (required)
+ API data (real-time pricing, stats, availability)
+ AI-generated analysis (unique descriptions, comparisons)
+ Calculated metrics (scores, rankings, indices)
+ UGC (reviews, ratings, photos)
= Differentiated page
Critical threshold: Aim for 500+ unique words and 30-40% content differentiation per page. 93% of penalized pSEO sites lacked meaningful page-to-page differentiation (Deepak Gupta).
Design a single page template with variable slots. The template must:
Template anatomy:
[H1: {Head Term} {Modifier A} {Modifier B}]
[Above-fold: Key data / tool / answer -- immediate value]
[Section 1: Detailed data / comparison / features]
[Section 2: AI-enriched analysis or context]
[Section 3: Related items / internal links]
[Section 4: UGC (reviews, Q&A) if available]
[Section 5: FAQ (from People Also Ask)]
[CTA: Product action -- convert, try, compare]
[Structured data: JSON-LD]
URL structure:
domain.com/{category}/{modifier-a}-{modifier-b}
domain.com/integrations/slack-google-drive
domain.com/convert/usd-to-eur
domain.com/best/restaurants-in-prague
Rules: lowercase, hyphens, no parameters, descriptive slugs.
Technical SEO requirements (see technical-seo for full detail):
Internal linking strategy (hub-spoke):
Hub page: "All integrations" / "All cities" / "All templates"
|-- Spoke: Individual pSEO pages
|-- Cross-links between related spokes
|-- Breadcrumbs: Home > Category > Page
Never publish everything at once. Follow this sequence:
noindex.noindex from 10-20 best pages. Submit sitemap.Indexing acceleration:
Key metrics:
| Metric | Tool | Target | | ------------------------------ | --------------------- | ------------------------------------------------- | | Pages indexed | Google Search Console | > 90% of published pages | | Impressions per page | GSC | > 0 within 30 days | | Avg CTR | GSC | > 2% for long-tail | | Organic traffic (pSEO segment) | GA4 | Month-over-month growth | | Crawl budget utilization | GSC Crawl Stats | No wasted crawls on low-value pages | | Thin content flags | GSC Coverage | Zero "Discovered - not indexed" for quality pages | | Conversion rate | GA4 | pSEO pages converting at > 50% of editorial pages |
Monthly optimization cycle:
Google's Helpful Content system penalizes sites with high percentages of search-engine-first content. Recovery takes 6-12 months. Follow these rules.
Must pass ALL before publishing:
| Red Flag | Why It's Dangerous | Fix | | ------------------------------------------------- | ---------------------------------------- | ----------------------------------------- | | Swapping only city/product name in identical text | Duplicate content at scale | Unique data + AI enrichment per page | | Thousands of pages with < 200 words | Thin content signal | Minimum 500 unique words, add data layers | | No functional purpose beyond ranking | Doorway page pattern | Embed product functionality in the page | | Massive page count with low avg quality | Helpful Content system flags entire site | Quality > quantity. Prune ruthlessly. | | Publishing 10K+ pages overnight | Unnatural growth pattern | Batch publishing over weeks/months | | Auto-generated text without human review | Spam signal | QA sample of every template variation | | Orphan pages with no internal linking | Crawl waste, low authority | Hub-spoke architecture |
Before scaling, ask: "If I randomly pick 10 pages from my pSEO set, would a human user find each one genuinely useful?" If the answer is not a confident yes, improve the template before publishing more.
| Component | Tool | Purpose | | --------- | --------- | --------------------------------------- | | CMS | Webflow | Template design + hosting | | Database | Airtable | Content data management | | Sync | Whalesync | Bi-directional Airtable <> Webflow sync |
Best for: Non-technical founders, < 10K pages, rapid prototyping. Limitation: Webflow CMS limit is 10K items. Beyond that, need custom solution.
| Component | Tool | Purpose | | --------- | ------------------------------------------------ | ------------------------------ | | CMS | WordPress | Page generation + hosting | | Generator | MPG (Multi Page Generator) or Page Generator Pro | Template-based page generation | | Import | WP All Import | Bulk CSV/API data import |
Best for: Existing WordPress sites, SEO-heavy operations, 1K-100K pages. Limitation: Performance degrades at very large scale without caching.
| Component | Tool | Purpose | | --------- | ----------------------------- | ----------------------------------------- | | Framework | Next.js (SSG/ISR) | Static generation with incremental builds | | CMS/API | Strapi, PayloadCMS, or Sanity | Content API + admin | | Database | PostgreSQL / Supabase | Structured data storage | | Deploy | Vercel or Netlify | Edge CDN, fast builds |
Best for: Technical founders, 10K+ pages, custom data pipelines, maximum control. Key advantage: ISR (Incremental Static Regeneration) lets you rebuild individual pages without regenerating the entire site.
| Tool | Use For | Cost | | ---------- | ---------------------------------------- | ------- | | Byword.ai | Bulk AI content generation, 9 languages | $5+/mo | | SEOmatic | Full pSEO platform with CMS integrations | $49+/mo | | SurferSEO | Content optimization scoring | $89+/mo | | Clearscope | Content quality scoring | Premium |
Warning: AI tools generate content, not pages. You still need the template, data pipeline, and technical infrastructure. AI enriches -- it does not replace your unique data.
Template-only thinking. Changing the city name in identical text is not pSEO -- it is spam. Every page needs unique data, not just unique keywords.
Launching too big too fast. Publishing 10K pages on day one triggers quality filters. Batch in groups of 50-100 over weeks.
No functional value. If the page is just text about a topic (not a tool, calculator, or interactive experience), editorial content via on-page-seo will outperform pSEO.
Ignoring crawl budget. 100K low-quality pages consume crawl budget that prevents your important pages from indexing. Prune aggressively.
Skipping the data layer. Going straight from template to AI-generated filler text. AI enriches structured data; it does not replace it.
No internal linking architecture. Orphan pSEO pages without hub-spoke structure get neither crawled nor ranked.
One-and-done mentality. pSEO pages need data freshness updates, pruning of underperformers, and template iteration. It is an ongoing system, not a launch.
Chasing page count over page quality. 1,000 excellent pages outperform 100,000 thin pages. Google penalizes the entire site, not just the bad pages.
No conversion path. Getting organic traffic to a page that has no CTA or product action. Every pSEO page needs a clear next step.
Ignoring AI search evolution. pSEO pages that rank well in Google may not surface in AI search (ChatGPT, Perplexity). Structure content for AI extraction too -- see ai-ready.
Build SEO into the product itself. The pSEO page should not just describe your product -- it should BE a product experience. Wise's currency converter, Canva's template browser, Zapier's integration configurator. If you can make the search result page functional, you win.
Central hub page covers the broad topic ("All integrations"). Spokes are individual pSEO pages ("Slack + Google Drive integration"). All spokes link to hub. Related spokes cross-link. This builds topical authority signals that help every page in the cluster rank better.
Publish in waves. Start with noindex. QA manually. Open 10-20 pages. Monitor for 2-4 weeks. Fix issues. Scale. Prune underperformers at 3 months. This protects against quality penalties and lets you iterate the template before committing at scale.
Layer multiple data sources to create genuinely unique pages:
Layer 1: Base structured data (names, categories, attributes)
Layer 2: API data (real-time metrics, pricing, availability)
Layer 3: Calculated/derived metrics (scores, rankings, comparisons)
Layer 4: AI-generated analysis (unique descriptions, insights)
Layer 5: UGC (reviews, ratings, Q&A, photos)
Each layer adds differentiation. Aim for 3+ layers minimum.
Before generating pages, map every topic and subtopic in your domain. This prevents cannibalization (multiple pages competing for the same query), ensures complete coverage, and signals topical expertise to Google. Combined with link building and algorithm monitoring, this forms Diggity's "winning trifecta."
keyword-research -- find your head term + modifier patternson-page-seo -- for editorial content and on-page optimizationtechnical-seo -- crawling, indexing, Core Web Vitals, site architectureai-ready -- structure pSEO content for ChatGPT, Perplexity, AI Overviewscompetitor-pages -- content structure, schema, fairness guidelines, conversiondevelopment
Builds a pre-launch social proof strategy through structured beta programs using D'Souza Brain Audit interviews. Use when launching new products/services and need compelling testimonials, planning a beta cohort, designing interview questions to harvest objection-busting social proof, improving video testimonials for landing pages, or designing case studies with metrics. Trigger phrases include "beta tester program for testimonials", "pre-launch social proof", "Brain Audit testimonial framework", "case study harvest", "reverse testimonial", "video testimonial mechanics", "social proof landing page", "sběr referencí", "beta tester program", "testimonial pro landing page", "social proof před launchem", "rozhovor s klientem", "case study sběr", "reference před spuštěním". NOT for ongoing case study production (use growth-hacking case-study approach), offer design (use offer-creation), or conversion optimization (use ux-optimization).
development
Use when planning a product launch and the product type is unclear or could be either generic (SaaS/app/physical) or info-product. Routes between marketing:launch-strategy (generic launches) and marketing:info-product-launch (courses, memberships, ebooks, cohorts, communities). Trigger phrases - "launch", "spuštění", "go-to-market", "product launch", "release strategy", "uvedení na trh", "launch plan", "spuštění produktu", "launch sequence", "launch strategy". Do NOT trigger when product type is already clear (use specific skill directly).
testing
Specialized 8-week launch cadence for info-products — online courses, cohort programs, memberships, communities, ebooks, masterminds. Combines Jeff Walker's Product Launch Formula (Seed/Internal/JV variants, PLC sequence, open-cart day-by-day) with Stu McLaren's membership mechanics (closed cart, Success Path) and Hormozi Grand Slam Offer stacking. Use when planning "launch online kurzu", "info-product launch", "PLF launch", "course launch", "membership launch", "cohort launch", "ebook launch", "open cart close cart", "8-week launch of online course", "beta cohort to launch sequence", "spuštění kurzu", "launch členské sekce", "open cart strategie". Differentiates from marketing:launch-strategy (generic SaaS/app launches) — info-product-specific. NOT for SaaS launches, physical products, or services.
development
Use when releasing an Expo/React Native mobile app to App Store and Google Play - covers eas submit, ASC "Submit for Review", Play promote Internal→Production, OTA update, and decoding common silent failures (Apple agreement expiry, missing English locale, Background Location declaration, web bundle failure on react-native-maps).