SEO & AI Search

Programmatic SEO Without a Google Penalty: Five Tests for Every Template Page

ShareXLinkedInFacebookEmail
Featured image for the article: COPY PASTE PENALTY. Five tests before you publish.

Programmatic SEO is not against Google's rules. Pages built mainly to rank, with nothing new for the reader, are. Run five tests on each page before Google can index it.

People search for it. Its words do not fit any other industry. It holds three facts true only there.

You can click to it from your site. Everything else waits.

Programmatic SEO is fine. Copy-and-swap pages are not.

You have one good service page. A keyword tool says thousands of people a month search "AI for law firms." Real estate agents and accounting firms search too.

So you copy the page eleven times. You swap the industry name. Then you wait.

With AI, that whole plan takes one afternoon. That is exactly why Google wrote a rule about it.

Programmatic SEO means building many pages from one template and a table of data. Google does not ban it. It bans the shortcut: pages that exist mainly to rank and give the reader nothing new.

This guide gives you five tests to run on each page before Google sees it. Then it shows how to keep a big page set honest after launch. You will not have to read every page yourself.

A copy-and-swap page and a guarded page differ in four places

Copy-and-swap pageGuarded page
Same body, new industry nameBody written around one buyer job
Facts that fit any businessThree or more facts true only for this industry
Reached only from searchTwo clicks from a hub page
Indexed on day oneNoindexed until it passes five tests

Anar's rule.

Is programmatic SEO against Google's rules?

Programmatic SEO breaks Google's rules only when the pages exist to rank instead of to help. Two of Google's spam policies cover it.

Scaled content abuse is many pages made mainly to game rankings. Doorway abuse is many near-identical pages built to catch similar searches.

Notice what the rules ignore. Who wrote the page does not matter. Google says the policy applies to pages made by software, by people, or by both.

The page count does not matter either. Purpose and value do.

And Google keeps score. After it tightened these rules, it reported 45 percent less low-quality, unoriginal content in results. It had expected 40.

Our take: a rule with a public scoreboard is a bad rule to bet against.

Google edits its policy pages, so the exact wording sits in the dated box below. Read it once. The tests in this guide do not depend on the wording.

Google reported a bigger cut in low-quality results than it had planned

  • Cut in low-quality, unoriginal results Google expected 40
  • Cut Google reported after the rollout 45

Source: Google, New ways we're tackling spammy, low-quality content on Search, update dated April 26, 2024.

Google's rule is about purpose, not about AI or page count

Google's spam policies page, scaled content abuse section, with four numbered pins on the definition, the line that it applies no matter how content is created, the generative AI example, and the line telling site owners to exclude such content from Search.
  • The test is purpose: built to rank, or built to help.
  • Written by a person or by AI, the rule is the same.
  • The trap is many pages with nothing new, not AI itself.
  • This is the hold test: noindex a page until it passes.

Screenshot of Google Search Central, Spam policies for Google web search (page last updated 2026-08-28), taken 2026-10-18. Pin text is Anar's commentary.

Google's own wording. The rule is about purpose, not the tool.
Framework: Programmatic Guardrails
The Automate step of the ANAR Loop, our four-step method: Audit, Name, Automate, Repeat

Five tests, run on each page before it is indexed. Demand: people search for this exact page. Swap: replace the industry name, and less than a third of the body still reads as true.

Own facts: at least three things on the page are true only for this industry. Path: a hub reaches the page in two clicks or fewer. Hold: any page that has not passed the first four stays noindexed.

After launch, read one page in ten, one in three after a failure, and stop the template after three failed samples in a row.

What is a doorway page? The swap test spots one in ten seconds.

A doorway page is a page built to catch one search and offer nothing the main page does not. The fastest way to spot one is the swap test.

Take a finished page. Replace the industry name with a different industry. Read it again.

Any sentence that still reads as true fits both industries. So it says nothing about either one. "We help law firms save time with AI" works for plumbers too.

"Intake screens each caller for conflicts of interest before booking" does not. Plumbers have no conflicts check.

Our rule: ignore the menu, the form and the button. If more than a third of the body survives the swap, the page is not written yet.

How do so many sites end up with doorways? Same way every time.

How to build fifty doorway pages in four easy steps:

1) Write one page about your service.

2) Ask AI for fifty versions, one per industry.

3) Change the headline and the stock photo of two people shaking hands.

4) Publish all fifty on a Friday. Call it a content strategy.

That is not a page set. That is one page wearing fifty name tags.

A bored house painter paints a red front door on yet another house in a street of identical houses. Black and white stencil painting.
Issued by Anar Global ยท No. 094

Sentences that survive the swap say nothing about the reader's industry

Survives the swap (cut it)Fails the swap (keep it)
"We help law firms save hours every week with AI.""Intake screens each caller for conflicts of interest before booking."
"Our team understands your unique challenges.""Drafts start from the firm's own engagement letter."
"AI is changing how firms like yours work.""Time entries are drafted for a lawyer to review, never sent unchecked."

Example. Made-up lines from a law firm page.

Half the body survives the swap, so the page waits for a rewrite

Example page for a made-up AI service for law firms, with three generic sentences struck through as surviving the swap, three industry-only facts tagged to keep, a scorecard showing half the body survives, and five numbered pins.
  • Swap 'law firms' for 'plumbing companies'. Still true, so it says nothing.
  • Plumbers have no conflicts check. This line belongs to one industry.
  • A third own fact. Three is the minimum.
  • Ignore the menu, the form and the button.
  • Half the body survives. The page is not written yet.

Example page built for this article with a made-up brand

Example page. Half the body survives the swap, so it waits for a rewrite.

Programmatic Guardrails: five tests on every page before Google indexes it

The Programmatic Guardrails is our five-test check, run on each page, never just on the template. A page enters Google's index only when it passes all five.

Test 1, demand: people search for this exact page, or a close version of it. No searches, no indexed page.

Test 2, swap: less than a third of the body survives a swap of the industry name.

Test 3, own facts: the page holds at least three facts true only for this industry, like a rule, a workflow or a number.

Can't name three? Then you do not know the industry well enough to publish yet.

For law and CPA firms, our article on where AI pays first in professional firms shows what own facts look like.

Test 4, path: a visitor can reach the page from a hub in two clicks or fewer. A hub is one page that links to every page in the set.

Google finds pages through links it can crawl, and so do people. Our hub-and-spoke guide shows the structure.

Test 5, hold: until a page passes the first four, it carries a noindex rule. Google's policy says to exclude scaled content like this from Search.

Noindex hides the page from Google. It does not delete it. Your sales team can still send it to a prospect.

Five tests, run on every page, not on the template

  • Demand People search for this exact page.
  • Swap Less than a third of the body survives a new industry name.
  • Own facts Three or more facts true only for this industry.
  • Path Two clicks or fewer from a hub page.
  • Hold Noindex until the first four pass.

Anar's method.

Each test has a pass line you can check in minutes

TestPass lineHow to check
DemandMonthly searches above zero for the page's phraseYour keyword tool
SwapUnder a third of body sentences survivePut a sibling's industry name in and read
Own facts3 or more, each with a sourceList them in the data row before drafting
Path2 clicks or fewer from a hubClick from the menu, not from search
HoldNoindex until tests 1 to 4 passCheck the page's robots meta tag

Anar's method.

Build one page per buyer job, not per keyword combination

The demand test is where most page sets should shrink. A keyword tool lists every combination. Buyers do not search every combination.

The chart below is one keyword pull for "AI for [industry]." Law firms led by a wide margin. Several industries with big ad budgets, like med spas, showed no measurable searches.

Those buyers exist. They just do not search that way. A search page for them is a page for nobody.

There is a better way to slice the set. In Competing Against Luck, Clayton Christensen's team describes how one baking soda brand became many products. Each product matched one job: freshen the fridge, clean the carpet, deal with the cat litter.

Same brand. Same base product. A different job each time.

Our reading for search: give each page one job the buyer is hiring you for. "Screen new client calls for a law firm" is a job. "AI for lawyers in Tampa" is a keyword combination.

Pick jobs you can actually win with our guide to choosing searches that pay. Not sure your buyers use Google at all? Read where buyers actually ask the question.

Some industries search for AI help by name, and many do not

Monthly US searches for "AI for [industry]"

  • Law firms 3760
  • Real estate 1920
  • CPA and accounting firms 1920
  • Medical practices 880
  • HVAC 560
  • Car dealerships 540
  • Plumbing 490
  • Financial advisors 480
  • Dentists 470
  • Landscaping 440
  • Insurance 410

Example. Ahrefs keyword data, United States, pulled 2026-09-25. Med spas and plastic surgery showed no measurable volume.

Build pages for the jobs buyers have, not every keyword combination

Keyword combination (skip)Buyer job (build)
"AI for lawyers in Tampa"Screen new client calls before a lawyer picks up
"AI for CPA firms near me"Get client documents in before the tax deadline
"Best AI tool for dentists"Fill same-day cancellations from the waitlist

Example.

Catch a bad page at the cheapest stage

A page set is a small factory. Every bad page costs more the further it travels.

Andy Grove made this point about real factories in High Output Management. Catch a bad part when it arrives from the supplier, not after it reaches the customer.

For pages, the stages run in this order: the data row, the brief, the first drafts, the live page.

Check the data row first. Are the three own facts for each industry real, sourced and written down before AI writes a word? A wrong fact in the row becomes a wrong fact on every page that uses it.

Then read every word of the first ten pages from any new template. That is a gate. Nothing moves until it passes.

Most teams check last, after the pages are live. That is the priciest moment to find a typo. It is the worst moment to find a false legal claim.

A mistake costs more at every stage it survives

  • Data row Three sourced facts per industry. Fix: edit one cell.
  • Brief One buyer job and an outline. Fix: rewrite a paragraph.
  • First ten pages Read every word. Fix: change the template once.
  • Live set Sampled. Fix: rework every page made since the error.

Anar's method, adapted from the lowest-value-stage rule in High Output Management.

Once the set is live, sample it, and sample harder after a miss

Reading every page forever does not scale. Reading none is how a template rots.

The factory fix is called variable inspection. You check less after a long clean run, and more the moment problems appear.

Here is our version for page sets. Read one page in ten from each new batch, picked at random.

One failure? Read one in three from the next batch.

Three failed samples in a row? Stop the template. Fix it, then recheck every page made since the last clean sample.

Five clean batches in a row? Drop back to one in ten.

Why stop the whole template? Because templates fail quietly. A changed prompt, a broken data column or a model update can spoil every page made after it, and nothing looks broken.

One rule never relaxes. Any page that states a legal duty, a price, a dose or a tax rule gets read by a person before it is indexed.

A wrong claim there is not a ranking problem. It is a trust problem.

Read more pages after a failure, fewer after a clean run

SituationWhat a person reads
New templateEvery one of the first 10 pages
Normal batch1 page in 10, picked at random
One failed sample1 page in 3 from the next batch
Three failed samples in a rowStop the template, fix it, recheck every page since the last clean sample
Five clean batches in a rowBack to 1 page in 10
Legal, price, health or tax claimEvery page, before indexing

Anar's rule, built on variable inspection as described in High Output Management.

Read every page only where the template is new or a mistake is costly

  • Gate the first ten Read every word of the first ten pages, then sample.
  • Gate every page A person reads each page before it is indexed.
  • Sample 1 in 10 A script runs first, a person reads the sample.
  • Gate every page Legal, price, health and tax claims never move to sampling.

Anar's rule.

Let a script catch the repeats before a person reads

Sampling works better when a script clears the obvious junk first. AI researchers face the same problem with generated training data.

In AI Engineering, Chip Huyen lists the simple filters the Self-Instruct researchers used on generated examples. They dropped repeats, examples too short or too long, outputs that only echoed their input, and one question given different answers.

Those filters were built for training data, not for Google. Our reading: they map almost one to one onto generated pages.

Thin. Flag any page with fewer than 300 words that appear on no sibling page.

Echo. Flag any page whose body mostly restates its own title.

Repeat. Flag any body sentence that appears on more than three pages.

Contradiction. Flag two pages that answer one question differently, like two prices for the same service.

The same book warns that too many examples from one template hurt variety. So split a big set across several templates, one per type of buyer job.

A script costs almost nothing to run on every page. Your attention is the scarce part. Save it for what no script can judge: whether the facts are true.

Four filters built for AI training data catch weak generated pages too

Filter on generated training dataSame check on a pageFlag when
Too short or too longThin pageFewer than 300 words that appear on no sibling page
Output repeats the inputEcho pageThe body mostly restates the title
Repetitive examplesShared sentencesA body sentence appears on more than 3 pages
Same instruction, different responsesContradictionTwo pages answer one question differently

Filters: Self-Instruct (Wang et al.), as summarized in AI Engineering by Chip Huyen. The page mapping and thresholds are Anar's.

What if competitors rank with hundreds of thin pages?

Some thin page sets do rank, for a while. We cannot see inside Google, so we will not promise when or whether any site gets hit.

We can tell you what the bet is. Google's own guidance asks whether content looks mass-produced, so pages get little care. That question is about a whole site, not one page.

There is a plainer problem too. A buyer who lands on a page that could be about anyone does not call.

Even when a copy-and-swap page ranks, it does not sell. Ranking without selling is a vanity metric with a hosting bill.

AI is not the problem either. Google's note on AI content says AI helps with research and structure. Use it to draft, then add the facts only you know.

Stuck with old near-duplicates? Fold them into one page with Google's guide to duplicate URLs. Then show who wrote each page with our E-E-A-T checklist.

Indexed, but nobody clicks? The page probably passes the tests and still answers no real buyer job. Our page-two article covers what to change next.

A thin set is cheap to build and costly to undo

50 thin pages12 guarded pages
May rank for a whileRanks on facts no other page has
Visitors see a page about anyoneVisitors see their own workflow
Puts the whole site's quality at riskNothing to hide from a reviewer
Fast to build, slow to clean upSlower to build, nothing to clean up

Anar's view.

Three common problems, and the fix for each

SymptomCauseFix
Indexed pages, almost no clicksThe page answers no real buyer jobRewrite it around one job
Old near-duplicate pages already liveA copy-and-swap set from beforeMerge them into one page
Every sample fails the swap testThe template carries the content, not the dataMove facts into the data row and cut shared text

Anar's method.

Run the five tests with AI

The prompt below runs the Programmatic Guardrails on one page at a time. It asks for the page, one sibling page and your search numbers. It never invents a number or an industry fact.

This week: pick your three best industry pages. Run the prompt on each and fix every failure.

Then write your sampling rule down before the next batch ships. After that, check how AI assistants treat those pages with what AI engines actually cite.

Eleven copies of one page are still one page. Write eleven real pages, or write fewer.

Copy this prompt
Run the Programmatic Guardrails on any template page

Paste into your preferred AI with one page and one sibling page. It runs all five tests and tells you whether to index or hold.

Act as a careful SEO editor running the Programmatic Guardrails on one page built from a template.

Ask me for these one at a time, with the example shown. If I paste everything at once, skip the questions.
1. The page text. (Example: my "AI for accounting firms" page.)
2. One sibling page from the same template. (Example: my "AI for law firms" page.)
3. Monthly searches for the page's main phrase, from my keyword tool. (Example: 1,900.) If I do not have it, mark demand UNKNOWN. Never guess a number.
4. How a visitor reaches the page by clicking. (Example: Home > Industries > Accounting.)

Run five tests:
1. Demand: pass only if monthly searches are above zero. If I name a non-search use, such as sales sending the page, say: keep it, but out of the index.
2. Swap: put the sibling's industry name into my page. Ignore the menu, form and buttons. Quote every body sentence that still reads as true. Fail if more than a third survive.
3. Own facts: list facts true only for this industry. Fail under three. Mark each [CONFIRM] unless I gave a source.
4. Path: fail if the page is more than two clicks from a hub page.
5. Hold: if any test fails or is UNKNOWN, the page stays noindexed.

Also flag: fewer than 300 words that do not appear on the sibling; a body that mostly repeats the title; any sentence shared word for word with the sibling; any claim about law, price, health or tax, which a person must check before indexing.

Rules: never invent a fact, statistic or search number. If you can browse, check Google's current spam policies page and tell me if the scaled content or doorway wording changed.

Output:
A. Pass or fail for each test, with the evidence.
B. The swap survivors, quoted.
C. Up to five own-fact ideas, each marked [CONFIRM].
D. Index now or hold, plus the three fixes that matter most.
It asks for your page, a sibling page and your search numbers, and never makes up a number.
Share this articleXLinkedInFacebookEmail
Filip Kovacevic
About the author

Filip Kovacevic is the founder of Anar Agency in Phoenix. He spent five years running SEO, Meta ads, email, and content for medical practices across the United States, and now does the same work for healthcare, home-service, legal, and professional-service businesses, alongside AI implementation. More from Filip →

Talk it through in 15 minutes

Bring one question from this article. We will tell you what we would do, whether or not you hire us.

Book a 15-Min Chat →