Skip to main content
Claude Code

Claude Programmatic SEO: How I Built One Skill That Ships Pages

How I run programmatic SEO with a Claude Skill after losing 5,000+ indexed pages: real quality gates, template rules, and the GSC data behind them.

7 min
Read time
1,209
Words
Published
Last revised
Engr Mejba Ahmed

Written by

Engr Mejba Ahmed

Share Article

Claude Programmatic SEO: How I Built One Skill That Ships Pages

I am qualified to write about programmatic SEO with Claude for an uncomfortable reason: Google deindexed most of my site while I was doing it wrong. In spring 2026, this site's indexed pages fell from around 7,000 to about 1,700 in a matter of weeks, and Search Console showed roughly 14,500 URLs parked in "Crawled - currently not indexed." That bucket is where programmatic pages go to die, not with a penalty notice but with silence. The Claude Skill I use today was built from that autopsy, and its most important feature is not generating pages. It is refusing to publish them.

Claude Programmatic SEO: How I Built One Skill That Ships Pages - overview of what 'crawled - currently not indexed' actually means, the programmatic surfaces i actually run

What "Crawled - currently not indexed" actually means

When Google crawls a page and declines to index it, it is telling you the page failed a value test, not a spam test. No manual action, nothing to appeal. For a programmatic surface this verdict arrives at scale: the crawler samples your template, decides the pages are interchangeable, and quietly stops indexing the pattern.

In my case the honest diagnosis had several parts, and I have written up the individual repairs elsewhere: fabricated review schema on some pages (the genuinely deserved part of the punishment), template-thin content across hundreds of others, and a long tail of AI-drafted posts that needed an 84-post surgical rewrite to fix. Recovery took from early May to late July. Three months of reduced traffic is the tuition I paid, and the skill below is the notes from that class.

The programmatic surfaces I actually run

So we are talking about the same thing: programmatic SEO here means pages generated from structured data through a template, at a scale where hand-writing each one is impossible. On this site, live right now, that is:

  • A prompt library of 854 pages, each a prompt with its own use-case writeup, FAQ, and category linking.
  • 60 concept explainers, definition-style reference pages mapped to service pages.
  • 53 agent-skill pages on my marketplace, each documenting one Claude skill.
  • A tools directory of 75 entries, config-driven from a single PHP file, deliberately rendered as one page rather than 75 thin URLs. Knowing when not to mint URLs is also programmatic SEO.

Every one of those surfaces went through a thin-content remediation pass after the crash. The prompt library alone had 594 depth sections written into it in one project. That work is what convinced me the generation step was never the problem. The bar was.

The skill, and the gates that do the real work

My seo-programmatic skill is a Markdown file in ~/.claude/skills that loads whenever I ask Claude Code to plan or audit pages at scale. The generation guidance in it is ordinary. The part that earns its keep is a table of hard thresholds, and I will quote the real ones:

Metric Threshold Action
Pages without content review 100+ Warning: require a content audit before publishing
Pages without justification 500+ Hard stop: require explicit approval and a thin-content audit
Unique content per page under 40% Flag as thin, likely penalty risk
Word count per page under 300 Flag for review

The point of encoding this in a skill rather than a checklist is that the agent enforces it on me. When I ask Claude to generate a new surface, the skill makes it assess the data source first: are there enough unique attributes per record to produce genuinely distinct pages, or will this be the same paragraph with a different noun swapped in? My skill calls that the "mad-libs" test, and failing it is exactly what put 14,500 of my URLs in the crawled-not-indexed bucket.

The other rule I now treat as non-negotiable: the data must contain something that cannot be derived from the keyword. My prompt pages survived and recovered because each one carries an actual prompt artifact plus first-hand usage notes. A page whose entire substance could be regenerated from its own title has no reason to be indexed, and Google's behavior since the scaled-content-abuse enforcement wave reflects that with increasing accuracy.

Template design: force differentiation structurally

Rules I follow when Claude and I build a page template, all learned from pages that died:

  1. Split static from dynamic honestly. Shared boilerplate is fine for navigation and CTAs. If the body is mostly shared, the surface should be one page, not N pages. That is why my tools directory is a single URL.
  2. Conditional sections beat padded sections. If a record lacks data for a section, the template drops the section. Padding it with generated filler is how every page ends up the same length and the same shape, which is a template fingerprint crawlers learn fast.
  3. Every page gets non-derivable content. For me that is the prompt text, the field-note, the code sample. Decide what yours is before generating anything.
  4. Internal linking is generated with the page, not after. Hub pages per category, three to five related items chosen by shared attributes, breadcrumb schema from the URL hierarchy. My worst pre-crash surfaces were orphans; fixing the tag-page hubs took one of my category pages from 6 linked posts to 198.

The infrastructure half nobody writes about

Programmatic SEO on your own stack means owning the plumbing. On this Laravel site that is a custom sitemap system: a scheduled generate:sitemap command plus model observers that invalidate the sitemap caches the moment content changes, so lastmod values are real instead of decorative. When I audited it, I found and merged 62 duplicate tag groups that were splitting link equity across near-identical hub pages.

Two habits that came out of the recovery: first, lastmod must track genuine content updates, because Google visibly re-crawled updated pages faster once it did. Second, watch index coverage weekly, not when traffic drops. I now run automated SEO checks on a schedule with Claude so the next regression gets caught at week one, not month three. Page speed sits underneath all of it; a crawler that gets 98ms responses (see how this site is optimized on shared hosting) crawls more and deeper than one getting three-second responses.

What I would tell someone starting a programmatic surface today

  • Validate roughly 20 keywords from the pattern by hand in the SERPs before trusting the pattern at all. If the results are dominated by major brands or the intent is scattered, the pattern is wrong, no matter what volume tools say.
  • Launch at 50 to 100 pages, not 5,000. Watch the index coverage report for six weeks. Indexed-and-impressions means scale carefully. Crawled-not-indexed means stop and fix the template, because publishing more of a failing pattern deepens the hole.
  • Put the quality gates in the tool, not in your intentions. A skill that hard-stops at unjustified scale will save you from your own deadline pressure. Mine has. If you want to build the skill itself properly, the lessons from building 30+ skills apply directly here.
  • Expect the recovery timeline to be months, not days, if you get it wrong. Google re-evaluates slowly in exactly the bucket where programmatic pages live.

See the surface this system produces

The clearest way to judge any programmatic SEO methodology is to inspect its output. The prompt library is mine: 854 pages generated and quality-gated by the exact skill and thresholds described above, post-recovery and indexed. Look at how the pages differ from each other, what each carries that its title cannot derive, and how they interlink. Then steal the structure for your own data.

Advertisement
Coffee cup

Enjoyed this article?

Your support helps me create more in-depth technical content, open-source tools, and free resources for the developer community.

Related Topics

Engr Mejba Ahmed

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 8+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Related Articles

Browse All

Comments

Leave a Comment

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

AI assistant · trained on my work

👋

Hey there!

Quick Actions

WhatsApp Direct line to me

Chat on WhatsApp

+880 1723 741224 · Replies within the hour on working days

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

mejba.13@gmail.com

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support