Il file sitemap.xml è uno dei file fondamentali all’interno di un sito web che deve essere inserito per agevolare i crawler dei motori di ricerca nella fase di ricerca e di indicizzazione dei contenuti.

Supporta, dunque, la fase di discovery (scoperta) delle url’s che i motori di ricerca effettuano quando scansionano i siti alla ricerca di aggiornamenti o di nuovi contenuti.
L’utilità e la funzione di questo file (la seconda risorsa per importanza all’interno di un sito subito dopo il robots.txt) è quello di indicare quali e quante url’s sono presenti sul sito, come sono state create e impostate, quali regole e suggerimenti devono essere seguite (o considerate) dai crawler durante l’azione di scansione del sito utili per il successivo popolamento del database dei contenuti dei motori di ricerca.

RICORDA: L’analisi della sitemap e delle sue funzionalità è uno dei servizi di Consulenza SEO che offro a web agency, aziende e privati

In questo articolo affronteremo alcuni aspetti sia teorici che tecnici per finire con alcuni suggerimenti su come gestire la fase iniziale di creazione del file che è, ricordiamolo, strettamente legato a come si vuole organizzare la struttura logica del sito, le sue sezioni e i contenuti sia statici (pagine, categorie, tag, keywords, etc) che dinamiche (articoli, post, aggiornamenti, etc).
Parleremo anche del file sitemap nella versione html che è la versione in chiaro di quello .xml

Il ogni caso il portale dedicato di Google Search Console contiene tanti utili suggerimenti che si possono valutare per approfondire questi argomenti.

Utilizzo del file sitemap.xml

Dunque il file sitemap.xml è un file specificatamente dedicato ai motori di ricerca e ai suoi crawler che scansionano i siti durante la fase di crawling nel processo che porta alla creazione di una SERP.

Questo non vuol dire che non sia visibile anche dall’utente finale (proprio come il file robots.txt) ma che non è quelli il suo vero scopo che, giova ripeterlo, è quello di comunicare l’elenco di url’s (quindi contenuti) agevolando il lavoro di scansione dei motori di ricerca nel crearsi una mappa delle url’s contenute in un sito.

Se sei comunque interessato a visualizzare questo file generalmente esso viene posizionato seguendo questo percorso: https://www.sito.com/sitemap.xml

Questo è il path classico ed è quello che viene più comunemente impostato in un sito. Bisogna comunque fare alcune notazioni importanti in riferimento a questa impostazione:

  • il file sitemap.xml deve essere sempre inserito nella cartella principale o root e non in quelle secondarie proprio perché contiene tutte le url’s del sito stesso.
    E’ dunque errato creare e impostare un percorso di questo tipo: https://www.sito.com/sitemaps/sitemap.xml perché lo standard, dettato dallelinee guida, specifica che i file inseriti all’interno della sitemap devono essere contenuti nella directory del sito dove è posizionato il file stesso;
  • è fondamentale segmentare (ma anche iper-segmentare, nel caso) il file sitemap.xml creando ulteriori file che contengano specifiche parti di contenuti che si vuole far scansionare e conseguentemente indicizzare.
    Questo perché il numero massimo di url’s inseribili in un file corrisponde a 50.000 (o 50 MB) e creare più sotto files (divisi per tipologie e con ognuno le regole e i suggerimenti che poi vedremo con maggior precisione) agevola, non solo la fondamentale azione di scansione, ma anche l’eventuale ricerca di errori da parte dell’amministratore o gestore del sito.

NOTA: La dimensione massima di 50 MB può essere ridotta comprimendo il file ma bisogna sempre avere l’avvertenza di non superare il numero massimo di 50.000 url’s

Caratteristiche di una sitemap.xml

Vediamo ora la struttura logica di questo sito e le varie tag utilizzate. In questa guida faremo riferimento al codice originale senza spiegare, se non sommariamente, l’utilizzo di un eventuale plugin o modulo che gestisca le operazioni.

Questo perché avere una prima ma solida base teorica permette di comprendere meglio le conseguenze lato SEO di una corretta implementazione.

PREMESSA: il linguaggio caratteristico del file sitemap è l’XML (Extensible Mark-up Language); si tratta di una delle evoluzioni del linguaggio di marcatura HTML. Non è in effetti un vero linguaggio quanto più un meta-linguaggio che ha lo scopo di essere utilizzato per creare ulteriori dichiarazioni aventi propri marcatori o tag personalizzati.

Partiamo dunque dai tre attributi definiti obbligatori:

  1. <urlset>
  2. <url>
  3. <loc>

Il primo, chiuso dalla tag </urlset>, fornisce la dichiarazione del linguaggio, la versione e la codifica utilizzata:  <?xml version=”1.0″ encoding=”UTF-8″?>

Analizziamo meglio: si utilizza la versione 1.0 che risponde alle caratteristiche delle codifica UTF-8 quindi senza caratteri latini e alfanumerici.
Bisogna sempre gestire e impostare le url’s con i seguenti caratteri di escape classici.

Caratteri e corrispondenti codici escape

Carattere Simbolo Codice escape
e commerciale & &amp;
virgolette &apos;
doppie virgolette &quot;
Maggiore di > &gt;
Minore di < &lt;

Il secondo, chiuso dalla tag </url>, dichiara e delimita la singola url che viene inserita nel file.

Il terzo, chiuso dalla tag </loc>, inserisce l’indirizzo url (il contenuto) che si vuole far indicizzare dal motore di ricerca.
Per questo attributo bisogna specificare che:

  • deve sempre iniziare con il protocollo in uso (http o https);
  • non deve contenere più di 2048 caratteri;
  • deve contenere la barra finale /, a seconda dell’impostazione dal server.

Questi tre sono gli attributi considerati obbligatori all’interno del file.

Come già accennato è buona norma creare una sitemap indice che contenga altre specifiche sitemap ricordando che il questo caso altri saranno gli attributi da inserire in modo preventivo. Li vedremo tra poco.

Lastmod, changefreq e priority del file sitemap.xml

Altre tre attributi che possono essere inseriti nel file, pur non essendo ritenuti obbligatori ma solo consigliati, sono:

  1. <lastmod>
  2. <changefreq>
  3. <priority>

Vediamoli nel dettaglio ricordando che hanno molta importanza, in particolare il primo se opportunamente settato, per quanto riguarda la scansione dei motori di ricerca e quindi l’influenza diretta sulla SEO.

Il primo, chiuso dalla tag </lastmod>, fornisce un dato importantissimo al crawler: dichiara quando l’url associata è stata modificata l’ultima volta.
Si tratta di un’informazione di grande valore pratico.
Immagina di avere una sitemap contenente migliaia di url’s senza alcuna distinzione tra contenuti e quindi non opportunamente segmentata.
Quando il crawler visita il file è costretto tutte le volte a controllarla e scaricarla interamente.
Ma migliaia di url’s corrispondono generalmente ad alcuni MB di spazio occupato il cui download occupa banda che il crawler è costretto a non dedicare ad altre operazioni o scansioni specifiche.

In sostanza: file pesante → molta banda dedicata → minor spazio dedicato dal crawler

Come vedi non è la soluzione ottimale lato SEO. (Questa è una verifica che ti consiglio di fare se stai svolgendo un SEO Audit)

<lastmod> ci viene dunque in aiuto in questo caso. Inserendolo all’interno della dichiarazione e della corrispondente url abbiamo la possibilità di indicare al motore di ricerca quali contenuti sono stati modificati dopo la sua ultima visita/scansione del nostro sito.

Ancora più importante inserire <lastmod> nelle dichiarazioni del file sitemap-indice in modo tale che lo stesso crawler sia preventivamente informato se, all’interno di una singola sotto-sitemap (solo contenuti, solo tag, solo categorie, solo immagini, solo video, solo Custom Post Type, etc), ci sono state delle modifiche.

Il secondo attributo, chiuso dalla tag </changefreq>, riveste una minore importanza rispetto alla precedente.
Indica al crawler del motore di ricerca con quale frequenza temporale vengono aggiornati i contenuti del sito. Questa frequenza può essere impostata tramite sette valori:

  1. always (sempre)
  2. hourly (ogni ora)
  3. daily (giornalmente)
  4. weekly (settimanalmente)
  5. monthly (mensilmente)
  6. yearly (annualmente)
  7. never (mai)

Ci sono da fare alcune considerazioni a supporto:

  • always può essere usato per siti che modificano i dati ogni volta che l’utente si collega;
  • never può essere usato per i contenuti da considerare archiviati; questo non vuol dire però che il crawler non scansioni più le url’s così contrassegnate in quanto può considerare che ci siano state modifiche impreviste a questo contenuto

Ancora più importante è capire che l’attributo <changefreq> ha senso soprattutto per siti di recente creazione in quanto può spingere il crawler a tornare più frequentemente su di esso indicandogli un piano di scansione temporale più dettagliato.
Ma una volta che un progetto web è indicizzato e consolidato questo attributo perde in parte d’importanza in quanto è il crawler stesso (meglio, il parser che lo guida) a crearsi una sua mappa di scansione ripetuta.

Il terzo attributo che è possibile impostare all’interno del file sitemap.xml viene chiuso dalla corrispondente e specifica tag </priority>.

Indica un dato molto importante: il valore strutturale che vogliamo dare ai singoli contenuti del sito (pagine, categorie, articoli, prodotti, tag, immagini, etc).

Non tutti i contenuti o le sezioni di un sito rivestono lo stesso interesse per noi e per gli utenti che lo visitano. Dunque è giusto differenziarli anche agli occhi dei motori di ricerca e lo possiamo fare impostando un valore numerico che ne determini l’importanza.

La scala numerica corrispondente parte da 1 (contenuto di maggior importanza) fino a arrivare a 0,0 (importanza nulla).

Generalmente la home page è sempre quella più importante e le viene assegnata Priority 1 per poi scendere fino ad arrivare alle pagine meno utili alle quali si può assegnare valori inferiori allo 0,5.

Alcune importanti notazioni riferite a questo attributo:

  • il crawler del motore di ricerca è in grado, da solo e dopo diverse scansioni, di rendersi conto della struttura del sito e di mapparlo in modo corretto;
  • può capitare d’impostare in modo non corretto la priority dei singoli contenuti rendendo vano l’utilità di questo attributo. Meglio, dunque, non impostarla che farlo in modo errato;
  • una buona struttura del sito, logica e coerente, con un corretto e ben strutturato linking interno che veicoli la struttura verso le pagine di maggior valore soprattutto commerciale è in grado di sostituire la dichiarazione della priority agevolando di conseguenza la scansione del sito stesso.

Segmentare e iper segmentare il file sitemap.xml

Come già anticipato in precedenza è buona norma (anzi, dovrebbe rappresentare la regola) suddividere il file sitemap.xml in sottosezioni che contengano specifiche sitemap.
Queste ulteriori sitemap hanno il compito di raggruppare singoli contenuti genericamente riconducibili a queste tipologie:

  • articoli
  • tag
  • categorie
  • immagini
  • video
  • prodotti

In questo modo si aiuta sia il crawler che l’amministratore del sito nell’eventuale ricerca di errori o di avvisi.

RICORDA: E’ possibile segmentare ulteriormente la sitemap generando file che contengano solo contenuti divisi, per esempio, per mese di pubblicazione o per singola categoria o per singolo tag
In questo modo si ottengono tante sitemap molto più leggere e quindi più facilmente navigabili e scaricabili.

E’ però indispensabile, come vedremo nel prossimo paragrafo, impostare sempre l’attributo <lastmod> in ogni singola sotto sitemap in modo da indicare al crawler se ci sono state modifiche dopo la sua ultima visita/scansione.

Struttura della sitemap indice e delle singole sitemap

Come visto in precedenza per le tag o attributi della sitemap generica si devono impostare specifici attributi tra quelli obbligatori e quelli consigliati.

Nello specifico parliamo di:

  • <sitemapindex>
  • <sitemap>
  • <loc>
  • <lastmod>

I primi tre devono obbligatoriamente essere inseriti all’interno del file; il quarto, pur non essendo obbligatorio, è consigliato per i motivi che vedremo a breve.

Il primo, chiuso dall’attributo </sitemapindex>, dichiara il protocollo e quali attributi verranno utilizzati nel testo contenente le varie sitemap specifiche: <sitemapindex xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9“>

Il secondo, chiuso dall’attributo </sitemap>, ha il compito di indicare e delimitare la singola sitemap.

Il terzo, chiuso dall’attributo </loc>, serve per fornire l’indicazione precisa del percorso dove si troverà l’elenco di url’s inserite nella relativa sitemap.

Il quarto, chiuso dall’attributo </lastmod>, è fondamentale pur non essendo obbligatorio.
La sua dichiarazione è strettamente legata alla creazione di un sistema di sitemap segmentate e il motivo è spiegabile con il fatto che i motori di ricerca quando, tramite il crawler, visitano un sito leggono quanto dichiarato nel file sitemap principale (sitemap indice).
Se trovano la dichiarazione con <lastmod> controllano quando è stato fatta l’ultima scansione e scaricano solo le url’s modificate.

Si tratta di una fondamentale indicazione in quanto permette di ottimizzare il lavoro ai crawler facendo scaricare loro solo quanto effettivamente modificato invece di tutta la sitemap che, magari, pesa diversa mega.

Proprio per questo motivo sarebbe una buona regola, anche se non semplice da implementare, creare tantissime sitemap che contengano singole sezioni logiche del sito: categorie, tag, tipologie di immagini.
Suddividendole anche per mese di pubblicazione di articoli e contenuti.

Si ottiene in questo modo tanti files di dimensioni più piccole, contenenti meno url’s ma in definitiva più facilmente scaricabili.

Formati per le sitemap

Fino ad ora abbiamo parlato solo del formato XML. Ma questo non è l’unico formato con il quale è possibile creare e dichiarare una sitemap.
Come puoi leggere nella guida ufficiale, sia di sitemap.org che di Google (preso ad esempio come motore di ricerca), si possono elaborare anche sitemap con formati:

  • RSS Feed 2.0 o Atom 0.3 / 1.0
  • file di testo
  • Google site (solo per Google e non compreso nelle linee guide ufficiali di sitemap.org

Collegandoti alla guida indicata potrai leggere tutte le caratteristiche dei primi due formati.

Brevemente ti ricordiamo che il primo è utilizzato in particolare per siti e blog di news che condividono gli RSS tramite la dichiarazione degli campi; ha però il limite di non considerare tutte le url’s ma solo quelle di ultima pubblicazione.

Il secondo prevede una semplice lista di url’s (formattate in modo particolare) inserite all’interno di un file che poi verrà inserito nella root del sito e nominato in modo tale che il crawler lo possa trovare e scansionare.

La sitemap html

Si tratta di un file davvero importante che può essere inserito all’interno di un sito web è che rappresenta per l’utente la versione “visibile”, durante la normale navigazione tramite browser, del file sitemap.xml
Contiene tutte le url’s presenti ed è di aiuto sia a chi naviga, che in questo modo ha subito a disposizione tutti i contenuti, sia ai motori di ricerca che possono avere un’ulteriore possibilità per crearsi la mappatura precisa del sito.

Se si utilizza un CMS quali WordPress, Joomla, Magento, Prestashop sono disponibili plugin o moduli che opportunamente configurati creano e aggiornano in automatico questa pagina del sito.

Sitemap per versione mobile

Nel caso si utilizzi una versione dedicata per mobile (per esempio con tecnologia AMP) e i contenuti siano opportunamente creati per questi specifici devices è consigliato creare specifiche sitemap che contengano però solo le url’s dedicate al mobile da inviare al motore di ricerca.

Se invece si ha un sito responsive allora la normale sitemap è sufficiente.

Il percorso della sitemap all’interno del file robots.txt

E’ prassi corretta inserire il percorso della sitemap.xml (sia singola che indice se opportunamente creata) all’interno del file robots.txt

Questo è primo file che i crawler cercano e scansionano e deve contenere (se implementato nella root) tutte le direttive e i suggerimenti che il webmaster del sito vuole fornire ai crawler quali: le pagine o le sezioni da scansionare o bloccare, eventuali blocchi per i tanti bot, etc.

E’ fondamentale anche inserire il percorso della sitemap seguendo questa specifica sintassi:

  • Sitemap: http://www.sito.com/sitemap.xml

Si tratta, insieme all’invio tramite le opportune sezioni dei motori di ricerca e/o tramite intestazioni HTTP, del terzo metodo ufficiale per sottoporre/inviare il file ai motori di ricerca.

Come generare una sitemap online

Puoi generare una sitemap.xml in differenti modi:

  1. tramite tools online
  2. tramite plugin/moduli per CMS (WordPress, Joomla per esempio)

Nel primo caso, collegandoti a questo sito di Google Code avrai a disposizione un buon numero di risorse che potrai testare e valutare singolarmente.
Un buon generatore di sitemap è quello che trovi collegandoti a questo sito: https://www.xml-sitemaps.com
Il limite della versione gratuita è quella di creare file contenenti fino a un massimo di 500 url’s
Oltre a questo valore è necessario, se interessati, sottoscrivere un piano mensile di abbonamento per la cifra di circa 4 dollari.
In questo modo è possibile sbloccare altre risorse e ulteriori opzioni avanzate.

Un altro generatore di sitemap è quello proposto dalla sezione specifica del software desktop Screaming Frog. Si tratta, in ogni caso, di un software a pagamento.

Nel secondo caso puoi valutare, a seconda del CMS in uso, i plugin o moduli più opportuni:

Inviare e verificare una sitemap tramite Google Search Console

Dopo aver accennato a come creare una sitemap vediamo ora la procedura per poterla inviare tramite gli strumenti che Google ci mette a disposizione.
Abbiamo scelto questo motore di ricerca perché si tratta di quello maggiormente usato ma potrai facilmente trovare le procedure corrette anche per Bing, Yandex, Yahoo, etc.

Dopo avere generato il file e averlo inserito nella root principale del sito possiamo collegarci all’amministrazione del sito della Google Search Console.

Nella vecchia versione ancora in uso si segue questo percorso: Proprietà del sitoScansioneSitemap si accede alla sezione dedicata all’interno della quale puoi verificare, inviare la sitemap e successivamente, anche a distanza di giorni, testarla mentre nella nuova versione ancora non obbligatoria il percorso è: Nome proprietà –> Sitemap –> Aggiungi una nuova sitemap

Open SEO Stats: estensione per Chrome e Firefox

Una estensione gratuita per i principali browser in uso (Google Crome e Mozilla Firefox) che permette immediatamente di vedere se la sitemap.xml è installata nel sito in analisi è Open SEO Stats.

Si tratta di una comoda estensione che puoi facilmente trovare nel database delle estensioni, facilmente installabile e che una volta caricata sulla barra dei menu analizza alcune componenti lato SEO del sito e nello specifico controlla se è presente o meno il file.

Esempio della sitemap logica di un sito

Concludiamo questo lungo articolo con una considerazione: prima ancora di creare praticamente un file sitemap è obbligatorio studiare con molta attenzione la struttura del sito.
Essa deve essere logica e coerente in riferimento alle varie sezioni che verranno implementate.

Si tratta quindi di una sorta esercizio non solo mentale e che deve venire prima della realizzazione pratica e per fare questo ogni SEO Specialist o Web Agency utilizza il proprio metodo.

La sitemap è una conseguenza di questo studio e di questo metodo di lavoro.

Io ti presenterò il mio senza alcuna pretesa che si possa definire definitivo o perfetto. E’ il mio metodo che ho pensato e affinato durante gli anni e che propongo ai miei clienti o durante i corsi di formazione che erogo.

Sia che si tratti di un progetto nuovo o di un sito che vanti già una presenza online i primi passi che seguo sono lo studio attento del settore commerciale del cliente e i suoi competitors che vantano presenza strutturata.

Valuto attentamente anche, nel caso di siti già online, come è stato realizzato il sito, quali sezioni presenta, come sono state generate le url’s, come vengono inseriti i contenuti.
Tutto questo per poter avere idee più chiare del settore all’interno del quale andrò a confrontarmi.

Dopo aver terminato la lunga fase di ricerca, gestione e scelta delle migliori keywords specifiche, creo la struttura definendola in un foglio di Excel (ma puoi tranquillamente utilizzare anche Calc di LibreOffice o Fogli di Google Drive).

Creo dunque diverse colonne e le divido per:

  • Menu
  • Livelli
  • URL
  • Keywords (da un minimo di 1 a un massimo di 5)
  • Link IN
  • Link OUT
  • Meta Title
  • Lunghezza del Meta Title
  • Meta Description
  • Lunghezza della Meta Description

Ognuna di queste suddivisioni sono impostate come colonne mentre i contenuti specifici vengono inseriti nelle singole righe.

  • Con la voce Menu definisco in quale specifica posizione del sito un contenuto (riga) deve essere posizionato. Può essere main_menu, top-menu, sidebar-left, footer, top_footer, etc
  • Con la voce Livelli definisco la profondità del sito partendo sempre dal livello 1 che è la Home page.
  • Con la voce URL definisco la struttura e il percorso delle url’s che contraddistinguono le sezioni e i contenuti.
  • Con la voce Keywords inserisco le specifiche keywords che dovranno essere inserite all’interno del testo dei contenuti stessi.
    Questa è forse la procedura più lunga e laboriosa perché devono essere studiate e categorizzate tutte le keywords trovate durante la lunga fase di ricerca.
  • Con la voce Link IN annoto il valore numerico di tutti i link in ingresso a quel specifico contenuto.
  • Con la voce Link OUT annoto il numero dei link in uscita da quello specifico contenuto.
  • Con la voce Meta Title inserisco il Title che poi sarà parte dello snippet in SERP.
  • Con la voce Lunghezza Meta Title annoto il numero di caratteri della Meta Title create.
  • Con la voce Meta Description inserisco la descrizione del contenuto che anch’essa andrà a forma lo snippet (o rich snippet se inseriti anche io dati strutturati) in SERP.
  • Con la voce Lunghezza Meta Description annoto il numero di caratteri della Meta Description creata.

Seguendo questa procedura sono sicuro di creare una buona sitemap e che questa possa essere aggiornata con continuità e in modo molto semplice ma intuitivo.

AGGIORNATO IL: 17/09/2020