PS PrestaShop Intermedio

AI Competitor — Monitoraggio prezzi della concorrenza

Installare e configurare il monitoraggio dei prezzi della concorrenza su PrestaShop 8 e 9: profili concorrente, crawl del catalogo, estrazione IA, avvisi e analisi.

Aggiornato Versione del modulo 1.1.1

Presentazione

AI Competitor sorveglia i prezzi dei tuoi concorrenti direttamente dal back office di PrestaShop. Dichiari un concorrente una volta, con il suo nome e i suoi selettori; il modulo può poi recuperare l’elenco completo dei suoi prodotti dalla sua sitemap, abbinarlo al tuo catalogo, rilevare i prezzi a intervalli regolari, individuare le variazioni significative, avvisarti via email e proporti un prezzo adeguato secondo la tua strategia.

Compatibile con PrestaShop da 8.0 a 9.x, PHP da 7.4 a 8.3, multinegozio nativo. Nessuna dipendenza Composer, nessuna libreria JavaScript esterna.

Installazione

  1. Nel tuo back office apri Moduli → Gestore moduli → Carica un modulo.
  2. Carica il file dfaicompetitor.zip.
  3. Il modulo crea le sue tabelle e il menu Catalogo → AI Competitor, che raccoglie sei pagine: cruscotto, concorrenti, URL monitorati, catalogo concorrente, report e analisi, importazione/esportazione.

Dopo l’installazione viene generato un token cron univoco. Lo trovi nel cruscotto del modulo.

Aggiornamento da una versione 1.0.x

Carica semplicemente il nuovo ZIP sopra l’installazione esistente. Lo script di aggiornamento crea le nuove tabelle, aggiunge le colonne mancanti e soprattutto genera un profilo concorrente per ogni nome di concorrente già usato prima di associarvi gli URL corrispondenti. I tuoi dati esistenti vengono conservati e non c’è nulla da reinserire.

Reinstallare un pacchetto con lo stesso numero di versione di quello già presente non riesegue lo script di aggiornamento, e l’opcache PHP può continuare a servire i vecchi file. Controlla sempre il numero di versione mostrato nel cruscotto dopo un caricamento.

Configurazione iniziale

Apri Catalogo → AI Competitor. Il cruscotto raccoglie le statistiche e cinque blocchi di configurazione.

Provider IA

Il ripiego IA è facoltativo ma consigliato: è lui a subentrare quando un sito concorrente non espone né dati strutturati né un selettore utilizzabile. Sono supportati tre provider:

  • Mistral AI (predefinito), il più economico, modello consigliato: mistral-small-latest
  • Anthropic Claude, la precisione migliore sulle pagine complesse, modello consigliato: claude-haiku-4-5-20251001
  • OpenAI, buon compromesso, modello consigliato: gpt-4o-mini

Inserisci la chiave API del provider scelto. Viene mostrata mascherata; lascia il campo vuoto a un salvataggio successivo per conservare la chiave. Paghi direttamente il provider, senza sovrapprezzo DataFirefly.

Avvisi

  • Email di notifica: destinatario dei riepiloghi di avvisi e del report settimanale.
  • Soglia di variazione in percentuale, 3 % per impostazione predefinita. Al di sotto non viene creato alcun avviso.
  • Giorno del report settimanale, lunedì per impostazione predefinita.

Scraping

  • URL per lotto cron: numero di URL rilevati a ogni esecuzione, 20 per impostazione predefinita.
  • Intervallo predefinito in ore, applicato ai nuovi URL, 24 h per impostazione predefinita.
  • Timeout HTTP e User-Agent. Lo User-Agent fornito identifica il bot con il suo nome (DataFireflyBot); alcuni siti accettano un bot dichiarato che altrimenti bloccherebbero.
  • Conservazione dello storico in giorni, 180 per impostazione predefinita.
  • Pagine per tranche: numero di schede concorrenti aperte in un passaggio, 15 per impostazione predefinita.
  • Secondi per tranche: budget di tempo di ogni passaggio, 20 per impostazione predefinita. Mantienilo sotto il tuo max_execution_time di PHP.
  • Soglia di abbinamento: somiglianza minima dei titoli per accettare una corrispondenza automatica, 82 per impostazione predefinita.
  • Monitorare automaticamente le corrispondenze: crea un URL monitorato appena una pagina crawlata viene abbinata a uno dei tuoi prodotti. Disattivato per impostazione predefinita.
  • Far avanzare i crawl dal cron: attivo per impostazione predefinita.

Strategia di adeguamento

Tre strategie determinano il prezzo suggerito, sempre calcolato a partire dal concorrente più economico:

  • Allinea: lo stesso prezzo del concorrente più basso.
  • Undercut di X %: X % sotto, 1 % per impostazione predefinita.
  • Premium a X %: X % sopra, per un posizionamento di fascia alta dichiarato.

Dichiarare un concorrente

Dalla versione 1.1.0 un concorrente è una scheda a sé e non più una semplice etichetta ridigitata a ogni URL. Apri Catalogo → AI Competitor → Concorrenti → Aggiungi. La scheda si divide in tre schede interne.

Identità

Il nome mostrato ovunque, il dominio senza schema (esempio.it), la valuta, l’intervallo di rilevazione, l’opzione di estrazione IA forzata e un campo di note libere. Il dominio è ciò che permette al modulo di associare automaticamente un nuovo URL al concorrente giusto.

Selettori

I selettori CSS del prezzo, del nome del prodotto, dello SKU, dell’immagine e della disponibilità. Lasciali vuoti se il sito pubblica JSON-LD, come fa la maggior parte dei negozi moderni. Sintassi supportata: tag, .classe, #identificatore, [attributo=valore], discendente e figlio diretto. Esempio: div.product-price > span.amount

È il vantaggio principale della scheda concorrente: il giorno in cui un sito rifà il tema e rompe un selettore, lo correggi qui una sola volta e la correzione si propaga a tutti gli URL di quel concorrente che non hanno un selettore proprio.

Crawl del catalogo

L’URL della sitemap (lascialo vuoto per leggere le direttive Sitemap: del robots.txt del dominio), l’URL di una pagina categoria di partenza, il selettore dei link prodotto e quello del link alla pagina successiva, gli schemi di URL da trattenere o scartare, il ritardo tra due richieste, il tetto di prodotti e il rispetto del robots.txt.

Gli schemi accettano una semplice sottostringa o un’espressione regolare delimitata da barre. Su un negozio italiano, /prodotto/ come schema da trattenere basta spesso a isolare le schede prodotto in una sitemap che contiene anche il blog e le pagine CMS.

Fare il crawl del catalogo di un concorrente

Apri Catalogo → AI Competitor → Catalogo concorrente, scegli il concorrente, la fonte di scoperta e il tetto di prodotti, poi avvia il crawl.

Sono disponibili due fonti:

  • Sitemap, consigliata. Il modulo legge la sitemap configurata o quella annunciata dal robots.txt, segue gli indici di sitemap in modo ricorsivo e trattiene gli indirizzi corrispondenti ai tuoi schemi.
  • Pagine categoria, quando nessuna sitemap è utilizzabile. Il modulo parte dall’URL di elenco, raccoglie i link prodotto tramite il selettore del concorrente e segue il link alla pagina successiva.

Alla scoperta segue una fase di arricchimento che apre ogni pagina, ne estrae titolo, SKU, EAN, marca, prezzo, disponibilità e immagine, poi tenta l’abbinamento con il tuo catalogo.

Il crawl avanza a tranche limitate nel tempo, pilotate dalla pagina aperta con una barra di avanzamento, e riprende a ogni passaggio del cron. Una sitemap da decine di migliaia di URL viene elaborata senza mai raggiungere il max_execution_time di PHP. Puoi chiudere la pagina: il lavoro prosegue lato cron.

Il modulo prova tre strade, in ordine di affidabilità decrescente:

  1. EAN13, cercato sui tuoi prodotti e sulle loro varianti. Corrispondenza certa, punteggio 100.
  2. Riferimento, riferimento fornitore o MPN. Punteggio 95.
  3. Somiglianza del titolo, con una ponderazione che dà più peso ai numeri di modello e ai marchi che alle parole comuni, e una penalità quando i due titoli hanno lunghezze molto diverse. Il punteggio deve superare la soglia configurata, 82 per impostazione predefinita.

Ogni riga del catalogo mostra metodo e punteggio della sua corrispondenza. Una corrispondenza dubbia si corregge a mano: il campo di abbinamento propone un completamento automatico sul tuo catalogo, per nome o per riferimento. I pulsanti Riabbina rilanciano l’operazione sulle righe non abbinate, o su tutte, il che è utile dopo aver corretto dei riferimenti dalla tua parte.

Una riga abbinata diventa un URL monitorato tramite il suo pulsante Monitora, o in blocco tramite l’azione di gruppo su una selezione. L’URL creato eredita nome, selettori, valuta e intervallo del concorrente.

Aggiungere un URL a mano

Il crawl non sostituisce l’inserimento puntuale. Apri Catalogo → AI Competitor → URL monitorati → Aggiungi:

  • Concorrente: la scheda da cui l’URL erediterà. Lascialo vuoto per inserire tutto a mano.
  • Prodotto: selezionato nel tuo catalogo.
  • URL: l’indirizzo completo della scheda prodotto concorrente.
  • Nome del concorrente, selettore CSS, valuta, intervallo: compilati dal concorrente quando li lasci vuoti.

Se non scegli un concorrente, il modulo cerca quello il cui dominio corrisponde all’indirizzo inserito e vi associa l’URL. Il pulsante Scrape di ogni riga lancia una rilevazione immediata, comodo per convalidare un URL appena creato.

Come funziona l’estrazione

Per ogni URL il modulo prova quattro metodi a cascata e si ferma al primo che riesce:

  1. JSON-LD: i dati strutturati Product/Offer, presenti sulla grande maggioranza dei siti e-commerce. Prezzo, valuta, disponibilità e, per il crawl, titolo, SKU, GTIN e marca sono letti direttamente senza configurazione.
  2. OpenGraph: i tag meta product price amount.
  3. Selettore CSS: quello del concorrente, o quello proprio dell’URL se ne ha uno.
  4. IA: un estratto HTML ripulito viene inviato al tuo provider, che restituisce prezzo, valuta e stato di stock. I formati di prezzo internazionali sono gestiti (1 299,90 come 1.234,56 o $49.99).

Comincia sempre senza selettore CSS: il JSON-LD basta nella maggior parte dei casi. Aggiungi un selettore o l’IA forzata solo se la colonna Status mostra no_price.

Importazione ed esportazione

La pagina Importazione / Esportazione serve a portare una configurazione da un negozio all’altro.

Concorrenti in JSON

L’esportazione produce un file con nomi, domini, selettori e impostazioni di crawl. Spunta i concorrenti da includere, o non spuntarne nessuno per esportarli tutti. All’importazione l’abbinamento avviene prima per nome poi per dominio; una casella decide se un concorrente già presente viene aggiornato o ignorato, e una modalità anteprima annuncia il risultato senza scrivere nulla.

URL monitorati in CSV

Colonne attese: product_id, product_reference, competitor_name, competitor_domain, url, price_selector, currency_iso, use_ai_extraction, scrape_interval_hours, active.

Solo competitor_name e url sono obbligatorie, più product_id o product_reference per sapere a quale prodotto associare l’URL. Un nome di concorrente sconosciuto crea la sua scheda automaticamente, così che un solo file basta ad avviare un’installazione intera. Il separatore viene rilevato automaticamente, e l’importazione parte in modalità anteprima, che riporta riga per riga cosa verrebbe creato, aggiornato o ignorato.

Catalogo concorrente in CSV

Esportazione di tutto ciò che il crawl ha scoperto, con il prodotto abbinato, il metodo e il punteggio. Una casella limita l’esportazione alle sole righe abbinate. Comodo per un audit offline o da condividere con l’ufficio acquisti.

Configurare il cron

Il funzionamento periodico si basa su un endpoint protetto da token, mostrato nel cruscotto. Programma la sua chiamata ogni 30 minuti:

*/30 * * * * curl -s "https://il-tuo-negozio.com/index.php?fc=module&module=dfaicompetitor&controller=cron&token=IL_TUO_TOKEN" > /dev/null

A ogni esecuzione il cron rileva il lotto di URL il cui intervallo è scaduto, invia le email di avviso in attesa, spedisce il report settimanale se è il giorno giusto, fa avanzare di una tranche un crawl di catalogo in corso e purga lo storico oltre la conservazione configurata. La risposta è un JSON riepilogativo.

Il token può essere rigenerato in qualsiasi momento dal cruscotto, nel qual caso i cron esistenti vanno aggiornati. È disponibile anche un avvio manuale tramite il pulsante Run cron now.

Avvisi

Sono generati cinque tipi di avviso, ciascuno con una gravità:

  • price_drop / price_rise: variazione oltre la soglia. Una variazione pari o superiore al 10 % passa a critical.
  • undercut: un concorrente scende sotto il tuo prezzo di vendita IVA inclusa. Sempre critical.
  • out_of_stock / back_in_stock: transizioni di disponibilità rilevate tramite i dati strutturati o l’IA.
  • scrape_error: solo dopo 3 fallimenti consecutivi, per eliminare il rumore delle indisponibilità passeggere.

Gli avvisi sono raggruppati in un’unica email riepilogativa per ogni esecuzione del cron.

Report e analisi

La schermata Report e analisi sta in quattro schede, dietro una fascia di indicatori mostrata in permanenza: prodotti confrontati, quota di prodotti in cui sei il più economico, scarto medio rispetto al prezzo minimo di mercato, avvisi aperti, salute dello scraping. Un selettore di periodo copre 7, 30 o 90 giorni.

Panoramica

La tua posizione sul mercato sotto forma di barra (il più economico, in mezzo, il più caro), i prodotti dove perdi sul prezzo ordinati per scarto decrescente, quelli dove hai margine per risalire, una tabella per concorrente che indica chi ti batte più spesso, e la sintesi esecutiva redatta dall’IA. Le opportunità si esportano in CSV.

Avvisi

L’elenco filtrabile per tipo, gravità, stato e testo libero, con un grafico del volume giornaliero per gravità. Ogni riga si conferma o si riapre senza ricaricare la pagina, e il contatore degli avvisi aperti si aggiorna nella fascia.

Analisi prodotto

Scegli un prodotto monitorato: il modulo traccia il tuo prezzo rispetto a quello di ciascun concorrente sul periodo, mostra il suggerimento di adeguamento con il prezzo attuale e quello proposto affiancati, ed elenca le fonti con un pulsante di rilevazione immediata su ciascuna.

Dalla versione 1.1.0 ogni rilevazione registra anche il tuo prezzo del momento. È ciò che rende ricostruibile lo storico degli scarti. Su un negozio aggiornato da una 1.0.x, la curva del tuo prezzo diventa esatta solo a partire dalle rilevazioni successive all’aggiornamento; prima di quella data il modulo usa il tuo prezzo attuale come ripiego.

Salute

Gli URL che falliscono, con il loro stato, il numero di fallimenti consecutivi, l’ultimo errore e un pulsante di rilancio, più un tasso di riuscita per concorrente. È il primo posto da guardare quando una cifra sembra sbagliata: un concorrente il cui scraping è caduto falsa le medie.

Suggerimento di prezzo

Nella scheda analisi prodotto il modulo mostra il tuo prezzo attuale, il minimo, la media e il massimo dei concorrenti, le fonti e il prezzo suggerito secondo la tua strategia. Il pulsante Applica scrive il prezzo sul prodotto PrestaShop.

L’applicazione non è mai automatica. È una scelta deliberata per evitare le spirali al ribasso a specchio tra concorrenti dotati dello stesso tipo di strumento. La conversione da prezzo IVA inclusa a prezzo IVA esclusa è gestita automaticamente secondo l’aliquota del prodotto.

Risoluzione dei problemi

Il crawl non scopre alcuna pagina

Verifica prima che il dominio del concorrente sia indicato senza schema e senza www.. Apri poi https://dominio/robots.txt in un browser: se non contiene alcuna direttiva Sitemap:, indica l’URL della sitemap a mano nella scheda del concorrente. Se la sitemap esiste ma non viene trattenuto nulla, il tuo schema di filtro è probabilmente troppo stretto: svuotalo per vedere cosa emerge, poi restringilo.

Il crawl scopre pagine che non sono prodotti

Indica nello schema da trattenere il segmento comune alle schede prodotto del sito, per esempio /prodotto/ o /p/, e nello schema da scartare ciò che inquina il risultato, per esempio /blog/. Svuota poi il catalogo del concorrente e rilancia.

Molte pagine restano non abbinate

Guarda prima se le schede concorrenti espongono uno SKU o un EAN: senza identificativo comune, solo la somiglianza del titolo può funzionare. Indica il selettore di SKU nella scheda del concorrente, rilancia il crawl, poi usa Riabbina. Se i tuoi titoli differiscono molto da quelli del concorrente, abbassa la soglia di abbinamento a 75 e verifica le corrispondenze ottenute prima di lasciarla così.

Stato «no_price»

Nessuno dei metodi ha trovato un prezzo. Verifica l’URL in un browser, aggiungi un selettore CSS di prezzo nella scheda del concorrente, oppure attiva l’estrazione IA forzata.

Stato «error» o «blocked»

error significa che la pagina non ha risposto (HTTP 400 e oltre, o timeout). blocked significa che il robots.txt del sito vieta quell’indirizzo al nostro bot. Nel primo caso personalizza lo User-Agent, aumenta il timeout o allarga l’intervallo. Nel secondo è una decisione del sito visitato che spetta a te valutare.

L’estrazione IA non funziona

Verifica che la chiave API sia valida e che il modello esista presso il tuo provider. Gli errori di chiamata all’IA sono registrati in Parametri avanzati → Log con il prefisso [dfaicompetitor].

Le email non arrivano

Prova la configurazione email di PrestaShop in Parametri avanzati → E-mail. Il modulo usa il sistema di posta nativo con i propri modelli FR e EN.

Buone pratiche e conformità

  • Lascia attivo il rispetto del robots.txt. Si applica alla scoperta come alla lettura delle schede, onora un Crawl-delay pubblicato e applica la regola di precedenza dello standard: tra un Allow e un Disallow che corrispondono entrambi, vince la regola più lunga.
  • Mantieni un ritardo tra richieste di almeno un secondo e un tetto di prodotti ragionevole al primo crawl di un sito che non conosci.
  • Allarga gli intervalli di rilevazione: da 6 a 24 h per URL bastano ampiamente per il monitoraggio dei prezzi.
  • Conserva uno User-Agent identificabile. È la pratica leale attesa nella sorveglianza concorrenziale, e alcuni siti tollerano un bot dichiarato che altrimenti bloccherebbero.
  • La lettura di prezzi pubblici è in generale lecita in Europa, ma resti responsabile dell’uso dei dati raccolti e della valutazione delle condizioni d’uso dei siti visitati.
Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza