Монитор ботов ИИ
Запросы относятся к ботам по совпадению user-agent, а не по подтверждённой идентичности бота. Монитор записывает наблюдаемые запросы; user-agent можно подделать.
Управление роботами ИИ в ядре определяет, что robots.txt сообщает роботам. Монитор ботов ИИ в Pro дополняет эту возможность: записывает, что они действительно делали — какие роботы ИИ загружали ваш сайт, как часто и какой URL с каким HTTP-статусом каждый из них затронул последним.
Он использует инфраструктуру монитора 404: глобальное middleware, выполняемое после ответа, модель с upsert и счётчиком обращений, тот же подход к приватности. Но ключом служит бот, а не путь, и запись ведётся при любом статусе ответа — как раз для тех роботов ИИ, которых монитор 404 намеренно исключает. Для определения ботов используется AiCrawlerRegistry из ядра, поэтому правила robots.txt и наблюдаемый трафик опираются на один источник истины.
Требуется ядро ≥ 3.3
Монитор определяет ботов по каталогу роботов ИИ ядра (SEO::aiCrawlers()). Со старым ядром он остаётся неактивным.
Включение
По умолчанию выключен. После включения глобальное middleware записывает подходящих роботов после каждого ответа, не задерживая отдачу страницы:
// config/seo-pro.php
'ai_bots' => [
'enabled' => true,
],Этого достаточно: middleware регистрируется автоматически. Отключить авторегистрацию можно через ai_bots.auto_register_middleware. Для каждого известного бота создаётся или обновляется одна строка, поэтому размер таблицы ограничен каталогом.
Чтение журнала
Без интерфейса
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();Каждая строка содержит bot, label, operator, purpose, hit_count, last_path, last_status, first_seen_at и 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
После регистрации плагина Pro в группе навигации SEO появляется таблица AI Bots — так она называется в английском интерфейсе. В ней показаны бот, оператор, назначение, число обращений, последний статус, последний путь и время последнего обращения. Таблица доступна только для чтения и фильтруется по назначению.
Приватность
Подход тот же, что у монитора 404: по умолчанию IP не сохраняется. Если явно включить ai_bots.hash_ip, сохраняется только sha256 с ключом — ip_hash. Исходный IP никогда не записывается.
'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
],Метрики за период: суточные группы
Таблица за всё время хранит одну строку на бота. Она удобна для рейтинга активности, но не отвечает на вопросы, сколько обращений или сколько разных URL бот посетил за определённый период. Когда включён daily_enabled — это значение по умолчанию, — каждое обращение также записывается в суточную группу для конкретного пути (seo_ai_bot_daily). Благодаря этому отчёт под вашим брендом показывает реальные показатели периода: обращения с прошлого отчёта и разные URL за период, а не разницу накопительных итогов.
Ограничение размера, ради которого накопительный журнал хранит одну строку на бота, сохраняется:
- Лимит разных путей для каждого бота за сутки (
daily_max_paths). После его достижения новые пути бота сворачиваются в одну группу переполнения. Суточное число обращений остаётся точным, а число строк не растёт бесконтрольно. Число разных URL, достигшее лимита, отображается как "N+". - Срок хранения (
daily_retention_days), по которомуseo-pro:ai-bots-pruneудаляет старые данные.
Установите daily_enabled в false, чтобы оставить только рейтинг за всё время. Тогда показатель «с прошлого отчёта» рассчитывается по разнице со снимком предыдущего отчёта, а существующие суточные группы игнорируются, чтобы не читать устаревшие данные.
Показатели периода имеют точность до дня: «с прошлого отчёта» включает целые дни начиная с дня предыдущего отчёта. Поэтому обращение в этот день могло произойти как до, так и после точного времени его генерации. При обычной ежедневной, еженедельной или ежемесячной периодичности эта погрешность границы невелика.
От наблюдения к управлению
Монитор показывает, кто обходит сайт; управление роботами ИИ в ядре определяет, что им разрешено получать. Появился бот, собирающий данные для обучения ИИ, доступ которого вы предпочли бы ограничить?
// config/seo.php
'ai_crawlers' => [
'overrides' => ['bytespider' => 'disallow'],
],php artisan seo:robots-txtПомните: согласно документации некоторые боты не соблюдают robots.txt. Монитор помогает их обнаружить и решить, стоит ли блокировать их на периферии сети — через межсетевой экран, WAF или Cloudflare.