Ce que ce site compte
L’usage du site et de son API est compté dans 2 registres. Aucun ne relie une ligne à un visiteur.
Chaque requête
Chaque appel à l’API et chaque requête MCP est compté une fois, dans Workers Analytics Engine de Cloudflare. La ligne garde la route sans ses codes, ou l’outil d’un message MCP quand il en appelle un et sa méthode sinon, le nom que se donne un client MCP, le premier mot du User-Agent, le pays, le statut et la durée de la requête. C’est toute la ligne : de quoi voir comment l’API est utilisée, jamais par qui.
Un outil ou une méthode hors d’une liste fixe devient « other », tout comme un nom de client que le filtre vide. Cloudflare garde ces lignes 3 mois. Un fichier statique n’exécute aucun code, donc l’ouvrir n’est pas compté ici.
Ce qui est demandé
Un second registre, dans D1, compte 5 types de ligne : une recherche, un lieu ouvert, un outil qu’un assistant appelle via le serveur MCP, le nom que se donne un client MCP, et un fichier téléchargé. Une ligne garde le jour, ce qui a été demandé, le nombre de résultats qu’une recherche a affichés, la langue de la page, le pays et la version du jeu de données en ligne à ce moment-là. Elle dit aussi si le User-Agent ressemble à celui d’un robot, et la classe du site qui a envoyé le visiteur, comme reddit ou un moteur de recherche, jamais son adresse.
Le client à l’origine de la requête est noté aussi : « browser » pour la recherche du site et sa balise, et le premier mot du User-Agent pour qui passe par l’API ou le MCP directement.
Une recherche
Une recherche est gardée en minuscules et coupée à 64 caractères. Elle est rejetée entièrement si elle contient un @, une barre oblique, tout ce qui ressemble à une adresse web, plus de 6 mots, ou 6 chiffres ou plus quelle qu’en soit l’écriture, à moins que ces chiffres ne forment le code réel d’un lieu. C’est ainsi qu’un e-mail ou un numéro de téléphone tapé par erreur dans le champ reste dehors.
Le champ de recherche du site ne signale une recherche qu’une fois stabilisée : 1,5 seconde après l’arrêt des résultats, ou dès qu’un résultat est ouvert, jamais à chaque frappe. Quand le Do Not Track du navigateur est activé, le champ ne signale aucune recherche et la balise ne note aucun lieu ni fichier ouvert. Le champ demande quand même ses résultats à l’API, et Analytics Engine compte ces requêtes comme tout autre appel à l’API, sans ce qui a été tapé.
Ce qui reste
Une ligne, c’est un jour et quelques catégories, de quoi faire un compte. Aucune ligne ne garde de clé, de cookie ou d’adresse qui la relie à une autre.
Les lignes brutes du registre de la demande sont supprimées après 90 jours. Ce qui reste, ce sont des comptages par jour, dont est tirée la page des lieux les plus consultés. Une recherche garde ses mots dans ce comptage seulement quand ils sont le nom ou le code d’un lieu, ou qu’ils ont été tapés 3 fois ou plus ce jour-là ; sinon, seul le compte reste. La règle compte des lignes, donc les 3 peuvent venir d’un même visiteur.
Le code
Tout cela tourne depuis api/src/worker/usage.ts, api/src/worker/demand.ts et api/src/worker/index.ts, la balise dans Beacon.astro et Search.astro, et le rollup nocturne dans workers/rollup/. Tout est public.