Чому важливо, хто справді заходить
ШІ-асистент може процитувати лише сторінку, яку прочитав один із його краулерів. Якщо жоден із них не завантажив вашу сторінку з цінами, жодна відповідь її не процитує, хоч би як добре її написано.
Ваш robots.txt і таблиця ШІ-ботів у звіті SagBot кажуть, яким краулерам можна читати сайт. Вони не кажуть, які прийшли. Це каже лог доступу вашого сервера: кожен запит з адресою, звідки він надійшов, сторінкою, кодом статусу та user agent, що називає краулера.
Які ШІ-краулери існують і навіщо вони приходять
ШІ-краулери приходять з однієї з трьох причин. Краулери для навчання збирають сторінки, щоб навчати моделі. Пошукові краулери будують індекс, у якому асистент шукає, коли відповідає. Агенти користувачів завантажують сторінку наживо, бо хтось щойно спитав про неї асистента. Саме візити двох останніх можуть привести до цитування.
OpenAI надсилає GPTBot для навчання, OAI-SearchBot для пошуку і ChatGPT-User для запитів наживо. Anthropic надсилає ClaudeBot, Claude-SearchBot і Claude-User; Perplexity — PerplexityBot і Perplexity-User. Meta використовує meta-externalagent, meta-webindexer і meta-externalfetcher, Amazon — Amazonbot, Amzn-SearchBot і Amzn-User, а Mistral і DuckDuckGo надсилають MistralAI-User і DuckAssistBot. Bytespider (ByteDance) і CCBot (Common Crawl, відкритий архів, на якому навчено багато моделей) збирають дані для навчання.
Двох імен ви в логах не знайдете: Google-Extended і Applebot-Extended — це правила robots.txt, а не краулери. Google завантажує сторінки через Googlebot, а Apple — через Applebot; правила Extended лише вирішують, чи можна використовувати завантажене для ШІ. Агент Google для запитів користувачів наживо, Google-Agent, у логах таки з’являється під власним ім’ям.
1. Знайдіть свій лог доступу
На власному сервері лог — це звичайний текстовий файл. nginx пише /var/log/nginx/access.log. Apache пише /var/log/apache2/access.log на Debian і Ubuntu та /var/log/httpd/access_log на Red Hat, Rocky й Alma. Старіші дні ротуються в пронумеровані чи датовані файли поруч, а найстаріші з них стискаються в .gz.
На спільному чи керованому хостингу знайдіть у панелі хостингу сирі логи доступу й завантажте їх. Деякі хостинги зберігають лише кілька днів, тож зберігайте логи регулярно, якщо хочете бачити довший період.
Якщо сайт за Cloudflare, відкрийте в панелі керування AI Crawl Control для свого домену. Він є на всіх тарифах і показує запити кожного ШІ-краулера, їхні коди статусу та найчастіше запитувані шляхи, без жодних лог-файлів; на безкоштовному тарифі його метрики охоплюють останні 24 години. Сирі рядки запитів Logpush експортує до обраного вами сховища. Cloudflare бачить лише імена хостів, що йдуть через проксі (помаранчева хмарка); записи DNS only ідуть прямо на ваш сервер.
На Vercel сторінка Logs проєкту показує нещодавні запити з їхнім user agent: годину на Hobby і день на Pro. Log drain (Pro і Enterprise) надсилає кожен запит, зокрема до статичних файлів, до обраного вами сховища.
2. Перевірте, що лог зберігає user agent
Саме user agent називає краулера, тож він потрібен у кожному рядку. І nginx, і Apache мають формат combined, який завершує кожен рядок реферером і user agent у лапках. nginx використовує його, якщо ви не оберете інший; Apache його визначає, а ваш рядок CustomLog вирішує, чи він застосовується.
Перегляньте останні рядки логу першою командою нижче. Якщо кожен закінчується назвою браузера чи бота в лапках, усе гаразд. Якщо рядки закінчуються статусом і кількістю байтів, сервер пише Common Log Format, у якому немає user agent: задайте combined у рядку access_log (nginx) або в рядку CustomLog (Apache), як нижче, і перезапустіть nginx чи Apache.
Команди в наступних кроках розраховані на формат combined. Якщо ви використовуєте власний log_format чи LogFormat, залиште $http_user_agent або %{User-Agent}i останнім полем у лапках або підлаштуйте команди.
tail -n 3 /var/log/nginx/access.logaccess_log /var/log/nginx/access.log combined;LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog ${APACHE_LOG_DIR}/access.log combined3. Порахуйте візити кожного ШІ-краулера
Вставте перший блок в оболонку на сервері. Він записує в BOTS імена ШІ-краулерів із таблиці ШІ-ботів SagBot і рахує запити кожного краулера у поточному лог-файлі. Змініть шлях, якщо ваш інший, наприклад /var/log/apache2/access.log.
Другий блок робить те саме для ротованих файлів, стиснутих чи ні; запустіть його в тій самій оболонці, щоб BOTS залишалася заданою. Краулери для навчання часто очолюють список. З відповідями пов’язані візити пошукових краулерів та агентів користувачів, тож варто помітити, коли їх немає.
BOTS='GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User'
BOTS="$BOTS|PerplexityBot|Perplexity-User|Google-Agent|Applebot|Bytespider|CCBot"
BOTS="$BOTS|meta-externalagent|meta-webindexer|meta-externalfetcher|Amazonbot"
BOTS="$BOTS|Amzn-SearchBot|Amzn-User|MistralAI-Training|MistralAI-Index"
BOTS="$BOTS|MistralAI-User|DuckAssistBot"
awk -F'"' '{print $6}' /var/log/nginx/access.log \
| grep -Eo "$BOTS" | sort | uniq -c | sort -rnzgrep -hE "${BOTS:?}" /var/log/nginx/access.log* \
| awk -F'"' '{print $6}' | grep -Eo "$BOTS" | sort | uniq -c | sort -rn4. Перевірте, чи краулер справжній
Будь-хто може надіслати запит, у якому user agent каже GPTBot, і скрейпери так і роблять. Щоб довіряти візиту, звірте адресу, звідки він прийшов, зі списком самого оператора. Перша команда нижче показує адреси, що назвалися GPTBot; підставте будь-яке інше ім’я.
OpenAI, Anthropic, Perplexity, Amazon, Apple і Common Crawl публікують діапазони IP своїх краулерів у документації до ботів. Google і Bing також можна перевірити зворотним DNS: адреса має розв’язуватися в ім’я googlebot.com, google.com чи googleusercontent.com для Google або search.msn.com для Bing, а це ім’я має розв’язуватися назад у ту саму адресу. Другий блок показує перевірку на прикладі адреси від самого Google. Apple (applebot.apple.com) і Common Crawl (crawl.commoncrawl.org) проходять ту саму перевірку.
Meta й ByteDance на момент написання не публікують списку адрес, тож їхні візити можна порахувати, але не перевірити.
awk '/GPTBot/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rnhost 66.249.66.1
host crawl-66-249-66-1.googlebot.com5. Знайдіть сторінки, на яких ШІ-краулери отримують помилки
Краулер, що отримав 404 чи 500, іде ні з чим і не має що цитувати, а сторінка, яка постійно видає помилку, може випасти з його індексу.
Блок нижче показує шляхи, що відповіли ШІ-краулерам 404 або будь-яким 5xx, від найчастіших; йому потрібна BOTS із кроку підрахунку в тій самій оболонці. Переспрямуйте переміщені сторінки на нову адресу, виправте помилки й приберіть мертві посилання з карти сайту та внутрішніх посилань.
awk -F'"' -v bots="${BOTS:?}" '$6 ~ bots {
split($3, f, " "); split($2, r, " ")
if (f[1] == 404 || f[1] >= 500) print f[1], r[2]
}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Чого логи не покажуть
Сторінка, віддана з кешу CDN, до вашого сервера не доходить, тож власний лог показує менше візитів, ніж було. Для повної картини використовуйте логи CDN або його звіт про краулерів.
Cloudflare бачить лише імена хостів, що йдуть через проксі. Ім’я хоста в режимі DNS only не показує візитів в AI Crawl Control, хоч скільки краулерів до нього доходить.
Сам user agent можна підробити, а Common Log Format його взагалі не записує.
Логи показують візити, а не цитування. Те, що краулер прочитав сторінку, не означає, що асистент її процитує; як часто вас цитують — окреме вимірювання.
Перевірте, кому дозволено читати ваш сайт
Безкоштовне сканування прочитає ваш robots.txt і покаже, яких ШІ-краулерів він пускає, а яких блокує, поруч з рештою готовності вашого сайту до ШІ.