HELPERG (opens in a new tab) Ecosystem

WebmasterID logoWebmasterID
Architecture

Une surface réduite, des fondations de niveau infrastructure.

WebmasterID est un monorepo pnpm et Turborepo, avec du TypeScript strict partout. Chaque brique est délibérément petite et remplaçable ; rien n’est magique. Cette page parcourt le système de bout en bout.

Les briques

Six éléments composent le produit.

  • Traceur du navigateur

    Petit script IIFE (environ 3 KB minifié) chargé depuis /tracker.iife.min.js. Il déclenche page_view au premier rendu, s’accroche à history.pushState, replaceState et popstate pour la navigation en SPA, et expose une API window.WebmasterID typée.

  • API d’ingestion

    Fastify sur des fonctions Vercel. Elle valide les événements avec Zod, classe la source de trafic, détecte les bots d’IA et de recherche, anonymise l’adresse IP et écrit dans Postgres. Elle accepte aussi bien application/json que text/plain.

  • PostgreSQL via Supabase

    Schéma Drizzle avec deux tables distinctes, events et bot_visits. Les secrets wmsk_ ne sont conservés que sous forme d’empreintes SHA-256. La valeur en clair s’affiche une seule fois, à la création du site, et jamais ensuite.

  • Détection des bots d’IA et de recherche

    Les robots d’exploration reconnus (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot, Bingbot, Meta-ExternalAgent, CCBot, etc.) sont dirigés vers bot_visits, jamais vers events. Les agrégats humains restent propres.

  • Tableau de bord de l’opérateur

    Tableau de bord Next.js rendu côté serveur. Le filtre de site et de période passe par les paramètres de l’URL ; six pages : Vue d’ensemble, Sites, Événements, Visibilité dans l’IA, Campagnes et Diagnostic.

  • API d’événements côté serveur

    POST /api/server/events accepte des événements de serveur à serveur, avec un token Bearer wmsk_ validé contre son empreinte SHA-256. Vos back-ends peuvent ainsi enregistrer des événements que le navigateur ne verrait jamais.

Transport

Un chemin réseau discret.

  • Pourquoi text/plain

    navigator.sendBeacon avec un corps de requête textuel fixe le Content-Type à text/plain;charset=UTF-8, un type MIME de la liste sûre CORS. Pas de préflight, pas de surface CORS avec identifiants, pas de négociation avec les couches CORS de la plateforme.

  • Pourquoi le traceur est servi depuis la même origine

    Le traceur est servi depuis l’origine du site public. Vous pouvez l’héberger vous-même si vous le préférez ; l’extrait d’installation tient en une seule balise <script> avec deux attributs data-*.

  • Pourquoi l’adresse IP est anonymisée

    Le dernier octet des adresses IPv4 est mis à zéro et les IPv6 sont tronquées en /48. Une résolution suffisante pour repérer des vagues de bots et une géographie approximative ; insuffisante pour identifier une personne en particulier.

  • Pourquoi il n’y a pas de cookies

    WebmasterID n’a aucune notion de visiteur récurrent d’un site à l’autre. Il n’y a rien que le produit ferait avec un cookie et qu’il ne puisse faire sans, donc il n’y a pas de cookie.

Extrait d’installation

Une seule balise de script.

Installer WebmasterID revient à ajouter une balise <script> avec deux attributs de données : data-wmid (votre site_id) et data-endpoint (l’URL d’ingestion). Les sites qui l’installent restent responsables de leur propre parcours de consentement ; WebmasterID n’enveloppe pas le traceur dans un SDK de consentement par défaut.

Le fichier du traceur est servi avec un en-tête Cache-Control de cinq minutes. C’est exactement l’artefact construit à partir de packages/tracker-js dans ce monorepo.

Où vit le code

L’organisation du dépôt.

Organisation du monorepo — github.com/PetroTitan/webmasterid
CheminRôle
/apps/webSite public — celui que vous lisez
/apps/dashboardTableau de bord de l’opérateur
/apps/ingest-apiIngestion des événements, avec Fastify
/packages/tracker-jsTraceur du navigateur, en IIFE et en ESM
/packages/sdk-nextComposant d’intégration pour Next.js
/packages/databaseSchéma Drizzle sur PostgreSQL
/packages/sharedTypes, schémas Zod, identifiants
/packages/privacyAnonymisation de l’IP, DNT, consentement, rétention
/packages/ai-visibilityDétection des bots et trafic issu de l’IA
/packages/seo-intelligenceClassification des moteurs de recherche et des référents