Monitor de bots de IA
As requisições são atribuídas pela correspondência do user-agent, não por verificação da identidade do bot. O monitor registra requisições observadas; um user-agent pode ser falsificado.
O controle de rastreadores de IA do núcleo define o que robots.txt comunica aos bots. O monitor de bots de IA de Pro registra o tráfego observado: quais rastreadores foram identificados, quantas vezes acessaram o site e a última URL e status HTTP de cada um.
Ele reutiliza a estrutura do monitor de 404: middleware global terminável, modelo com atualização ou inserção e contagem de acessos, e os mesmos padrões de privacidade. A chave é o bot, não o caminho, e o registro aceita qualquer status HTTP. São os rastreadores de IA que o monitor de 404 exclui intencionalmente. A identificação usa AiCrawlerRegistry do núcleo, mantendo a política robots e o tráfego observado ligados ao mesmo catálogo.
Requer Core 3.3 ou superior
O monitor usa o catálogo de rastreadores do núcleo, disponível em SEO::aiCrawlers(). Com uma versão anterior do núcleo, permanece inativo.
Ativação
Desativado por padrão. Quando ativado, o middleware registra os rastreadores identificados depois da resposta, sem atrasar seu envio:
// config/seo-pro.php
'ai_bots' => [
'enabled' => true,
],O middleware é registrado automaticamente; desative esse registro por ai_bots.auto_register_middleware se precisar controlá-lo. Uma linha por bot conhecido é inserida ou atualizada, limitando essa tabela ao tamanho do catálogo.
Consultar o registro
Sem painel
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 linha expõe bot, label, operator, purpose, hit_count, last_path, last_status, first_seen_at e 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
Com o plugin Pro registrado, a tabela AI Bots aparece no grupo de navegação SEO. Mostra bot, operador, finalidade, acessos, último status, último caminho e última visita. É somente leitura e permite filtrar por finalidade.
Privacidade
Como no monitor de 404, nenhum IP é armazenado por padrão. A opção ai_bots.hash_ip guarda apenas um SHA-256 com chave em ip_hash; o IP original nunca é gravado.
'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, agrupadas por dia
A tabela acumulada mantém uma linha por bot, mas não permite determinar quantos acessos ou URLs distintos ocorreram em um intervalo específico. Com daily_enabled ativado, o padrão, cada acesso também é registrado por dia e caminho em seo_ai_bot_daily. Assim, o relatório com sua marca mostra acessos desde o relatório anterior e URLs distintos no período, em vez de apenas diferenças entre totais acumulados.
O tamanho dos dados continua limitado:
- Limite de caminhos distintos por bot e dia,
daily_max_paths: novos caminhos além do limite são agrupados em uma única linha de excedentes. O total de acessos permanece exato, mas o número de linhas não cresce sem controle. Quando o limite de URLs distintos é atingido, o relatório mostra «N+». - Prazo de retenção,
daily_retention_days, aplicado porseo-pro:ai-bots-prune.
Defina daily_enabled como false para manter apenas os totais acumulados. O relatório passa a calcular «desde o último» pela diferença entre snapshots e ignora agrupamentos diários existentes, evitando ler dados desatualizados dessa tabela.
As métricas têm resolução diária. «Desde o último relatório» conta dias inteiros a partir do dia do relatório anterior; um acesso naquele dia pode ter ocorrido antes ou depois do horário exato de geração. Considere essa diferença de limite ao interpretar períodos diários, semanais ou mensais.
Usar a observação para ajustar o acesso
O monitor mostra requisições atribuídas aos bots; o controle de rastreadores expressa a política de acesso. Para pedir que um rastreador de treinamento deixe de acessar o site:
// config/seo.php
'ai_crawlers' => [
'overrides' => ['bytespider' => 'disallow'],
],php artisan seo:robots-txtAlguns bots não garantem respeito a robots.txt. O monitor ajuda a identificar acessos e decidir se você precisa aplicar bloqueios no firewall, WAF ou Cloudflare.