Instalar el seguimiento de rastreadores de IA
Guías de instalación paso a paso para Cloudflare, Vercel, WordPress, servidores Node propios, Webflow y Shopify.
Esta página recorre cada ruta de instalación clic a clic. Para saber qué mide el seguimiento de rastreadores y cómo funciona la verificación, consulta Rastreadores de IA. La misma instalación también informa de las visitas humanas referidas por respuestas de IA, así que completarla alimenta también Tráfico de IA; las opciones solo de navegador para esa página están en Instalar el seguimiento de tráfico de IA.
Elige la guía que corresponda a donde corre tu sitio:
| Tu configuración | Usa esta guía |
|---|---|
| El sitio está detrás de Cloudflare (proxy de nube naranja) | Worker de Cloudflare |
| App Next.js en Vercel (o Next.js autoalojado) | Middleware de Vercel / Next.js |
| Sitio WordPress | Plugin de WordPress |
| Sitio a medida en tus propios servidores (AWS, GCP, Azure, VPS, contenedores) | Servidor propio / Node |
| Sitio Webflow | Webflow |
| Tienda Shopify | Shopify |
Antes de empezar: genera una clave de sitio
Toda instalación necesita una clave de sitio, uses la plataforma que uses:
- En la app, ve a Ajustes → Conexiones → Seguimiento del sitio web.
- Haz clic en Generar clave de sitio. Dale un nombre a la clave y, a ser posible, el dominio del que informará; el dominio también refuerza la verificación de rastreadores firmados para ese sitio.
- Copia ambos valores del diálogo de confirmación: el ID de clave y el
secreto de firma (empieza por
ctk_). El secreto se muestra una sola vez; si lo pierdes, usa Rotar en la clave para generar un reemplazo.
Mantén el secreto de firma en privado: cualquiera que lo tenga puede
enviar informes de tráfico falsificados para tu sitio. Los fragmentos para
Cloudflare, Vercel y servidor propio lo leen de la variable de entorno
CITLYZE_SIGNING_SECRET, así que nunca aparece en tu código; el plugin de
WordPress lo guarda en sus ajustes. Nunca lo subas a un repositorio ni lo
pegues en código del lado del cliente.
Worker de Cloudflare
Úsalo cuando tu DNS está en Cloudflare y el sitio pasa por su proxy (el interruptor de nube naranja). Es la opción más completa: ve cada petición en el borde, informa de los códigos de estado HTTP reales y funciona sin importar qué haya detrás de Cloudflare.
- En Ajustes → Conexiones → Seguimiento del sitio web → Instalar fragmento, abre la pestaña Cloudflare y copia el fragmento.
- Reemplaza
SITE_KEY_IDen el fragmento por tu ID de clave. El secreto de firma no va en el código; lo añades como secreto del Worker en el paso 5. - En el panel de Cloudflare, ve a
Workers & Pages → Create → Create Worker. Dale un nombre (por
ejemplo
ai-crawler-tracker) y haz clic en Deploy para crear el worker vacío. - Haz clic en Edit code, sustituye el ejemplo generado por tu fragmento y haz clic en Deploy otra vez.
- Añade el secreto de firma: en el worker, abre Settings → Variables and
Secrets → Add, elige el tipo Secret, llámalo
CITLYZE_SIGNING_SECRET, pega tu secreto de firma y haz clic en Deploy. Cloudflare lo guarda cifrado y nunca aparece en el código del worker. - Conecta el worker a tu sitio: abre Settings → Domains & Routes → Add →
Route del worker, elige tu zona y añade la ruta
example.com/*. Si tu sitio también se sirve enwww.example.com, añade una segunda ruta parawww.example.com/*. - Listo: sin cambios de código en tu sitio. El worker deja pasar cada petición a tu origen sin modificarla e informa de las visitas coincidentes en segundo plano.
Dos cosas que comprobar:
- La ruta debe cubrir todas las rutas de página (
/*); de lo contrario, las visitas de rastreadores a páginas sin ruta son invisibles. - Si ya tienes un worker en esas rutas, Cloudflare solo ejecuta un worker por ruta; integra la lógica del fragmento en tu worker existente en vez de añadir un segundo.
Middleware de Vercel / Next.js
Úsalo para una app Next.js desplegada en Vercel. El mismo archivo también funciona en Next.js autoalojado.
- En Ajustes → Conexiones → Seguimiento del sitio web → Instalar fragmento, abre la pestaña Vercel / proxy inverso y copia el fragmento.
- En tu repositorio de Next.js, crea
middleware.tsen la raíz del proyecto (o ensrc/si tu app vive ahí) y pega el fragmento. - Reemplaza
SITE_KEY_IDpor tu ID de clave. El secreto de firma no va en el archivo. - En tu proyecto de Vercel, abre Settings → Environment Variables y
añade
CITLYZE_SIGNING_SECRETcon tu secreto de firma para cada entorno que quieras medir. Márcala como Sensitive. ¿Alojas Next.js por tu cuenta? Define la misma variable en el entorno de tu servidor. - Si ya tienes un
middleware.ts, no añadas un segundo archivo; Next.js solo ejecuta uno. Copia el bloque auxiliar del fragmento en tu archivo existente, llama a su lógica de informe al principio de tu función de middleware y asegúrate de que tu configmatchersigue cubriendo todas las rutas. - Haz commit y despliega.
Notas:
- El middleware se ejecuta antes de que exista la respuesta, así que los
eventos informan de su estado HTTP como
unknown. Es lo esperado. Para tener códigos de estado, usa el log drain de Vercel en lugar de este middleware (con ambos, cada visita se cuenta dos veces), o usa la instalación de Cloudflare o de servidor propio, que también informan de las redirecciones. - En Vercel, la IP del visitante se toma de una cabecera que establece la plataforma y es fiable. Si autoalojas Next.js detrás de tu propio proxy, asegúrate de que la cabecera de IP reenviada que lee el fragmento la establece tu proxy y no llega tal cual desde el cliente.
Plugin de WordPress
Úsalo para cualquier sitio WordPress donde puedas instalar plugins.
El mismo plugin comprueba también, gratis, qué rastreadores de IA deja pasar tu robots.txt y qué bloquea al resto; consulta Plugin de WordPress.
-
En el admin de WordPress, ve a Plugins → Añadir nuevo, busca AI Crawler Control by Citlyze y haz clic en Instalar ahora y luego en Activar. El plugin está publicado en el directorio oficial de WordPress.org, así que no hace falta subir ningún zip.
-
¿Prefieres la instalación manual? En Ajustes → Conexiones → Seguimiento del sitio web → Instalar fragmento, abre la pestaña WordPress, haz clic en Descargar plugin y sube el zip en Plugins → Añadir nuevo → Subir plugin.
-
Ve a Citlyze → Connect Citlyze y rellena los tres campos:
- Tracker base URL:
https://app.citlyze.com - Key ID: tu ID de clave
- Signing secret: tu secreto
ctk_...El plugin no informa de nada hasta que rellenas la URL base.
- Tracker base URL:
-
Haz clic en Enviar evento de prueba. Deberías ver una confirmación de conexión; eso demuestra tus credenciales y la conectividad de extremo a extremo.
-
¿Detrás de un proxy o balanceador de carga que no es Cloudflare? En Visitor IP behind a proxy, elige la cabecera que establece tu proxy e indica las direcciones del proxy, para que los rastreadores se verifiquen por su IP real. Detrás de Cloudflare no hace falta nada.
El plugin informa después de servir cada página, con el código de estado exacto, incluidas las peticiones que otro plugin redirige antes de renderizar la página. Los eventos esperan en tu base de datos de WordPress y se envían en lotes; la pantalla Connect Citlyze muestra cuántos esperan y cuándo se entregaron por última vez.
Advertencia: las páginas servidas desde una caché de página completa, las redirecciones hechas por tu servidor web o tu CDN y las peticiones que un firewall bloquea antes de que cargue WordPress nunca llegan al plugin. La pantalla Connect Citlyze te avisa cuando detecta una caché de página. Si tu sitio usa mucha caché, es preferible la instalación con el Worker de Cloudflare o subir los logs de tu servidor.
Servidor propio / Node
Úsalo para sitios a medida que alojas tú mismo: AWS, Google Cloud, Azure, un VPS o contenedores. El fragmento es un middleware estilo Express para Node 20 o más reciente (también corre en Bun y Deno).
- En Ajustes → Conexiones → Seguimiento del sitio web → Instalar fragmento, abre la pestaña Servidor propio / Node y copia el fragmento.
- Guárdalo como
aeo-tracker.mjsjunto al punto de entrada de tu servidor. - Reemplaza
SITE_KEY_IDpor tu ID de clave y define en el servidor la variable de entornoCITLYZE_SIGNING_SECRETcon tu secreto de firma: en los ajustes de secretos de tu proveedor o en un archivo.envque nunca se sube al repositorio. El secreto nunca va en el propio archivo. - Registra el middleware antes de tus rutas:
import { aeoCrawlerTracker } from "./aeo-tracker.mjs"; app.use(aeoCrawlerTracker()); - Si tu servidor está detrás de un balanceador de carga o un proxy inverso
(nginx, ALB), configura Express para que confíe en él (por ejemplo
app.set("trust proxy", 1)) de modo que el middleware informe de la IP real del cliente y no de la del proxy. La verificación de identidad de los rastreadores comprueba esa IP. - Despliega. El middleware informa después de que termina cada respuesta, así que no añade latencia e incluye los códigos de estado HTTP reales.
¿No usas Express? El handler devuelto recibe argumentos (req, res, next)
simples y se adapta a Fastify, Koa o al servidor http de Node. Para otros
lenguajes (Python, Go, PHP, Ruby, ...), implementa el
protocolo de baliza firmada;
cada POST HTTPS firmado lleva un lote de hasta 50 peticiones que coinciden.
Webflow
El hosting propio de Webflow no puede ejecutar código del lado del servidor, y los scripts del navegador no ven a los rastreadores de entrenamiento de IA, así que el seguimiento se instala en una capa de proxy delante de Webflow:
- Webflow admite proxies inversos autogestionados en los planes Enterprise; acuérdalo con tu contacto de Webflow y enruta tu dominio a través de tu proxy (Cloudflare, CloudFront, Fastly o tu propio nginx).
- Instala el tracker en esa capa de proxy:
- Proxy en Cloudflare → sigue la guía del Worker de Cloudflare.
- Tu propio proxy Node → sigue la guía de Servidor propio / Node.
- Cualquier otra cosa → implementa el protocolo de baliza firmada en tu proxy.
- Verifica como se describe más abajo.
Las apps de Webflow Cloud no sirven para seguir todo el sitio: solo atienden las peticiones bajo su ruta de montaje, así que nunca ven las visitas de rastreadores a tus páginas normales.
Shopify
Las tiendas Shopify estándar no pueden ejecutar este tracker: Shopify no permite a los comerciantes ejecutar código del lado del servidor en las peticiones de la tienda y no admite poner un proxy (como Cloudflare) delante de una tienda. Los scripts del navegador no son una alternativa: los rastreadores de entrenamiento de IA nunca ejecutan JavaScript, y un script de navegador expondría tu secreto de firma.
Qué puedes hacer:
- Las tiendas headless construidas con Hydrogen y alojadas en Oxygen (o cualquier montaje autoalojado) ejecutan código del lado del servidor; integra la lógica del fragmento de Servidor propio / Node en el manejador de peticiones del servidor de tu tienda.
- Para tiendas estándar, tus demás mediciones de Citlyze (seguimiento de prompts, citas, auditorías GEO) funcionan sin importar dónde esté alojada la tienda.
Verifica tu instalación
- En Ajustes → Conexiones → Seguimiento del sitio web, la tabla de claves de sitio tiene una columna Último evento. Se actualiza en cuanto tu instalación entrega su primer informe aceptado; cuentan tanto las visitas de rastreadores como los clics humanos desde respuestas de IA.
- Los usuarios de WordPress pueden confirmar la entrega de inmediato con Enviar evento de prueba (los eventos de prueba verifican credenciales y conectividad, pero no actualizan Último evento).
- Dale tiempo: en sitios con poco tráfico, la primera visita real de un rastreador puede tardar horas o unos pocos días. En cuanto llegan eventos, Diagnosticar → Actividad de rastreadores de IA → Resumen se rellena.
- Si no llega nada tras un par de días, vuelve a comprobar que el ID de
clave de tu fragmento (o de los ajustes del plugin) pertenece a una clave
activa y no revocada, que
CITLYZE_SIGNING_SECRETcontiene el secreto de firma actual de esa clave y que tu ruta o middleware cubre todas las rutas. Sin un secreto válido, el fragmento no informa de nada y registra una vez «Citlyze crawler tracking is off». - La tabla de claves de sitio muestra también qué versión de colector informa con cada clave, y te avisa cuando hay una versión más reciente del fragmento o del plugin, o cuando el plugin de WordPress detectó una caché de página.