Writing

Generating two hundred pages from a spreadsheet

10 June 2025/1 min read

There is a technique that gets called programmatic SEO, and its reputation depends entirely on who is doing it.

The idea: instead of writing two hundred pages by hand, you write one template and feed it two hundred rows of data. Every row becomes a page. It is enormously efficient and it is how any directory, listings site or service-area structure gets built at reasonable cost.

It is also how the worst pages on the internet get made. The same technique, pointed at thin data, produces two hundred pages that say the same thing with a different town name swapped in. Everybody has seen these. "Looking for a plumber in Interlachen? Our plumbers in Interlachen are the best plumbers in Interlachen."

The technique is not the problem. The data is.

Here is the test I use before generating anything. Take two rows. Write out what the two pages will contain. If the only difference between them is a proper noun, stop. You do not have a dataset, you have a mail merge, and you are about to publish two hundred near-duplicates that will do you harm.

Good rows have real differences. A directory listing has a genuine address, category, and neighbors. A service-area page has a real drive time, a real local condition, a real permit rule that differs by county. If your rows carry that, the generated pages are genuinely distinct and genuinely useful, and generating them is just efficiency.

If they do not, the work is not building the template. The work is going and getting better data, and that is unglamorous, and it is the whole job.

I built a county directory this way. The pipeline was a week of cleaning records and an afternoon of templating. Everybody wants to talk about the afternoon.