S SEO Catalog
Programmatic SEO Starter

Generate thousands of SEO pages from a CSV

Professional template built with Astro 5 + HTMX. Load your data, deploy to any static host. No WordPress, no database, no server.

Pages generated
1k–100k+
Build time
<5 min
Lighthouse SEO
100
Hosting cost
$0

Everything you need to ship a scalable SEO site

No shortcuts. Real schema.org markup, correct hreflang, auto sitemap, client search and HTMX filters.

Astro 5 + HTMX 2

100% static output. HTMX for interactivity without React or Vue. Deploys anywhere.

CSV or JSON

Edit a CSV in Excel or Google Sheets. Zod validation. No CMS, no DB.

Bilingual out of the box

/es/ and /en/ routes from commit one. Distinct slugs per language with automatic hreflang.

Search + facets

Client-side full-text search via MiniSearch. Category and tag filters pre-rendered as static HTMX fragments.

Production-ready SEO

Canonical, hreflang, OG, Twitter Card, JSON-LD per item, i18n sitemap. Lighthouse SEO 100.

Dark mode included

Toggle with localStorage persistence. Respects prefers-color-scheme. No flash on first load.

Tailwind CSS v4

Modern accessible design. OKLCH tokens. Rebrand by changing 10 CSS variables.

Type-safe end-to-end

Strict TypeScript, Zod schemas validate your CSV at build time. Clear errors before deploy.

Deploy anywhere

Vercel, Netlify, Cloudflare Pages, GitHub Pages, S3. No server runtime, no lock-in.

How it works

Three steps. No magic abstractions.

1

1. Edit your CSV

Open data/items.csv in Excel or Google Sheets. One row = one page. Per-language columns for title, description, category, tags.

2

2. Run npm run build

Astro generates static HTML for each item × language + paginated listings + facet pages + HTMX fragments + sitemap + search index.

3

3. Upload /dist

Drag-and-drop to Vercel or Netlify. Free hosting. Instant Google indexing.

vs WordPress programmatic SEO plugins

PageForge, MPG, Page Generator Pro charge $59–$199 per year. This is a one-time purchase.

Programmatic SEO Starter WordPress + pSEO plugin
Price One-time purchase $59–$199 / year
Hosting Static, $0 WP hosting, $10–$50/mo
Speed Lighthouse 100 Lighthouse 50–80 typical
Language Trilingual native WPML add-on ($99/yr)
Data editor CSV (Excel/Sheets) WP admin
Customization TS/Astro code Shortcodes/PHP
Google's scaled-content policy Aligned by design Depends on plugin
Vendor lock-in None Plugin + WP

Real use cases

Local directories

Pages for every service × city combo. "Plumbers in Madrid", "Dentists in Seville".

500 services × 50 cities = 25,000 pages

Product catalogs

One SEO page per product with price, schema.org Product, hreflang.

5,000 products × 2 languages = 10,000 pages

Comparisons

"X vs Y" pages for every pair of products or tools.

100 tools → 4,950 comparison pairs

Frequently asked questions

Will this trigger Google's scaled-content-abuse penalty?

Not by itself. Google's 2024+ policy penalizes thin, duplicative, low-value pages — not programmatic generation per se. This starter is built to stay on the right side: Zod validation rejects empty rows, every page has unique data per row (title, description, category, tags, image, price), schema.org JSON-LD per dataset type (Product/Recipe/LocalBusiness/Apartment/Article), BreadcrumbList JSON-LD, internal links from facet pages, real per-language translations, hreflang chain, Lighthouse 100. Your job: write ≥150 unique words per row, add editorial commentary to top pages, noindex thin facets (< 3 items). Full checklist in CONTENT.md.

How is this different from a free GitHub template?

Free templates give you structure. You pay here for: commercial license (unlimited client sites), 5 ready-to-use schema.org JSON-LD types, 6 data-source adapters (Sheets/Notion/Airtable/Sanity/Storyblok/local), 4 worked example datasets, real ES/EN/FR translations, Lighthouse 100/100/100/100 verified on production, CSV validation CLI, Vitest test suite, deploy configs for 5 hosts, AI-ready docs (CLAUDE.md, AGENTS.md, llms.txt), 12 months email support. Time saved: ~40-60 hours vs starting from a bare template.

Do I need to know how to code?

You need to edit files. For customizing design or logic, basic Astro/JavaScript knowledge helps. README includes step-by-step recipes.

Can I connect Google Sheets or Notion?

Yes. The data loader is modular. README documents how to switch the CSV source for a Sheets/Notion/Airtable/Sanity/Storyblok fetch via environment variables. No code change required.

How many pages can it generate?

Up to ~50k pages with reasonable build times (<10 min). Beyond that, migrate facets/pagination to a server endpoint with an adapter (Vercel, Cloudflare).

License?

Commercial license. Use on client sites, your own products, or to resell services. Cannot redistribute the codebase as a competing product.

Support?

Email + private repo access with changelog. Updates for at least 12 months.

What if Google deindexes my pages?

It's always about content thinness, never the tech stack. Read CONTENT.md: it has a self-audit checklist, anti-patterns to avoid, and a recovery plan if it already happened. Short version: noindex thin pages, add unique editorial content to top pages, prioritize quality over quantity (200 indexed pages are worth more than 20,000 deindexed ones).

Works with visual frameworks (Tailwind UI, Flowbite)?

Yes. Base design uses Tailwind CSS v4. Drop-in any Tailwind component library.

Get updates

Subscribe to our monthly newsletter. No spam.

By subscribing you agree to receive emails. Unsubscribe any time.

Ready to scale your SEO

One purchase. Infinite pages. No monthly fees.

Buy now