PS PrestaShop Intermedio

SEO Cannibalization Detector — Guida completa PrestaShop 8 & 9

Rileva e risolvi la cannibalizzazione SEO del tuo negozio PrestaShop tramite Google Search Console: installazione, configurazione, scansioni e redirezioni 301.

Aggiornato Versione del modulo 1.0.0

SEO Cannibalization Detector si collega in sola lettura alla tua proprietà Google Search Console, identifica ogni query in cui più URL del tuo negozio PrestaShop si cannibalizzano a vicenda, e propone un’azione concreta: consolidare, redirezionare 301, differenziare o monitorare. Questa documentazione copre l’installazione, la configurazione del service account Google, l’avvio della prima scansione, la lettura del report e la gestione delle redirezioni.

Prerequisiti

  • PrestaShop 8.0 a 9.x
  • PHP 8.1 o superiore, con le estensioni openssl, curl e json
  • Un progetto Google Cloud (l’account gratuito basta, nessun credito richiesto)
  • Una proprietà Google Search Console già verificata per il dominio del tuo negozio
Verificare OpenSSL: sulla maggior parte degli hosting (o2switch, OVH, Hetzner, Infomaniak), OpenSSL è attivato per impostazione predefinita. Per verificare, aggiungi temporaneamente echo extension_loaded('openssl') ? 'OK' : 'KO'; in un file PHP di prova.

Installazione

  1. Scarica lo ZIP dfcannibalization-1.0.0.zip dalla tua area cliente DataFirefly.
  2. Nel back-office PrestaShop, vai in Moduli → Gestore moduli.
  3. Clicca su Carica un modulo e seleziona lo ZIP.
  4. Una volta completata l’installazione, clicca su Configura.

Il modulo crea 4 tabelle SQL (scan, query, page, action), una scheda admin “DataFirefly Cannibalization” sotto IMPROVE, e un token univoco per le scansioni programmate.

Creare un service account Google

Un service account è un account tecnico Google che permette al tuo negozio di leggere i dati Search Console senza richiedere autenticazione interattiva. È gratuito e limitato a sola lettura.

1. Attivare l’API Search Console

  1. Apri console.cloud.google.com.
  2. Crea un nuovo progetto (es. “DataFirefly SEO”) o seleziona un progetto esistente.
  3. Nel menu di navigazione, vai in API e servizi → Libreria.
  4. Cerca Google Search Console API e clicca su Attiva.

2. Creare il service account

  1. Nello stesso menu, vai in API e servizi → Credenziali.
  2. Clicca su Crea credenziali → Account di servizio.
  3. Assegnagli un nome esplicito (es. “datafirefly-cannibalization”) e conferma. Puoi saltare i passaggi opzionali di ruoli e accesso utente.

3. Generare la chiave JSON

  1. Clicca sull’account di servizio creato.
  2. Scheda Chiavi → Aggiungi chiave → Crea nuova chiave.
  3. Seleziona il formato JSON e conferma. Il file si scarica automaticamente.
Conserva questo file in un luogo sicuro: contiene la chiave privata del service account. Chiunque possieda questo JSON può leggere i tuoi dati Search Console.

Autorizzare il service account in Search Console

Il service account ha la propria email (visibile nel JSON sotto la chiave client_email, es. datafirefly-cannibalization@progetto-123.iam.gserviceaccount.com). Bisogna autorizzarla in lettura sulla tua proprietà.

  1. Apri search.google.com/search-console.
  2. Seleziona la tua proprietà (URL-prefix o dominio).
  3. Clicca su Impostazioni → Utenti e autorizzazioni.
  4. Clicca su Aggiungi utente.
  5. Incolla l’email client_email del service account e scegli il permesso Limitato (sola lettura).
  6. Conferma.

Configurare il modulo

Torna nel back-office PrestaShop, nella configurazione del modulo.

Service account e proprietà

  • Service account JSON: apri il file scaricato, copia-incolla il suo contenuto intero nel campo.
  • URL del sito (proprietà GSC): riproduci esattamente il formato visualizzato in Search Console.
    • Per una proprietà URL-prefix: https://www.esempio.com/ (con barra finale).
    • Per una proprietà di dominio: sc-domain:esempio.com (senza protocollo, con prefisso sc-domain:).

Soglie di rilevamento

  • Periodo di analisi: da 7 a 490 giorni. 90 giorni è un buon compromesso tra freschezza e volume statistico.
  • Impressioni minime: ignora query molto basse. 30 per impostazione predefinita. Imposta 10 se il tuo negozio è recente.
  • Click minimi: soglia di click per query per essere analizzata. 1 per impostazione predefinita. Imposta 0 per includere anche le query con impressioni senza click (utile per siti giovani).
  • Posizione massima: ignora query in cui la migliore URL è oltre questa posizione. 30 per impostazione predefinita.

Redirezioni 301 automatiche

Attiva l’intercettazione tramite il hook dispatcher di PrestaShop. Disattivalo se preferisci gestire le redirezioni manualmente in Traffico e SEO → Redirezioni.

Clicca su Salva, poi su Testa connessione GSC. Se la connessione riesce, il modulo mostra un messaggio verde.

“403 User does not have sufficient permissions”: il service account non è stato ancora aggiunto in Search Console, o la proprietà inserita non corrisponde esattamente a quella visualizzata in GSC. Verifica entrambi i lati.

Avviare una scansione

Clicca su Avvia scansione ora. Il modulo:

  1. Interroga l’API Search Console per il periodo configurato (paginazione fino a 200.000 righe).
  2. Raggruppa le righe per query.
  3. Filtra secondo le tue soglie (impressioni, click, posizione).
  4. Mantiene solo le query con almeno 2 URL distinti.
  5. Calcola il punteggio di gravità e la raccomandazione.
  6. Persiste tutto in database.

Per un sito medio (10.000 a 50.000 pagine), una scansione completa su 90 giorni richiede tra 30 secondi e 3 minuti.

Leggere il report

Una volta completata la scansione, aprila dalla scheda Cronologia scansioni. Il report elenca ogni query cannibalizzata con:

  • La parola chiave (la query Google).
  • Il punteggio di gravità come pillola colorata (low / medium / high / critical).
  • Il numero di URL in competizione.
  • La raccomandazione (REDIRECT 301, CONSOLIDATE, DIFFERENTIATE, MONITOR).
  • Lo stato (in attesa, esaminato, risolto, ignorato).

Clicca su una query per vederne il dettaglio: l’elenco degli URL concorrenti con click, impressioni, posizione media, CTR e tipo di pagina (prodotto, categoria, CMS, blog, ecc.). L’URL identificato come “vincente” è evidenziato in verde.

Comprendere il punteggio di gravità

Il punteggio è su 100, combinando 4 fattori ponderati:

  • Numero di pagine concorrenti (25 punti max) — formula: min((n-1)/3, 1) × 25. Da 4 URL concorrenti in poi, il fattore è massimo.
  • Ripartizione dei click (30 punti max) — basata su un indice HHI invertito. Una cannibalizzazione 50/50 tra due URL è peggio di un 95/5. Formula: ((1-HHI)/(1-1/n)) × 30.
  • Differenza di posizione (30 punti max) — ponderata dalla posizione del miglior risultato. Moltiplicatore × 1.0 se la migliore posizione ≤ 10, × 0.7 se ≤ 20, × 0.4 oltre.
  • Volume di impressioni (15 punti max) — scala logaritmica: min(log10(impr+1)/4, 1) × 15.

Livelli: low < 26, medium < 51, high < 76, critical ≥ 76.

Le 4 raccomandazioni

REDIRECT 301

Il modulo propone questa azione quando un URL cattura almeno il 70% dei click con una posizione media ≤ 15. È l’URL “vincente”: Google la considera chiaramente come la migliore risposta. Gli altri URL vengono redirezionati verso di essa in 301. Il contenuto può essere fuso editorialmente prima della redirezione se necessario.

CONSOLIDATE

Le performance sono ripartite (nessun vincitore chiaro). Raccomandazione: fondere il contenuto dei due URL in uno solo, poi redirezionare l’altro in 301. Questo lavoro è editoriale, non automatizzabile. Il modulo identifica il caso ma non esegue la fusione al tuo posto.

DIFFERENTIATE

Le pagine sono di tipi diversi (esempio: una scheda prodotto e un articolo di blog). La cannibalizzazione indica un problema di targeting dei tag title/meta più che un vero conflitto di contenuto. Raccomandazione: rilavorare i tag per puntare a query distinte (long-tail sul blog, query principale sul prodotto).

MONITOR

Il punteggio è basso (< 26). Nessuna azione urgente. Il modulo mantiene la query nel report ma la classifica come “da monitorare”.

Applicare una redirezione 301

Dal dettaglio di una query raccomandata REDIRECT 301:

  1. Clicca sul pulsante Seleziona come sorgente accanto all’URL da redirezionare (quello che non è il vincitore).
  2. L’URL di destinazione (il vincitore) viene pre-compilato automaticamente.
  3. Clicca su Applica redirezione.

La regola viene salvata e servita immediatamente dal hook actionDispatcherBefore. Performance: un solo SELECT per worker PHP-FPM grazie a una cache statica in memoria.

Verificare che una redirezione funziona: apri l’URL sorgente in un browser in modalità privata, o usa curl -I https://il-tuo-negozio.com/vecchio-url. Dovresti vedere un HTTP/1.1 301 e un header Location: che punta al nuovo URL.

Gestire le redirezioni attive

La scheda Redirects 301 elenca tutte le redirezioni in vigore con il loro contatore di hit. Puoi:

  • Disattivare una redirezione senza eliminarla (utile per testare un rollback).
  • Eliminare definitivamente una redirezione.
  • Vedere il numero di hit dalla sua creazione (misura l’efficacia).

Scansioni programmate tramite cron

Il modulo espone un front controller protetto da token. L’URL è mostrato nella configurazione del modulo nella forma:

https://il-tuo-negozio.com/index.php?fc=module&module=dfcannibalization&controller=cron&token=XXXX

Cron Linux standard

Su un server Linux/Unix con accesso SSH, modifica il tuo crontab:

crontab -e

Per esempio, aggiungi una scansione ogni domenica alle 23:

0 23 * * 0 curl -s "https://il-tuo-negozio.com/index.php?fc=module&module=dfcannibalization&controller=cron&token=XXXX" > /dev/null

Attività programmate OVH / o2switch / Infomaniak

Tutti questi hosting offrono un pianificatore nel loro back-office. Inserisci l’URL completo e la frequenza desiderata. Per la maggior parte dei negozi, una scansione settimanale basta ampiamente.

Rigenerare il token: disinstalla e reinstalla il modulo se pensi che il tuo token sia stato divulgato. Un nuovo token verrà generato all’installazione.

Multi-negozio

Tutte le tabelle includono una colonna id_shop. Le scansioni sono limitate al negozio attivo nel selettore in alto nel back-office. Ogni negozio ha la propria configurazione (service account, URL GSC, soglie) e la propria cronologia di scansioni.

Se gestisci più domini da un unico back-office, crea un service account distinto per proprietà, o autorizza lo stesso service account su tutte le tue proprietà Search Console.

Risoluzione dei problemi

“OpenSSL extension required”

Chiedi al tuo hosting di attivare l’estensione PHP OpenSSL. Sul 99% degli hosting moderni, è attivata per impostazione predefinita.

“Invalid service account JSON”

Il JSON incollato è incompleto o corrotto. Riscarica la chiave dalla Google Cloud Console e incollala intera, senza modifiche.

“Site URL must match exactly the GSC property”

Verifica il formato in Search Console. Una proprietà URL-prefix si scrive https://www.esempio.com/ (barra finale). Una proprietà di dominio si scrive sc-domain:esempio.com (senza protocollo, senza barra).

“403 User does not have sufficient permissions”

Il service account non è stato autorizzato in Search Console, o è stato autorizzato su un’altra proprietà. Verifica Impostazioni → Utenti e autorizzazioni.

La scansione gira ma non trova nessuna cannibalizzazione

Le tue soglie sono forse troppo elevate per il tuo volume. Prova ad abbassare le impressioni minime a 5 e i click minimi a 0.

Una redirezione 301 non si attiva

Verifica che (1) l’opzione “Redirezioni 301 automatiche” sia ben attivata nella configurazione, (2) la regola sia contrassegnata come attiva nella scheda Redirects 301, (3) la cache PrestaShop sia stata svuotata dopo l’attivazione del modulo.

Andare oltre

  • Politica di revisione: sulle query critical, intervieni entro 7 giorni. Sulle high, entro 30 giorni. Sulle medium, nel quadro di una revisione trimestrale.
  • Strategia 301 versus consolidamento: la redirezione 301 trasferisce il PageRank ma perde la possibilità di avere due pagine indicizzate. Privilegia la differenziazione per intenzioni di ricerca diverse.
  • Caso particolare delle schede prodotto: se due varianti molto vicine si cannibalizzano, fondile in un prodotto con declinazioni invece che in due prodotti separati.
Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza