ContextBolt SEO Free for 7 days. Keywords, SERPs, backlinks and AI visibility, inside Claude. SEO data inside Claude. Start free trial
Guide · Programmatic SEO With Claude

Programmatic SEO With Claude: Let the Data Pick the Pages

Programmatic SEO means building many pages from one template and a list of rows. A small invoicing app might want a page for every trade, like invoicekit.example/invoice-templates/plumbing/, /trucking/ and /dj/, plus two hundred more. Each page targets one search, like “plumbing invoice template”.

Claude can now build the whole set in an afternoon. Install a programmatic SEO skill in Claude Code, hand it a spreadsheet of trades, and it writes the template, the copy and the pages. That part is solved.

The part that is not solved is the spreadsheet. Which of those two hundred rows does anyone search for? And once the pages are live, which ones did Google actually index? A skill cannot answer either question, because it has no data. This guide runs that half inside Claude, with live keyword data and your own Google Search Console.

Quick answer
  • Programmatic SEO is one template times a list of rows. Claude with a skill writes the pages fast. Picking the rows is the real job.
  • A skill is instructions, not data. It cannot see search volume or your Search Console. ContextBolt SEO is an SEO toolkit that runs inside Claude and gives it both, so it can pick the rows before a page exists.
  • One keyword lookup on the pattern shows how people phrase it. For invoice templates the trade goes first. “Plumbing invoice template” gets 480 searches a month, and “invoice template for doctors” gets 20.
  • Launch 20 pages, then ask Search Console what Google did. Inspecting each URL is free. A batch Google crawled and declined is a verdict on the template.
  • The data half costs under 10 credits, inside the 100 the 7-day free trial includes.

What programmatic SEO is, and where Claude fits

Every programmatic set has three parts. A pattern is the search shape that repeats, like “[trade] invoice template”. A modifier is the word that changes from row to row, like plumbing or trucking. The template is the page layout that every row fills in.

The big template sites are built this way. Search “plumbing invoice template” and most of the top ten are pages from a set. Invoice Simple’s sits at /invoice-template/plumbing-invoice/, and QuickBooks and eForms run the same kind of set. The approach works when the pattern matches what people search.

Claude fits in two places. In Claude Code, a skill can teach it how to build the set. A skill is a SKILL.md file of instructions that Claude adds to its toolkit, per Anthropic’s skills docs. Search this topic and that is most of what you find, skill directories and Reddit threads about skills that write pages.

The second place is the one those results skip. Claude can also do the research that decides what to build, if it has live data to read. That needs an MCP connection, the open standard for plugging agents into live tools. The difference between the two is covered in Claude Skills vs MCP.

Why the skill is the easy half

Here is the opinion this post is built on. Most rows in your spreadsheet should never become pages. The template is an afternoon’s work. The row list decides whether you get traffic or a pile of pages Google refuses to index.

The better skills know this. One widely shared programmatic SEO skill tells Claude to validate demand before building, to track indexation rate after launch, and lists “creating pages with no search demand” as a common mistake. All three are right.

But a SKILL.md file cannot look up a search volume. It cannot open your Search Console either. So Claude does what it does without data. It guesses which rows sound plausible, and it builds all of them.

Google’s rules make that guess expensive. Its spam policies define scaled content abuse as many pages “generated for the primary purpose of manipulating search rankings and not helping users”. The first example on the list is using generative AI to make many pages without adding value. Google’s guidance on AI content repeats the point and says to fact-check and review everything before you publish.

A skill that writes 500 pages from a list nobody checked is writing that example. The fix is not a better skill. It is data.

Step 1: find out how people phrase the pattern

First, give Claude the data. Start the 7-day free trial on the ContextBolt SEO page, then add the server to Claude Code.

claude mcp add --transport http contextbolt-seo \
  https://seo.contextbolt.app/mcp

Open /mcp in Claude Code to sign in. ContextBolt SEO in Claude Code has the user-scope version of that command and a config-file route. Then ask Claude to connect Google Search Console and approve read-only access, which you will need in Step 5. Now run one lookup on the pattern itself, before you write a single row.

Copy this prompt

Run keyword research on "invoice template for", 50 ideas, United
States. Then sort the results into three groups: rows that fit a
[trade] invoice template page, rows that are a different pattern,
and rows that are junk for us, like brand names. Tell me which
word order people actually use.

In ContextBolt SEO that is keyword_research, one credit for up to 50 related searches, each with volume and difficulty. These are real lines from that exact lookup, run on October 7, 2026, trimmed to fit.

Keyword ideas for "invoice template for" (United States): 50 results.
40 of 50 are low-difficulty (under 30). Volume ranges 10 to 90,500/mo.
1. invoice template: 90,500 searches/mo · difficulty 44/100
2. invoice template word: 9,900 searches/mo · difficulty 22/100
6. invoice template for doctors: 20 searches/mo · difficulty 0/100
12. contractor invoice template: 1,900 searches/mo · difficulty 0/100
33. plumbing invoice template: 480 searches/mo · difficulty 0/100
41. photographer invoice template: 90 searches/mo · difficulty 0/100

Three things fall out of the full 50, and none of them is visible from inside a skill.

  • Word order: Of the 50 rows, the two phrased “invoice template for” carry 10 and 20 searches a month. The trade-first rows carry the demand. Contractor gets 1,900, construction 1,000, mechanic 590, and plumbing, electrical and handyman 480 each. A skill told to build “invoice template for plumbers” builds a phrasing that never even made the list.
  • A second pattern: Word at 9,900, Excel at 2,900, PDF at 2,400, Google at 1,300. That is “invoice template [format]”, a different set with different pages. Do not mix it into the trade set.
  • Junk: Two rows are other companies’ brand names, at 880 and 720 a month. They belong to those companies.

Step 2: cut the rows nobody searches for

Now you have a short list with real numbers. Three cuts get it to the rows worth a page.

Rows with no demand: Anything under about 50 searches a month needs a reason to exist beyond search. Your list will also have trades the lookup never returned. Check those one at a time with keyword_difficulty, one credit each, and only for the rows you would genuinely build.

Rows that are the same page: “Consulting invoice template” (880) and “consultant invoice template” (260) want one page, not two. Two pages on one search compete with each other. If your list runs to hundreds of rows, group it first with keyword clustering in Claude.

Rows where Google wants something else: Volume says people search. The results page says what they want. Check one or two rows before you build.

Copy this prompt

Show me the top 10 Google results for "plumbing invoice template"
in the United States. Are they template pages like the one I am
planning? Who are they from, and is anything on the page a forum
or a small site I could realistically outrank?

That is serp_overview, one credit. For this row the answer is clear and a little sobering. The top ten is Invoice Simple, Invoice Quick, QuickBooks, Skynova, Invoicefly, an Etsy listing, eForms, YouTube and the same Pinterest pin twice. Google wants a template page, so the pattern is right. But established template sets already hold it. That does not kill the set. It tells you to lead the first batch with rows whose results are thinner, and the only way to find those is to look.

That is also why a difficulty of 0 needs reading, not trusting. Most of the trade rows scored 0, and the plumbing results are still held by companies with established template libraries. Treat a 0 as a reason to look at the results, never as a promise.

Step 3: give every page something only it has

This is where the skill earns its keep. Let it write the template. Then make sure each row brings data the other rows do not have.

For invoice templates that is easy to picture. A plumber often bills parts and labor on separate lines, plus a trip charge. A trucking invoice usually carries a load number and a rate per mile. A DJ bills for an event date, a set length and a deposit. Three different invoices, three pages worth having.

Now picture the lazy version. Two hundred pages where only the trade name changes. Google tends to treat near-identical pages as one, picks a single version to index and leaves the rest out, which shows up in Search Console as Duplicate without user-selected canonical. That is the polite outcome. The impolite one is the spam policy above.

A simple test before you generate anything. Put two finished pages side by side and cover the trade name. If you cannot tell which page is which, the row does not have its own data yet.

Step 4: launch twenty pages, not five hundred

Publish your 20 strongest rows first. Add them to your sitemap, link them from a hub page, and wait.

The wait is real. Google’s own recrawl page says crawling “can take anywhere from a few days to a few weeks”, and that requesting a recrawl over and over does not make it faster. So check back in a few weeks, not tomorrow.

The small batch is the point. If the template has a problem, you find out on 20 pages. Finding it on 500 means 500 pages to rewrite.

Step 5: ask Search Console what Google did with them

This is the step that tells you whether the set works, and it is the one people skip.

Copy this prompt

Inspect each of the 20 invoice template pages we launched, one at
a time. Give me a table of URL, coverage, last crawled and Google's
canonical. Then pull my Search Console pages for the last 28 days,
100 rows, and tell me which of the 20 have any impressions yet.

Run it in the same Claude Code session that built the pages, so Claude already has the URLs, or paste the list in. Both halves are free once Search Console is connected. inspect_url checks one URL a call against your own Search Console. search_console_performance returns your real clicks and impressions by page.

How to read the table.

  • Indexed with impressions: The template works for that row. Rows like these earn the next batch.
  • Discovered, currently not indexed: Google found the URL and has not fetched it yet. Usually a matter of time.
  • Crawled, currently not indexed: Google fetched the page, read it and passed. One page like that is noise. Most of the batch like that is a verdict on the template. Fix the pages, and do not generate more until it clears.
  • Google’s canonical points elsewhere: Google decided two of your pages are the same page. Merge the rows or give them their own data.

Both not-indexed statuses have a full guide. Discovered, currently not indexed covers the wait. Crawled, currently not indexed covers what to change on the pages.

Two limits to plan around. The page breakdown returns up to 100 rows, so on a bigger site check the batch by URL instead. And every ContextBolt SEO call counts toward a ceiling of 120 an hour, so plan on about a hundred inspections an hour. Google’s own URL Inspection quota is 2,000 a day per site, which a 20-page batch never touches.

Then generate the next batch, but only from rows that look like the ones that worked. The keyword and results-page lookups save automatically to your SEO Dashboard, so the row list and the results you checked it against are there when you come back for batch two.

What the data half costs

Here is the full pass for a set like the invoice example, priced from ContextBolt SEO’s own credit table.

  • Keyword research on the pattern: 1 credit, for up to 50 related searches.
  • Row checks with keyword_difficulty: 1 credit each. Five doubtful rows is 5 credits.
  • Results-page checks with serp_overview: 1 credit each. Two or three is plenty.
  • Search Console, including every URL inspection: free.

That is under 10 credits to decide what to build, and nothing to check what Google did with it. The 7-day free trial includes 100 credits, so a whole set fits inside it with room for a second pattern. After the trial it is $35 a month for 1,000 credits. A repeat lookup costs its credit again, so save the row list rather than re-running it. If your row list runs to thousands and you would rather pay per call, DataForSEO MCP pricing covers that raw route and the setup it asks of you.

The comparison that matters is not the price of the data. It is the cost of 400 pages you build, wait a month on, and then have to delete.

Where this stops

Honest limits, so you know what you are getting.

The numbers are estimates. Search volume comes from a large keyword index, not from Google’s own count. It is right in direction and good for ranking rows against each other. Do not plan revenue off a single row’s number.

No data is not zero. A new or oddly phrased row can return nothing and still have searchers. If a row matters to your business, build it and let Search Console tell you.

Search Console only sees what Google showed. A page with no impressions does not appear in the performance data at all. That is why the inspection step checks each URL directly.

We do not write or publish the pages. The skill writes them, Claude helps, and you review what goes live. ContextBolt SEO is the data that decides which rows are worth that work.

Programmatic SEO was never hard to build. The hard part was always the forty rows out of five hundred, and that part needs data a skill does not have.

Frequently asked questions

Something else on your mind? Get in touch.

Can Claude do programmatic SEO?

Claude can write the template and generate the pages, especially in Claude Code with a programmatic SEO skill installed. It cannot see search demand or your Search Console on its own. Connected to live keyword data and Search Console over MCP, it can also pick which rows deserve a page and check which pages Google indexed.

Is programmatic SEO against Google's rules?

Not in itself. Google's spam policy targets scaled content abuse, meaning many pages generated mainly to manipulate rankings rather than help people. Template pages that each answer a real search with their own useful data are fine. Pages that swap one word and repeat everything else are the pattern the policy describes.

How many programmatic pages should I launch first?

Start with about 20 of your strongest rows. That is enough to see whether Google indexes the template and small enough to fix cheaply. Wait a few weeks, inspect each URL in Search Console, and only generate the next batch from rows whose pages were indexed and started earning impressions.

How much does programmatic SEO with Claude cost?

With ContextBolt SEO, the keyword lookup on your pattern costs 1 credit, each extra row check costs 1, and each results-page check costs 1. A typical vetting pass is under 10 credits. Search Console calls, including inspecting every launched URL, are free. That fits inside the 100 credits of the 7-day free trial.