What programmatic SEO with AI means
Programmatic SEO is a method for publishing many URLs from one pattern. You write a single outline, list the variables that change, and fill a row for each URL. Classic programmatic SEO drops those row values into a template. AI-assisted programmatic SEO, which is what most people mean by programmatic SEO with AI, keeps the same outline and the same rows, then asks a model to write the sections that should change.
The prompt may quote the row. A fact outside the row stays unwritten. Aipress.io runs the work as five functions: keyword, data, generation, indexation, and pruning. A URL joins the indexable set after it passes the quality gate.
That definition is the whole job. The rest of this page is the procedure: how the two methods differ, how to set the variables and the prompt, how the five functions hand work to each other, and when the right decision is to publish nothing.
How classic programmatic SEO differs from AI-assisted programmatic SEO
Classic programmatic SEO fills a template from a table. AI-assisted programmatic SEO keeps the table and asks a model to write the sections the outline marks as variable. Both methods stand or fall on the row. A full cell can support a page. An empty cell cannot.
Two ways to fill the same outline. The row decides whether either one should publish.
Classic programmatic SEO
Where the words come from
A template. A script or a CMS field writes the city, the service, or the product into fixed sentences.
When it fits
The data is the page: a spec, a price the merchant publishes, or a service area the business publishes.
When it fails
The template repeats one paragraph and only the place name changes. Google's spam policies call out substantially similar pages, and pages aimed at many cities that funnel people to one URL.
AI-assisted programmatic SEO
Where the words come from
The same outline and the same variable table. A prompt writes the sections the outline marks as variable, using that row.
When it fits
The row has real material and the sentences need to change with the intent, such as an emergency visit and a planned install in the same city.
When it fails
The prompt is allowed to invent a fact the row does not contain, or the row was empty and the page was published anyway.
Doorway pages and scaled content abuse are Google's terms, from the spam policies. Scaled content abuse is many pages generated to manipulate rankings that provide little or no value, however they were created. Doorway examples include city pages that funnel users to one page, and substantially similar pages.
Set the variables, the outline, and the prompt
Do these three steps before any URL is generated. They are the same steps for a local service company and for a catalog.
- List the variables. Write the fields that change: service, place, intent, and the fact field. Intent is the modifier a searcher adds, such as emergency, planned, or commercial. The fact field is a statement the business already publishes that is true for that row and untrue, or simply absent, for the next row. If you cannot fill the fact field, strike the combination.
- Write one outline. Name every section the URL will have. Mark the sections that stay the same across the set, such as how the company does the work, and the sections that must be written from the row, such as the place, the service, and the fact. A section with no mark becomes a paragraph that repeats on every URL.
- Write the prompt against that outline. Name the fields the model may read. Tell it to leave a section incomplete when the row has no local detail, price, or result to cite. Then read a sample of the pattern, several rows, including a thin one. For the agent workflow, read using AI agents for programmatic SEO workflows.
Worked pattern: a restoration company offers water mitigation and mold remediation in two counties it says it serves. The table has four rows. A row is a candidate URL when the fact cell cites that service-area statement. A row whose only filled cell is a city name stays in the table as a rejected line, so the agency can show what it held back.
Walk one row before you generate the set
Do this on paper, or in the table, before the model runs.
Pick the first service and the first place. Write the fact in one sentence a customer could check. If the sentence only works because the city name is typed into it, the row is not ready. Put the row in the held column and move to a pair that has a real fact.
Write the section list for that URL. For a local service page the stable sections are the offer, how the job is done, and how to request the work. The variable sections are the place, the service name, and the fact. Read the variable sections with the place name covered. If they still read as a complete page, they are stable copy with a label swapped in. Move that copy into the stable block, or cut it.
Repeat the read on a second row that changes the intent, not only the place. Emergency work and planned work in the same city should force at least one section to change, because the reader needs different information before they request the job. When both rows would produce the same paragraphs, keep one URL.
Mark the row publish, hold, or merge. Hold means the fact cell is empty. Merge means two rows would answer the same query. Publish means a person can point at the fact. That mark is what the quality gate checks on a sample, and it is what an agency can show a client.
Name the canonical on the row
Every row gets one path before anyone writes a prompt. Use the pattern the site already has, such as /services/{service}/{place}/. Write that path on the row. Two rows that would share a path are one row. A row that matches a URL the site already publishes updates that URL. A second slug that only swaps a synonym stays out of the sitemap.
Internal links use the same table. The service hub links to the place URLs marked publish. Each of those URLs links back to the hub and to the other published services in that place. A file with no inbound link from its hub is still a held URL.
Keyword, data, generation, indexation, and pruning are one pass. Run them in that order.
The five-function stack
Aipress.io's name for the workflow. Select a function to highlight it. Every function stays on the page.
1. Keyword
Group queries that can share one outline.
Put queries in a group only when one outline can serve them. A plumbing company keeps "water heater repair + city" apart from "drain cleaning + city" when the proof on the page is different. Drop a combination when you cannot point to a fact that belongs to that pair alone.
2. Data
Fill a row, or do not publish the URL.
The table columns are service, place, intent, and the facts that are true for that row. Intent is a modifier such as emergency, planned, or commercial. The fact is something the business already publishes: the cities it serves, a license note, or a product attribute from the catalog. An empty fact cell means that URL is not ready.
3. Generation
The prompt may use the row. A person reads a sample.
Write the outline once. Mark which sections are stable and which must be written from the row. The prompt names the columns it may use and tells the model to skip any claim that is not in the row.
Google's guidance on using generative AI content, last updated 2026-10-01 UTC, says generative models predict a likely sequence of words and can be inaccurate, so AI-generated content needs a manual fact-check before publishing. The same page says that generating many pages without adding value for users may violate the scaled content abuse policy. It points to Search Quality Rater Guidelines sections 4.6.5 and 4.6.6, and says rater ratings do not directly influence ranking. Guidance on using generative AI content.
4. Indexation
Offer Google the URLs that passed the gate.
The sitemap lists canonical URLs that passed review. URLs that should stay out of Search get a noindex rule on a page the crawler can fetch.
Google limits one sitemap file to 50MB uncompressed or 50,000 URLs, and says submitting a sitemap is a hint: it does not guarantee that Google will download the sitemap or use it to crawl the URLs. Build and submit a sitemap. A noindex rule in a meta tag or HTTP header tells Google to drop that URL from Search results after Googlebot sees it. If robots.txt blocks the URL, the crawler may never see the rule, and the URL can still appear. Block indexing with noindex.
5. Pruning
After launch, choose noindex, merge, or rewrite.
Some URLs will be weak: no distinct fact, overlapping a sibling, or no longer true. The next action is noindex, merge, or rewrite.
Those three choices are written up in the programmatic SEO pruning playbook.
Quality gate before a URL is indexed
Google's guide to helpful, reliable, people-first content describes E-E-A-T as experience, expertise, authoritativeness, and trustworthiness, and says trust is the most important. Creating helpful, reliable, people-first content. The checks below are the gate for this workflow. How Aipress.io reviews a whole template is on programmatic SEO quality at scale.
0 of 7 checked in this browser
When not to use programmatic SEO
Skip the set when any of these are true. The comparison above already quotes Google's spam policies on scaled content abuse and doorway pages. These are the operator tests that follow from that language.
- You cannot name a distinguishing fact. A swapped city, neighborhood, or keyword is a label. A fact is something you can point to in the row: a service the company performs there, a county it says it covers, a product attribute from the catalog. No fact, no URL.
- The query is one story. One company, one service, one city is one page. A matrix adds URLs without adding information.
- The page would templatize a judgment the firm has not made. A grid of legal or financial answers that no one at the firm has reviewed is the wrong object. Publish the page a reviewer can stand behind, and stop.
- The set exists to add URLs. Google's scaled content abuse policy covers many pages whose primary purpose is manipulating search rankings and that provide little or no value to users, no matter how the pages were created. Publish a URL when the row gives a reader something they can use.
A field checklist for local city pages, including duplication and internal links, is the programmatic SEO QA checklist for local businesses. Use that list on a sample before launch. The review method for a whole template is programmatic SEO quality at scale.
What an agency delivers with location pages
Location programmatic SEO, for an agency, is a set of service-and-place URLs for the area the client actually covers. A restorer that names two counties publishes those counties. A realtor publishes neighborhoods where a listing or a recorded sale can fill the fact cell. A plumber's set is the services on the truck and the places the company says it will go.
For each set the agency should be able to show three things.
- The row. Service, place, intent, and the fact. Empty fact cells are visible, so a client can see what was held back.
- The outline. Which sections stay, and which sections are written from the row.
- The gate result. Which sample rows a person read, and which rows were unpublished or noindexed.
Google's doorway examples include pages targeted at regions or cities that funnel users to one page, and substantially similar pages. A location URL earns its place when the fact cell is filled. The build pattern for those URLs, including how a service hub and a city URL relate, is the location pages guide. The outcome stays here: which combinations deserve a URL, and which combinations should never be generated.
The same rule is what the industry guides under this hub apply to law firms, plumbers, restoration companies, realtors, advisors, stores, and software companies. Each guide is a narrower pattern. None of them replaces the gate.
After the set is live
Indexation and pruning are the last two functions, and the cards above cite Google's sitemap limits, the sitemap-as-hint rule, and the noindex rule. What an operator does next is small:
- Submit the sitemap group that lists only the URLs that passed the gate.
- Put a noindex rule on the URLs that should stay out of Search, on a URL Googlebot can fetch.
- Read the set again after it has been live. Weak URLs are noindexed, merged, or rewritten. The pruning card above links the programmatic SEO pruning playbook, which owns that decision.
If you want Aipress.io to review the pattern on your site, get my free audit. The audit is a written review of the site and of whether the page pattern has a fact per URL.