Monitor de bots de IA
Las peticiones se atribuyen mediante coincidencia de user-agent, no mediante una identidad de bot verificada. El monitor registra peticiones observadas; un user-agent puede falsificarse.
El control de rastreadores de IA del núcleo decide qué les indica robots.txt. El monitor de bots de IA de Pro registra la actividad observada: qué user-agents de rastreadores accedieron al sitio, cuántas veces y qué última URL y estado HTTP se registraron para cada uno.
Reutiliza la estructura del monitor de 404 —middleware global terminable, modelo con upsert y contador de peticiones, y las mismas opciones de privacidad—, pero agrupa por bot en vez de por ruta y registra cualquier estado de respuesta. Incluye precisamente los rastreadores que el monitor de 404 excluye. La identificación utiliza AiCrawlerRegistry del núcleo, de modo que la política robots y la observación comparten catálogo.
Requiere core ≥ 3.3
El monitor identifica bots con el catálogo de rastreadores del núcleo, SEO::aiCrawlers(). Con versiones anteriores permanece inactivo.
Activarlo
Está desactivado por defecto. Al habilitarlo, el middleware registra los rastreadores coincidentes después de cada respuesta, sin retrasar el envío de la página:
// config/seo-pro.php
'ai_bots' => [
'enabled' => true,
],El middleware se registra automáticamente; puedes desactivarlo con ai_bots.auto_register_middleware. Se inserta o actualiza una fila por bot conocido, por lo que el tamaño de la tabla queda limitado por el catálogo.
Consultar el registro
Sin interfaz
use Rankbeam\Seo\Pro\Facades\SeoPro;
SeoPro::aiBots()->hits(); // every bot seen, most-hit first
SeoPro::aiBots()->forPurpose('ai_training'); // just the trainers
SeoPro::aiBots()->totalHits(); // total recorded fetches
SeoPro::aiBots()->isEnabled();Cada fila expone bot, label, operator, purpose, hit_count, last_path, last_status, first_seen_at y last_seen_at.
Artisan
php artisan seo-pro:ai-bots # most-hit first
php artisan seo-pro:ai-bots --purpose=ai_training # filter by purpose
php artisan seo-pro:ai-bots-prune # drop stale bots + old daily bucketsFilament
Con el plugin Pro registrado, aparece una tabla AI Bots en el grupo de navegación SEO: bot, operador, finalidad, peticiones, último estado, última ruta y última observación. Es de solo lectura y se puede filtrar por finalidad.
Privacidad
Como en el monitor de 404, no se guarda la IP por defecto. La opción ai_bots.hash_ip almacena únicamente un sha256 con clave en ip_hash, nunca la IP original.
'ai_bots' => [
'enabled' => true,
'hash_ip' => false, // true → keyed sha256 only
'exclude_paths' => ['/filament/*', '/livewire/*', /* … */],
'max_path_length' => 500,
'retention_days' => 90, // lifetime rows; seo-pro:ai-bots-prune; null disables
// Day-granular per-path buckets (below)
'daily_enabled' => true, // false → keep only the lifetime leaderboard
'daily_max_paths' => 500, // distinct paths tracked per bot per day
'daily_retention_days' => 90, // prune buckets older than this; null disables
],Métricas por período: agrupaciones diarias
La tabla histórica conserva una fila por bot. Sirve para ver totales, pero no responde cuántas peticiones o URL distintas hubo en un período concreto. Con daily_enabled activo, su valor predeterminado, cada petición se registra también por día y ruta en seo_ai_bot_daily. Así, el informe con marca propia muestra cifras del período —peticiones desde el informe anterior y URL distintas— en lugar de una diferencia entre totales históricos.
El crecimiento se mantiene acotado:
- Un máximo de rutas distintas por bot y día,
daily_max_paths. Superado el límite, las rutas nuevas se agrupan en una única fila de desbordamiento. El total diario de peticiones sigue siendo exacto y se limita el número de filas; el recuento de URL que alcanza el límite se muestra como «N+». - Una ventana de retención,
daily_retention_days, aplicada porseo-pro:ai-bots-prune.
Pon daily_enabled en false para conservar solo los totales históricos. En ese caso, el informe calcula «desde el anterior» mediante la diferencia con la instantánea del informe previo e ignora las agrupaciones existentes para no leer una tabla desactualizada.
Las cifras tienen resolución diaria. «Desde el informe anterior» cuenta días completos desde el día de ese informe; una petición de ese día puede ser anterior o posterior a la hora exacta de generación. En una frecuencia diaria, semanal o mensual habitual, esta diferencia de límite temporal suele ser pequeña.
Pasar de la observación al control
El monitor muestra qué user-agents acceden; el control de rastreadores de IA define lo que les permite la política robots. Si aparece un rastreador de entrenamiento cuyo acceso quieres restringir:
// config/seo.php
'ai_crawlers' => [
'overrides' => ['bytespider' => 'disallow'],
],php artisan seo:robots-txtAlgunos bots no respetan robots.txt, según su documentación. El monitor ayuda a detectar esa actividad y decidir si bloquearla en el firewall, WAF o Cloudflare.