Il problema che risolve
Un'analisi SEO completa richiede di incrociare diverse fonti: Search Console per le query, Analytics 4 per il comportamento, PageSpeed e CrUX per le performance, Merchant Center per il feed prodotti, Business Profile per il locale. Ogni fonte ha la sua interfaccia, i suoi export, i suoi dettagli. Metterle insieme a mano richiede l'apertura di ogni singolo strumento e il download di decine di CSV da analizzare.
MCP (Model Context Protocol) è uno standard aperto che permette a un modello linguistico di chiamare strumenti esterni. Ho scritto un server che espone le API Google come strumenti, e ora l'analisi si fa conversando con la tua AI preferita: "Quali pagine hanno molte impressioni e nessun clic", "questo redirect esiste davvero", "come si sono mossi i Core Web Vitals negli ultimi mesi". La domanda in linguaggio naturale, i dati veri in risposta.
Cosa fa
Trentacinque tool distribuiti su sei domini, tutti in sola lettura:
- Search Console (11): query flessibili, keyword in posizione 11-20, cannibalizzazione, confronto tra periodi, stato dei sitemap, copertura di indicizzazione in blocco
- Analytics 4 (8): report, funnel, incrocio tra query di ricerca e conversioni
- SEO tecnica (9): audit on-page, Core Web Vitals con andamento nel tempo, stato HTTP live, catene di redirect, pagine morte, validazione dei rich result con generazione del JSON-LD corretto
- Contenuti (2): gap di contenuto dai dati di ricerca, brief di ottimizzazione per pagina
- Local SEO (2) e Merchant Center (3): performance della scheda locale, salute del feed prodotti
Una sola codebase serve più clienti: cambia solo il file di configurazione.
Le scelte che contano
Sola lettura per scelta. Il server non invia sitemap, non modifica proprietà, non tocca i feed. Gli scope Google sono read-only dove Google ne prevede uno, dove non esiste la sola lettura si ottiene dal ruolo utente concesso. È un vincolo di progetto, non una funzionalità mancante: uno strumento che legge i dati di un cliente non deve poterli cambiare.
Un ambiente per cliente. Ogni cliente gira in un ambiente separato che conosce solo le proprie credenziali. Non è una convenzione di naming: è un'impossibilità tecnica di interrogare per sbaglio i dati del cliente sbagliato. Vale anche per la cache, che vive dentro l'ambiente.
Audit trail. Ogni chiamata lascia una riga in un log append-only per cliente: quale strumento, quando, con quali parametri, con che esito. Le chiavi sensibili sono oscurate ricorsivamente prima della scrittura.
Rispetto di robots.txt. Ogni strumento che scarica il contenuto di una pagina passa prima da un controllo unico, che legge il robots.txt del sito e si ferma se quella pagina è esclusa: lo stesso comportamento di un crawler di Google. Fa eccezione il controllo di raggiungibilità dei link in uscita, che verifica soltanto il codice di risposta HTTP senza scaricare né analizzare nulla.
Cache per la latenza, non per la quota. Il collo di bottiglia non è il numero di chiamate disponibili, è il tempo: un'analisi Core Web Vitals esegue Lighthouse e può impiegare trenta o quaranta secondi. In consulenza si rifà la stessa domanda di continuo. Con la cache, quarantunmila millisecondi diventano zero.
Output sempre limitato. Ogni strumento ha un tetto di righe e dichiara il troncamento. Una risposta da migliaia di righe manda in crisi la resa a schermo e peggiora il ragionamento del modello che deve leggerla.
205 test. Coprono la logica pura (validazione, parsing HTML e robots, paginazione, catene di redirect, esclusione del traffico di brand, oscuramento dei segreti nel log) con il runner nativo di Node JS, senza dipendenze aggiuntive. Non contattano mai le API Google.
Cosa non fa, e perché lo scrivo
Uno strumento di analisi che non dichiara i propri limiti produce numeri di cui non ci si può fidare.
Il CTR atteso è cieco rispetto alla SERP. Lo strumento che segnala gli snippet da ottimizzare confronta il CTR reale con una curva media per posizione. Se sopra il risultato compare una AI Overview il CTR cala anche con un title impeccabile, e il codice non ha modo di accorgersene. Da giugno 2026 Search Console ha un report dedicato alle impressioni nelle funzionalità generative, ma è in distribuzione parziale, riporta le sole impressioni e non passa dalle API. Anche quando ci passerà, risponderà a un'altra domanda: dirà se la pagina è stata citata dentro una AI Overview, non se una AI Overview occupava lo spazio sopra il link. È il falso positivo più frequente: prima di riscrivere un title, la SERP va guardata a mano.
La posizione media non è una posizione. Una media di 9 può descrivere una pagina che sta in terza posizione sulla metà delle impressioni e in quindicesima sull'altra metà. Non è un punto in cui la pagina sta davvero, ed è il motivo per cui una media va sempre letta insieme alla distribuzione che la genera.
Search Console e Analytics 4 non definiscono il giorno allo stesso modo. La prima riporta sul fuso del Pacifico, la seconda su quello configurato nella proprietà: per un sito italiano sono nove ore di scarto, e nessuna delle due API permette di riallinearle. Lo scarto si vede soprattutto ai bordi del periodo. Non è nemmeno la ragione principale per cui clic da ricerca e sessioni organiche non coincidono mai: pesano di più il consenso ai cookie e il fatto che un clic e una sessione siano due cose diverse. Quei numeri servono a capire il rapporto tra le pagine, non a far quadrare una contabilità.
I dati reali sulle performance ci sono solo se c'è traffico. I Core Web Vitals di campo arrivano da CrUX, che pubblica un dato solo quando il campione è sufficiente. Sotto quella soglia restano i soli dati di laboratorio: utili per il debug, non per dire come va davvero il sito.
Stato e disponibilità
La suite è operativa su un cliente reale, dove sta completando il collaudo sul campo. Lo sviluppo prosegue in base a quello che emerge dall'uso quotidiano: i limiti elencati sopra vengono dalla pratica, non da un'analisi teorica fatta prima di scrivere il codice.
Il codice non è pubblico e la suite non viene distribuita. È lo strumento con cui conduco le analisi nei progetti che seguo: quello che il cliente riceve è il lavoro, non il software. Chi mi affida la SEO di un sito ottiene diagnosi che incrociano fonti diverse in tempi che a mano non sarebbero sostenibili.
Su cataloghi e-commerce l'analisi diventa intervento: ne parlo nella pagina dedicata a SEO Product with AI.