SkillHub

p-seo

v1.0.0

Build Programmatic SEO 2.0 systems at scale — AI-generated content using strict JSON schemas, niche taxonomy, and React renderers. Use when: (1) creating hundreds or thousands of programmatic pages, (2) building a niche taxonomy for pSEO content, (3) designing JSON schemas for AI-generated content t...

Sourced from ClawHub, Authored by chichoss

Installation

Please help me install the skill `p-seo` from SkillHub official store. npx skills add chichoss/p-seo

Programmatic SEO 2.0 — Agent Skill Reference

The core principle: never ask AI to write freeform content. Ask it to fill a strict JSON schema.

Content = JSON data. Design = React components. These two layers never mix.

System Architecture

Niche Taxonomy (309 niches) → AI fills JSON schema → Validated JSON files → React renderers → Published pages

Why schemas beat freeform: - Consistent structure across all pages - Predictable output quality - Pages are validatable and type-safe - Redesign UI without regenerating content - Scale to 10,000+ pages without quality degradation

Step 1: Build the Niche Taxonomy

This is the most important investment. Rich niche context is what separates useful pSEO from thin name-swapped filler.

For each niche, define:

{
  "slug": "travel",
  "name": "Travel",
  "context": {
    "audience": "Armchair travelers, digital nomads, family vacation planners",
    "pain_points": "Seasonal traffic swings, high competition for destination keywords",
    "monetization": "Affiliate (booking, gear), display ads, sponsored trips",
    "content_that_works": "Itineraries, cost breakdowns, off-the-beaten-path guides",
    "subtopics": ["budget travel", "luxury travel", "adventure travel", "solo travel"]
  }
}

Start with 20-50 niches, expand to 300+ for scale. This context gets injected into every generation prompt — it's what makes a "travel SEO checklist" different from a "health SEO checklist."

See references/niche-taxonomy.md for the full niche structure and 20 starter niches.

Step 2: Design JSON Schemas per Content Type

Each content type gets its own schema. Constraints are intentional — they force consistent output.

Example: Resource Article Schema

interface ResourceArticle {
  meta: {
    content_type: string;
    niche: string;
  };
  seo: {
    title: string;        // templated, NOT AI-generated
    description: string;
    keywords: string[];
  };
  content: {
    intro: string;
    sections: {
      heading: string;
      items: {
        title: string;
        description: string;
        difficulty?: 'beginner' | 'intermediate' | 'advanced';
        potential?: 'high' | 'medium' | 'standard';
      }[];  // exactly 15-20 per section
    }[];
    pro_tips: string[];  // exactly 5
  };
}

Hard constraints (exact counts, required fields) prevent 8-item pages next to 40-item pages. See references/schema-library.md for 6 ready-to-use schemas.

Step 3: The 6 Content Categories

Category Share Notes
Resource pages ~58% Idea lists, checklists, calendars, guides, templates — 34 content types × N niches
Comparison pages ~1% Smallest category — most obvious, least differentiated
Free tools ~15% Actual working tools with niche-specific examples
Checklist pages ~10% Interactive, niche-aware
Guide pages ~8% Long-form, structured
Template pages ~8% Downloadable/fillable

Resource pages are the highest-volume opportunity. Start there.

Step 4: Generation at Scale

Use Gemini Flash (cost-to-quality ratio beats GPT-4 for structured JSON at volume).

Why Gemini Flash: - Native structured JSON output (no markdown wrapping to parse) - Cheap enough for 10,000+ pages - Fast enough for batch generation

Generation prompt pattern:

Given this niche context: {niche_json}
Fill this schema: {schema}
Content type: {content_type}
Title template: {title}

Return ONLY valid JSON matching the schema. No prose, no markdown.

Validation: After generation, validate every file against the TypeScript schema. Reject and retry any that fail. At 13,000 pages, ~2-5% failure rate is normal.

Speed: 13,000+ pages in under 3 hours with parallel workers (10-20 concurrent API calls).

Step 5: React Renderers

Each content type gets its own specialized renderer. The renderer consumes the JSON and handles all presentation.

/renderers/
  ResourceArticleRenderer.tsx   — with filtering by category/difficulty
  ChecklistRenderer.tsx          — interactive checkboxes
  ComparisonTableRenderer.tsx    — structured tables
  FreeToolRenderer.tsx           — working tool UI

Key rule: Renderers never call AI. They only consume pre-generated JSON. This means you can: - Redesign any page without regenerating content - A/B test layouts without touching data - Add new niches without touching UI

Key Metrics (Jake Ward experiment, 60 days)

  • 13,000+ pages live
  • Weekly organic clicks: 971 → 5,500 (+466%)
  • ~50% of pages not yet indexed (curve still going up)
  • Generation time: < 3 hours for all 13,000 pages

Quick Start Checklist

  • [ ] Define 20+ niches with full context (audience, pain points, monetization, subtopics)
  • [ ] Choose 2-3 content types to start (resource pages recommended)
  • [ ] Write strict TypeScript schemas with hard constraints
  • [ ] Build generation script with niche injection and JSON validation
  • [ ] Build React renderers per content type
  • [ ] Generate first batch (start with 100 pages to validate quality)
  • [ ] Review output — check niche specificity, not just structure
  • [ ] Scale up generation
  • [ ] Submit sitemap, monitor indexation rate

References

  • references/niche-taxonomy.md — Niche structure + 20 starter niches
  • references/schema-library.md — 6 ready-to-use content type schemas

Tolstoy-Specific Configuration

When generating pSEO content for gotolstoy.com, always load these files before generating any content:

  • Brand voice: ~/.openclaw/workspace/tolstoy-context/brand-voice.md
  • Competitor analysis: ~/.openclaw/workspace/tolstoy-context/competitor-analysis.md
  • Features: ~/.openclaw/workspace/tolstoy-context/features.md
  • Style guide: ~/.openclaw/workspace/tolstoy-context/style-guide.md
  • Writing examples: ~/.openclaw/workspace/tolstoy-context/writing-examples.md
  • Target keywords: ~/.openclaw/workspace/tolstoy-context/target-keywords.md
  • Internal links map: ~/.openclaw/workspace/tolstoy-context/internal-links-map.md
  • Schemas: ~/.openclaw/workspace/tolstoy-pseo/schemas/
  • Scale plan: ~/.openclaw/workspace/tolstoy-pseo/SCALE-PLAN.md

Tolstoy Voice Rules (non-negotiable)

  1. Positioning: Always use "AI Agent for Ecommerce" — never "tool" or "software"
  2. Products: Name specifically: AI Studio, AI Player, AI Shopper
  3. Vocabulary: "at scale," "autonomous," "closed loop," "without manual work"
  4. Tone: Second-person ("you"), data-forward, peer-to-peer operator voice
  5. Proof metrics: 7x PDP conversion lift, 232% AOV uplift, 11x conversion rate with AI Shopper, 2,000+ brand partners
  6. Do NOT: Name competitors directly in body copy — stay category-level
  7. Closed loop framing: AI Studio creates → AI Player distributes → AI Shopper converts → data loops back

Tolstoy Content Map (20 pages total)

Type Count Status
Comparison pages (Tolstoy vs X) 8 1 done (Rep AI)
Topic/gap pages (category attack) 7 0 done
Use case pages 4 0 done

Highest priority gaps (Tolstoy absent from AI Overviews): - "Best AI agent apps for Shopify 2026" - "Best AI agents for Shopify Plus brands" - "Best AI agents for dynamic product pages on Shopify" - "AI agents for DTC brands" - "Virtual try-on for fashion ecommerce"

Webflow Publishing (when API key is available)

Tolstoy blog runs on Webflow CMS. Publishing flow: 1. Generate content JSON against schema 2. Render to HTML/markdown via renderer 3. POST to Webflow CMS API: POST /v2/collections/{collection_id}/items 4. Publish item: POST /v2/collections/{collection_id}/items/{item_id}/publish

Required fields for Webflow blog item (to be confirmed with API key): - name (post title) - slug (URL slug) - body (HTML content) - meta-title, meta-description (SEO fields) - published (boolean)