pSEO Discovery
Analyze the codebase, business context, and market to determine what programmatic SEO pages can and should be built. This skill answers the question: "What should we generate, and do we have the data to do it?"
This skill runs BEFORE pseo-audit. The audit checks if the codebase is ready; this skill figures out what to build.
Core Principles
- Data-first: Only propose page types backed by structured data that exists or can be sourced
- Intent-matched: Every proposed page type must target a real search intent with volume
- Differentiated: Each page must be able to produce genuinely unique content — not just variable swaps
- Feasible: Proposals must be realistic given the current data, codebase, and team capacity
- Business-aligned: pSEO pages should serve the business's actual audience and goals
Discovery Procedure
1. Explore the Codebase for Data Assets
Search the codebase for existing structured data that could power pages:
Database/ORM models:
- Search for schema definitions (Prisma, Drizzle, TypeORM, Mongoose, SQL migrations)
- Identify entities with many records (products, locations, services, users, listings, articles)
- Note which entities have rich attributes (descriptions, categories, images, metadata)
CMS content types:
- Check for headless CMS configs (Contentful, Sanity, Strapi, etc.)
- Identify content types and their field schemas
- Count records per content type
API endpoints:
- Map all API routes and their response shapes
- Identify list endpoints that return collections of entities
- Check for paginated endpoints (signals large datasets)
Static data files:
- Search for JSON, CSV, YAML, MDX files in
data/, content/, src/data/ directories
- Count records and inspect field richness
- Check for categorization or taxonomy structures
What to extract per data source:
- Entity name and count (e.g., "2,500 products", "150 cities", "80 services")
- Available fields (especially: name, description, category, attributes, images)
- Relationships between entities (product → category, service → location)
- Data freshness (how often updated, is there a lastModified field)
2. Map Business Entities to Page Types
For each data asset found, evaluate whether it can power a pSEO page type:
| Question |
Must answer "yes" |
| Are there 50+ unique records? |
Minimum for pSEO to make sense |
| Does each record have enough data for a full page? |
Title, description, 3+ unique attributes |
| Would someone search for this? |
Real search intent exists |
| Can each page be meaningfully different? |
Not just variable swaps |
| Does this serve the business? |
Drives traffic the business can convert |
Common pSEO page patterns by business type:
- E-commerce: Product pages, category pages, brand pages,
[product] vs [product] comparisons, best [category] for [use-case]
- SaaS: Feature pages, integration pages,
[tool] alternative, [tool] vs [competitor], use-case pages
- Marketplace: Listing pages, location pages,
[service] in [city], category + location combinations
- Content/Media: Topic pages, tag pages, author pages,
[topic] guide, glossary/definition pages
- Local business: Service + location pages,
[service] in [neighborhood], FAQ pages per service
- Directory: Profile pages, category pages, comparison pages,
top [category] in [location]
3. Identify Keyword Patterns and Search Intent
For each proposed page type, validate that search demand exists:
Keyword pattern analysis:
- Identify the base keyword pattern (e.g.,
[service] in [city], best [product] for [use-case])
- Estimate volume per pattern using keyword research tools or inferred demand
- Check for long-tail variations that indicate intent depth
- Verify that existing top results are not exclusively high-authority domains
Intent classification per page type:
- Informational: User wants to learn (guides, definitions, how-tos)
- Commercial investigation: User is comparing options (comparisons, reviews, "best X")
- Transactional: User wants to buy/sign up (product pages, pricing, service pages)
- Navigational: User wants a specific entity (brand pages, location pages)
Each pSEO page type should clearly map to one intent category.
4. Evaluate Data Sufficiency for Content Uniqueness
For each proposed page type, assess whether the data produces genuinely unique pages:
The Content Differentiation Test:
Take 5 random records. For each, write out what the page would contain:
- Title
- H1
- Intro paragraph
- Main content sections
- FAQ questions
If 3+ of these elements are essentially the same text with different proper nouns, the data is insufficient. Either:
- Enrich the data (add more attributes, descriptions, FAQs per record)
- Combine data sources (e.g., product data + user reviews + competitor data)
- Narrow the page type to records with richer data
- Abandon the page type as a pSEO candidate
Minimum data requirements per page:
- 2+ unique text fields beyond title and description (for body content)
- 3+ structured attributes (for data tables, stat highlights)
- Category or taxonomy data (for hub-spoke linking)
- Ideally: 3-5 FAQ pairs per record (for FAQ schema and content depth)
5. Assess URL Structure and Taxonomy
Propose a URL hierarchy for the pSEO pages:
/{category}/{slug} # standard
/{location}/{service} # location-based
/{product-type}/{product-slug} # e-commerce
/{topic}/{subtopic} # content-based
Check:
- Will all slugs be unique within their URL namespace?
- Does the hierarchy create natural hub-spoke relationships?
- Is the URL structure human-readable and keyword-inclusive?
- How deep is the hierarchy? (Maximum 3 levels recommended)
6. Competitive Landscape Check
Identify whether competitors are already doing pSEO for the same patterns:
- Search for the target keyword patterns and see what ranks
- Check if competitors have programmatic pages (signs: similar URL patterns, templated content, large indexed page counts)
- Assess competitor content quality — can you do meaningfully better?
- Look for gaps they haven't covered (long-tail variations, underserved locations, new categories)
7. Propose a pSEO Strategy
Compile findings into a ranked list of pSEO opportunities.
Output Format
## pSEO Discovery Report
### Data Assets Found
| Entity | Record Count | Key Fields | Source |
|--------|-------------|------------|--------|
| [entity] | [count] | [fields] | [DB/CMS/API/files] |
### Proposed Page Types (ranked by opportunity)
#### 1. [Page Type Name]
- **Pattern**: [URL pattern, e.g., /services/[service]-in-[city]]
- **Record count**: [number of pages this would generate]
- **Search intent**: [informational / commercial / transactional]
- **Keyword pattern**: [e.g., "[service] in [city]"]
- **Data source**: [where the data comes from]
- **Content uniqueness**: [High / Medium / Low — with justification]
- **Data gaps**: [what fields are missing or need enrichment]
- **Feasibility**: [Ready / Needs data enrichment / Needs new data source]
#### 2. [Next page type...]
### Rejected Candidates
| Entity | Reason Rejected |
|--------|----------------|
| [entity] | [too few records / insufficient data / no search intent / ...] |
### Recommended URL Structure
[Proposed hierarchy with examples]
### Data Enrichment Needed
[List of data fields that need to be added to unlock page types]
### Next Steps
1. [Confirm page types with stakeholder]
2. [Enrich data where needed]
3. [Run pseo-audit on the codebase]
4. [Begin implementation with pseo-data]
Scope Parameter
If $ARGUMENTS specifies a focus:
all (default): Full discovery
codebase: Only analyze existing data assets in the code (steps 1-2)
business: Focus on business entity mapping and page type proposals (steps 2-4)
keywords: Focus on keyword patterns and competitive landscape (steps 3, 6)
YMYL Risk Assessment
Google's September 2025 Quality Rater Guidelines expanded YMYL (Your Money or Your Life) to include civic information alongside health, finance, and legal content. pSEO in YMYL verticals carries elevated risk.
YMYL categories (as of September 2025):
- Health and medical information
- Financial information (investing, taxes, loans, insurance)
- Legal information
- Civic information (voting, government, public trust)
- Safety information (product safety, emergency procedures)
- News about major events
If the proposed page types fall into ANY YMYL category:
- Flag the risk explicitly in the discovery report
- Elevate content quality requirements: Every page needs cited authoritative sources, expert attribution, and review processes
- Evaluate if pSEO is appropriate at all: YMYL content often requires human expert review per page, which conflicts with the "programmatic" approach. Be honest about this tension.
- Recommend stricter quality guard thresholds: Higher minimum word counts, stricter uniqueness requirements, mandatory E-E-A-T fields
- Consider hybrid approach: Programmatic data structure + human-reviewed content per page
Discovery output should include a YMYL assessment:
### YMYL Assessment
- YMYL category: [None | Health | Finance | Legal | Civic | Safety]
- Risk level: [Low | Medium | High]
- Recommendation: [Standard pSEO OK | Needs elevated quality standards | Human review per page required | pSEO not recommended for this vertical]
Output Artifact
Save the discovery report to .pseo/discovery-report.md in the project root. This file is consumed by pseo-audit and pseo-orchestrate to inform subsequent phases. The file must include at minimum:
- Confirmed page types with their URL patterns
- Data source locations (file paths, API endpoints, CMS content types)
- YMYL assessment (if applicable)
- Data gaps that need enrichment before implementation
If running within a single Claude Code session, the report can also be kept in conversation context. The file serves as a persistent artifact for multi-session workflows.
Important Constraints
- This is a research-only skill. Do NOT modify code or create files.
- Be honest about data gaps. Don't propose page types the data can't support.
- Quantity of pages is not the goal. 200 genuinely unique pages beats 5,000 thin pages.
- If the codebase has no usable structured data, say so. The answer may be "build the data layer first" or "this business isn't a good fit for pSEO."
- If a page type would produce thin or near-identical pages, flag it as rejected with a clear reason.
Relationship to Other Skills
- Runs before: All other pseo-* skills
- Feeds into: pseo-audit (what to look for), pseo-data (what models to build)
- Independent of: All implementation skills — this is pure research
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: pseo-discovery3description: Analyze a codebase and business context to discover programmatic SEO opportunities, identifying what page types to generate, what data assets exist, and what search intent can be matched at scale. Use when starting a new pSEO project, when the user isn't sure what to build programmatically, or when exploring what structured data exists in the codebase or business that could power scalable pages. Use when this capability is needed.4---56# pSEO Discovery78Analyze the codebase, business context, and market to determine what programmatic SEO pages can and should be built. This skill answers the question: **"What should we generate, and do we have the data to do it?"**910This skill runs BEFORE pseo-audit. The audit checks if the codebase is ready; this skill figures out what to build.1112## Core Principles13141. **Data-first**: Only propose page types backed by structured data that exists or can be sourced152. **Intent-matched**: Every proposed page type must target a real search intent with volume163. **Differentiated**: Each page must be able to produce genuinely unique content — not just variable swaps174. **Feasible**: Proposals must be realistic given the current data, codebase, and team capacity185. **Business-aligned**: pSEO pages should serve the business's actual audience and goals1920## Discovery Procedure2122### 1. Explore the Codebase for Data Assets2324Search the codebase for existing structured data that could power pages:2526**Database/ORM models:**27- Search for schema definitions (Prisma, Drizzle, TypeORM, Mongoose, SQL migrations)28- Identify entities with many records (products, locations, services, users, listings, articles)29- Note which entities have rich attributes (descriptions, categories, images, metadata)3031**CMS content types:**32- Check for headless CMS configs (Contentful, Sanity, Strapi, etc.)33- Identify content types and their field schemas34- Count records per content type3536**API endpoints:**37- Map all API routes and their response shapes38- Identify list endpoints that return collections of entities39- Check for paginated endpoints (signals large datasets)4041**Static data files:**42- Search for JSON, CSV, YAML, MDX files in `data/`, `content/`, `src/data/` directories43- Count records and inspect field richness44- Check for categorization or taxonomy structures4546**What to extract per data source:**47- Entity name and count (e.g., "2,500 products", "150 cities", "80 services")48- Available fields (especially: name, description, category, attributes, images)49- Relationships between entities (product → category, service → location)50- Data freshness (how often updated, is there a lastModified field)5152### 2. Map Business Entities to Page Types5354For each data asset found, evaluate whether it can power a pSEO page type:5556| Question | Must answer "yes" |57|----------|-------------------|58| Are there 50+ unique records? | Minimum for pSEO to make sense |59| Does each record have enough data for a full page? | Title, description, 3+ unique attributes |60| Would someone search for this? | Real search intent exists |61| Can each page be meaningfully different? | Not just variable swaps |62| Does this serve the business? | Drives traffic the business can convert |6364**Common pSEO page patterns by business type:**6566- **E-commerce**: Product pages, category pages, brand pages, `[product] vs [product]` comparisons, `best [category] for [use-case]`67- **SaaS**: Feature pages, integration pages, `[tool] alternative`, `[tool] vs [competitor]`, use-case pages68- **Marketplace**: Listing pages, location pages, `[service] in [city]`, category + location combinations69- **Content/Media**: Topic pages, tag pages, author pages, `[topic] guide`, glossary/definition pages70- **Local business**: Service + location pages, `[service] in [neighborhood]`, FAQ pages per service71- **Directory**: Profile pages, category pages, comparison pages, `top [category] in [location]`7273### 3. Identify Keyword Patterns and Search Intent7475For each proposed page type, validate that search demand exists:7677**Keyword pattern analysis:**78- Identify the base keyword pattern (e.g., `[service] in [city]`, `best [product] for [use-case]`)79- Estimate volume per pattern using keyword research tools or inferred demand80- Check for long-tail variations that indicate intent depth81- Verify that existing top results are not exclusively high-authority domains8283**Intent classification per page type:**84- **Informational**: User wants to learn (guides, definitions, how-tos)85- **Commercial investigation**: User is comparing options (comparisons, reviews, "best X")86- **Transactional**: User wants to buy/sign up (product pages, pricing, service pages)87- **Navigational**: User wants a specific entity (brand pages, location pages)8889Each pSEO page type should clearly map to one intent category.9091### 4. Evaluate Data Sufficiency for Content Uniqueness9293For each proposed page type, assess whether the data produces genuinely unique pages:9495**The Content Differentiation Test:**96Take 5 random records. For each, write out what the page would contain:97- Title98- H199- Intro paragraph100- Main content sections101- FAQ questions102103If 3+ of these elements are essentially the same text with different proper nouns, the data is insufficient. Either:104- Enrich the data (add more attributes, descriptions, FAQs per record)105- Combine data sources (e.g., product data + user reviews + competitor data)106- Narrow the page type to records with richer data107- Abandon the page type as a pSEO candidate108109**Minimum data requirements per page:**110- 2+ unique text fields beyond title and description (for body content)111- 3+ structured attributes (for data tables, stat highlights)112- Category or taxonomy data (for hub-spoke linking)113- Ideally: 3-5 FAQ pairs per record (for FAQ schema and content depth)114115### 5. Assess URL Structure and Taxonomy116117Propose a URL hierarchy for the pSEO pages:118119```120/{category}/{slug} # standard121/{location}/{service} # location-based122/{product-type}/{product-slug} # e-commerce123/{topic}/{subtopic} # content-based124```125126Check:127- Will all slugs be unique within their URL namespace?128- Does the hierarchy create natural hub-spoke relationships?129- Is the URL structure human-readable and keyword-inclusive?130- How deep is the hierarchy? (Maximum 3 levels recommended)131132### 6. Competitive Landscape Check133134Identify whether competitors are already doing pSEO for the same patterns:135136- Search for the target keyword patterns and see what ranks137- Check if competitors have programmatic pages (signs: similar URL patterns, templated content, large indexed page counts)138- Assess competitor content quality — can you do meaningfully better?139- Look for gaps they haven't covered (long-tail variations, underserved locations, new categories)140141### 7. Propose a pSEO Strategy142143Compile findings into a ranked list of pSEO opportunities.144145## Output Format146147```148## pSEO Discovery Report149150### Data Assets Found151| Entity | Record Count | Key Fields | Source |152|--------|-------------|------------|--------|153| [entity] | [count] | [fields] | [DB/CMS/API/files] |154155### Proposed Page Types (ranked by opportunity)156157#### 1. [Page Type Name]158- **Pattern**: [URL pattern, e.g., /services/[service]-in-[city]]159- **Record count**: [number of pages this would generate]160- **Search intent**: [informational / commercial / transactional]161- **Keyword pattern**: [e.g., "[service] in [city]"]162- **Data source**: [where the data comes from]163- **Content uniqueness**: [High / Medium / Low — with justification]164- **Data gaps**: [what fields are missing or need enrichment]165- **Feasibility**: [Ready / Needs data enrichment / Needs new data source]166167#### 2. [Next page type...]168169### Rejected Candidates170| Entity | Reason Rejected |171|--------|----------------|172| [entity] | [too few records / insufficient data / no search intent / ...] |173174### Recommended URL Structure175[Proposed hierarchy with examples]176177### Data Enrichment Needed178[List of data fields that need to be added to unlock page types]179180### Next Steps1811. [Confirm page types with stakeholder]1822. [Enrich data where needed]1833. [Run pseo-audit on the codebase]1844. [Begin implementation with pseo-data]185```186187## Scope Parameter188189If `$ARGUMENTS` specifies a focus:190- `all` (default): Full discovery191- `codebase`: Only analyze existing data assets in the code (steps 1-2)192- `business`: Focus on business entity mapping and page type proposals (steps 2-4)193- `keywords`: Focus on keyword patterns and competitive landscape (steps 3, 6)194195## YMYL Risk Assessment196197Google's September 2025 Quality Rater Guidelines expanded YMYL (Your Money or Your Life) to include civic information alongside health, finance, and legal content. pSEO in YMYL verticals carries elevated risk.198199**YMYL categories (as of September 2025):**200- Health and medical information201- Financial information (investing, taxes, loans, insurance)202- Legal information203- Civic information (voting, government, public trust)204- Safety information (product safety, emergency procedures)205- News about major events206207**If the proposed page types fall into ANY YMYL category:**2082091. **Flag the risk explicitly** in the discovery report2102. **Elevate content quality requirements**: Every page needs cited authoritative sources, expert attribution, and review processes2113. **Evaluate if pSEO is appropriate at all**: YMYL content often requires human expert review per page, which conflicts with the "programmatic" approach. Be honest about this tension.2124. **Recommend stricter quality guard thresholds**: Higher minimum word counts, stricter uniqueness requirements, mandatory E-E-A-T fields2135. **Consider hybrid approach**: Programmatic data structure + human-reviewed content per page214215**Discovery output should include a YMYL assessment:**216```217### YMYL Assessment218- YMYL category: [None | Health | Finance | Legal | Civic | Safety]219- Risk level: [Low | Medium | High]220- Recommendation: [Standard pSEO OK | Needs elevated quality standards | Human review per page required | pSEO not recommended for this vertical]221```222223## Output Artifact224225Save the discovery report to `.pseo/discovery-report.md` in the project root. This file is consumed by pseo-audit and pseo-orchestrate to inform subsequent phases. The file must include at minimum:226227- Confirmed page types with their URL patterns228- Data source locations (file paths, API endpoints, CMS content types)229- YMYL assessment (if applicable)230- Data gaps that need enrichment before implementation231232If running within a single Claude Code session, the report can also be kept in conversation context. The file serves as a persistent artifact for multi-session workflows.233234## Important Constraints235236- This is a research-only skill. Do NOT modify code or create files.237- Be honest about data gaps. Don't propose page types the data can't support.238- Quantity of pages is not the goal. 200 genuinely unique pages beats 5,000 thin pages.239- If the codebase has no usable structured data, say so. The answer may be "build the data layer first" or "this business isn't a good fit for pSEO."240- If a page type would produce thin or near-identical pages, flag it as rejected with a clear reason.241242## Relationship to Other Skills243244- **Runs before**: All other pseo-* skills245- **Feeds into**: pseo-audit (what to look for), pseo-data (what models to build)246- **Independent of**: All implementation skills — this is pure research247248---249> Converted and distributed by [TomeVault](https://tomevault.io/claim/lisbeth718) — claim your Tome and manage your conversions.250<!-- tomevault:4.0:skill_md:2026-04-11 -->