TL;DR
- →pSEO — generating hundreds to tens of thousands of pages from one template + a database — remains the single best zero-paid-ads acquisition channel for solo founders in 2026, but only if every page clears Google's post-March-2024 value floor.
- →The winning code-first stack: Next.js (App Router + ISR) + Supabase Postgres + Claude/GPT for content + Vercel + IndexNow/Indexing API + Search Console API. No-code teams replicate ~80% with Webflow CMS + Airtable + Whalesync + Clay.
- →Your first 100 customers won't come from 10,000 pages. They come from 100–300 ruthlessly intent-matched pages, one winning template, one free embedded tool per page, and a hub-and-spoke link graph. Ship 100, get them indexed, kill the dead 30%, then scale.
Section 1
What pSEO Actually Is (and When NOT to Use It)
The mental model: URL pattern + Template + Dataset = N pages.
| Company | URL Pattern | Pages | Est. Monthly Organic |
|---|---|---|---|
| Wise | /currency-converter/{from}-to-{to}-rate | ~260,000 | ~60M (~90% from pSEO) |
| Zapier | /apps/{app}/integrations/{app2} | 50,000+ | 5.8M |
| Canva | /templates/{type}, /create/{thing}, /{locale}/... | ~720,000 | ~38M pSEO / 270M total |
| Nomad List | /in/{city}, /cost-of-living-in-{city} | ~10,000+ | ~50K |
| BeamJobs | /resumes/{job}-resume-examples | 2,000+ | ~557K |
| Wise (SWIFT) | /swift-codes/{bank}/{country} | 120,000+ | 2M+ |
The decision framework — when NOT to use pSEO
Don't do pSEO if
• No data moat — your dataset is identical to 50 competitors'.
• No clear keyword pattern with combined long-tail volume.
• Your product is a brand/awareness play (luxury, $250K ACV deals, founder-led).
• You cannot offer interactivity, real-time data, UGC, or proprietary insight on each page.
Do pSEO if
• You have structured product data (integrations, templates, categories, locations, jobs, codes, comparisons).
• Long-tail patterns exist — search '[head term] [modifier]' returns thousands of low-volume queries.
• Each page can deliver something unique: live calculator, downloadable artifact, real reviews, embedded tool.
Section 2
The pSEO Mindset: Templates, Variables, and the Value Floor
The mindset shift: stop thinking "articles." Start thinking content units — composable Lego blocks of static + dynamic content driven by variables.
{static intro} + {dynamic data table} + {AI commentary} + {static methodology} + {dynamic FAQ} + {static CTA}The Value Floor (post-March-2024 doctrine)
Google's March 2024 core update + spam policies introduced three killers: scaled content abuse, expired domain abuse, and site reputation abuse ("parasite SEO"). Per Google's official Search Central Blog (April 26, 2024), the March 2024 core update produced "45% less low-quality, unoriginal content in search results, versus the 40% improvement we expected." The August 2025 spam update was a separate, narrower enforcement action targeting all three abuses.
Practical engineering rule: each page should hit 3 of 5: live data, embedded interactive tool, UGC/reviews, original aggregation/analysis, unique media (chart, image, video).
Section 3
Keyword Research for pSEO: Scalable Patterns
You're not looking for keywords. You're looking for patterns with combined demand.
| Pattern | Example | Best for |
|---|---|---|
| [tool] alternatives | Notion alternatives | B2B SaaS |
| [A] vs [B] | Asana vs Monday | B2B SaaS |
| [tool] integrations / [A]+[B] integration | Slack Salesforce integration | B2B integration plays |
| [city] + [service] | SEO agency in Austin | Local / marketplace |
| [role / industry] + tool | CRM for real estate | Vertical SaaS |
| convert [X] to [Y] | convert PDF to Word | Utilities, fintech |
| [number] best [thing] | 10 best invoicing tools for freelancers | Affiliate / comparison |
| [job] resume example | Marketing manager resume example | Career tools |
| [product] templates | Pitch deck templates | Productivity SaaS |
| how to [verb] in [tool] | Create custom field in Salesforce | Demo SEO |
Validation workflow (1 hour, free-ish)
- Pick a pattern. List 50 plausible variable values.
- Drop 10 into Google Keyword Planner (free with Ads account).
- Drop 5 into Ahrefs Free Keyword Generator or Keywords Everywhere (~$2.50/mo).
- Search 5 queries manually in Google. If the top 10 is 100% giants (Reddit, Wikipedia, G2), walk away. You want SERPs with a mix of mid-tier sites.
- Glimpse (free Chrome extension on Google Trends) for trend signal.
- AnswerThePublic for related question patterns → use as FAQ blocks.
- Google Search Console — Performance > Queries filtered to >5 impressions, sort by impressions. Patterns often hide in your existing data.
Competitor reverse-engineering
In Ahrefs/Semrush: enter a successful pSEO competitor → Top pages → sort by traffic → look for URL patterns repeating (e.g., /apps/*/integrations/* for Zapier). Copy the pattern, not the keywords.
Section 4
Database / Data Layer Setup
Supabase + Postgres schema (code-first)
create table pages (
id uuid primary key default gen_random_uuid(),
slug text unique not null, -- 'usd-to-eur', 'kl1234-ams-lhr-2026-02-15'
template_type text not null, -- 'integration' | 'comparison' | 'currency' | 'city'
primary_keyword text not null,
variables jsonb not null, -- { from:'USD', to:'EUR', live_rate:1.08 }
ai_content jsonb, -- { intro, commentary, faq }
meta_title text,
meta_description text,
status text default 'draft', -- draft | published | noindex | killed
last_data_refresh timestamptz,
published_at timestamptz,
impressions_28d int default 0,
clicks_28d int default 0,
position_28d numeric,
created_at timestamptz default now()
);
create index on pages (template_type, status);
create index on pages (last_data_refresh);
create index on pages using gin (variables);
create table page_links (
source_id uuid references pages(id),
target_id uuid references pages(id),
link_type text, -- 'related' | 'parent_hub' | 'comparison'
score numeric,
primary key (source_id, target_id)
);Data sourcing playbook
| Source | When to use | Tools |
|---|---|---|
| Internal product data | Best moat — your integrations, templates, users | Direct DB pull |
| Public APIs | Currency, weather, jobs, flights, stock | API keys + cron |
| Public datasets | Cities, ZIP codes, ISO codes, professions | Kaggle, data.gov, GitHub |
| Web scraping | Competitor specs, public reviews | Playwright + Python, Apify, Clay |
| UGC | Reviews, comments, community posts | Thin submission form via Tally |
| Manual + AI enrichment | When precision matters | Clay's Claygent, or Python + Claude script |
Section 5
Template Design and Content Architecture
The 7-block template (passes the Value Floor)
- H1 with the exact keyword.
- Live data block (non-negotiable) — the calculator, the price, the integration spec, the map.
- Short intent-matched intro (50–100 words, AI-generated with constraints, fact-checked).
- Comparison / data table (dynamic, e.g., bank vs. Wise fees, feature-by-feature).
- 2–4 unique content sections (AI-generated with proprietary data injected via RAG).
- FAQ block (3–6 Qs, mixed dynamic + static, with FAQPage schema).
- CTA block — embedded signup, free tool, downloadable asset.
Static vs dynamic ratio
Section 6
Tech Stack and Tooling
The reference architecture
┌─────────────────────────────────────────────────────┐
│ Data Sources │
│ - Internal Postgres (product data) │
│ - External APIs (rates, weather, jobs) │
│ - Scrapers (Python + Playwright on cron) │
└─────────────────────────┬───────────────────────────┘
│ nightly cron
▼
┌─────────────────────────────────────────────────────┐
│ Supabase Postgres (pages, page_links, raw_data) │
│ + pgvector for RAG embeddings + Row-Level Security│
└──────────┬──────────────────────────┬───────────────┘
│ on-publish trigger │ ISR fetch
▼ ▼
┌──────────────────────┐ ┌──────────────────────────┐
│ Content Generation │ │ Next.js App Router │
│ - Claude API │ │ - /[template]/[slug] │
│ - Prompt + RAG │ │ - generateStaticParams() │
│ - Quality scorer │ │ - revalidate: 86400 │
└──────────┬───────────┘ │ - dynamic sitemap.xml │
│ writes back └─────────┬────────────────┘
▼ │
pages.ai_content │ deploy
▼
┌──────────────────────────────┐
│ Vercel Edge (+ Cloudflare) │
└─────────┬────────────────────┘
▼
┌─────────────────────────────────────┐
│ IndexNow + Google Indexing API │
│ + GSC API (perf metrics back) │
└─────────────────────────────────────┘Next.js dynamic route with ISR (minimum viable pSEO)
// app/[template]/[slug]/page.tsx
import { createClient } from '@supabase/supabase-js'
import { notFound } from 'next/navigation'
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.SUPABASE_SERVICE_KEY!
)
export const revalidate = 86400 // 24h ISR
export async function generateStaticParams() {
const { data } = await supabase
.from('pages')
.select('template_type, slug')
.eq('status', 'published')
.order('impressions_28d', { ascending: false })
.limit(1000)
return data?.map(p => ({ template: p.template_type, slug: p.slug })) ?? []
}
export async function generateMetadata({ params }) {
const { data } = await supabase
.from('pages')
.select('meta_title, meta_description, slug')
.eq('slug', params.slug)
.single()
if (!data) return {}
return {
title: data.meta_title,
description: data.meta_description,
alternates: { canonical: `https://yoursite.com/${params.template}/${data.slug}` },
}
}
export default async function Page({ params }) {
const { data: page } = await supabase
.from('pages').select('*')
.eq('slug', params.slug).eq('status', 'published').single()
if (!page) notFound()
return (
<article>
<Hero data={page.variables} />
<LiveTool data={page.variables} />
<Intro html={page.ai_content.intro} />
<DataTable rows={page.variables.comparison_rows} />
<Commentary html={page.ai_content.commentary} />
<FAQ items={page.ai_content.faq} />
<CTA />
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(buildSchema(page)) }}
/>
</article>
)
}Dynamic sitemap (segmented)
// app/sitemap.ts
import type { MetadataRoute } from 'next'
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const { data } = await supabase
.from('pages').select('slug, template_type, published_at')
.eq('status', 'published')
return data!.map(p => ({
url: `https://yoursite.com/${p.template_type}/${p.slug}`,
lastModified: p.published_at,
changeFrequency: 'weekly',
priority: 0.7,
}))
}sitemap-{template}.xml per template + a sitemap index. GSC will tell you which template is the indexing problem.Open-source starter templates
- •agamm/pseo-next — github.com/agamm/pseo-next. Next.js 13 + Prisma + Postgres + ISR + next-sitemap + JSON-LD. Demonstrates the exact
/{variant}/{slug}pattern with Playwright E2E. - •vercel/next.js examples/with-supabase — Official starter. Bootstrap with
npx create-next-app --example with-supabase. - •FlyClaim.AI architecture writeup (Kamal Rifai, DEV.to). Documents a 5,000-page Next.js + Supabase + Claude + Make.com build on free tiers.
No-code alternatives
| Stack | Cost | Capacity | Best for |
|---|---|---|---|
| Webflow CMS + Airtable + Whalesync | ~$60–200/mo | ~10K items | Design-heavy B2C |
| Framer CMS | ~$25/mo | ~1K items | Landing pages, MVPs |
| WordPress + Rank Math + Python uploader | ~$15/mo + hosting | 100K+ | Content sites |
| Astro + Airtable + Node script | ~$0 + Cloudflare | Unlimited (static) | Devs who prefer SSGs |
Section 7
Content Generation at Scale (Without Triggering Spam Policies)
The RAG-powered generation pipeline
# generate.py — runs as cron via GitHub Actions or Supabase Edge Function
import os, json
from supabase import create_client
from anthropic import Anthropic
sb = create_client(os.environ["SUPABASE_URL"], os.environ["SUPABASE_KEY"])
claude = Anthropic()
def build_context(page):
"""Pull facts NO competitor has access to."""
return {
"live_data": fetch_live_metrics(page["variables"]),
"internal_usage_stats": query_product_db(page["variables"]),
"competitor_specs": page["variables"].get("comparison_rows"),
"user_reviews_excerpts": fetch_recent_reviews(page["primary_keyword"]),
}
PROMPT = """You are writing one section of a programmatic landing page.
KEYWORD: {keyword}
TEMPLATE: {template_type}
VARIABLES: {variables}
PROPRIETARY CONTEXT (use this — do not invent):
{context}
Constraints:
- 120–180 words for intro, 250–400 for commentary, 4 Q&A pairs for faq.
- Cite ≥2 specific numbers from the proprietary context.
- Do NOT use: "in today's fast-paced world", "in the digital age",
"look no further", "game-changer".
- 9th-grade reading level. Short sentences.
- If you cannot say something specific and useful, output SKIP.
Return JSON: { "intro": "...", "commentary": "...", "faq": [...] }
"""
def quality_score(content, ctx) -> float:
score = 0
for n in ctx.get("live_data", {}).values():
if str(n) in content: score += 1
for banned in ["fast-paced", "in today's", "game-changer"]:
if banned in content.lower(): score -= 1
return score
for page in sb.table("pages").select("*").eq("status", "draft").execute().data:
ctx = build_context(page)
msg = claude.messages.create(
model="claude-sonnet-4-6",
max_tokens=2000,
messages=[{"role": "user", "content": PROMPT.format(
keyword=page["primary_keyword"],
template_type=page["template_type"],
variables=json.dumps(page["variables"]),
context=json.dumps(ctx),
)}],
)
content = json.loads(msg.content[0].text)
if quality_score(json.dumps(content), ctx) >= 2:
sb.table("pages").update({
"ai_content": content, "status": "published",
"published_at": "now()"
}).eq("id", page["id"]).execute()
else:
sb.table("pages").update({"status": "needs_review"}).eq("id", page["id"]).execute()AI tooling shortlist (May 2026 pricing)
| Tool | Use | Pricing |
|---|---|---|
| Claude API (Anthropic) | Best long-form quality. Haiku 4.5 / Sonnet 4.6 / Opus 4.7 | $1/$5 · $3/$15 · $5/$25 per 1M tokens |
| GPT-4o / GPT-5 (OpenAI) | Versatile, faster | Comparable tier |
| Gemini 2.5 Pro | Long-context, multimodal | Comparable tier |
| Byword | Bulk pSEO generation with custom datasets | From ~$39/mo (credit-based) |
| Frase | Research + briefs + AI write + GEO scoring | From $45/mo |
| SurferSEO | Content scoring vs SERP NLP | $49–$99+/mo |
| Letterdrop | Programmatic + approval workflows + auto internal linking | $500+/mo (team) |
| Clay + Claygent | Data enrichment + per-row AI research | From $150/mo |
Section 8
Internal Linking at Scale
Zapier's hub-and-spoke architecture
[/apps] (mega-hub)
│
┌───────┴───────┬───────────┬──────────┐
▼ ▼ ▼ ▼
[/apps/slack] [/apps/notion] [/apps/gmail] ... ← ~7,000 app hubs
│
├── /apps/slack/integrations/notion ← spokes (long-tail pages)
├── /apps/slack/integrations/gmail
└── ...Automated related-page algorithm (SQL)
insert into page_links (source_id, target_id, link_type, score)
select
p1.id, p2.id, 'related',
jsonb_array_length(
(select jsonb_agg(k) from jsonb_object_keys(p1.variables) k
where k in (select jsonb_object_keys(p2.variables)))
)::numeric
from pages p1
cross join lateral (
select id, variables from pages p2
where p2.template_type = p1.template_type
and p2.id != p1.id and p2.status = 'published'
order by random() limit 8
) p2
on conflict do nothing;For semantic relatedness: store pgvector embeddings of each page's primary content, use cosine similarity. Free with Supabase pgvector.
Section 9
Indexing and Crawlability for Thousands of Pages
The 6-step indexing protocol
- Sitemap segmentation — one sitemap per template, max 50,000 URLs per file, plus a sitemap index. Submit each separately in GSC to diagnose per-template indexing rates.
- robots.txt — allow /sitemap*.xml and page paths; block /api/, /admin/, search result URLs.
- IndexNow — supported by Bing/Yandex/Seznam. Generate UUID key, host at /{key}.txt, POST URLs to api.indexnow.org/indexnow. Up to 10,000 URLs per request.
- Google Indexing API — officially for JobPosting and BroadcastEvent schema; in practice broadly used. Default 200/day, requestable to 2,000+. Treat as a grey-hat-but-effective accelerator for top 200 pages.
- Manual GSC URL Inspection → Request Indexing for top 10–30 highest-value pages.
- 5–20 high-quality backlinks to hub pages (HN, ProductHunt, Indie Hackers, niche newsletters). Without backlinks, sitemaps alone get ignored on a new domain.
Index-status monitoring at scale (GSC API → Supabase)
// sync-gsc.ts — nightly cron
import { google } from 'googleapis'
const sc = google.searchconsole('v1')
const res = await sc.searchanalytics.query({
siteUrl: 'sc-domain:yoursite.com',
requestBody: {
startDate: '2026-04-01', endDate: '2026-04-28',
dimensions: ['page'], rowLimit: 25000,
},
auth: oauthClient,
})
for (const row of res.data.rows ?? []) {
await supabase.from('pages').update({
impressions_28d: row.impressions,
clicks_28d: row.clicks,
position_28d: row.position,
}).eq('slug', extractSlug(row.keys![0]))
}Find dead pages
select slug, template_type from pages
where published_at < now() - interval '90 days'
and impressions_28d < 10 and clicks_28d = 0
order by template_type;
-- These → noindex or kill.Section 10
Conversion Optimization on pSEO Pages
The best pSEO pages aren't articles — they're product surfaces disguised as content.
| Play | Examples | When |
|---|---|---|
| Embedded free tool | Wise converter, Canva editor in-page | B2C, product usable in <30s |
| Lead magnet | Notion template downloads, Webflow cloneables | B2B with email gates |
| In-page interactive demo | Storylane demos on every pSEO page | B2B demo-led growth |
| Free trial with URL-param prefill | /usd-to-eur → prefill signup with USD/EUR | Self-serve SaaS |
| Email capture above the fold | Nomad List's join-Slack overlay | Community products |
| Comparison upgrade | 'We rank #4 here, but for X use case…' | B2B comparison pages |
Section 11
Measuring pSEO Performance
The 8 metrics that matter
| Metric | Definition | Target |
|---|---|---|
| Pages submitted vs indexed | Per template | >70% indexed within 90 days |
| Average position by template | Across the template's URLs | Kill templates averaging >30 |
| Clicks per indexed page | Total clicks / indexed pages | Below 0.5 = thin/wrong intent |
| CTR vs SERP position benchmark | searchanalytics.query with dimensions=['query','page'] | Match or exceed your category benchmark |
| Time on page + scroll depth | GA4 / PostHog | Within 30% of manual content |
| Conversion rate per template | Trials/signups / sessions | Compare across templates; prune low ones |
| CAC per template | (your time + AI tokens) ÷ paid customers | Below paid-channel CAC |
| Crawl budget consumption | GSC > Crawl Stats | Googlebot hitting >10% of URLs/month |
Weekly iteration loop
[GSC API sync → tag winners/losers]
→ [Top winners → 2x that pattern with more variables]
→ [Impressions but 0 clicks → rewrite title/meta]
→ [0 impressions after 90 days → noindex or kill]
→ [<30% indexing per template → improve template depth, resubmit]status = 'noindex', remove from sitemap. Index hygiene is the #1 underrated pSEO lever post-2024.Section 12
Real Case Studies (With Hard Data)
Pieter Levels — Nomad List + Remote OK
- •Solo founder, PHP + jQuery + SQLite. Each city filter combination generates an indexable URL.
- •~50,000 monthly visits to Nomad List from pSEO city pages (Practical Programmatic).
- •Nomad List hit $5.3M revenue in November 2024 per GetLatka, up from $704K in November 2023.
- •Remote OK ~$2M ARR. Combined Levels personal income: ~$3M/yr.
- •Lesson: a solo dev with PHP + a CSV of cities + crowdsourced data built a multi-million-dollar product. Speed > stack.
Zapier
- •50,000+ integration pages, ~5.8M monthly organic visits.
- •URL patterns: /apps/{app} (hub) and /apps/{app1}/integrations/{app2} (spoke).
- •Over 90% of visits from non-brand searches. Blog contributes ~67% of organic.
- •Flywheel: more apps join → more pages → more traffic → more apps want to join.
Wise (TransferWise)
- •Custom headless CMS 'Lienzo.' From 7,000 pages in 2015 to 1.7M indexed pages across 20 markets and 10 languages in under 24 months.
- •~90% of organic traffic from pSEO. Currency converter pages alone ~43.5M visits/mo. SWIFT code pages ~2M.
- •Published 213,746 new pages in 2024 — 173,781 → 387,527 URLs, 15.8M → 30.5M visitors.
- •They run no link-building — pure content velocity + brand authority.
Canva
- •24,000 templated English pages × ~30 locales ≈ 720,000 URLs. ~38M monthly pSEO visits (270M total).
- •Three page types: /templates/* (13.1M visits), /create/* (6.4M), /features/* (3.2M).
- •The AI image generator page (launched during the ChatGPT wave) now ranks #1 and drives ~340K visits/month.
G2 / Capterra — the cautionary tale
- •Pure pSEO businesses. G2 dominates '{software A} vs {software B}' SERPs with auto-generated comparison pages.
- •Per Ahrefs' Sept 9 2024 study by Ryan Law, G2 lost 65.74% of estimated monthly organic traffic from August 2023 to August 2024 — 4,397,226 → 1,506,545 monthly visits.
- •Even mature pSEO sites get hammered when templates are too text-heavy and add no unique value beyond what's in the SERP itself.
BeamJobs
- •~2,000+ profession-specific resume example pages. ~557K monthly traffic.
- •Solo-founder-led. Stack: WordPress + a custom Python tool to batch-publish 50 articles at once with original content layered on top.
Storylane (B2B SaaS demo-led pSEO)
- •Madhav Bhandari, Head of Marketing, on Exit Five podcast (Oct 2024): 25,000 → 220,000+ monthly visitors in 6 months via 1,500+ programmatically-generated demo-led tutorial pages.
- •Pattern: 'how to {do thing} in {tool}.'
- •1.2% signup conversion from pSEO vs 0.8% from blogs, traffic 10x higher. 'Tripled PLG revenue.'
Angel Match / Investor Hunt (Rashid Khasanov)
- •Bootstrapped portfolio at ~$42K MRR (Angel Match $37.3K + Investor Hunt $4.5K + smaller bets).
- •Stack: Node.js + DigitalOcean + Stripe + 110K-row angel/VC database.
- •'Angel Match was stuck at ~$5k MRR for a long time. It turned out we were deleting the pages every once in a while when we were making updates on the app. So the website couldn't compound in search traffic.'
- •Next bet: 300K journalist pages on Journalist Hunt, already generating ~100 organic clicks/day.
Senja.io
- •Two-person team (Wilson Wilson + Olly Meakings). $0 → $83K MRR / $1M ARR in 3 years 9 months, 3,000 paying customers, 100% bootstrapped.
- •Public testimonial pages = built-in pSEO surface.
- •Growth driver: SEO + PLG, in that order.
StandOut CV
- •Founder posted on Indie Hackers: $40K MRR purely from SEO.
- •'Built programmatic publishing: I had a Python tool made to auto-generate repetitive CV example structures (doctor, nurse, accountant etc.), then batch upload 50 articles at once, so writers could add original content.'
- •1,000+ articles, mostly long-form top-of-funnel.
FlyClaim.AI (technical proof point)
- •5,000+ auto-generated pages on Next.js 16 + Supabase + Claude.
- •5,700 URLs across 5 languages from 1,134 underlying flights.
- •No revenue disclosed — the proof is the infrastructure cost of pSEO has collapsed to zero.
Section 13
The 10 Mistakes That Kill pSEO
- 1Thin templates (keyword + boilerplate). → Hit the Value Floor: live data + UGC/proprietary insight.
- 2Index bloat — 50K published, 45K unindexed, dragging the domain. → Aggressive noindex after 90 days of zero impressions.
- 3Duplicate content across templates — 'alternatives' 80% identical to 'comparison.' → Distinct templates with different structures and angles.
- 4AI hallucination at scale — Claude invents an integration that doesn't exist. → Ground every claim in RAG context; quality scorer rejects pages without ≥2 verifiable facts.
- 5Wrong intent matching — 'best X' pages where SERP wants tutorials. → SERP-check every template before scaling >50 pages.
- 6Site reputation abuse — letting a third-party affiliate program publish on your domain. → Don't outsource your content surface.
- 7Scaled content abuse — pure rephrased AI with no data substrate. → If your page would not exist without AI, it's at risk.
- 8Building yourself in as #1 in your own 'best [category]' pages without disclosure. SpamBrain 2025 demotes this. → Rank honestly; disclose bias.
- 9No backlinks. → Get 5–20 high-quality links to hub pages before scaling beyond 200 pages.
- 10No pruning loop. → Quarterly pruning calendar; treat dead pages as liabilities.
Section 14
pSEO for B2C Self-Serve Products
B2C = high volume, low price ($5–$50/mo or one-time), fast decision cycle. The playbook:
- Volume play — 5,000–50,000 pages is the right scale (if value floor holds).
- Free embedded tools as primary CTA — calculator/generator/converter delivering value in <10 seconds on the page (Wise, Canva, BeamJobs).
- Viral loops — every output the user creates contains "Made with [your product]" — Canva templates, Senja testimonial walls, Storylane demos. The pSEO page acquires; the artifact distributes.
- Optimize for transactional verbs — create logo, make resume, generate password, convert pdf to word.
- Locale expansion is the easiest 5x — Canva added 15.5M visits/mo by translating templates into 30 locales. Use subdirectories (/es/, /fr/) with hreflang.
- Klaviyo or Customer.io for the email funnel after capture.
Section 15
pSEO for B2B SaaS
B2B = lower volume, higher ACV ($50–$5,000/mo), longer cycle, research-driven.
| Template | Pattern | Why it works |
|---|---|---|
| Alternatives | {Competitor} alternatives | High commercial intent — buyer is shopping |
| Comparisons | {You} vs {Competitor} | Bottom-funnel — buyer is deciding |
| Integrations | {You} {Other} integration | Captures buyers in the partner ecosystem |
| Use cases | {Tool} for {industry/role} | Vertical positioning |
| Demo SEO | How to {do thing} in {competitor tool} | Captures users mid-task; show your product as the better way |
| ROI calculators | {Tool} ROI calculator | Sales enablement + SEO asset |
| Industry pages | {Product} for {industry} | 'CRM for real estate' |
| Template libraries | {Asset} template | Lead magnets |
Section 16
The Full pSEO Operating System
Discovery
- •Reverse-engineer 3 pSEO competitors in Ahrefs.
- •List 5 candidate patterns with volume validation.
- •Pick ONE pattern to pilot.
- •SERP-check 5 queries manually — if top 10 is 100% giants, walk away.
Data
- •Source dataset (API/scrape/manual). 50–200 rows minimum.
- •Create Supabase tables. Populate. Validate row-by-row.
- •Verify uniqueness — would each row produce a meaningfully different page?
Template
- •Build Next.js dynamic route + ISR.
- •Implement all 7 blocks (H1, live data, intro, table, commentary, FAQ, CTA).
- •Add JSON-LD schema (SoftwareApplication / FAQPage / BreadcrumbList).
- •Write & test master AI prompt with 5 sample rows.
Pilot (100 pages)
- •Generate 100 pages. Manually review EVERY one.
- •Submit sitemap. IndexNow + Google Indexing API.
- •Get 3–5 backlinks (HN, IH, ProductHunt, niche newsletter).
- •Document baseline metrics before traffic arrives.
Measure
- •Daily GSC API sync to Supabase.
- •Day 60: pages with impressions but no clicks → rewrite title.
- •Day 90: pages with 0 impressions → noindex.
- •Tag winning patterns; document what made them win.
Scale
- •If indexing >70% and avg position <30 → scale to 1,000s.
- •Add second template targeting adjacent pattern.
- •Build hub-and-spoke link graph.
- •Set quarterly pruning calendar.
JSON-LD examples (drop-in for every pSEO page)
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Acme CRM for Real Estate",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web",
"offers": { "@type": "Offer", "price": "49", "priceCurrency": "USD" },
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.7", "reviewCount": "286" }
}{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How do I convert USD to EUR using Wise?",
"acceptedAnswer": { "@type": "Answer",
"text": "Enter the USD amount in the converter; Wise uses the mid-market rate plus a transparent fee shown before you confirm."
}
}]
}{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Apps", "item": "https://yoursite.com/apps" },
{ "@type": "ListItem", "position": 2, "name": "Slack", "item": "https://yoursite.com/apps/slack" },
{ "@type": "ListItem", "position": 3, "name": "Notion Integration", "item": "https://yoursite.com/apps/slack/integrations/notion" }
]
}Section 17
System Prompt: Programmatic SEO + AI Automation (Copy-Paste)
Drop the prompt below into ChatGPT, Claude, Gemini, or any system that accepts a system prompt. It primes the model to think and answer like a Google Search Quality Engineer × pSEO architect × AI automation operator — so every reply is architecture-level, scalable to 10K–10M URLs, and grounded in Crawl → Render → Index → Rank → Convert. Best for: generating pSEO pages at scale for any Product, B2B, or B2C use case.
"System Loaded." — then send your actual task (e.g., "design the URL pattern and dataset schema for 50,000 city × service pages").# PROGRAMMATIC SEO + AI AUTOMATION SYSTEM PROMPT
> **Best for:** Generating pSEO pages at scale for any Product, B2B, or B2C use case
---
## System Prompt
You are now a **Full-Stack Technical SEO Engineer + Programmatic SEO Architect + AI Automation Builder + Search Systems Engineer + Performance Specialist + Growth Technologist**.
You operate with the mindset, tooling, engineering fluency, diagnostic depth, and system-level thinking of a **Google Search Quality Engineer**, combined with the creativity and execution velocity of a **pSEO growth hacker** and an **AI-native automation operator**.
---
## Core Operating Rules
Every answer you provide must be:
- Deeply technical and architecture-level
- System-driven and template-first
- Scalable to **10,000–10,000,000 URLs**
- Grounded in real-world search engine behavior
- Optimized for: **Crawl → Render → Index → Rank → Convert**
- Automation-ready and reproducible in engineering environments
You must **NEVER** provide:
- Generic SEO tips
- Surface-level suggestions
- Beginner explanations
- Content-writer-style answers
---
## Section 1 — Technical SEO Engineering
### 1.1 Robots.txt Engineering
- Wildcard handling and multi-environment rules (dev/stage/prod)
- Blocking faceted URLs, infinite scroll endpoints, private directories
- Crawl-delay logic and user-agent prioritization
- Emergency deindexation protocols
### 1.2 XML Sitemap Systems
- Dynamic generation from database
- Segmented sitemaps (products, categories, locations, pSEO templates)
- Index file orchestration and lastmod versioning strategies
- Video, image, hreflang sitemaps
- Sitemap throttling to control crawl behavior
### 1.3 Indexation Management
- Canonical clusters and noindex governance systems
- Soft 404 detection and paginated content rules
- Parameter handling via GSC and canonical logic
- Merging, pruning, and consolidating page sets
- Index bloat prevention workflows
### 1.4 Large-Scale Site Architecture
- Designing URL structures for 10k–10M pages
- Routing logic for pSEO templates
- Semantic folder hierarchies
- Deduplication of template variants
- Content segmentation by intent
### 1.5 Internal Linking Architecture
- Algorithmic internal linking engines
- Link scoring systems with contextual anchors from embeddings
- Superhubs and cluster hubs
- Anti-orphan enforcement rules
- Dynamic "related content" models powered by vectors
### 1.6 Rendering & JavaScript SEO
- SSR / SSG / ISR evaluation
- Hydration mismatch debugging
- Render-blocking script elimination
- Dynamic content parity enforcement
- Shadow DOM and lazy-loaded UI troubleshooting
### 1.7 Core Web Vitals Engineering
- **LCP:** Server time, TTFB, resource preloading
- **CLS:** Layout reflow prevention
- **INP:** JS main-thread optimization
- Field vs lab data reconciliation
- Regression monitoring across templates
### 1.8 Performance Optimization at Scale
- Brotli + HTTP/3
- Critical CSS extraction and dead JS elimination
- Image CDNs with responsive srcsets
- font-display and unicode-range strategies
- Caching layers: edge, CDN, memory cache
---
## Section 2 — Programmatic SEO (pSEO) Architecture
### 2.1 Keyword Pattern Engineering
- Head term + modifier matrices
- Intent segmentation for each modifier category
- Entity relationship mapping
- Eliminating low-value combinations
- Cluster layering: primary / secondary / tertiary modifiers
### 2.2 Dataset Engineering
- Normalizing CSV / DB / API datasets
- Deduplication and missing-value handling
- Anomaly detection and field-level data validation
- Generating synthetic attributes via models or embeddings
### 2.3 Template Systems
Every pSEO template must contain:
| Component | Requirement |
|---|---|
| Title / H1 / Meta | Parameterized from dataset |
| Intro Logic | Intent-matched per modifier |
| Data Modules | Dynamic, pulled from dataset |
| Comparison Tables | Auto-generated |
| Maps / Stats / Dynamic Blocks | Injected per variant |
| CTA | Decision-tree-driven |
| Schema | JSON-LD, auto-injected |
| Internal Links | Rule-based, auto-generated |
| Value Floor | Minimum uniqueness score enforced |
### 2.4 Safeguards
- Auto-noindex thin variants
- Automatic canonicalization of template families
- Duplicate-content detection via embeddings
- Conflict resolution between templates
- Scheduled: `dataset refresh → template regen → selective redeploy`
---
## Section 3 — AI Generation Systems & Automation
### 3.1 Prompt Engineering at Template Level
- Intent-matched prompts aligned to SERP patterns
- Entity-complete content generation
- Hallucination prevention gates
- Keyword variation orchestration
- Brand-tone injection
### 3.2 RAG + Embedding Systems
- Vector indexing of proprietary datasets
- Context-window optimization
- Semantic stitching and data-consistency validation
- Retrieval scoring
### 3.3 AI Quality Assurance
Auto-score content for:
- Uniqueness and similarity drift
- Factual alignment with dataset
- SERP pattern match
- Entity completeness
- Toxicity / spam heuristics
### 3.4 SEO Automation Workflows
Automate:
- Keyword clustering
- Opportunity discovery from GSC
- Dead pages detection
- Schema creation and meta generation
- Internal linking graphs
- Content briefs and competitive gap analysis
### 3.5 AI Agents / API Workflows
Build agents that:
- Pull data from Search Console, GA4, Ahrefs
- Analyze patterns and output recommended changes
- Orchestrate automated re-generation of content
- Deploy pages programmatically
---
## Section 4 — Engineering & DevOps Integration
### 4.1 Coding Fluency
Reason and build in:
- Node.js / TypeScript / Python
- SQL for dataset transformations
- React / Next.js or Vue / Nuxt (SSR / SSG / ISR)
- Liquid / Handlebars / CMS template engines
### 4.2 Deployment & Hosting Awareness
- CDN layer behavior (Fastly, Cloudflare)
- Cache invalidation rules and edge redirects
- robots headers on edge
- AWS / GCP hosting SEO implications
- Multi-region latency impact on LCP
### 4.3 Version-Control SEO
Git-based management of:
- Schema and canonical rules
- Redirect rules and robots
- Template variations and experiment branches
---
## Section 5 — Schema, Entity SEO & Knowledge Graph Engineering
### 5.1 Schema Templates (JSON-LD)
| Page Type | Schema |
|---|---|
| Blog / Guide | Article |
| FAQ Pages | FAQ |
| Tutorial | HowTo |
| Product | Product + AggregateRating |
| SaaS Tool | SoftwareApplication |
| Local | LocalBusiness |
| All Pages | Breadcrumb + WebSite |
### 5.2 Knowledge Graph Optimizations
- Entity extraction and salience building
- Entity → attribute → relationship chains
- Internal linking for entity reinforcement
- Co-occurrence pattern alignment
- Fact-level verification
### 5.3 Multi-lingual & Hreflang Engineering
- Canonical + hreflang interaction
- Reciprocal mapping and regional variations
- Translation consistency systems
- Language dataset normalization
---
## Section 6 — Analytics, Observability & Experimentation
### 6.1 SEO Observability — Monitor:
- Crawlability and index coverage
- Rendering success rates
- Template-level performance
- Keyword movement volatility
- CWV regressions
- Link velocity and cannibalization
- CTR outliers
### 6.2 Experimentation Frameworks
- Template-level A/B tests
- Schema variations and content depth experiments
- Internal linking rewiring
- Title / meta rewrites and regression analysis
### 6.3 Diagnostics — Debug:
- Sudden deindexation
- Path-level crawl traps
- JS rendering inconsistencies
- Soft 404 misclassifications
- Manual action precursors
- Traffic drop causality
---
## Section 7 — Content Architecture & CRO Engineering
### 7.1 Intent-Driven Content Structures
Always build:
- Question blocks and feature tables
- Comparison matrices and pros/cons
- Context-aware CTAs
- UGC or review integration
- Structured FAQs
### 7.2 CRO for Organic Traffic
- Trust architecture
- Scroll depth analysis
- Heatmap-driven template improvements
- CTA variation across templates
- Conversion funnel mapping
### 7.3 E-E-A-T Enforcement
- Author modeling and brand entity reinforcement
- Content provenance signals
- External citations and internal trust signals
---
## Section 8 — Backlink Systems & Authority Engineering
### 8.1 Programmatic Link Asset Creation
- Datasets, calculators, location stats hubs
- Comparison engines
- City or product-level insights pages
### 8.2 Scalable Prospecting Systems
- Unlinked mentions detection
- Broken link mapping
- Competitor link graph scraping
- Authority-gap modeling
### 8.3 Outreach Automation
- Personalized AI email generation
- Dynamic reference insertion
- Outreach sequencing
- Link velocity monitoring
---
## Operating Principles
| Principle | Rule |
|---|---|
| Scale | Always think 10,000+ URLs minimum |
| System-first | Never think page-by-page |
| Automation | Always propose automated or semi-automated solutions |
| Full Funnel | Crawl → Render → Index → Rank → Convert |
| Edge Cases | Always include failure modes |
| SERP-Aligned | Always consider intent and entity completeness |
| Performance | Always apply performance engineering principles |
| Safety | Always respect Google spam and duplication constraints |
| Data Quality | Always consider dataset drift and refresh cycles |
---
> **Activation:** If you understand your role, respond with: `"System Loaded."`
> After that, I will begin giving you tasks.Recommendations
Staged Rollout Recommendations
Stage 0 — Pre-launch (week 1)
Validate ONE pattern with combined volume >5,000/mo and a SERP that includes mid-tier sites. If you can't find that pattern, pSEO is not your channel — go founder-led sales or paid ads.
Stage 1 — Pilot (weeks 2–6)
Ship 100 pages on Next.js + Supabase. Hand-review every one. Target: >50 indexed within 30 days, average position <30 within 60 days. If not hit, fix the template, do not scale.
Stage 2 — Scale (months 2–4)
Hit 1,000–5,000 pages. Add internal linking. 10–20 backlinks. Target: 5,000+ monthly organic visits, >1% conversion to email/trial.
Stage 3 — Compound (months 5–12)
Add 2nd and 3rd templates. Locale expansion. 50,000+ visits/mo and first 100 customers.
Caveats
Caveats and Risk Disclosures
- ⚠Case-study traffic numbers are public estimates (Ahrefs/Semrush) unless founder-disclosed. Wise's "60M visits" is Ahrefs-estimated; Storylane's 220K is founder-stated.
- ⚠G2's 65.74% Aug 2023 → Aug 2024 traffic loss is from Ahrefs' Sept 9 2024 SaaS study by Ryan Law and is a live warning that even mature pSEO can be hammered.
- ⚠AI content policy risk is non-zero. Google's stance (March 2024 + Nov 2024 + Feb 2025 + Aug 2025): scale itself isn't the violation, scale without per-page unique value is.
- ⚠The Indexing API technically restricts to JobPosting/BroadcastEvent. Broader use is grey-hat; do not depend on it as your primary indexing channel.
- ⚠Indie hacker MRR claims are self-reported (Senja $1M ARR, Angel Match $42K MRR — founder-disclosed on Twitter/IndieHackers, not audited).
The One-Sentence pSEO Mandate
Build one template that satisfies one specific intent better than anything else on the SERP — then multiply it by your data.
Solo founders who execute this 90-day roadmap rigorously typically see first indexed pages within 7 days, measurable rankings by week 8, and first 100 customers by month 4–6. The infrastructure cost of pSEO has collapsed to near-zero — the moat is now in your data, your template, and your discipline.