Systems Lab

Agent skill

gtmos-seo-programmatic

Plan and run programmatic SEO: pages at scale from templates and data (templates, comparisons, integrations, personas, locations, glossary, directories) without thin content or index bloat.

activeSelf-containedInstructions only1,612 words

Filed under Content and SEO.

From ay-automate/gtmos-skills · 107 skill entries · 0 · pushed 2026-11-02

What it does when it runs

Plan and run programmatic SEO: pages at scale from templates and data (templates, comparisons, integrations, personas, locations, glossary, directories) without thin content or index bloat. With GTM OS connected it validates demand from Search Console striking-distance queries and looot keyword data (seo_geo.keyword_opportunities, seo_geo.refresh_keyword_data), uses the org definitions and CRM data as the proprietary inputs, tracks and audits the launched pages, and proposes fixes through approval-gated publishes. Use for \"programmatic SEO\", \"pSEO\", \"pages at scale\", \"template pages\", \"location pages\", \"integration pages\", \"comparison pages at scale\", \"directory pages\", \"glossary pages\". For single comparison pages see gtmos-seo-competitor-pages.

Automated analysis of the skill and the 3 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about gtmos-seo-programmatic

Opens your assistant with this page's recorded context. Check the linked sources before relying on it.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/ay-automate/gtmos-skills.git /tmp/gtmos-skills
git -C /tmp/gtmos-skills sparse-checkout set "skills/gtmos-seo-programmatic"
mkdir -p ~/.claude/skills/gtmos-seo-programmatic
cp -R "/tmp/gtmos-skills/skills/gtmos-seo-programmatic/." ~/.claude/skills/gtmos-seo-programmatic/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 107 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add ay-automate/gtmos-skills
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from ay-automate/gtmos-skills/blob/86780d2f545cdc0a1de971917aa04b41bb0b3ccd/skills/gtmos-seo-programmatic/SKILL.md, which is licensed MIT (skill frontmatter). 1,612 words, 29 headings.

Programmatic SEO

Part of GTM OS Skills. Adapted from programmatic-seo in coreyhaines31/marketingskills (MIT, Copyright (c) 2025 Corey Haines). Merged with seo-programmatic from AgriciDaniel/claude-seo (MIT), kept in references/seo-seo-programmatic.md. Changed for GTM OS: the operating section below, rewritten cross-references and tool pointers. Notices: THIRD-PARTY-NOTICES.md (installed beside the skills as THIRD-PARTY-NOTICES.md).

With GTM OS connected

Rules (GTMOS-RULES.md). Read policy.get_dry_mode first; in dry mode every effect stops at a draft. E-class operations are proposed and a different person approves them; never approve your own proposal. Numbers come only from operation results, named with the operation. Claims about results, customers or metrics must be backed by active proof from proof.list.

Programmatic pages are planned here and measured by the SEO & GEO engine. GTM OS does not generate or host pages: the pages are built in your CMS, then tracked, audited and improved through the engine. Google Search Console is required for this engine; check instance.readiness and seo_geo.gsc_properties first. Confirm each schema with gtm_describe before the first call.

1. Validate demand with real data.

Read or runWhy
seo_geo.keyword_opportunities {days, minImpressions, limit}Search Console queries in striking distance, with looot volume and Ahrefs rows when present. Shows which patterns already earn impressions.
seo_geo.refresh_keyword_data {keywords, limit, locale} (spends inline: quote it first)Pulls volume, difficulty and CPC for the pattern's head terms. It spends looot credit through the org's budget guard; a call over the ceiling returns APPROVAL_REQUIRED and buys nothing. Run capability.quote {capability: "seo.keyword_data", args} first for a large list.
seo_geo.get_visibilityThe site's Search Console totals, top pages, Ahrefs metrics and competitors, if seo_geo.run_visibility (spends inline: quote it first) has run.
definition.persona, definition.segment, definition.customer_typeThe real segments for persona or industry playbooks ("[product] for [audience]"). Do not invent audiences the org does not sell to.
brand.getVoice and forbidden claims for every template string.
proof.listAny per-page stat, logo or result must be an active proof item.

2. Design the template with the method below. Proprietary data beats public data: CRM aggregates (records.aggregate), product data the org owns and approved proof are the defensible inputs. Never pad a page with generated "facts".

3. Track what you launch. For each live page, seo_geo.create_tracked_page {url, targetKeywords} records it and queues its first audit. For a large set, track the hub pages and a representative sample per template, then seo_geo.scan_all_pages audits every tracked page in one batch.

4. Fix through approvals. seo_geo.fix_queue lists crawl, index and on-page issues per page; titles, meta descriptions, JSON-LD and body edits go through seo_geo.publish_content_change (E), which a different person approves (seo_geo.publish_queue, runtime.list_approvals). Bulk page creation in the CMS is not a GTM OS operation yet; publishing new pages through a CMS connection is planned. In dry mode every publish stays a proposal.

5. Measure. seo_geo.kpis {windowDays} gives indexed share, clicks and impressions with a reason when a value is null; seo_geo.get_page_performance gives one page's history; seo_geo.refresh_calendar shows which pages are due for a re-audit. Report "not enough data yet" for pages younger than a few weeks.

Without GTM OS

Use the method below with the user's own data: a keyword export (Search Console, Semrush, Ahrefs), the data source that fills the template, and their CMS. Check thin-content risk with the uniqueness gates in references/seo-seo-programmatic.md. Ship a small batch first, watch indexation in Search Console, then scale.


You are an expert in programmatic SEO—building SEO-optimized pages at scale using templates and data. Your goal is to create pages that rank, provide value, and avoid thin content penalties.

Initial Assessment

Check for context first: With GTM OS connected, read the org definitions named in With GTM OS connected above before asking anything. Without it, read .agents/product-marketing.md (or .claude/product-marketing.md) if it exists; gtmos-marketing-positioning writes that file. Ask only for what neither covers.

Before designing a programmatic SEO strategy, understand:

  1. Business Context

    • What's the product/service?
    • Who is the target audience?
    • What's the conversion goal for these pages?
  2. Opportunity Assessment

    • What search patterns exist?
    • How many potential pages?
    • What's the search volume distribution?
  3. Competitive Landscape

    • Who ranks for these terms now?
    • What do their pages look like?
    • Can you realistically compete?

Core Principles

1. Unique Value Per Page

  • Every page must provide value specific to that page
  • Not just swapped variables in a template
  • Maximize unique content—the more differentiated, the better

2. Proprietary Data Wins

Hierarchy of data defensibility:

  1. Proprietary (you created it)
  2. Product-derived (from your users)
  3. User-generated (your community)
  4. Licensed (exclusive access)
  5. Public (anyone can use—weakest)

3. Clean URL Structure

Use subfolders, not subdomains — subfolders consolidate domain authority while subdomains split it:

  • Good: yoursite.com/templates/resume/
  • Bad: templates.yoursite.com/resume/

4. Genuine Search Intent Match

Pages must actually answer what people are searching for.

5. Quality Over Quantity

Better to have 100 great pages than 10,000 thin ones.

6. Avoid Google Penalties

  • No doorway pages
  • No keyword stuffing
  • No duplicate content
  • Genuine utility for users

The 12 Playbooks (Overview)

PlaybookPatternExample
Templates"[Type] template""resume template"
Curation"best [category]""best website builders"
Conversions"[X] to [Y]""$10 USD to GBP"
Comparisons"[X] vs [Y]""webflow vs wordpress"
Examples"[type] examples""landing page examples"
Locations"[service] in [location]""dentists in austin"
Personas"[product] for [audience]""crm for real estate"
Integrations"[product A] [product B] integration""slack asana integration"
Glossary"what is [term]""what is pSEO"
TranslationsContent in multiple languagesLocalized content
Directory"[category] tools""ai copywriting tools"
Profiles"[entity name]""stripe ceo"

For detailed playbook implementation: See references/playbooks.md. For uniqueness and index-bloat gates, see references/seo-seo-programmatic.md.


Choosing Your Playbook

If you have...Consider...
Proprietary dataDirectories, Profiles
Product with integrationsIntegrations
Design/creative productTemplates, Examples
Multi-segment audiencePersonas
Local presenceLocations
Tool or utility productConversions
Content/expertiseGlossary, Curation
Competitor landscapeComparisons

You can layer multiple playbooks (e.g., "Best coworking spaces in San Diego").


Implementation Framework

1. Keyword Pattern Research

Identify the pattern:

  • What's the repeating structure?
  • What are the variables?
  • How many unique combinations exist?

Validate demand:

  • Aggregate search volume
  • Volume distribution (head vs. long tail)
  • Trend direction

2. Data Requirements

Identify data sources:

  • What data populates each page?
  • Is it first-party, scraped, licensed, public?
  • How is it updated?

3. Template Design

Page structure:

  • Header with target keyword
  • Unique intro (not just variables swapped)
  • Data-driven sections
  • Related pages / internal links
  • CTAs appropriate to intent

Ensuring uniqueness:

  • Each page needs unique value
  • Conditional content based on data
  • Original insights/analysis per page

4. Internal Linking Architecture

Hub and spoke model:

  • Hub: Main category page
  • Spokes: Individual programmatic pages
  • Cross-links between related spokes

Avoid orphan pages:

  • Every page reachable from main site
  • XML sitemap for all pages
  • Breadcrumbs with structured data

5. Indexation Strategy

  • Prioritize high-volume patterns
  • Noindex very thin variations
  • Manage crawl budget thoughtfully
  • Separate sitemaps by page type

6. Choose the Build Platform

Check that the platform can hold the page count, refresh the data, render server-side HTML, branch on data for conditional sections, and control indexation per page. Prefer the existing site's CMS if it can; otherwise serve the set on a subpath of the main domain. Options and tradeoffs: references/implementation-platforms.md.


Quality Checks

Pre-Launch Checklist

Content quality:

  • Each page provides unique value
  • Answers search intent
  • Readable and useful

Technical SEO:

  • Unique titles and meta descriptions
  • Proper heading structure
  • Schema markup implemented
  • Page speed acceptable

Internal linking:

  • Connected to site architecture
  • Related pages linked
  • No orphan pages

Indexation:

  • In XML sitemap
  • Crawlable
  • No conflicting noindex

Post-Launch Monitoring

Track: Indexation rate, Rankings, Traffic, Engagement, Conversion

Watch for: Thin content warnings, Ranking drops, Manual actions, Crawl errors


Common Mistakes

  • Thin content: Just swapping city names in identical content
  • Keyword cannibalization: Multiple pages targeting same keyword
  • Over-generation: Creating pages with no search demand
  • Poor data quality: Outdated or incorrect information
  • Ignoring UX: Pages exist for Google, not users

Output Format

Strategy Document

  • Opportunity analysis
  • Implementation plan
  • Content guidelines

Page Template

  • URL structure
  • Title/meta templates
  • Content outline
  • Schema markup

Task-Specific Questions

  1. What keyword patterns are you targeting?
  2. What data do you have (or can acquire)?
  3. How many pages are you planning?
  4. What does your site authority look like?
  5. Who currently ranks for these terms?
  6. What's your technical stack?

Related Skills

  • gtmos-seo-audit: For auditing programmatic pages after launch
  • gtmos-seo-schema: For adding structured data
  • gtmos-seo-site-architecture: For page hierarchy, URL structure, and internal linking
  • gtmos-seo-competitor-pages: For comparison page frameworks

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what gtmos-seo-programmatic does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.

Build my GTM engine

Tell us what you want to improve. Fedor reviews the workflow and replies by email when there is a useful fit.

Fedor reviews every request personally. If there is a useful fit, he will reply by email.