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
- Define the city-service matrix. 15 cities × 6 services = 90 combinations. Each gets a slug like
seo-services-phoenix. - Run the generation CLI command. One WP-CLI command iterates the matrix and creates a Service Area CPT post for each combination.
- 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.
- 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.
- 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_citiesfield - 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.
Leave a Reply