Vai al contenuto

Monitor dei bot AI

Il controllo dei crawler AI del core stabilisce cosa robots.txt comunica ai crawler. Il monitor dei bot AI di Pro registra invece le richieste ricevute: quali user-agent corrispondono a crawler AI noti, quante volte compaiono e l’ultimo URL con il relativo stato HTTP. L’attribuzione avviene tramite user-agent e non autentica l’identità del bot.

Riusa l’infrastruttura del monitor 404 — middleware globale terminabile, modello con upsert e conteggio delle richieste, stesse impostazioni di privacy — ma raggruppa per bot anziché per percorso e registra qualsiasi stato di risposta. Riconosce proprio i crawler AI esclusi dal monitor 404. L’identificazione usa AiCrawlerRegistry del core, così policy robots.txt e traffico osservato condividono lo stesso catalogo.

Richiede core ≥ 3.3

Il monitor identifica i bot con il catalogo del core, SEO::aiCrawlers(). Con versioni precedenti resta inattivo.

Attivazione

La funzione è disattivata per impostazione predefinita. Quando la abiliti, il middleware globale registra i crawler corrispondenti dopo la risposta, senza aggiungere il lavoro di registrazione alla sua generazione:

php
// config/seo-pro.php
'ai_bots' => [
    'enabled' => true,
],

Il middleware viene registrato automaticamente; puoi disabilitare questa registrazione con ai_bots.auto_register_middleware. L’upsert mantiene una riga per bot noto, quindi la dimensione della tabella è limitata dal catalogo.

Leggere il log

Senza pannello

php
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();

Ogni riga espone bot, label, operator, purpose, hit_count, last_path, last_status, first_seen_at e last_seen_at.

Artisan

bash
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 buckets

Filament

Con il plugin Pro registrato, nel gruppo SEO compare la tabella Bot AI: bot, operatore, finalità, richieste, ultimo stato, ultimo percorso e ultima visita. È di sola lettura e filtrabile per finalità.

Privacy

Come per il monitor 404, nessun IP viene memorizzato per impostazione predefinita. L’opzione ai_bots.hash_ip salva soltanto un hash SHA-256 con chiave, ip_hash; l’IP originale non viene scritto.

php
'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
],

Metriche per periodo: aggregazioni giornaliere

La tabella complessiva mantiene una riga per bot, utile per una classifica totale ma insufficiente per sapere quante richieste o quanti URL distinti abbia visitato in una finestra specifica. Con daily_enabled attivo, come per impostazione predefinita, ogni richiesta viene registrata anche in un’aggregazione per giorno e percorso, seo_ai_bot_daily. Il report personalizzabile può così mostrare dati effettivi del periodo — richieste dall’ultimo report e URL distinti — anziché una semplice differenza dei totali storici.

Due limiti contengono il numero di righe:

  • Numero massimo di percorsi distinti per bot e giorno, daily_max_paths. Oltre il limite, i nuovi percorsi vengono raccolti in un’unica voce di eccedenza. Il totale delle richieste resta esatto; il conteggio degli URL distinti che ha raggiunto il limite viene mostrato come “N+”.
  • Finestra di conservazione, daily_retention_days, applicata da seo-pro:ai-bots-prune.

Imposta daily_enabled a false per conservare soltanto la classifica complessiva. Il report torna allora alla differenza rispetto allo snapshot del report precedente per i dati “dall’ultimo report” e ignora le aggregazioni esistenti, evitando di leggere una tabella non più aggiornata.

Le metriche hanno risoluzione giornaliera: il confronto parte dal giorno del report precedente, includendo giorni interi. Una richiesta di quel giorno può quindi precedere o seguire l’ora esatta di generazione. Tieni conto di questo confine quando confronti report giornalieri, settimanali o mensili.

Dall’osservazione alla policy

Il monitor mostra le richieste attribuite ai crawler; il controllo dei crawler AI del core imposta la policy da comunicare loro. Per modificare l’accesso dichiarato a un crawler di addestramento:

php
// config/seo.php
'ai_crawlers' => [
    'overrides' => ['bytespider' => 'disallow'],
],
bash
php artisan seo:robots-txt

Alcuni bot sono documentati come non rispettosi di robots.txt. Il monitor può aiutarti a individuare richieste inattese e valutare un blocco nel firewall, nel WAF o in Cloudflare; lo user-agent, da solo, non verifica chi le invia.

rankbeam/laravel-seo è distribuito con licenza MIT.