Wise ha circa 8,5 milioni di pagine generate in automatico per il suo convertitore di valute e, secondo le stime di Semrush riportate da Backlinko, il sito supera i 100 milioni di visite al mese. Datanyze ha fatto una cosa molto simile, con pagine generate per ogni azienda e ogni persona del suo database, e nell'analisi di Ahrefs del settembre 2024 risultava aver perso il 95% del traffico organico stimato.
Stessa tecnica, esiti opposti. Si chiama programmatic SEO (o SEO programmatica, ma in Italia quasi tutti cercano il termine inglese) e di solito viene venduta con una promessa: diecimila pagine in un weekend, traffico senza scrivere una riga. La differenza tra Wise e Datanyze spiega perché quella promessa è a metà vera e a metà pericolosa.
Cos'è la programmatic SEO (e perché non è una scorciatoia)
La programmatic SEO è la generazione di molte pagine a partire da un insieme di dati strutturati e da un template. Invece di scrivere ogni pagina a mano, parti da una ricerca che ha una parte fissa (il "head term") e una parte variabile (il modificatore), e crei una pagina per ogni combinazione che ha senso.
Qualche esempio di schema:
| Schema | Esempio di ricerca | Chi lo usa |
|---|---|---|
| conversione + valute | "1000 euro in dollari" | Wise |
| integrazione + app A + app B | "collegare Gmail a Trello" | Zapier |
| cose da fare + città | "cosa vedere a Matera" | Tripadvisor |
| servizio + città | "idraulico Reggio Emilia" | migliaia di siti locali, spesso male |
Detta così sembra una tecnica di scrittura. In realtà è un progetto di dati. Il template lo scrivi una volta sola: quello che decide se una pagina vale qualcosa è cosa ci metti dentro, e quello viene dal database.
Prima di chiederti quante pagine puoi generare, chiediti per quante combinazioni hai dati che nessun altro ha.
Gli esempi che funzionano: Wise e Zapier
Wise è l'esempio da manuale. Ogni pagina di conversione mostra il cambio aggiornato e i dati del servizio di Wise per quella coppia di valute. Sono dati che Wise ha perché è il suo mestiere, e che servono davvero a chi cerca "1000 euro in dollari". Backlinko conta 170 sitemap da 50.000 URL solo per i convertitori.
Zapier fa lo stesso con le integrazioni: oltre 590.000 pagine, e la sola sezione /apps/ porta più di 610.000 visite organiche al mese (anche questa è una stima Semrush). Ogni pagina descrive cosa puoi automatizzare tra due app specifiche, con trigger e azioni reali presi dal prodotto.
C'è anche un caso italiano raccontato con i numeri. Nella sua guida alla programmatic SEO NetStrategy descrive il lavoro su TraghettiPer, una rete di una decina di portali verticali per le prenotazioni dei traghetti: oltre 210 pagine segmentate per destinazione e, in un anno, il traffico organico è cresciuto del 132% e i ricavi organici medi del 111%. L'agenzia attribuisce il risultato alla qualità della segmentazione, non alla moltiplicazione di pagine identiche.
Il filo comune è che la pagina generata risponde meglio di qualunque pagina scritta a mano. È l'unico posto dove trovi quella combinazione di dati, e Google non ha motivo di preferirle un riassunto scritto altrove.
Quando Google punisce la programmatic SEO: Datanyze e Causal
Datanyze è il caso opposto. Secondo l'analisi di Ahrefs sui siti che hanno perso più traffico, il traffico organico stimato è passato da 486.626 a 22.077 visite mensili, il 95,46% in meno. Le pagine posizionate sono scese da 1.168.889 a 377.142, e oltre l'80% della perdita è concentrata in /companies e /people: le schede generate per ogni azienda e ogni persona.
Causal, nella stessa analisi, è andata peggio: da 307.158 a 1.485 visite stimate, il 99,52% in meno. In quel caso le pagine erano 1.800 articoli generati con l'AI partendo dalla sitemap di un concorrente, un'operazione raccontata pubblicamente su X come un "SEO heist", un colpo SEO.
Cosa dice Google, testualmente
Nel marzo 2024 Google ha aggiornato le sue spam policy introducendo lo scaled content abuse: si ha quando "molte pagine vengono generate con lo scopo principale di manipolare il ranking e non di aiutare gli utenti", e vale "indipendentemente da come vengono create", con l'automazione o con le persone. La regola allarga quella precedente sui contenuti generati automaticamente.
Nella pagina delle spam policy gli esempi sono molto concreti: usare l'AI generativa per creare molte pagine "senza aggiungere valore per gli utenti", fare scraping, applicare trasformazioni automatiche come sinonimi e traduzioni, cucire insieme contenuti di altri.
Nello stesso aggiornamento il vecchio "helpful content system" è diventato parte dei sistemi di ranking principali. Tradotto: non c'è più un filtro separato che puoi aggirare, la qualità delle pagine pesa su tutto il resto.
A maggio Google è stato ancora più esplicito nella sua guida per l'ottimizzazione nelle ricerche con l'AI: creare una pagina per ogni possibile variante di come le persone potrebbero cercare viola la policy sullo scaled content abuse, perché "un'alta quantità di pagine non rende un sito di qualità più alta". È lo stesso spostamento di cui avevo scritto a gennaio parlando di Search Everywhere Optimization: conta essere la fonte migliore, non essere presenti ovunque.
E John Mueller, già nel 2023, l'aveva detta in modo meno diplomatico: la programmatic SEO è spesso "un'etichetta elegante per lo spam".
Il 7 settembre è tornato sull'argomento su Bluesky, rispondendo a chi chiedeva conto di un sito costruito combinando nomi di dominio, tecnologie e attributi. Una programmatic SEO di quel tipo, ha scritto, "porta spesso a un sito che è spam, quasi spam o di bassa qualità", e i sistemi di Google "potrebbero aver perso fiducia" nel valore dell'intero sito a causa delle vecchie pagine. Rimediare "richiede tempo e un impegno significativo".
È il punto che si sottovaluta di più: le pagine deboli non restano isolate, pesano sul giudizio di tutto il sito. E Google non rallenta: nel 2026 ha già rilasciato quattro spam update, a marzo, giugno, agosto e settembre, e quello di settembre, partito il 24, è ancora in corso mentre scrivo.
L'AI ha peggiorato le cose
Prima dei modelli linguistici, il limite della programmatic SEO era che per riempire diecimila pagine servivano diecimila dati veri. Adesso il testo di riempimento non costa più niente, e la tentazione è generare pagine che sembrano diverse ma non dicono niente di nuovo.
Lily Ray ha analizzato oltre 220 siti clienti di piattaforme che producono contenuti con l'AI: il 54% ha perso almeno il 30% del traffico rispetto al picco, il 22% almeno il 75%. Tra gli schemi ricorrenti c'è proprio la moltiplicazione delle pagine per località e lingua. Lei stessa precisa che è una correlazione, non una prova di causa, ma il segnale è chiaro.
Il caso italiano: "servizio + comune" è quasi sempre una doorway
C'è una forma di programmatic SEO molto diffusa tra piccole aziende e professionisti italiani: una pagina per ogni comune della provincia, o della regione, con lo stesso testo e il nome del comune cambiato. "Idraulico a Scandiano", "Idraulico a Rubiera", "Idraulico a Casalgrande", e avanti così per decine di pagine.
Google ha un nome specifico per questo, ed è più vecchio dello scaled content abuse: doorway abuse. Tra gli esempi che fa nelle spam policy ci sono proprio "pagine indirizzate a regioni o città specifiche che portano gli utenti verso un'unica pagina" e "pagine sostanzialmente simili, più vicine a risultati di ricerca che a una gerarchia navigabile".
Il motivo è semplice: l'idraulico è lo stesso, il numero di telefono è lo stesso, il servizio è lo stesso. La pagina di Rubiera non aggiunge niente rispetto a quella di Scandiano. Se un giorno hai davvero qualcosa di diverso da dire per ogni zona (tempi di intervento misurati, lavori fatti lì, recensioni di clienti di quel comune), allora la pagina ha una ragione di esistere. Prima, no.
Un test semplice: se tolgo il nome della città dalla pagina, riesco ancora a capire di quale città parla? Se la risposta è no, quella pagina non dovrebbe esistere.
Come la progetterei in Laravel
Le guide che si trovano online parlano quasi tutte di strumenti no-code: fogli Google, Webflow, Airtable. Per chi sviluppa, la parte interessante è un'altra: come costruire un sistema che decide da solo quali pagine meritano di esistere.
Prendo un esempio inventato ma realistico: un portale di annunci di lavoro che vuole una pagina per ogni professione in ogni città. Lo schema è "lavoro + professione + città". Le combinazioni possibili sono centinaia di migliaia, quelle che hanno senso molte meno.

Una pagina esiste solo se ci sono dati
La prima regola sta nel controller: se per quella combinazione non c'è niente, la pagina non esiste. Niente template vuoto con scritto "nessun annuncio a Rubiera", che è esattamente il contenuto sottile che Google penalizza.
// routes/web.php
Route::get('/lavoro/{profession:slug}/{city:slug}', JobListingPageController::class)
->name('listings.city');
class JobListingPageController extends Controller
{
// Sotto questa soglia la pagina esiste per chi ci arriva, ma non la chiediamo a Google
private const int MIN_LISTINGS_TO_INDEX = 5;
public function __invoke(Profession $profession, City $city): View
{
$listings = $profession->listings()
->whereBelongsTo($city)
->active() // scope sugli annunci ancora aperti
->latest()
->get();
// Nessun dato, nessuna pagina
abort_if($listings->isEmpty(), 404);
return view('listings.city', [
'profession' => $profession,
'city' => $city,
'listings' => $listings,
'indexable' => $listings->count() >= self::MIN_LISTINGS_TO_INDEX,
]);
}
}
Sotto soglia: noindex, ma con giudizio
Tra "nessun dato" e "abbastanza dati" c'è una zona grigia. Una pagina con due annunci serve a chi ci arriva da un link interno, ma non è una pagina che vuoi in cima a Google.
{{-- resources/views/listings/city.blade.php --}}
@unless ($indexable)
@push('meta')
<meta name="robots" content="noindex, follow">
@endpush
@endunless
Attenzione però: noindex non risparmia il lavoro a Googlebot. La guida di Google sul crawl budget ricorda che le pagine in noindex vengono comunque scaricate. Se le combinazioni deboli sono decine di migliaia, è meglio non linkarle affatto, o non generarle proprio. È la stessa linea di NetStrategy, che nella sua guida lo riassume così: "non tutte le combinazioni meritano una URL indicizzabile fin dal primo giorno".
Sitemap solo per le pagine che meritano
La sitemap è il modo in cui dici a Google quali pagine ritieni importanti. Metterci dentro tutte le combinazioni possibili è il modo più rapido per fargli capire che non hai fatto una selezione. Con il pacchetto spatie/laravel-sitemap e un indice di sitemap, ognuna con al massimo 50.000 URL come da limite di Google:
use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\SitemapIndex;
use Spatie\Sitemap\Tags\Url;
$index = SitemapIndex::create();
// listing_pages: tabella di riepilogo con una riga per combinazione e il conteggio degli annunci
ListingPage::query()
->where('listings_count', '>=', 5)
->orderBy('id')
->chunk(50_000, function ($pages, int $chunk) use ($index) {
$sitemap = Sitemap::create();
foreach ($pages as $page) {
$sitemap->add(Url::create($page->url)->setLastModificationDate($page->updated_at));
}
$path = "sitemaps/listings-{$chunk}.xml";
$sitemap->writeToFile(public_path($path));
$index->add("/{$path}");
});
$index->writeToFile(public_path('sitemap.xml'));
Il template: blocchi che compaiono solo se c'è il dato
L'ultima trappola è il template sempre uguale. Se ogni pagina ha gli stessi sei paragrafi con tre parole cambiate, la differenza tra una pagina e l'altra è quasi zero. Meglio un template fatto di blocchi che compaiono solo quando c'è il dato: lo stipendio medio se hai abbastanza annunci con lo stipendio, le aziende che assumono se sono più di una, il confronto con le città vicine se hai i numeri per farlo.
Così due pagine dello stesso schema finiscono per essere davvero diverse, perché sono diversi i dati che le riempiono.
Prima di generare la prima pagina
Se dovessi partire domani con un progetto di programmatic SEO, questa è la lista che controllerei:
- Dati propri. Ho per ogni combinazione qualcosa che non si trova già nei primi dieci risultati di Google?
- Intento reale. Qualcuno cerca davvero quella combinazione? Una verifica su un campione di query in Search Console o in un tool di keyword research evita di generare pagine per ricerche che non esistono.
- Soglia. Qual è il minimo di dati sotto il quale la pagina non va indicizzata, o non va creata?
- Gerarchia. Le pagine sono raggiungibili da pagine hub (professione, regione, provincia) o esistono solo nella sitemap?
- Rilascio a tappe. Prima qualche centinaio di pagine, poi si guarda in Search Console quante vengono indicizzate e come si posizionano. Backlinko lo dice in modo diretto: non mettere online 100.000 URL in una notte.
- Monitoraggio. Rapporto di indicizzazione, statistiche di scansione e cannibalizzazione tra pagine dello stesso schema, controllati ogni settimana nelle prime fasi.
Domande frequenti sulla programmatic SEO
La programmatic SEO è morta?
No. Wise e Zapier dimostrano che funziona ancora, a patto che ogni pagina porti dati propri e utili. È morta la versione "testo uguale con una parola cambiata", e con l'AI generativa Google la cerca in modo ancora più attivo.
Google penalizza la programmatic SEO?
Google non penalizza la tecnica, penalizza il risultato. Le spam policy parlano di scaled content abuse quando le pagine servono a manipolare il ranking e non ad aiutare gli utenti, qualunque sia il modo in cui sono state create.
Posso usare l'AI per scrivere i testi delle pagine?
Google dice da tempo che l'uso appropriato dell'AI non è contro le sue linee guida. Il problema nasce quando l'AI serve a riempire pagine che non hanno niente di proprio. Usarla per descrivere dati veri va bene, usarla per inventarsi il contenuto no.
Quante pagine servono per fare programmatic SEO?
Non c'è un numero minimo. Conta il rapporto tra pagine e dati: meglio 300 pagine piene che 30.000 vuote. Google lo scrive in modo esplicito: una quantità alta di pagine non rende un sito di qualità più alta.
Le pagine "servizio + città" sono sempre vietate?
No, sono vietate quando sono doorway: pagine quasi uguali che servono solo a intercettare ricerche locali e portare l'utente sempre allo stesso posto. Se per ogni zona hai contenuti veri e diversi, sono pagine legittime.
La programmatic SEO funziona dove i dati sono il prodotto
Guardando gli esempi che reggono e quelli che crollano, il confine mi sembra netto. La programmatic SEO funziona quando il sito ha già dei dati che valgono qualcosa, e le pagine sono solo il modo per renderli trovabili. Fallisce quando le pagine sono il prodotto e i dati sono una scusa per generarle.
Con i modelli linguistici il costo di generare una pagina è sceso quasi a zero, e Google ha risposto spostando l'attenzione dal "come" al "perché": non gli interessa se la pagina l'ha scritta una persona o un template, gli interessa se aveva una ragione per esistere. Per chi sviluppa è una buona notizia, perché la parte difficile da copiare non è il template. Sono i dati, e la disciplina di non pubblicare le pagine che non li hanno.
Se l'articolo ti è stato utile, offrimi un caffè — ci vuole un secondo e significa molto.
Buy me a coffee