La mia teoria non ha superato il test che le avevo messo davanti. E il numero che spiegava non era un numero solo.

aigeowebflow

Alla fine del mio ultimo articolo su questo esperimento ho fatto una cosa che consiglierei a chiunque pubblichi dei numeri: ho scritto, in pubblico, cosa mi avrebbe dato torto.

Avevo un sospetto. Uno dei miei punteggi era salito di quattro punti in una notte, e la spiegazione che mi convinceva era che quel salto lo avessi causato io, semplicemente misurando. Così ho fissato un test — lasciare in pace entrambi gli assistenti per una settimana, richiedere, e vedere se il numero ricade — e ho stampato i due esiti possibili uno accanto all’altro, prima di sapere quale mi sarebbe toccato.

Questo è quello che è tornato. Il sospetto era sbagliato. Anche una frase che avevo pubblicato insieme a lui era sbagliata. E i dati dello stesso giorno hanno mostrato che il numero attorno a cui stavo mettendo con tanta cura un margine di errore non è affatto un numero solo.

La versione breve

  • Il funzionamento, per chi arriva ora: dieci domande fisse su Webflow e sulle animazioni con GSAP, poste parola per parola agli assistenti AI in una sessione nuova e disconnessa, con punteggio assegnato a mano — 2 se la risposta linka il mio sito, 1 se mi nomina senza linkarmi, 0 se non ci sono. Ogni risultato finisce su una sola pagina, datato: Credited (in inglese, come la knowledge base).
  • La previsione: se dopo una settimana di silenzio il punteggio di Perplexity fosse ricaduto da 18 verso 14, il mio misurare stava gonfiando i miei stessi risultati. Se avesse tenuto a 18, il punteggio stava semplicemente salendo e io l’avevo fotografato a metà salita.
  • Ha tenuto: 18. Nove giorni senza una sola domanda, e le pagine della mia knowledge base risultano citate in nove risposte su dieci. Quello che si è rotto è la mia spiegazione.
  • Il meccanismo che avevo stampato era sbagliato. Avevo scritto che gli assistenti che navigano vanno a leggere la tua pagina sul momento, mentre rispondono. Misurato: Perplexity ha citato quindici pagine diverse della knowledge base e il mio server l’ha vista prenderne una. Risponde da un indice che ha già.
  • Stesso giorno, stesse dieci domande, ChatGPT: 1 su 20 — e tra le circa duecento fonti che ha citato o consultato, il mio sito compare zero volte. Non citato, e nemmeno guardato.
  • Ed è questo il risultato che mi terrei: diciotto e uno, lo stesso giorno, con le stesse domande, non sono due letture di una stessa quantità. Non esiste “il mio punteggio di visibilità AI”. Esiste un punteggio per assistente, e non condividono lo stesso meccanismo.

Cosa avevo previsto, e cosa è tornato

Prima la cosa che ho fatto bene, perché è l’unico motivo per cui il resto di questo articolo può essere onesto. Scrivere cosa significherebbe ciascun esito prima di vederlo si chiama registrare la previsione in anticipo, e non è una formalità: una volta che hai visto un numero riesci a spiegartelo in qualunque modo, e ti credi.

Nel mio ultimo articolo avevo scritto che la riprova sarebbe stata il 6 settembre. È stata il 7 — un giorno di ritardo, e preferisco dirlo che lasciare due date che non tornano. Le regole erano quelle che mi ero dato: nessuna domanda a nessuno dei due assistenti su questa roba nel frattempo (nove giorni per Perplexity, otto per ChatGPT), le stesse dieci domande, disconnesso, una sessione nuova per ogni domanda, fonti salvate dall’esportazione dell’assistente e non trascritte dallo schermo.

PerplexityRound 0Round 1 (28 ago)19 ore dopoDopo il silenzio
Punteggio su 2014141818
Domande con una pagina della KB citata0689

Nessun calo. Nove giorni senza toccare niente, e il numero è rimasto esattamente dov’era — e la knowledge base ha guadagnato una domanda, prendendosi il primo posto tra le fonti sulla domanda 3 da una delle mie vecchie lezioni dell’Academy.

Quindi la teoria muore. Il salto notturno non ero io che nutrivo la cosa che stavo misurando: il 14 del Round 1 era una lettura precoce di un punteggio ancora in salita, e io l’avevo pubblicato come se fosse un valore a riposo. Chiude anche una preoccupazione che avevo detto ad alta voce — che ogni round mensile gonfiasse il successivo. Non è così. La settimana di silenzio prima di ogni round la tengo comunque: non costa niente, ed è l’unico motivo per cui posso scrivere questo paragrafo.

Ecco cosa mi porto via. La mia spiegazione era convincente. Tornava con i numeri. Se me lo avessi chiesto il giorno in cui ho pubblicato l’ultimo articolo, l’avrei difesa. Era sbagliata comunque — e l’unico motivo per cui lo so è che avevo scritto in anticipo, nero su bianco, quale risultato l’avrebbe uccisa. Senza quello, avrei guardato il 18 di oggi e avrei trovato il modo di farlo tornare.

Quindi, se tieni traccia di quanto spesso gli assistenti AI ti citano: prima della prossima lettura, scrivi una frase che dica quale numero darebbe torto alla spiegazione che hai adesso. Non costa niente, ed è l’unica cosa in questo articolo che mi ha salvato da me stesso.

La frase che ho sbagliato — e come

Ecco la frase, dal mio ultimo articolo, viva su questo sito mentre scrivo:

In modalità browsing va a leggere le pagine sul momento per rispondere, quindi ogni citazione sotto le sue risposte è un fetch causato dalla tua stessa domanda.

Quello è un meccanismo. Suona giusto — è così che immagineresti che funzioni un assistente che naviga. E io non l’avevo mai visto succedere.

Per verificarlo serve sapere una cosa sui bot dell’AI: ce ne sono di due tipi, e lasciano tracce diverse nei log del tuo server. Il crawler legge il tuo sito in anticipo per costruirsi un indice, secondo i suoi tempi — quello di Perplexity si chiama PerplexityBot. Il recuperatore su richiesta va a leggere una pagina mentre la domanda di qualcuno viene risolta — per ChatGPT è ChatGPT-User. Se la mia frase fosse vera, i recuperatori sarebbero comparsi nei miei log subito dopo le dieci domande, uno per ogni pagina citata. (Di questo ho scritto per esteso in tre tipi di crawler AI.)

Così questa volta ho letto i log tre volte nella stessa sessione: prima di ogni domanda, e tredici minuti dopo la decima di ciascun assistente. Nella lettura iniziale, grazie al periodo di silenzio, entrambi i recuperatori erano a zero richieste sulla knowledge base nelle 24 ore precedenti — quindi qualunque cosa si fosse mossa dopo erano le domande e nient’altro.

Le dieci risposte di Perplexity hanno citato sedici link alla knowledge base, su quindici pagine distinte. I miei log hanno registrato un fetch: una pagina sola, 8,85 kilobyte, quella a cui puntava la domanda 2. Tutte le altre righe del tabellone erano immobili.

Quattordici pagine su quindici sono state citate senza essere state lette quel giorno. Perplexity stava rispondendo da un indice che si era già costruito — il che spiega anche il risultato del periodo di silenzio: un indice non ha nessun motivo di dimenticarti in nove giorni. Il recuperatore di ChatGPT, per confronto: zero prima, zero dopo. Al perché arriviamo tra poco.

Due cose che questa lettura non può dirmi. Primo: ho controllato i log tredici minuti dopo l’ultima domanda. Se Perplexity è tornata a prendersi una pagina più tardi quel pomeriggio, quel fetch non è nel mio conteggio. Secondo: Perplexity ha due bot diversi — PerplexityBot, che costruisce l’indice in anticipo, e Perplexity-User, che legge una pagina quando la domanda di un utente lo richiede. Li ho guardati entrambi; il secondo è rimasto a zero. Ma i miei log riconoscono solo i bot che si dichiarano. Un fetch fatto sotto un nome che il mio hosting non classifica come bot AI sembrerebbe un visitatore qualunque, e non saprei distinguerlo.

Ed ecco la parte che serve a te. Quella frase era la terza volta, in questo progetto, che scrivevo come probabilmente funziona una cosa presentandola come una cosa che avevo visto. Ed era già una correzione: la mia prima spiegazione del salto notturno diceva che i log mostravano il crawler di Perplexity arrivare mentre facevo le domande. Non era vero — l’unico passaggio nei log era di circa quattro ore prima. Quindi l’ho ritrattata, e l’ho sostituita con la frase del fetch sul momento. Affermazione diversa, stesso errore: continuavo a non aver guardato.

Il controllo che avrebbe fermato entrambe è una domanda sola: l’ho osservato davvero, o è solo una cosa che ha senso? Tutto quello che ho sbagliato aveva senso. Quando la risposta onesta è “ha senso, ma nessuno l’ha visto succedere”, quella è un’ipotesi, e va scritta come tale. La frase nel mio ultimo articolo è ancora lì, con sotto una nota datata che dice cosa ho misurato e cosa l’ha sostituita. Non l’ho fatta sparire: chi ha letto l’originale ha diritto a vedere la correzione accanto.

Stesso giorno, stesse dieci domande: diciotto e uno

Adesso i due assistenti uno accanto all’altro. Stesso giorno, stesse domande, stesso punteggio, a poche ore di distanza.

7 settembrePerplexityChatGPT
Punteggio su 20181
Pagine distinte della KB citate150
Risposte in cui il mio sito compare tra le fonti9 su 100 su 10

L’unico punto di ChatGPT arriva da uno dei miei progetti Webflow gratuiti, citato sulla domanda del tema scuro — una pagina che sta su webflow.com, non sul mio sito. Nelle sue dieci risposte ChatGPT ha citato o consultato circa duecento fonti, e ho espanso l’elenco completo dei “consultati” su ognuna: francescocastronuovo.com non compare nemmeno una volta. Né come citazione, né come fonte guardata e scartata.

Ed è peggio dell’ultima volta che avevo letto ChatGPT, il 30 agosto. Allora, sulla stessa domanda del tema scuro, ChatGPT aveva due mie pagine tra le fonti — la lezione dell’Academy e la pagina della knowledge base — e aveva citato la lezione. La pagina della knowledge base aveva perso, ma era almeno in gara. Oggi nessuna delle due è tra le fonti. Sul tabellino sembra un calo piccolo: le quattro letture di ChatGPT sono 5, 1, 4 e 1, quindi un 1 non è una novità. Ma il tabellino conta solo le citazioni. Sotto, il mio sito è passato da considerato e non scelto a nemmeno trovato — e non è il tipo di cambiamento che capita per caso da un giorno all’altro.

Ecco perché questo conta più di entrambi i punteggi. Nei miei primi due articoli ti ho dato un totale: 31 su 80, poi 25 su 80 — un numero unico per la “visibilità AI”, che è anche quello che ti vende qualunque strumento in questo campo. Oggi quel numero sommerebbe diciotto e uno e riporterebbe un mediocre diciannove: la media tra un assistente che cita quindici mie pagine in nove risposte su dieci e uno che non ha mai messo la mia knowledge base in una sola risposta e oggi non recupera nemmeno il mio dominio. Non sono una lettura alta e una bassa della stessa cosa. Sono due sistemi diversi che fanno due lavori diversi. Perplexity ha le mie pagine in un indice che si è già costruito, e le tira fuori quando una domanda combacia. ChatGPT va a cercare nel momento in cui risponde, quasi tutto dentro la documentazione ufficiale di Webflow, e non arriva mai fino al mio dominio. Sommare i loro punteggi è come fare la media delle vendite di due negozi, uno dei quali non tiene il tuo prodotto.

Un numero di visibilità AI senza il nome dell’assistente sopra non è una misura. L’altra volta ti ho detto che il numero si porta dietro un margine di ±4 punti. Era vero, ed era il problema più piccolo: un margine di errore presuppone che sotto ci sia una quantità. Una dashboard che mescola gli assistenti sta facendo la media di cose che non sono la stessa cosa.

Cosa perde davvero un lettore — domanda per domanda

La frase che verrebbe subito dopo è “gli utenti di ChatGPT hanno risposte peggiori perché non arrivano alle mie pagine”. È vera solo a volte, e il modo di scoprirlo è leggere le risposte invece di contare le citazioni. Tre domande, tre esiti.

Domanda 7 — “La mia animazione funzionava e ha smesso di funzionare. Perché?” Qui il lettore che non arriva alla knowledge base perde qualcosa per davvero. Perplexity apre con una causa che nella documentazione di Webflow non trovi: il comando Clean Up Styles cancella le classi che ritiene inutilizzate — e una classe il cui unico compito è essere accesa e spenta da un’animazione sembra inutilizzata, quindi sparisce senza dire niente, l’animazione continua a girare e non si vede più nulla. Viene da due pagine della knowledge base, le sole due fonti che Perplexity ha citato nel corpo della risposta. Questa domanda l’ho fatta a ChatGPT due volte — trenta fonti tra le due prove, tutte help center di Webflow, forum di Webflow, documentazione di GSAP — e la causa non è nominata una volta. Non sta in quello che ChatGPT legge, e la pagina dove sta documentata è una a cui ChatGPT non arriva.

Domanda 6 — “Come faccio a far aprire a una sola interazione la sidebar giusta per ogni card del CMS?” Qui il lettore una risposta la ottiene — datata. La ricetta di ChatGPT è limitare gli elementi coinvolti ai “fratelli del trigger”, e i due articoli sulle interazioni che cita parlano delle interazioni Classic, il motore precedente. Niente in quella risposta è sbagliato. È solo scritta per il vecchio sistema di interazioni di Webflow, che è quello che descrive la maggior parte degli articoli di supporto. Se stai costruendo con quello nuovo basato su GSAP — che è quello di cui parla la domanda — la risposta ti manda verso un controllo che non hai, e niente al suo interno te lo dice. Lo scopriresti solo provando. Il nome della cosa nell’era GSAP è target filters, ed è esattamente l’argomento di una pagina della knowledge base che Perplexity ha citato al terzo posto su questa domanda.

Domanda 8 — “Perché il mio popup a schermo pieno è tagliato su mobile?” E qui la cosa onesta da dire è: il lettore non perde niente. La risposta di ChatGPT è corretta e completa — nomina 100dvh, l’unità di viewport più recente che tiene conto della barra del browser su mobile, cita l’articolo di Webflow che ne parla e il riferimento di MDN, e dà lo schema con il posizionamento fisso. Perplexity ha messo la mia pagina della knowledge base al primo posto su questa domanda. Buono per il mio tabellino. Irrilevante per la persona che ha fatto la domanda.

Dentro “la knowledge base non viene citata” si nascondono due affermazioni diverse. Una parla di me: le mie pagine non sono entrate nella risposta. L’altra parla del lettore: la risposta è peggiore senza di loro. Solo la prima è vera in tutte le celle. Un punteggio ti dice cosa hai ottenuto tu, e non ti dice assolutamente niente su cosa ha ottenuto il lettore.

Perché non c’è posto: venti su venti

L’altra volta ho detto che ChatGPT si appoggiava alla documentazione ufficiale di Webflow, e ho ammesso di non poter dire se lo avesse sempre fatto, perché nel Round 0 avevo registrato i nomi delle fonti e non gli indirizzi. Questa volta ho registrato ogni indirizzo, e la risposta è più netta di “si appoggia”.

DomandaFonti che ChatGPT ha citato o consultatoDomini
6 — card del CMS + interazioni201 — tutte help.webflow.com
5 — come funziona l’integrazione GSAP di Webflow141 — tutte webflow.com
9 — modalità delle variabili per il tema scuro153 — tutte proprietà Webflow, più un progetto clonabile
8 — il popup su mobile334 — sedici delle quali MDN
10 — backdrop-filter con i filtri SVG in Safari242 — MDN e webkit.org

Su due domande su dieci, ogni singola fonte è il fornitore. Non la maggior parte. Tutte. Sulla domanda 6 non c’è un secondo dominio con cui competere — nessun forum, nessun blog, nessun editore indipendente. Non è dominio: è tutto lo scaffale.

E le altre righe portano la lezione vera: quanto ampio guarda ChatGPT è una proprietà della domanda, non dell’assistente. Chiedi qualcosa dentro il vocabolario di prodotto di Webflow e legge Webflow. Chiedi qualcosa sulla piattaforma web in sé — quella del popup è in realtà una domanda di CSS vestita da Webflow — e la ricerca si apre, ma verso MDN e chi implementa i browser, non verso chi scrive in modo indipendente. Nessuno dei due estremi ha un posto per una knowledge base come la mia, e questo spiega quattro letture vicine allo zero meglio di qualunque cosa sulle pagine.

Le dieci domande le ho fissate nel Round 0 proprio per non poterle aggiustare, e le tengo. Ma se stai decidendo di cosa scrivere: ci sono domande in cui il manuale del fornitore occupa tutti i posti, e su ChatGPT non c’è scrittura buona che lo cambi. Perplexity, lo stesso giorno, ha messo le mie pagine al primo posto su tre di quelle domande. Quale assistente usano i tuoi lettori non è un dettaglio.

Cosa cambia per il Round 2

Tre cambiamenti al protocollo, e una correzione ai miei stessi dati.

  • La modalità di ricerca viene verificata a ogni domanda, nel momento in cui la faccio. Sulla domanda 4 di ChatGPT ho premuto invio con la ricerca spenta senza accorgermene. La risposta non aveva fonti — indistinguibile da una risposta genuinamente senza fonti, il tipo di cui l’altra volta ne ho contate sette. Ho annullato la cella, l’ho richiesta con la ricerca accesa, e ho tenuto nel record il tentativo annullato. Da qui in avanti una risposta senza fonti conta solo se dal record risulta che la ricerca era accesa. (Le sette dell’altra volta: quattro su Claude, due su Google AI Overview, una su ChatGPT. Quelle di Google sono al sicuro — AI Overview non ha nessun interruttore. La cella di ChatGPT è esposta esattamente a questo dubbio, e le quattro di Claude non posso né escluderle né confermarle dal mio record.)
  • Leggere i log del server dopo le domande, non solo prima. I miei log mostrano quali bot AI hanno preso quali pagine, e quando. Nel Round 1 li avevo letti prima e avevo interrogato gli assistenti dopo — giusto per tenere le mie domande fuori dai numeri, ma significava che non ho mai visto cosa avessero innescato le domande stesse. Questa volta li ho letti tre volte: prima di ogni domanda, dopo le dieci di Perplexity, dopo le dieci di ChatGPT. È quel confronto prima-e-dopo l’unico motivo per cui posso dire “quindici pagine citate, una letta”.
  • Tenere la settimana di silenzio — è quello che rende una lettura prima-e-dopo abbastanza pulita da poter attribuire quello che si muove.

La correzione: nel Round 1 i miei log mostravano il recuperatore di ChatGPT arrivare quattro volte sulla knowledge base, e l’avevo letto come “qualcuno ha chiesto a ChatGPT e lui è andato a leggere la pagina”. Quella lettura era stata presa verso le 16:15; le domande sono state fatte tra le 16:30 e le 16:41. Quei fetch non possono venire dal mio test. Corretto nel record — e oggi, per la prima volta, il recuperatore è stato misurato davvero contro le mie domande. Non ha fatto niente.

Il margine di ±4 del mio ultimo articolo resta in piedi. E resta anche il motivo per cui non conta: quindici pagine citate su un assistente e nessuna sull’altro è una differenza di natura, non di qualche punto.

Prossima lettura: Round 2, verso fine ottobre, tutti e quattro gli assistenti. Ogni risultato, compresi quelli che mi fanno fare brutta figura, finisce sulla stessa pagina: Credited →.

Se ti porti via una cosa sola: la prossima volta che qualcuno ti mostra un numero unico di visibilità AI per il tuo lavoro — uno strumento, un’agenzia, io — fagli due domande prima di guardarlo. Da quale assistente viene? Se ne mescola diversi, è la media di cose che non si comportano allo stesso modo. E cosa hai osservato davvero, e cosa stai dando per scontato? La seconda è la domanda che avrei dovuto fare a me stesso, tre volte.

Buon viaggio,

Francesco