Programmatic SEO con Astro: Scalare con Content Collections
2 min lettura

Programmatic SEO con Astro: Scalare con Content Collections


Il Programmatic SEO (pSEO) è la strategia di creare centinaia o migliaia di pagine atterrando su query strutturate (es. “Miglior Dentista a [Città]”, “Ricetta con [Ingrediente]”). Far girare un progetto pSEO su WordPress richiede plugin costosi e server potenti. Farlo con Astro (Static Site Generator) costa zero di hosting e garantisce Core Web Vitals perfetti (100/100).

Ecco come architettare un sistema pSEO moderno usando le Content Collections e la Type Safety di TypeScript.

1. Il Dataset (Source of Truth)

Invece di un database SQL, possiamo usare file JSON o YAML. Per un progetto “Servizi Locali”: src/data/cities.json:

[
  { "slug": "milano", "name": "Milano", "population": 1300000, "region": "Lombardia" },
  { "slug": "roma", "name": "Roma", "population": 2800000, "region": "Lazio" }
]

src/data/services.json:

[
  { "slug": "seo-audit", "name": "Audit SEO", "price": "500€" },
  { "slug": "link-building", "name": "Link Building", "price": "Varia" }
]

2. Combinatorial Generation (Dynamic Routes)

Vogliamo creare una pagina per ogni combinazione Servizio + Città (“Audit SEO a Milano”, “Link Building a Roma”). In Astro, usiamo un file dinamico [...slug].astro.

// src/pages/servizi/[service]/[city].astro

export async function getStaticPaths() {
  const cities = await import('../data/cities.json');
  const services = await import('../data/services.json');

  // Prodotto Cartesiano
  return services.flatMap(service => 
    cities.map(city => ({
      params: { service: service.slug, city: city.slug },
      props: { service, city }
    }))
  );
}

const { service, city } = Astro.props;

3. Templating Intelligente (Spintax 2.0)

Il rischio del pSEO è il “Thin Content” (contenuto duplicato). Non basta cambiare il nome della città. Dobbiamo usare componenti condizionali.

<h1>{service.name} professionale a {city.name}</h1>

<p>
  Se cerchi una consulenza web in {city.region}, il nostro team
  {city.population > 500000 ? 'copre tutta la metropoli' : 'opera anche in provincia'}.
</p>

<LocalCompetitors city={city.slug} /> <!-- Componente che mostra dati reali locali -->

4. Build Performance

Con Astro v5, la generazione di 10.000 pagine statiche richiede meno di 60 secondi grazie al parallelismo. Il risultato sono 10.000 file HTML puri, pronti per essere serviti da una CDN (Netlify/Vercel/Cloudflare). Googlebot troverà un sito velocissimo, strutturato e interlinkato perfettamente. Questa è la base per dominare le SERP locali nel 2026.

Potrebbe interessarti anche