HELPERG (opens in a new tab) Ecosystem

WebmasterID logoWebmasterID
Arquitectura

Superficie pequeña, bases de nivel de infraestructura.

WebmasterID es un monorepo con pnpm y Turborepo, con TypeScript estricto en todas partes. Cada pieza es deliberadamente pequeña y sustituible; nada es magia. Esta página recorre el sistema de extremo a extremo.

Las piezas

Seis componentes.

  • Rastreador del navegador

    Script IIFE pequeño (unos 3 KB minificados) que se carga desde /tracker.iife.min.js. Dispara page_view en el primer pintado, engancha history.pushState, replaceState y popstate para la navegación de una SPA, y expone una API tipada en window.WebmasterID.

  • API de ingesta

    Fastify sobre funciones de Vercel. Valida los eventos con Zod, clasifica la fuente de tráfico, detecta bots de IA y de búsqueda, anonimiza la IP y persiste en Postgres. Acepta tanto application/json como text/plain.

  • PostgreSQL a través de Supabase

    Esquema de Drizzle con tablas separadas para events y bot_visits. Las claves secretas wmsk_ se almacenan únicamente como hashes SHA-256. El valor en claro se muestra una sola vez, al crear el sitio, y nunca más.

  • Detección de bots de IA y de búsqueda

    Los rastreadores reconocidos (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot, Bingbot, Meta-ExternalAgent, CCBot y otros) van a bot_visits, nunca a events. Los agregados humanos se mantienen limpios.

  • Panel del operador

    Panel de Next.js renderizado en servidor. El filtro de sitio y de rango viaja en los parámetros de la URL.

  • API de eventos de servidor

    POST /api/server/events acepta eventos de servidor a servidor con un token Bearer wmsk_ validado contra su hash SHA-256. Permite registrar eventos que el navegador nunca vería.

Transporte

Una ruta de red discreta.

  • Por qué text/plain

    navigator.sendBeacon con un cuerpo de texto establece el Content-Type en text/plain;charset=UTF-8, un tipo MIME de la lista segura de CORS. Sin preflight, sin superficie de CORS con credenciales y sin negociación con las capas de CORS de la plataforma.

  • Por qué el rastreador se sirve desde el mismo origen

    El rastreador se sirve desde el origen del sitio de marketing. Quien lo prefiera puede alojarlo por su cuenta; el fragmento de instalación es una sola etiqueta <script> con dos atributos data-*.

  • Por qué la IP se anonimiza

    El último octeto de las IPv4 se pone a cero y las IPv6 se truncan a /48. Resolución suficiente para detectar oleadas de bots y una geografía aproximada; insuficiente para identificar a una persona concreta.

  • Por qué no hay cookies

    WebmasterID no tiene el concepto de visitante recurrente entre sitios. No hay nada que el producto haría con una cookie que no pueda hacer sin ella, así que no hay cookie.

Fragmento de instalación

Una sola etiqueta de script.

Instalar WebmasterID es añadir una etiqueta <script> con dos atributos de datos: data-wmid (el site_id) y data-endpoint (la URL de ingesta). Los sitios que lo instalan siguen siendo responsables de su propio flujo de consentimiento; WebmasterID no envuelve el rastreador en un SDK de consentimiento por defecto.

El archivo del rastreador se sirve con una cabecera Cache-Control de cinco minutos y es el mismo artefacto que se construye desde el paquete packages/tracker-js de este monorepo.