How I Built a 5,000-Page Programmatic SEO Engine with Next.js, Supabase and Claude AI

Published: (February 21, 2026 at 05:39 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

The Architecture

The stack is straightforward:

  • Frontend: Next.js 16 with the App Router
  • Database: Supabase (PostgreSQL)
  • Automation: Make.com for the data pipeline
  • AI: Claude API for content generation

The site serves five languages (NL, EN, DE, FR, ES) across three page types:

  1. Flight detail pages
  2. Airport hub pages
  3. Airline overview pages

Data Pipeline

A Make.com scenario runs every eight hours and:

  1. Pulls delayed and cancelled flight data from the AviationStack API.
  2. Enriches each record with airport details, weather context from OpenWeather, and great‑circle distance calculations for compensation amounts.
  3. Calls the Claude API to generate a Dutch‑language analysis with badges, summaries, and passenger tips.
  4. Upserts the enriched record into Supabase using a deterministic slug pattern: flight_iata-dep-arr-date.

Page Generation

Next.js dynamic routes with ISR (Incremental Static Regeneration) handle rendering.

  • Each flight page lives at /[locale]/vlucht/[slug].
  • Data is fetched from Supabase at request time with a one‑hour revalidation window.
  • New flights appear automatically without a rebuild, and pages are cached at the edge for fast delivery.

The slug strategy encodes the flight number, route, and date (e.g., kl1234-ams-lhr-2026-02-15), making each URL unique and keyword‑rich. Google can parse the slug and understand exactly what the page is about.

Multi‑language SEO

  • Pages are generated in five languages using locale‑based routing.
  • Path structures differ by language (/nl/vlucht/ vs /en/flight/) to match local search patterns.
  • hreflang tags connect the language variants.
  • A dynamic sitemap lists all published flights across all locales—currently around 5,700 URLs from 1,134 flights.

Internal Linking Strategy

  • Each airport page links to its recent flights.
  • Each airline page shows flights from that carrier.
  • The footer on every page includes cross‑links to airports, airlines, and recent cancellations.

This creates a dense internal link graph that helps Google discover and crawl all pages from just a few entry points.

Lessons Learned

  • Crawling: Programmatic SEO on a new domain is a patience game. With zero backlinks, Google took weeks to crawl beyond the homepage, even with a complete sitemap. External backlinks are essential to kick‑start crawling.
  • AI Guardrails: Claude produces great Dutch‑language summaries, but prompt engineering required multiple iterations to achieve consistent badge assignments and an appropriate tone.
  • ISR Caching: Pages won’t update until someone visits them, which can cause stale data on airport pages. A cron‑based cache‑warming script resolves this.

The Result

FlyClaim.AI now generates over 5,000 pages automatically, each targeting a specific delayed or cancelled flight with unique AI‑written content in five languages. The entire system runs on Vercel’s free tier, Supabase’s free tier, and Make.com’s starter plan.

If you’re interested in programmatic SEO or building content engines with AI, feel free to ask questions in the comments.

Check it out:

0 views
Back to Blog

Related posts

Read more »