VOYAGER · MARKETING

N 40.7128° · W 74.0060°

How We Generated 90 SEO Landing Pages in One Afternoon

The Problem: Scale SEO Without Scaling the Team

A client needed to rank in 15 cities for 6 different services. That is 90 unique landing pages. Each page needs a unique headline, unique body copy, unique FAQ answers, unique meta descriptions, and the correct local phone number. The traditional quote: 2-4 weeks and $9,000+.

We did it in one afternoon. Here is exactly how.

The Architecture: Templates + AI + Block Bindings

Instead of 90 templates, we built 3. One hero section pattern, one body content pattern, and one FAQ + CTA pattern. Every piece of text in those patterns is a block binding — it pulls from post meta fields that are unique per page.

The patterns use standard WordPress core blocks. A heading block with its content bound to sa_hero_headline. A paragraph bound to sa_body_intro. An FAQ accordion where each question and answer pulls from sa_faq_q1 through sa_faq_a3. The phone number comes from voyager/site-data — one global field shared across all 90 pages.

Step-by-Step Process

  1. Define the city-service matrix. 15 cities × 6 services = 90 combinations. Each gets a slug like seo-services-phoenix.
  2. Run the generation CLI command. One WP-CLI command iterates the matrix and creates a Service Area CPT post for each combination.
  3. AI populates the meta fields. For each post, an Orbit AI ability generates contextual content: a headline that mentions the city and service, body copy that references the local market, FAQ answers about that specific service in that specific city, and an SEO meta description.
  4. Block bindings handle display. The 3 pattern templates render each page. The binding sources resolve the meta fields at render time. Every page looks identical in layout but completely different in content.
  5. Review and publish. Spot-check a sample of pages. Adjust any AI copy that needs a human touch. Bulk-publish.

Content Quality at Scale

The first question everyone asks: “Isn’t AI content thin?” It can be — if you stop at step 3. The difference is enrichment. After the initial generation, we run a second pass that adds:

  • FAQ Q&As specific to the city (“What does SEO cost in Phoenix?” not “What does SEO cost?”)
  • Nearby cities for internal linking (“Also serving Scottsdale, Tempe, Mesa, Chandler”)
  • Local landmarks for geo-relevance signals (“Near Camelback Mountain and Old Town Scottsdale”)
  • Service features as structured data for rich snippets
  • Local phone numbers matching Google Business Profile

This takes a 300-word skeleton page to 800+ words of genuinely useful, locally-relevant content. RankMath scores jump from 5 to 40+. Read more about the enrichment process in our post on getting from 5 to 50 RankMath points.

The Data Layer

Each service area post has 22 meta fields. Here are the key ones:

sa_city              → "Phoenix"
sa_state             → "Arizona"
sa_hero_headline     → "SEO Services for Phoenix Businesses"
sa_hero_subhead      → "We help Phoenix businesses grow..."
sa_body_intro        → "Looking for SEO in Phoenix?..."
sa_body_main         → "Every Phoenix business deserves..."
sa_faq_q1            → "What SEO services do you offer in Phoenix?"
sa_faq_a1            → "We provide comprehensive SEO..."
sa_nearby_cities     → "Scottsdale, Tempe, Mesa, Chandler"
sa_local_landmarks   → "Camelback Mountain, Old Town Scottsdale"
sa_meta_desc         → "Voyager Marketing provides SEO..."
sa_cta_text          → "Get your free Phoenix site audit"
sa_cta_url           → "/contact/?location=Phoenix"

The Results

  • 90 pages generated and published in approximately 4 hours
  • Each page unique — not spun, rotated, or template-swapped content
  • Phone number change requires editing 1 field, not 90 pages
  • Schema markup auto-generates per page from the meta fields
  • Internal linking handled automatically via the nearby_cities field
  • Ongoing cost: $0 — no per-page fees, no content subscription

Key Takeaways

  • pSEO is a systems problem, not a content problem. Build the system once, generate unlimited pages.
  • Block bindings make the pattern layer reusable. 3 templates serve 90+ pages with no code duplication.
  • AI content quality depends on enrichment, not just generation. The second pass is what separates thin pages from ranking pages.
  • The economics are dramatic. $9,000 and 180 hours becomes 4 hours and $0 ongoing.

Want the numbers for your own site? Calculate your ROI.

Get a free audit of your pSEO opportunity.


Leave a Reply

Your email address will not be published. Required fields are marked *