SEO Competitor Comparison Pages
AgriciDaniel/claude-seo
Generates X vs Y comparison pages, alternatives-to-X pages, best-tools roundups and feature-matrix tables, with schema markup and verifiable data rules.
When the user wants to create SEO pages at scale using templates and data—including AI-assisted, grounded copy for per-URL differentiation (vs rigid mail-merge templates).
$ npx skills add kostja94/marketing-skills --skill programmatic-seo -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kostja94/marketing-skills programmatic-seo --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/kostja94/marketing-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo/programmatic-seo .claude/skills/programmatic-seo && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "programmatic-seo" agent skill from https://github.com/kostja94/marketing-skills/tree/main/skills/seo/programmatic-seo into .claude/skills/programmatic-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "programmatic-seo", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kostja94/marketing-skills/tree/main/skills/seo/programmatic-seoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kostja94/marketing-skills --skill programmatic-seo -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kostja94/marketing-skills programmatic-seo --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kostja94/marketing-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/seo/programmatic-seo .agents/skills/programmatic-seo && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "programmatic-seo" agent skill from https://github.com/kostja94/marketing-skills/tree/main/skills/seo/programmatic-seo into .agents/skills/programmatic-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "programmatic-seo", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kostja94/marketing-skills --skill programmatic-seo -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kostja94/marketing-skills programmatic-seo --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kostja94/marketing-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/seo/programmatic-seo .cursor/skills/programmatic-seo && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "programmatic-seo" agent skill from https://github.com/kostja94/marketing-skills/tree/main/skills/seo/programmatic-seo into .cursor/skills/programmatic-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "programmatic-seo", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kostja94/marketing-skills.git --path skills/seo/programmatic-seo--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kostja94/marketing-skills --skill programmatic-seo -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kostja94/marketing-skills programmatic-seo --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kostja94/marketing-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/seo/programmatic-seo .gemini/skills/programmatic-seo && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "programmatic-seo" agent skill from https://github.com/kostja94/marketing-skills/tree/main/skills/seo/programmatic-seo into .gemini/skills/programmatic-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "programmatic-seo", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kostja94/marketing-skills programmatic-seoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kostja94/marketing-skills --skill programmatic-seo -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kostja94/marketing-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/seo/programmatic-seo .github/skills/programmatic-seo && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "programmatic-seo" agent skill from https://github.com/kostja94/marketing-skills/tree/main/skills/seo/programmatic-seo into .github/skills/programmatic-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "programmatic-seo", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kostja94/marketing-skills --skill programmatic-seo -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kostja94/marketing-skills programmatic-seo --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kostja94/marketing-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/seo/programmatic-seo .opencode/skills/programmatic-seo && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "programmatic-seo" agent skill from https://github.com/kostja94/marketing-skills/tree/main/skills/seo/programmatic-seo into .opencode/skills/programmatic-seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "programmatic-seo", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
programmatic-seoWhen the user wants to create SEO pages at scale using templates and data—including AI-assisted, grounded copy for per-URL differentiation (vs rigid mail-merge templates).
Programmatic SEO is an agent skill from kostja94/marketing-skills. When the user wants to create SEO pages at scale using templates and data—including AI-assisted, grounded copy for per-URL differentiation (vs rigid mail-merge templates). Also use when the user mentions "programmatic SEO," "programmatic SEO pages," "template pages," "scale content," "location pages," "city pages," "comparison pages at scale," "X vs Y pages," "integration pages," "pages from data," "automated landing pages," or "programmatic landing pages." Uses a playbook matrix aligned to skills under…
Its SKILL.md is about 6.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Marketing & SEO, covering Programmatic SEO. The repository describes itself as: Agent Skills for Marketing — SEO, Social, Influencer & More. 160+ open-source skills for SEO, content, 40+ page types, paid ads, channels, and strategies. Add project context… The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8dd89c5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Programmatic SEO loads about 6.6k tokens when it runs. Until then it costs about 159 tokens; SKILL.md has 2,856 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from kostja94/marketing-skills at commit 8dd89c5, republished under its MIT licence (© kostja94). 2,856 words, ~6,584 tokens.
.claude/skills/programmatic-seo/SKILL.md (or your agent's skills folder).Guides programmatic SEO—creating large numbers of SEO-optimized pages automatically using templates and structured data, rather than writing each page manually. Classic “mail merge” pSEO (one rigid template + swapped variables) often produced low differentiation and thin-feeling URLs. With AI used responsibly on top of the same data spine, you can scale per-URL customization—intent-aligned copy, section depth, FAQs, tone, localization—while still following evidence blocks, data tiers, and QA (see Data strength hierarchy and AI-assisted generation below).
When invoking: On first use, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.
Project context: Read root contextus.md when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.
Programmatic SEO = Building a single template and populating it with data from a database, API, or spreadsheet to generate hundreds or thousands of unique pages. Each page targets a long-tail keyword (e.g., "best SEO tool in [city]," "[App A] + [App B] integration").
Key differences from traditional SEO: Technical (SEOs + engineers); long-tail focus; data-driven (data quality = success); automation; built for scale.
| Era | What breaks | What helps |
|---|---|---|
| Rigid pSEO | One template, minimal variance → similar titles/bodies, weak E-E-A-T, “obvious mail merge” | Still needs unique evidence per URL and selective indexation |
| AI-enhanced pSEO | Same structured rows (facts, SKUs, metrics) drive the page, but models add per-URL narrative: intros, FAQ depth, persona angles, localization, internal-link suggestions—higher differentiation at scale | Facts stay in your data layer; AI shapes phrasing and structure, not invented numbers—see AI-assisted generation |
Best-practice stance: AI is an accelerator and customizer, not a substitute for data defensibility (Tiers 1–5) or technical SEO (URLs, schema, CWV). Used well, it aligns with quality over quantity: fewer thin URLs, more distinct useful pages.
| Component | Role |
|---|---|
| Templates | Reusable page structures: layout, headings, internal links, content blocks; conditional logic for empty fields |
| Data | Structured information: locations, products, prices, features—must be accurate, complete, and add genuine value |
| Automation | Systems connecting data to templates; pages generated dynamically or published in bulk |
| AI layer (optional) | On grounded inputs (row JSON + rules), generates varied copy, FAQ expansions, and section emphasis per URL—reduces “same template” fatigue while staying auditable |
skills/pages)Page types in this library live under pages/{brand|content|legal|marketing|utility}/. Use the matrix below to map search pattern → playbook → which *-page-generator skill to open for structure, copy, and schema—not every folder is a good fit for mass-generated URLs.
| Playbook | Example intent / keyword pattern | Page skill (name) | Path (reference) |
|---|---|---|---|
| Alternatives / comparisons | "[Competitor] alternatives", "X vs Y" | alternatives-page-generator | pages/marketing/alternatives |
| Integrations | "[Product A] [Product B] integration" | integrations-page-generator | pages/marketing/integrations |
| Category / catalog | Faceted listings, product grids | category-page-generator, products-page-generator | pages/marketing/category-pages, products |
| Glossary / definitions | "what is [term]", term landings | glossary-page-generator | pages/content/glossary |
| FAQ / Q&A | Question banks, PAA-style pages | faq-page-generator | pages/content/faq |
| How-to / procedures | Step libraries, "[how to] [task]" blocks in templates | howto-section-generator | components/content/howto-section |
| Comparison matrix (blocks) | Feature/criteria grids, "vs" cells from data feed | comparison-table-generator | components/content/comparison-table |
| Tools & lead magnets | "free [x] tool/calculator" | tools-page-generator | pages/content/tools |
| Template gallery | Browse → detail (your templates) | template-page-generator | pages/content/template-page |
| Resource hub | Guides, hubs, download centers | resources-page-generator | pages/content/resources |
| Use cases / solutions | "for [role]", "by industry" | use-cases-page-generator, solutions-page-generator | pages/marketing/use-cases, solutions |
| Migration / switching | "migrate from [X]" | migration-page-generator | pages/marketing/migration |
| Campaign landing | Paid/segment LPs | landing-page-generator | pages/marketing/landing-page |
| Blog / article | Long-tail articles at scale | blog-page-generator, article-page-generator | pages/content/blog, article |
| Docs / features / API | Scalable doc sections, feature landings, /api marketing | docs-page-generator, features-page-generator, api-page-generator | pages/content/docs, features, api |
| Social proof | Logos, case studies, galleries | press-coverage-page-generator, customer-stories-page-generator, showcase-page-generator | pages/marketing/press-coverage, customer-stories, showcase |
| Programs & offers | Startups/education, contests, downloads, affiliate, media kit | startups-page-generator, contest-page-generator, download-page-generator, affiliate-page-generator, media-kit-page-generator | pages/marketing/* |
| Pricing / services | Plans, offerings (use sparingly for pSEO) | pricing-page-generator, services-page-generator | pages/marketing/pricing, services |
Usually not mass programmatic (single primary URL or compliance-heavy): pages/brand/* (home, about, contact), pages/legal/*, most pages/utility/* (404, status, signup-login, etc.)—treat as one-off or policy-driven, not template×data scale.
| If you have… | Lean toward… | Open first… |
|---|---|---|
| Competitor list + positioning | Alternatives / comparisons | alternatives-page-generator |
| Integration directory (your + partners') | Integrations matrix | integrations-page-generator |
| Product catalog or SKUs | Category / product grids | category-page-generator, products-page-generator |
| Term / definition database | Glossary | glossary-page-generator |
| Support tickets / PAA mined questions | FAQ scale | faq-page-generator |
| How-to step banks / procedure templates | HowTo sections in scaled pages | howto-section-generator |
| Competitor/feature matrix from data | Comparison table blocks in scaled pages | comparison-table-generator (+ alternatives-page-generator for URL intent) |
| Lead magnets, calculators | Tools hub + per-tool | tools-page-generator |
| Your own templates (exports, gallery items) | Template marketplace | template-page-generator |
| ICP × industry matrix | Use cases / solutions | use-cases-page-generator, solutions-page-generator |
| Import paths from competitors | Migration | migration-page-generator |
| Campaign or geo LPs | Landing pages | landing-page-generator |
| Long-form SEO articles | Blog index + single post | blog-page-generator, article-page-generator |
| Section | Purpose |
|---|---|
| Intro | Introduction; matches user intent |
| Evidence block | Data-driven content unique to each page (tables, lists, verified stats); differentiates from thin content |
| Decision | Comparison, recommendation, or next steps |
| FAQ | Frequently asked questions |
| CTA | Call-to-action |
Evidence block = Real, structured data per page (business listings, pricing, reviews, verified stats). Ensures each page delivers genuine value, not recycled boilerplate with swapped variables.
Strongest programmatic pages are fueled by what only your product (or your customers inside your product) can produce—especially templates, exports, and generated artifacts. Third-party or scraped lists alone are the weakest foundation.
| Tier | Source | Examples | Relative risk |
|---|---|---|---|
| 1 — Product-generated | Assets created or rendered by your product: page/layout templates, email/Notion/code templates, export packs, generated previews, branded snippets, “built with [Product]” examples | Template gallery rows tied to real .json / CMS fields; screenshots of exports; unique preview URLs | Lowest when each URL shows distinct generated output |
| 2 — Product-derived | Telemetry and in-product data you own: aggregates, cohorts, benchmarks, feature adoption | “Teams in [industry] median time-to-value” from your warehouse (aggregated) | Low if aggregated / anonymized and policy-compliant |
| 3 — UGC / customer | Reviews, submissions, showcase items, moderated community content | Showcase grid; verified quotes | Medium—needs moderation + consent |
| 4 — Licensed / partner | Exclusive feeds, co-marketing datasets | Partner pricing tiers; licensed industry stats | Medium—contract and citation discipline |
| 5 — Public / scraped | Open web, directories, generic enrichment | Name/address fills; commodity facts | Highest—needs editorial layer, fact-checking, and a real Evidence block |
Why Tier 1 (templates & generated content) wins: Pages built from your template system carry proprietary structure, variables, and brand-safe blocks—harder for competitors to copy verbatim and easier to prove uniqueness (embeds, downloads, IDs). Pair with template-page-generator when the UX is “browse gallery → use template.”
| What it is | What to watch |
|---|---|
| Metrics from your backend, data warehouse, or support/CRM exports: activation rates by segment, integration popularity, error budgets, time-to-value—not generic “industry reports.” | Privacy & ToS: Minimum cell sizes; no individual identification; document what was aggregated and over what window. |
| Good fit when you can show “only we could know this because it runs in our product.” | Stale data hurts trust: pipeline jobs, “as of [date]” labels, automated invalidation. |
AI here: Use models to turn structured aggregates into prose (intro paragraphs, “what this means for [segment]”)—input must be verified numbers/tables from your pipeline, not free-form invention. Keep a machine-readable table or JSON on-page or in appendix so claims stay auditable.
| What it is | What to watch |
|---|---|
| Quotes, reviews, showcase submissions, community templates—per-user artifacts with consent. | Moderation: spam, PII, competitor attacks; consent for name/logo use; schema (Review, CreativeWork) only when accurate. |
| Strong when combined with Tier 1 (e.g. “customer-built template” gallery). | Volume without quality → thin pages; cap or score submissions. |
AI here: Summarize long reviews into bullets; generate draft alt text for images; cluster submissions into topic pages—always human approve before publish. Do not fabricate testimonials.
| What it is | What to watch |
|---|---|
| Partner price lists, co-marketed reports, API-fed allowed fields (logos, SKUs). | Contract scope: Which fields can appear on which URLs; attribution line; DMCA / trademark on logos. |
| Often one feed → many URLs; uniqueness must come from your framing, comparison logic, or calculator—not the raw feed alone. | Refresh cadence tied to partner SLAs. |
AI here: Draft comparison copy and FAQs from a fixed attribute table (license + partner rules); never invent SKUs or prices—pull from feed, let AI phrase and shorten.
| What it is | What to watch |
|---|---|
| Open data, directories, Wikipedia-style facts, enrichment of public entities. | Highest duplicate/thin risk: everyone has the same facts; you must add synthesis, editorial angle, or a unique tool (calculator, filter) on top. |
| Entity SEO and citations matter: link to authoritative sources; date-stamp volatile facts. | Plan for pruning or noindex on low-traffic thin URLs. |
AI here: Use models to structure messy public text into tables, outline sections, suggest internal links—then fact-check names, numbers, and dates. Do not use AI to invent statistics or citations; treat output as draft until verified.
Why AI fits modern pSEO: Early programmatic SEO earned a bad reputation because templates were frozen and copy was interchangeable—little real differentiation per query. LLMs, when grounded on each row’s facts and your brand rules, make it practical to customize headlines, intros, FAQs, and “why this page matters” per URL without hand-writing thousands of pages. That moves execution closer to best practices (intent match, helpful content, unique value) at scale, provided you do not let the model invent data.
| Principle | Why |
|---|---|
| Ground AI in structured inputs | Pass JSON/CSV rows (tier, source URL, metrics) into prompts; forbid hallucinated numbers in system prompts. |
| Separate “facts” from “phrasing” | Data layer = source of truth; AI = tone, shortening, localization, FAQs, per-segment emphasis—never the other way around. |
| Vary structure, not only adjectives | Ask for different section order, FAQ count, or “beginner vs power user” angles by intent flags in the row—reduces template sameness. |
| Human or automated QA | Spot-check high-traffic URLs; block publish if required fields empty or citation missing. |
| Disclose when useful | e.g. “Intro generated with AI; figures from [internal report, Q3 2025].” Builds trust and matches policy trends. |
When AI generation is a strong lever: Tiers 2–5—where raw material is already tabular or repetitive but needs readable, differentiated copy at scale. Tier 1 still benefits from AI (drafts from export JSON), but the differentiator remains the product artifact itself.
| Requirement | Practice |
|---|---|
| Provenance | Log data sources; track origin per field |
| Freshness rules | e.g., ratings every 90 days, prices every 30 days, template version bumps when layouts change |
| Prefer 1–2 over 5 | Fill evidence with product-generated or product-derived data before reaching for public scraping |
| AI governance | Structured inputs only; no unverified numbers; moderation on UGC; optional disclosure |
| Clean & merge | Deduplicate keys; drop rows that produce duplicate intents |
For which page-generator skill to use, see Page Playbook Matrix above. Generic patterns:
| Use case | Example |
|---|---|
| Location-specific pages | "Plumber in [city]," "Best restaurants in [neighborhood]" with real local data |
| Product comparison | "[Product A] vs [Product B]" with structured specs |
| Alternatives pages | "[Competitor] alternatives" at scale; 50+ competitors; see alternatives-page-generator |
| Software integration | "[App A] + [App B]" integration pages (e.g., Zapier 50K+ pages) |
| Free tools | "[X] checker," "[Y] calculator," "[Z] generator" — standalone tool pages; toolkit hub; same ICP as main product; lead gen |
| Travel / destination | City + attraction combinations with reviews, photos |
| E-commerce | Category pages, product variations (size, color, material) |
| FAQ / Q&A | Pages powered by user question databases |
| Salary / pricing | Comparison pages with structured data |
Avoid when: Site structure is weak; page differences are superficial (city/name swaps only); content requires original expertise or UGC participation.
Examples are illustrative; no endorsement implied.
| Company | Scale | Pattern |
|---|---|---|
| Zapier | 50,000+ pages | "[App A] + [App B]" integration |
| Airbnb | — | Location search; destination × property |
| Review platforms | — | User reviews + automated comparison pages |
| Travel sites | — | Destination, hotel, flight, activity pages |
| NomadList | 2,000+ city pages | Cost-of-living, internet speed (dynamic data) |
| Semrush, Ahrefs | 50+ free tools | SEO checker, keyword tool, backlink checker; toolkit hub + per-tool pages |
| Requirement | Purpose |
|---|---|
| 300+ words per page | Avoid thin content penalties |
| Unique, verifiable data | Each page must add meaningful page-specific content beyond simple data swaps |
| Evidence block | Tables, lists, examples with real numbers/attributes on every page |
| Semantic HTML | Proper structure; conditional logic to avoid empty or repetitive sections |
| Internal linking | Link related programmatic pages; compounds traffic and indexation |
| Topic | Practice |
|---|---|
| Subfolder vs subdomain | Prefer subfolders (yoursite.com/integration/slack-notion/) over subdomains (integrations.yoursite.com/...) so authority consolidates on the primary domain; see url-structure, domain-architecture if restructuring |
| Selective indexation | Don't index all pages; use noindex rules for low-value pages |
| Sitemap segmentation | By country, language, division; manage crawl budget |
| URL structure | Descriptive URLs; clean hierarchy; see url-structure |
| Schema | JSON-LD: Product, Place, FAQ, ItemList per page type |
| Performance | Caching, static generation; Core Web Vitals |
| Pitfall | Consequence |
|---|---|
| Thin content | Minimal info beyond keyword; generic copy; placeholder sections → penalties |
| Duplicate pages | Same content with only data swaps → thin content penalties |
| Index bloat | Generating pages that should never be indexable → crawl budget waste |
| Large dumps | Publishing many similar pages at once → spam signals |
| Filter URLs | Using filters instead of unique URLs/titles → cannibalization |
Pages with only a title, one paragraph, and swapped city names will not rank and may incur Google penalties.
If programmatic pages are already published and feel interchangeable — shared closing sentences, identical value propositions across URLs, cloned section endings — fix the content before it triggers quality signals.
Run regex scans across rendered or source files to surface shared sentence tails and repeated paragraph structures. Look for patterns that appear in more than 30% of same-category pages. Common telltales: every tool page ending with "X is the ideal choice for Y," every category page sharing the same technology summary, every location page using identical FAQ tails.
Scan at three scopes: within a single page (do its sections repeat the same closing formula?), within a category (do all video tool pages share a template?), and across categories (is the same value statement on every page site-wide?).
| Priority | What it is | Action |
|---|---|---|
| P0 — Eliminate | Pure template filler with no information value; every page says the same thing | Rewrite each page independently with page-specific detail |
| P1 — Rewrite | Core information is correct but delivery is formulaic (e.g., "different tools use different architectures" — true but generic) | Prepare 8–15 semantic variants and cycle through them so adjacent pages differ |
| P2 — Reduce density | Normal vocabulary that appears too frequently (e.g., "seamless" on 80% of pages) | Replace ~30–40% of instances, not all — normal words are fine at moderate frequency |
Fix P0 patterns first, one category at a time. After each round, re-scan to confirm patterns are cleared and no new ones appeared. A common trap: replacing one template with another by applying the same fix uniformly. Distribute rewrites so pages processed in sequence get different treatments.
For single-page internal duplicates — where all use cases or tool descriptions within one file share identical closing sentences — use functional endings instead of evaluative ones. A functional ending describes what bottleneck the entry solves in practice; an evaluative ending just declares it's a good choice.
Add structural-variety requirements to AI generation prompts (vary section endings, forbid repeated closing formulas). Batch-generate pages from different categories together rather than all from one category at once. Run N-gram overlap checks across same-category pages before publishing.
| Practice | Purpose |
|---|---|
| Quality over scale | Each page must provide genuinely unique, verifiable value |
| Differentiation over clone | Prefer AI-grounded copy variance + evidence blocks over one static paragraph with {city} swaps |
| Launch in batches | Small batches you can measure; avoid large dumps |
| Strong IA | Internal links to related guides/categories |
| Visual elements | Tables, maps, comparisons where relevant |
| Match intent | Avoid generic template text; precise user intent |
© kostja94, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/seo/programmatic-seo of kostja94/marketing-skills.
Open the folder on GitHubat commit 8dd89c5
Programmatic SEO next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Programmatic SEO this skillkostja94/marketing-skills | 1k | — | ~6.6k | Automated safety check: Pass | MIT | |
| SEO Competitor Comparison PagesAgriciDaniel/claude-seo | 18k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Universal SEO AnalysisAgriciDaniel/claude-seo | 18k | — | ~4.9k | Automated safety check: Pass | MIT | |
| Competitor Alternativesfreekmurze/dotfiles | 1k | 24 repos | ~2k | Automated safety check: Pass | None | |
| Programmatic SEOfreekmurze/dotfiles | 1k | 22 repos | ~1.7k | Automated safety check: Pass | None | |
| Directory Submissionscoreyhaines31/marketingskills | 54k | 2 repos | ~6.3k | Automated safety check: Pass | MIT |
AgriciDaniel/claude-seo
Generates X vs Y comparison pages, alternatives-to-X pages, best-tools roundups and feature-matrix tables, with schema markup and verifiable data rules.
AgriciDaniel/claude-seo
Hub for site-wide SEO work: audits, technical checks, schema, content quality, local, hreflang and AI-search readiness, run through slash commands.
freekmurze/dotfiles
When the user wants to create competitor comparison or alternative pages for SEO and sales enablement.
freekmurze/dotfiles
When the user wants to create SEO-driven pages at scale using templates and data.
coreyhaines31/marketingskills
When the user wants to submit their product to startup, SaaS, AI, agent, MCP, no-code, or review directories for backlinks, domain rating, and discovery.
minhnv0807/ai-business-skills
Covers six SEO layers for a website: crawl and index audit, local SEO, search-intent content, AI search visibility, schema markup and backlink or directory distribution.
kostja94/marketing-skills
When the user wants to add recommendations, links, or content to Grokipedia.
kostja94/marketing-skills
When the user wants to track AI search traffic in GA4 or GSC.
kostja94/marketing-skills
When the user wants to set up, audit, or optimize analytics tracking (GA4, events, conversions).
kostja94/marketing-skills
When the user wants to define, audit, or apply visual identity (typography, colors, spacing, design tokens, frontend aesthetics).
kostja94/marketing-skills
When the user wants to configure canonical URLs, fix duplicate content, or consolidate URL signals.
kostja94/marketing-skills
When the user wants to plan content for SEO, create content calendar, or build topic clusters.
Categories
When the user wants to create SEO pages at scale using templates and data—including AI-assisted, grounded copy for per-URL differentiation (vs rigid mail-merge templates). Programmatic SEO is an agent skill from kostja94/marketing-skills. When the user wants to create SEO pages at scale using templates and data—including AI-assisted, grounded copy for per-URL differentiation (vs rigid mail-merge templates).
Programmatic SEO fits situations like: wants to create SEO pages at scale using templates and data—including AI-assisted; grounded copy for per-URL differentiation (vs rigid mail-merge templates); the user mentions programmatic SEO; programmatic SEO pages.
Run `npx skills add kostja94/marketing-skills --skill programmatic-seo -a claude-code`. Or copy the skill folder (skills/seo/programmatic-seo in kostja94/marketing-skills) into .claude/skills/programmatic-seo in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kostja94/marketing-skills --skill programmatic-seo -a codex`. Or copy the skill folder (skills/seo/programmatic-seo in kostja94/marketing-skills) into .agents/skills/programmatic-seo in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kostja94/marketing-skills --skill programmatic-seo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/programmatic-seo, .gemini/skills/programmatic-seo, .github/skills/programmatic-seo and .opencode/skills/programmatic-seo in your project.
SKILL.md names no scripts, command-line tools or credentials: Programmatic SEO is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Programmatic SEO is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.6k tokens (SKILL.md is roughly 26k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Programmatic SEO: SEO Competitor Comparison Pages (AgriciDaniel/claude-seo, 18k stars), Universal SEO Analysis (AgriciDaniel/claude-seo, 18k stars), Competitor Alternatives (freekmurze/dotfiles, 1k stars) and Programmatic SEO (freekmurze/dotfiles, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kostja94 (a GitHub user) maintains it in kostja94/marketing-skills, which has 1,019 GitHub stars. The repository holds 102 skills in this directory. The repository was last updated on October 6, 2026.
Source: kostja94/marketing-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.