Agent Skillsfcakyon/claude-codex-settings › programmatic-seo

programmatic-seo

GitHub

用于指导基于模板和数据集批量生成网页的程序化SEO策略,涵盖数据价值评估、页面模式选择及避免被搜索引擎降权的内容优化方法。

plugins/seo-skills/skills/programmatic-seo/SKILL.md fcakyon/claude-codex-settings

Trigger Scenarios

规划大量相似页面的生成 程序化SEO内容策略制定

Install

npx skills add fcakyon/claude-codex-settings --skill programmatic-seo -g -y
More Options

Non-standard path

npx skills add https://github.com/fcakyon/claude-codex-settings/tree/main/plugins/seo-skills/skills/programmatic-seo -g -y

Use without installing

npx skills use fcakyon/claude-codex-settings@programmatic-seo

指定 Agent (Claude Code)

npx skills add fcakyon/claude-codex-settings --skill programmatic-seo -a claude-code -g -y

安装 repo 全部 skill

npx skills add fcakyon/claude-codex-settings --all -g -y

预览 repo 内 skill

npx skills add fcakyon/claude-codex-settings --list

SKILL.md

Frontmatter
{
    "name": "programmatic-seo",
    "license": "MIT",
    "description": "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."
}

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.

Does the data carry it

Defensibility runs in this order, strongest first:

  1. Proprietary, because you generated it.
  2. Product-derived, from how your own users behave.
  3. User-generated, from your community.
  4. Licensed, where the license is exclusive.
  5. Public, which anyone can use and everyone already has.

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.

Choosing a pattern

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.

Making each page worth indexing

  • Every page needs something specific to it beyond the substituted variable: a number, a comparison, a list, an image, a genuine answer.
  • Write the introduction per page, or generate it from enough fields that no two read alike. A shared paragraph with one word swapped is the tell.
  • Vary structure by what the data supports. A page with three data points shouldn't use the layout built for thirty; branch the template instead of padding.
  • Give each page a unique title and meta description built from its variables, not one pattern with the variable appended.
  • Match the query's intent. A comparison query wants a comparison, not a signup page.

Structure and indexation

  • Subfolders, not subdomains, so the pages build authority on the same domain rather than splitting it.
  • Hub and spoke: a category page linking to every page in the set, each page linking back, and related pages cross-linking. Otherwise the set is orphaned and only the sitemap points at it.
  • Own sitemap for the set, or a sitemap per pattern, so indexing rates per pattern are readable.
  • Ship the strongest slice first rather than the whole set. Publish the highest-demand pages, confirm they get indexed and ranked, then expand. A set that goes out all at once gives no signal about which part worked.
  • Leave the thinnest variations out entirely. That is better than publishing them and noindexing them later, since crawl spent on pages you didn't want is crawl not spent on pages you did.

Before it ships

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.

What this hands off

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.

Sources

Version History

  • 57286f4 Current 2026-08-28 15:20

Same Skill Collection

plugins/adhd-output-style/skills/adhd-output-style/SKILL.md
plugins/anthropic-office-skills/skills/pdf/SKILL.md
plugins/azure-tools/skills/azure-usage/SKILL.md
plugins/azure-tools/skills/setup/SKILL.md
plugins/cloudflare-skills/skills/cloudflare-deploy/SKILL.md
plugins/codex-advisor/skills/codex-advisor/SKILL.md
plugins/dokploy-skills/skills/dokploy-deploy/SKILL.md
plugins/fable-advisor/skills/fable-advisor/SKILL.md
plugins/frontend-design-skills/skills/anthropic-frontend-design/SKILL.md
plugins/frontend-design-skills/skills/openai-frontend-design/SKILL.md
plugins/frontend-design-skills/skills/writing-guidelines/SKILL.md
plugins/gcloud-tools/skills/gcloud-usage/SKILL.md
plugins/gcloud-tools/skills/setup/SKILL.md
plugins/github-dev/skills/clean-gone-branches/SKILL.md
plugins/github-dev/skills/commit-staged/SKILL.md
plugins/github-dev/skills/create-pr/SKILL.md
plugins/github-dev/skills/resolve-pr-comments/SKILL.md
plugins/github-dev/skills/review-pr/SKILL.md
plugins/github-dev/skills/setup/SKILL.md
plugins/github-dev/skills/update-pr-summary/SKILL.md
plugins/hetzner-skills/skills/hetzner-deploy/SKILL.md
plugins/humanize/skills/humanize/SKILL.md
plugins/livekit-skills/skills/livekit-skills/SKILL.md
plugins/mongodb-skills/skills/mongodb-atlas-stream-processing/SKILL.md
plugins/mongodb-skills/skills/mongodb-mcp-setup/SKILL.md
plugins/mongodb-skills/skills/mongodb-query-optimizer/SKILL.md
plugins/openai-office-skills/skills/doc/SKILL.md
plugins/openai-office-skills/skills/pdf/SKILL.md
plugins/openai-office-skills/skills/slides/SKILL.md
plugins/openai-office-skills/skills/spreadsheet/SKILL.md
plugins/openobserve-skills/skills/openobserve-api/SKILL.md
plugins/overleaf-skills/skills/review-overleaf/SKILL.md
plugins/overleaf-skills/skills/setup/SKILL.md
plugins/paper-search-tools/skills/paper-search-usage/SKILL.md
plugins/paper-search-tools/skills/setup/SKILL.md
plugins/polar-skills/skills/polar-billing/SKILL.md
plugins/polar-skills/skills/polar-local-environment/SKILL.md
plugins/python-skills/skills/python-guidelines/SKILL.md
plugins/react-skills/skills/composition-patterns/SKILL.md
plugins/react-skills/skills/react-best-practices/SKILL.md
plugins/react-skills/skills/react-native-skills/SKILL.md
plugins/react-skills/skills/web-design-guidelines/SKILL.md
plugins/seo-skills/skills/schema/SKILL.md
plugins/seo-skills/skills/seo-audit/SKILL.md
plugins/seo-skills/skills/site-architecture/SKILL.md
plugins/simplify/skills/simplify/SKILL.md
plugins/supabase-skills/skills/supabase-cli/SKILL.md
plugins/supabase-skills/skills/supabase-js/SKILL.md
plugins/tavily-tools/skills/setup/SKILL.md

Metadata

Files
0
Version
57286f4
Hash
1d2251fc
Indexed
2026-08-28 15:20

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-28 20:38
浙ICP备14020137号-1 $Carte des visiteurs$