February 5, 2026 · Variant Systems
How We Built a pSEO Engine with Claude
Our playbook for building hundreds of programmatic SEO pages without leaving Claude Code — research, strategy, and the gotchas nobody warns you about.

We ship hundreds of SEO-optimized pages targeted to reach the desired audience — research, strategy, content, engineering, and deployment — while never leaving Claude Code.
Not drafts. Not outlines. Fully written, technically validated, and deployed programmatic SEO pages, each targeting specific search intent.
This is our approach to pSEO with Claude — what works, what almost tripped us up, and what you can take away for your own strategy.
What programmatic SEO actually is
Programmatic SEO is building pages at scale around a repeatable pattern. Instead of writing one blog post and hoping it ranks, you identify a content matrix and create variations that each target different search intent.
Say you’re a design agency. Instead of one post about “web design,” you build pages for “web design for restaurants,” “web design for law firms,” “web design for dentists” — each with unique, genuinely useful content for that audience. Same core expertise, different search queries.
The math is simple. One page competes for one keyword cluster. Fifty pages compete for fifty. If each page is genuinely useful to the person searching for it, the aggregate traffic compounds.
The hard part isn’t the concept. It’s execution at scale without creating thin, repetitive content that Google penalizes. That’s where the workflow matters.
Phase 1: Research with a fast model
We start every pSEO project with Claude Haiku — the smallest, cheapest, fastest model in the Claude family. Research doesn’t need the most powerful model. It needs speed and breadth.
The research phase has four parts:
- Intent discovery — What is your audience actually typing into Google? Not what you think they’re searching for. The actual queries, with the actual language they use. People don’t search for “project management optimization strategies.” They search for “why is my team missing deadlines.”
- Keyword clustering — Group related queries together. Each cluster becomes a page. If two queries have the same underlying intent, they’re one page, not two.
- Competitive analysis — Who else ranks for these terms? How deep is their content? Where are the gaps? The best pSEO opportunities are queries with real search volume and weak existing content.
- Content differentiation — How will you make each page genuinely different from the others? This is where most pSEO fails. If your pages are just the same template with a different keyword swapped in, Google will catch it.
Haiku is perfect for this phase. It’s fast enough that you can iterate through dozens of keyword ideas in minutes, cheap enough that exploratory dead ends don’t cost you anything, and smart enough to identify patterns in search intent.
All of this research goes into a strategy document before you generate a single page. This is critical. The strategy doc is your instructions.md — it tells the more powerful model exactly what to build and why.
Phase 2: Strategy before content
The strategy doc captures everything: target audience segments, keyword clusters, content templates, differentiation angles, and internal linking patterns.
If you skip this and go straight to “generate 50 blog posts,” you get 50 posts that sound the same, target the same keywords, and cannibalize each other in search results.
Your strategy doc should define:
Unique angles per segment. If you’re building pages for different industries, each industry has different pain points. A healthcare company’s concerns are fundamentally different from an e-commerce company’s concerns, even if both need the same service. Your content should reflect that.
Template variation. Design three or four distinct content structures and rotate them across your pages. Some pages lead with the problem. Others lead with a framework. Others lead with a case study. This prevents Google from seeing a pattern that screams “programmatic content.”
Internal linking architecture. Every page should link to two or three related pages naturally. Not a generic “check out our other posts” section — actual contextual links within the content. This creates topical clusters that search engines reward.
Differentiation criteria. For each page, write down: what makes this page different from every other page we’re creating? If you can’t answer that clearly, the page shouldn’t exist.
Phase 3: Implementation in Claude Code
With the strategy locked, switch to Claude Code for implementation. This is where you stay in one environment for everything — content generation, file creation, schema changes, build validation, and deployment.
The content generation is actually the easy part when you have a good strategy doc. Feed the strategy to Claude, and it generates content that follows your angles, uses the right structure, and hits the right depth.
The engineering work around the content is where most pSEO efforts fail. Here’s what you need to get right:
Content management
If you’re adding dozens of pages to an existing site, you need a way to manage them separately from your editorial content. We use a simple boolean flag in our content schema that controls whether a post appears on the main blog index. pSEO pages are accessible via direct URL (for search traffic) but don’t flood the blog page that regular readers visit.
This is a three-line code change that makes a meaningful difference in how your site feels to human visitors.
Title tag budgets
Most sites append a brand name to the page title — “Page Title | Company Name.” That suffix eats into your character budget.
With a 60-character limit for SEO-friendly titles, a 20-character brand suffix leaves you only 40 characters for your actual keyword-rich title. Across fifty pages, that’s a lot of lost keyword space.
For pages where brand recognition isn’t driving clicks (and for most growing companies, it isn’t), drop the suffix. Your brand name is already in the URL, the Open Graph tags, and the structured data. It doesn’t need to consume the title tag too.
The publish date trap
This is the gotcha that almost nobody talks about.
If you generate fifty pages and publish them all with today’s date, you’ve just told Google exactly what happened — mass content generation. That’s the pattern their helpful content system is designed to detect.
The fix is obvious once you see it: stagger the dates. Spread your pages across a realistic publishing cadence — two to three posts per week over several weeks. Same content, dramatically different signal to search engines.
It’s a five-minute fix that prevents a real ranking penalty. Every pSEO guide should mention this. Almost none do.
The audit loop
Building content is half the work. Validating it at scale is the other half.
We run an automated SEO audit on every build that checks every page for:
- Title tag presence and length (≤60 characters)
- Meta description presence and length (50-160 characters)
- Canonical URLs
- Open Graph tags (title, description, image, URL)
- Twitter card tags
- JSON-LD structured data
- H1 tags (exactly one per page)
- Image alt text
- Minimum content word count
The audit runs as a git hook before every push. If any page fails, the deployment stops.
When you’re generating pages at scale, automated validation catches things manual review misses. Three of our titles were over the 60-character limit by one or two characters — invisible to the eye, caught instantly by the audit script.
Manual SEO checks work for ten pages. They don’t work for a hundred. Build the automation first, then scale the content.
What we’d do differently
Start smaller. Even if your strategy supports fifty pages, start with five. Publish, measure for two weeks, see what ranks, then scale what works. The temptation to ship everything at once is strong. Resist it.
Create images from day one. Pages without Open Graph images work fine in search results but look weak in social sharing — Twitter, LinkedIn, Slack previews. If you’re doing pSEO, batch-create simple OG images as part of the content pipeline.
Set up analytics dashboards before publishing. You need to know which page clusters drive the most traffic and which convert. Set up the tracking before you publish, not after.
The economics
The math makes pSEO with AI tools compelling.
Traditional content production: $200-500 per post for a capable writer, plus briefing time, review cycles, and editorial back-and-forth. Fifty posts through that pipeline is $10,000-25,000 and two to three months of calendar time.
With Claude Code: one working session per batch of content, plus your existing subscription. The marginal cost per page approaches zero.
The catch — and this is important — is that AI-generated content requires domain expertise to direct. Claude accelerates the writing. It doesn’t replace knowing what you’re talking about. Without subject matter expertise, you get content that reads like every other AI-generated SEO page: technically correct, topically shallow, and ultimately useless to the reader.
The best pSEO combines AI speed with human depth. The AI handles the scale. You handle the substance.
The playbook, summarized
- Research with a fast model. Use Haiku or equivalent for intent discovery and keyword analysis. Save the expensive models for implementation.
- Write the strategy doc first. Define your angles, templates, and linking patterns before generating any content. The strategy doc is your instructions.md.
- Build the infrastructure. Schema changes, listing controls, and automated SEO audits matter as much as the content itself.
- Stagger your dates. Don’t publish everything on the same day. Spread it across weeks for a natural publishing cadence.
- Automate your validation. SEO audits in your build pipeline catch mistakes that manual review misses.
- Ship, then iterate. Publish a small batch, measure, and expand based on what actually ranks and converts.
The tools keep getting better. The advantage goes to people who know how to direct them.
Building with AI tools — whether it’s content, code, or product? We think about this stuff a lot. If you want to compare notes, we’re always up for a conversation.