Методика оценки AgentReady v0.3
AgentReady оценивает, насколько сайт пригоден для ИИ-агентов — программ, которые по просьбе человека сами ходят по сайтам: ищут информацию, выбирают товары, заполняют формы. Итог — число от 0 до 100. Ниже — из чего оно складывается.
Главный принцип: в оценку входит только то, что является свойством сайта. Факты о сайте и препятствия на пути проверяются правилами, без ИИ, поэтому результат не зависит от того, какая модель ходит по сайту. Попытка ИИ-агента показывается в отчёте отдельно и в баллы не входит: её исход зависит от модели, а не только от сайта.
Версия методики указана в каждом отчёте. При изменении правил версия меняется, а старые отчёты остаются посчитанными по своей версии.
Итог из четырёх блоков
| Блок | Вес | Что проверяем |
|---|---|---|
| Доступ | 20 | Сайт отвечает, не блокирует ИИ-агентов, robots.txt их не закрывает |
| Читаемость | 25 | Разметка schema.org, подписи элементов, контент без JavaScript |
| Проходимость сценариев | 45 | Четыре типовых сценария: что для них есть на сайте и что мешает на пути |
| Агентские интерфейсы | 10 | llms.txt, sitemap.xml, WebMCP или описание API |
Внутри блока балл — среднее по его проверкам: пройдено = 1, частично = 0,5, не пройдено = 0. Проверка «Семантика» и сценарии дают дробный балл от 0 до 1.
Правила подсчёта:
- Неприменимое не считается. Если на сайте нет корзины, сценарий «корзина» исключается. То же для проверок и сценариев, которые не выполнялись (например, кончилось время) или сорвались по нашей вине.
- Один сценарий весит не больше 15 баллов. Если применимых сценариев меньше трёх, блок «Проходимость сценариев» весит 15 баллов за каждый, а остаток его веса распределяется между другими блоками. Иначе единственный сценарий решал бы почти половину оценки.
- Пустой блок отдаёт вес остальным. Если в блоке нечего оценить, его вес распределяется между другими блоками пропорционально.
- WebMCP — бонус. Если сайт объявляет инструменты для агентов или публикует описание API, это повышает блок «Агентские интерфейсы»; если нет — оценка не снижается.
- Блокировка бота — потолок 30. Если сайт не пускает нашего бота (ответ 401/403/429/503 или страница «вы не робот?»), дальнейшие проверки не выполняются, а итог не превышает 30 баллов.
- Недоступный сайт не оценивается. Если сервер отвечает ошибкой всем подряд — и обычным запросам, и браузеру, — оценка не ставится.
Доступ (20)
- Сайт отвечает на обычный запрос — страница отвечает кодом 2xx на HTTP-запрос с нашим User-Agent.
- Пускает ИИ-агентов — браузер с честным User-Agent
AgentReadyBotполучает страницу, а не ошибку или проверку «вы не робот?». Частично — на странице капча или блокируются обычные запросы без браузера. - robots.txt не закрывает ИИ-агентов — смотрим доступ к сайту 14 известных агентов и краулеров (OpenAI, Anthropic, Perplexity, Google, Apple, Meta, Amazon, Common Crawl, ByteDance). Пройдено — не закрыт ни один, частично — закрыты некоторые, не пройдено — закрыты все. robots.txt, который отвечает ошибкой сервера, — частично (по стандарту RFC 9309 краулеры считают сайт закрытым).
Читаемость (25)
- Разметка schema.org (JSON-LD) — есть хотя бы один корректный блок JSON-LD с
@contextschema.org и@type. Частично — часть блоков с ошибками или разметка появляется только после выполнения JavaScript. - Семантика и подписи элементов — балл от 0 до 1: 70% — доля кнопок, ссылок и полей с понятным именем в дереве доступности, 30% — каркас страницы (есть
main, естьnav, есть заголовки h1–h3). От 0,8 — пройдено, от 0,5 — частично. - Контент виден без JavaScript — доля слов видимого текста, которые есть уже в HTML с сервера. От 80% — пройдено, от 40% — частично.
- Контакты доступны без ИИ — на главной есть ссылки
mailto:илиtel:и контакты (телефон, e-mail, адрес) в JSON-LD. Что-то одно — частично. Такие контакты берёт любая программа без разбора вёрстки. Проверка относится к главной странице; в сценарии «Найти контакты» те же признаки проверяются ещё и на странице контактов.
Проходимость сценариев (45)
Наш робот проходит по сайту те же четыре сценария, что и ИИ-агент, но по правилам, без языковой модели. Он кликает по ссылкам и кнопкам, как это делал бы агент, и записывает, что на сайте есть и что помешало.
Оценка сценария = доля выполненных сигналов × (1 − штраф за препятствия).
Сигналы
| Сценарий | Когда применим | Сигналы (каждый — равная доля оценки) |
|---|---|---|
| Найти контакты | всегда | телефон или e-mail оформлены ссылкой tel: / mailto:; контакты есть в JSON-LD; с главной есть ссылка на страницу контактов (или контакты прямо на главной); телефон или e-mail есть в HTML без выполнения JavaScript |
| Найти товар и цену | на сайте есть цены, разметка товаров, корзина или ссылка на цены | с главной есть ссылка на каталог, товар или цены; цена есть в HTML без JavaScript; товар или услуга с ценой есть в JSON-LD; для магазинов — поле поиска с подписью |
| Корзина | есть ссылка на корзину или кнопка «в корзину» | кнопка «в корзину» подписана и нажимается; есть ссылка на корзину; из корзины есть переход к оформлению. Заказ не оформляется |
| Форма заявки | форма связи найдена на главной, на странице контактов или по ссылке с них | у полей есть подписи (label, aria-label, placeholder, autocomplete) — не меньше 80% полей; у кнопки отправки есть подпись; форма не закрыта капчей; форма есть в HTML без JavaScript. Форма не заполняется и не отправляется |
Сценарий, предмета которого на сайте нет (нет корзины, нет формы), — «неприменимо», а не ноль. Формой связи не считаются поиск, вход, регистрация и подписка из одного поля.
Препятствия и штрафы
Препятствие — это то, из-за чего клик робота не прошёл или путь оборвался.
| Препятствие | Штраф |
|---|---|
| Страница защиты от ботов | 100% — сценарий непроходим |
| Баннер согласия, который нельзя закрыть без согласия на отслеживание | 50% |
| Элемент перекрыт другим (всплывающее окно, липкая шапка) | 30% |
| Элемент за краем экрана (карусель) | 30% |
| Элемент неактивен | 30% |
| Элемент не реагирует на клик | 30% |
| Элемент скрыт (закрытое меню) | 20% |
| Путь уводит на другой сайт | 20% |
Несколько препятствий в одном сценарии перемножаются (30% и 30% → остаётся 49%); препятствие одного вида считается один раз. Баннер согласия, который закрывается нейтральной кнопкой («отклонить», «только необходимые», «закрыть»), штрафа не даёт: робот его закрывает и идёт дальше. Согласие на отслеживание робот не даёт никогда.
Штрафы пока экспертные. Они заданы по первым наблюдениям: например, сценарии, где агент встречал перекрытый элемент, заканчивались успехом в 4 случаях из 23, а без препятствий — в 121 из 182. Наблюдений мало и почти все — от одной модели. После калибровочного прогона на большом наборе сайтов и нескольких моделях штрафы будут заменены измеренными («мешает агентам в N% случаев»), и версия методики изменится.
Как прошёл ИИ-агент (вне оценки)
Отдельно от оценки ИИ-агент получает те же задачи обычным языком и видит страницу как текстовый снимок дерева доступности — без заранее написанных селекторов. В отчёте для каждого сценария показаны исход, модель и шаги со скриншотами. Это попытка одного агента на указанной модели: другой агент может пройти иначе, поэтому в баллы она не входит. Она нужна, чтобы увидеть, где агент застревает на практике, и чтобы накапливать данные для калибровки штрафов.
Ответ агента проверяется, а не принимается на слово: найденные контакты и цена должны встретиться на просмотренных страницах, экран оформления заказа и заполненная форма определяются по самой странице. Неподтверждённый ответ — частично. Баннеры согласия агент закрывает только нейтральным вариантом; нажатия «принять» запрещены на уровне кода.
Лимиты на сценарий агента: 20 шагов, 90 секунд работы, 40 000 входных токенов (кэшированные токены провайдеров со скидкой считаются за половину). Сценарии, не проверенные по нашей вине (лимит или сбой ИИ-модели, не хватило времени), повторяются; если повтор не удался — «не проверено».
Агентские интерфейсы (10)
- Файл llms.txt —
/llms.txtотдаётся, это markdown с заголовком# …, в нём есть ссылки, и проверенные ссылки (первые три) открываются. - Карта сайта sitemap.xml — карта из robots.txt или по адресу
/sitemap.xmlсодержит<urlset>или<sitemapindex>. - WebMCP или описание API (бонус) — страница регистрирует инструменты через
navigator.modelContext, есть формы с атрибутомtoolnameили по адресам/.well-known/mcp.json,/.well-known/mcpили ссылкеrel="service-desc"отдаётся описание MCP или OpenAPI.
Как ведёт себя бот
- Честно представляется: User-Agent
AgentReadyBot/0.1. - Соблюдает запрет
User-agent: AgentReadyBot/Disallow: /в robots.txt — такой сайт не проверяется. - Не больше 60 запросов за проверку и не чаще одного в секунду; вся проверка — не дольше 5 минут.
- Не отправляет формы, не оформляет заказы, не регистрируется, не вводит ничего, кроме тестовых данных (
Test Agent,agent-test@example.invalid,+10000000000), и не обходит защиту от ботов. Это относится и к роботу, и к ИИ-агенту: правила кликов и запросов у них общие и проверяются в коде. Робот не вводит вообще ничего.
Ограничения
Оценка отражает состояние сайта в конкретную дату. Робот идёт по типовому пути: если контакты или каталог спрятаны под необычными названиями, он может их не найти — тогда сигнал считается невыполненным, хотя человек нашёл бы. Сайты меняются и отдают немного разное содержимое от запроса к запросу, поэтому повторная проверка может дать другой результат: в нашем замере две проверки одного сайта подряд совпали точно в 85% случаев, расхождение обычно не больше 5 баллов. От ИИ-модели оценка не зависит.
История версий
- 0.3 (2026-10-03): в оценку входят только свойства сайта. Блок «Выполнение задач» заменён блоком «Проходимость сценариев»: сценарии проходит робот по правилам, оценка — сигналы × штрафы за препятствия. Исход ИИ-агента показывается отдельно и в баллы не входит. Один сценарий весит не больше 15 баллов. Причина: в бенчмарке повторяемости оценка одного и того же сайта между прогонами расходилась больше чем на 15 баллов у 5 сайтов из 20 — из-за того, что ИИ-модель то находила, то не находила нужное.
- 0.2 (2026-10-02): сценарий, пройденный только через открытие ссылки по прямому адресу, считается частично; в блок «Читаемость» добавлена проверка «Контакты доступны без ИИ»; кэшированные токены провайдеров со скидкой считаются в лимит сценария за половину; баннеры согласия: агент закрывает их нейтральным вариантом, незакрываемый баннер — частично.
- 0.1 (2026-10-01): первая версия. Отчёты, посчитанные по ней, помечены v0.1 и не пересчитываются.