Lavoro · 2026
Arttrip: portare fuori da WordPress un magazine di quattordici anni
Un magazine di viaggi culturali e storia dell'arte online dal 2012, ricostruito come sito statico in quattro lingue. 2.082 pagine, un audit SEO che può far fallire il build, e nessun database da aggiornare.
Arttrip è un magazine di viaggi culturali e storia dell’arte, pubblicato dal 2012. I testi sono della sua autrice, e restano suoi. Quello che ho fatto io è stato portarlo fuori da WordPress e trasformarlo in un sito statico, senza perdere una pagina, un URL o una posizione nei motori.
Cosa doveva sopravvivere alla migrazione
Un sito di quattordici anni non è una cartella di contenuti. È un insieme di promesse fatte ai motori di ricerca e a chiunque abbia mai condiviso un link. Il vincolo che mi sono dato prima di scrivere una riga di codice era che nessun URL esistente potesse rompersi, in nessuna delle quattro lingue in cui il magazine pubblica: italiano, inglese, francese e spagnolo.
Il sito a gennaio 2025, l’ultimo anno su WordPress, ripreso dall’Internet Archive.
Il build produce 2.082 pagine, circa 420 articoli per lingua più gli hub e
gli indici che li tengono insieme. I redirect dai vecchi permalink WordPress
sono generati durante il build invece che mantenuti a mano, e scritti sia in un
file di redirect sia in un .htaccess: la regola sta in un posto solo e i due
output non possono divergere.
Lo snapshot più vecchio che l’Internet Archive conserva, giugno 2012. Il crawler non ha mai salvato il foglio di stile, quindi quello che resta è l’HTML nudo — non com’era il sito allora.
Un audit che può far fallire il build
La parte che porterei in qualsiasi progetto futuro è l’audit SEO. Non è un
report che qualcuno legge una volta a trimestre: è
scripts/audit-dist-seo.mjs --strict, girato sul build, e se fallisce la
pubblicazione si ferma.
Controlla le cose che marciscono in silenzio su un sito multilingua grande:
canonical che puntano dove devono, set di hreflang che si riferiscono a
vicenda nelle due direzioni, title e description presenti e non duplicati,
pagine indicizzabili effettivamente linkate da qualche parte. Con quattro lingue
queste relazioni si moltiplicano in fretta, e si rompono in modi che nessuno
nota finché due mesi dopo il traffico non cala.
Trasformarlo in un cancello sul build invece che in una dashboard era tutto il punto. Un numero su una dashboard è un consiglio; un exit code diverso da zero è una decisione.
Le immagini, misurate invece che date per scontate
Ogni fotografia viene convertita in WebP con i gradini responsive a 420, 800 e 1280 pixel, generati da uno script idempotente che si può rilanciare dopo ogni caricamento.
Un caso merita di essere raccontato perché va contro la regola ovvia. Per circa 400 fotografie dell’autrice, il WebP a piena risoluzione veniva più grande del JPEG di partenza: mediana 1183 pixel, già ben compresse. Forzare la conversione per coerenza sarebbe costato 65 MB per servire file dell’11% più pesanti. Quelle tengono i gradini responsive e saltano il WebP a piena risoluzione. “Converti tutto in WebP” è un buon consiglio fino al punto esatto in cui lo misuri.
Un articolo oggi, uno dei circa 420 per lingua.
Cosa mi sono portato dietro
La ricerca passa da Pagefind, indicizzato durante il build: un sito senza backend ha comunque una ricerca full-text vera in quattro lingue.
Il risultato che conta non è lo stack. È che un magazine che prima aveva bisogno di un database, di una pila di plugin e di una finestra di manutenzione adesso è una cartella di file dietro una CDN — e la cosa che più facilmente si rompe, il suo rapporto con i motori di ricerca, è l’unica che uno script verifica a ogni singolo build.