ServicesCase StudiesOur WorkflowsPricingBlog
Dominate AI Search
ServicesCase StudiesOur WorkflowsPricingBlogWhat is GEOHow it worksToolsDominate AI Search
  1. Home
  2. /
  3. Workflows
  4. /
  5. Programmatic page generation at scale
Content production

How AY Rank Ships 500+ Indexable City × Service Pages from One Data File

One data file turns into 500+ pages. Cities, services, FAQs, schema, hreflang, OG cards. Every page is reviewed by an agent loop that checks it reads human, then a final QA pass against Google Rich Results before it ships.

Cadence
Weekly batch + per-page hotfix
Output
Indexable city × service pages
Category
Content production
The workflow6 steps · 9 components
City + service data
SU
Brand entity
SCLI
Competitor SERPs
AHBR
Per-page brief assembly
SUAHBR
Claude Agents SDK loop
ANOP
Schema + OG + hreflang
NEVESC
Rich Results validation
SE
Indexable sitemap
SE
Noindex follow
NE
The problem

Programmatic SEO at scale is the highest-leverage content play and the most dangerous. Google's scaled-content-abuse policy targets exactly this surface; if every page reads as a template stamp, the whole grid gets demoted. We solve it with an agent-based generation pipeline where each page is composed and reviewed by AI agents working from real city demographics, real customer FAQs, and real schema. The output reads human and ships at scale because the agents do the per-page tailoring a human team could not.

The workflow.

8 steps · runs at weekly batch + per-page hotfix

  1. 01

    Master data ingestion

    A single Supabase table holds the 50 cities, 10 services, 10 industries, 8 languages, plus per-city demographics, population, and competitor data. Adding a city is one row; the system regenerates every page touching that city automatically on next build.

  2. 02

    Per-page brief assembly

    For each (city, service) combination, an orchestrator pulls the brand entity, the city demographics, the top 3 ranking competitors from Ahrefs, and the live SERP from Brave Search. That brief becomes the input contract for the generation agents downstream.

  3. 03

    Multi-agent draft generation

    Using Claude Agents SDK we run a writer agent, a fact-check agent, and a voice agent in a loop. The writer drafts intro + body + FAQ from the brief; the fact-check agent verifies every claim against the source brief and rejects hallucinations; the voice agent rewrites anything that reads template-stamped. Final draft typically lands within 2–3 iterations per page.

  4. 04

    Schema + OG generation

    For every page, JSON-LD blocks are emitted at build time from the page data: ProfessionalService, FAQPage, BreadcrumbList, and where applicable Service and Place. Per-page OG images are auto-rendered via Vercel OG from the title + brand template.

  5. 05

    hreflang + i18n routing

    Each page emits hreflang alternates to its localized siblings (FR / DE / AR / ES / PT / JA / EN). Routes resolve through the Next.js proxy with `x-locale` header detection so AI crawlers see clean canonical URLs per locale, never duplicate content.

  6. 06

    Indexable allowlist + noindex governance

    Not every generated page should be indexed. Pages in low-demand cities or weak market fit get `robots: noindex, follow` automatically while still rendering, so existing links keep working but the indexed surface stays tight. Top 20 cities × all services ship to the sitemap; the rest stay reachable but unindexed.

  7. 07

    Rich Results validation

    Before deploy, every changed page is checked against the Google Rich Results Test API. Schema failures block the build. We do not ship pages where the structured data is broken.

  8. 08

    Continuous refresh

    Pages auto-revalidate on a 1-hour TTL via `unstable_cache` + tag-based invalidation. When the city table updates, every affected page rebuilds within the hour without manual redeploys.

The stack.

NE
Next.js App RouterStatic + ISR generation, sitemap, hreflang
SU
SupabaseCities + services + per-page overrides table
AN
Claude Agents SDKMulti-agent draft + voice + fact-check loop
AN
Anthropic ClaudePer-page voice review + commodity-content rewrite
OP
OpenAIOutline generation + fallback drafting
AH
Ahrefs APITop-ranking competitor scrape per (city, service)
BR
Brave Search APILive SERP + cited source extraction
VE
Vercel OGPer-page OG image generation at build
SC
schema.orgProfessionalService / FAQPage / BreadcrumbList JSON-LD
•
Google Rich ResultsPre-deploy schema validation gate
SE
Google Search ConsoleIndexed-page tracking + AI Overview impressions

A representative cadence.

Schedule
1 daily4 weekly
MTWTFSS
  1. MonWeekly
    New cities/services merged into Supabase
  2. TueWeekly
    Agent draft + voice review across affected pages
  3. WedWeekly
    Schema validation, hreflang + sitemap regen
  4. ThuWeekly
    Deploy + GSC re-submit
  5. DailyDaily
    GSC indexing status pull, drop alerts → Slack

What you get.

  • 500+ city × service indexable pages, each with unique copy + schema
  • 7-locale hreflang grid auto-maintained from a single source
  • Per-page OG image, canonical URL, and FAQ + breadcrumb JSON-LD
  • Live GSC indexing dashboard with drop alerts in Slack
Free playbook

Get the full playbook.

The exact agent setup, prompts, schema templates, and QA gates we use to ship 500+ indexable pages without tripping scaled-content penalties.

No spam. Unsubscribe anytime.

Common questions.

Doesn't Google penalize programmatic SEO?+

Google penalizes scaled content abuse - pages that read as commodity template stamps with no unique value. The fix is per-page substance, not stopping at scale. Our agent pipeline runs a writer + fact-check + voice loop on every single page so the output reads human and carries real local context (demographics, competitors, FAQs unique to that city). The result is high-volume AND high-quality, which is exactly what Google's documentation says is fine.

How is this different from a templated SEO city-page tool?+

Templated tools mail-merge a master string with a city name. The output is by definition commodity content. Our pipeline composes each page from scratch using a multi-agent loop with the city's actual demographics, real competitor SERPs, and a brand voice review. Two pages for two different cities don't share more than the brand entity - everything else is regenerated against the per-city brief.

How many pages can you realistically ship per week?+

On a steady-state client we ship 20–40 new or refreshed indexable pages per week. The bottleneck is brief quality, not generation speed - the agents can draft 100 pages a day, but we cap throughput at the rate the brief data is verified.

What happens when a city has no real demand?+

It still gets generated and rendered (so any inbound link still resolves), but the page emits `robots: noindex, follow` and is excluded from the sitemap. The page exists for users who land on it; it stays out of the indexed surface so the overall grid quality stays high. We re-promote pages to indexable when their query demand crosses a threshold.

Does the agent loop hallucinate?+

The fact-check agent rejects any claim not grounded in the page's brief data. The voice agent flags purple prose. We see hallucinations get caught in the loop on 8–12% of first drafts; almost none make it to publish. The fail-safe is the Rich Results + schema validation gate at deploy - if structured data references a fact that isn't in the body, the build fails.

Related workflows.

Content productionCitation-first blog pipeline »Content productionOn-brand image generation at scale »Content productionAI content humanization »

Want this workflow running on your brand?

Book a free GEO audit. We'll tell you whether this play moves the needle for your category and what citation share is realistic in 90 days.

Book a free GEO audit»
AY Rank

AY Rank

AI recommends you. Buyers trust it. Leads come in.

Services

  • AI SEO
  • GEO Optimization
  • Technical SEO
  • Local SEO
  • SaaS SEO
  • E-commerce SEO
  • All Services

Resources

  • Blog
  • Free Tools
  • Our Workflows
  • Methodology
  • What is GEO
  • FAQ
  • Pricing
  • Book Free Audit

Legal

  • Terms
  • Privacy Policy

Optimized for AI Search

ChatGPT
Google
PerplexityPerplexity
GeminiGemini
ClaudeClaude

© 2026 AY Rank. All rights reserved.

AY Rank GEO strategistAY Rank SEO specialistAY Rank client success lead
Dominate AI SearchOthers are ranking. Start before they finish.
»