Claude Code читает не страницу, а её пересказ: прошёл путь одного запроса по документации Claude

от автора

Совет оптимизировать сайт под Claude смешивает два инструмента Anthropic: Claude и агента Claude Code. Profound снял 24 135 ответов на одних запросах, и у двух инструментов разошёлся почти каждый показатель. Я прошёл по документации путь запроса в обоих инструментах. Для владельца сайта из разбора следуют три вещи: какие боты Anthropic заходят на сайт, что закрыть в robots.txt и как проверить заходы по access-логу.

Откуда данные: документация Anthropic и открытые исследования

Своих прогонов под эту статью я не делал, картина собрана по открытым источникам. Claude здесь и дальше означает приложение claude.ai и программный доступ к той же ИИ-модели через Messages API, Claude Code — агента, которого разработчик запускает в терминале для работы с кодом. Profound снимал приложение claude.ai, а параметры поиска и формат цитат взяты из документации Messages API: для приложения Anthropic их не описывает. Источников три группы: документация Anthropic (platform.claude.com, code.claude.com, support.claude.com), разбор Profound «Claude and Claude Code are distinct answer engines» от 24 августа 2026 года (answer engine — система, которая отвечает вместо выдачи ссылок) и два исследования серверных логов, Ahrefs и Saaslinks, о том, кто запрашивает у сайтов файл llms.txt.

Выборка Profound — 24 135 ответов на 1 724 запроса из 11 категорий, снятых с 13 по 23 июля 2026 года, веб-поиск включён у всех систем; отдельная подвыборка про программирование — 2 800 ответов на 200 запросов. Ещё компания разобрала топ-1000 страниц, которые агенты обеих систем посетили с 18 июля по 18 августа, и разложила их по категориям нейросетью GPT-4.1-mini, а не вручную. Страницы взяты с доменов, которые Profound отслеживает у себя (в оригинале internally tracked domains), и выборка, вероятно, смещена к SaaS и технологическим компаниям: переносить эти цифры на интернет-магазин или медицинский сайт без проверки я бы не стал.

Что происходит, когда Claude ищет через API: цитата с адресом и куском текста

В выборке Profound приложение claude.ai искало в вебе больше чем в 93% ответов. Это цифра одной выборки: другое исследование, со своим набором запросов и счётом по промптам, даёт для Claude 36,6%. По документации веб-поиска Messages API ИИ-модель сама решает, вызывать ли инструмент для конкретного вопроса. Владельцу сайта из параметров поиска важен один: разработчик приложения на API может сузить поиск списком разрешённых (allowed_domains) или запрещённых (blocked_domains) доменов, и тогда сайт вне списка такое приложение не найдёт, как бы хорошо он ни был написан.

Найденные страницы приходят отдельным блоком web_search_tool_result — списком с адресом и заголовком каждой. В тексте ответа Claude расставляет цитаты типа web_search_result_location, и каждая несёт адрес (url), заголовок (title), зашифрованный указатель на источник и кусок процитированного текста до 150 символов (cited_text). Поля url, title и cited_text в токенах не учитываются. Следующий фрагмент нужен тому, кто строит приложение на API: так со стороны кода выглядит разбор уже полученного ответа, без единого сетевого запроса.

def extract_cited_urls(response_content):    """Уникальные цитаты web_search_result_location    из response.content ответа Messages API."""    seen = set()    citations = []    for block in response_content:        for c in block.get("citations") or []:            if c.get("type") != "web_search_result_location":                continue            url = c.get("url")            if not url or url in seen:                continue            seen.add(url)            citations.append({                "url": url,                "title": c.get("title", ""),                "cited_text": c.get("cited_text", ""),            })    return citations

Функция проходит по блокам response.content, берёт из них цитаты веб-поиска и отбрасывает повторы одного адреса. Если страница есть в блоке результатов, но её url нет среди цитат, поиск её нашёл, а в текст ответа она не попала. У Messages API есть и второй инструмент, web fetch tool, который забирает содержимое страницы по адресу. По его документации он открывает только адреса, которые уже встречались в разговоре: в сообщении пользователя или в результатах прошлого поиска. Ссылку, которую ИИ-модель сочинила сама, он не откроет — так Anthropic защищается от утечки данных. JavaScript этот инструмент не выполняет, для страниц, которые собирает браузер, у Anthropic есть отдельный browser use tool.

На какие сайты приходятся цитаты Claude, посчитала OtterlyAI: 379 321 цитата по 16 406 доменам, июнь 2026 года, запросы из SaaS и tech. Сайты брендов и продуктов собрали 64,0% цитат, новости и медиа — 14,9%. На топ-10 доменов пришлось 9,5% всех цитат, на топ-500 — 59,9%, а 32,9% доменов процитированы ровно один раз.

Когда Claude Code открывает страницу, до основной ИИ-модели доходит пересказ

У Claude в API путь заканчивается цитатой с куском исходного текста, у Claude Code — ответом вспомогательной ИИ-модели.

У Claude в API путь заканчивается цитатой с куском исходного текста, у Claude Code — ответом вспомогательной ИИ-модели.

Claude Code ищет редко: в той же выборке Profound веб-поиск сработал в 13% ответов. Поиск здесь один инструмент, WebSearch, и по справочнику инструментов Claude Code его разрешают или запрещают целиком, без правил для отдельных доменов.

Страницу Claude Code открывает инструментом WebFetch, и до основной ИИ-модели она, как правило, доходит уже переработанной. По справочнику, WebFetch получает адрес и промпт с описанием, что нужно извлечь, страницу по этому промпту читает вспомогательная ИИ-модель поменьше, и в большинстве случаев основная получает её ответ, а не исходную страницу. Длинные страницы перед обработкой обрезаются до фиксированного числа символов, а сама документация называет инструмент lossy by design: детали он теряет намеренно.

Исключение описано не у Anthropic, а в стороннем разборе кода Claude Code от января 2026 года. HTML там переводится в Markdown библиотекой Turndown, а пересказ пропускается при двух условиях сразу: домен входит в зашитый список примерно из 80 сайтов документации (Python Docs, MDN, React, Kubernetes, AWS), и страница отдаётся как text/markdown короче примерно 100 тысяч символов. Обычный сайт в этот список не входит, поэтому его страницу Claude Code получает пересказом, в каком бы формате она ни была. Anthropic списка не публикует, и он может смениться с любой версией.

Остальное в справочнике касается в основном отладки агента: кэш ответа на 15 минут, пятиминутный срок загрузки, переменные окружения. Для сайта важны две детали. Редирект на другой домен WebFetch сам не проходит: он возвращает исходный и новый адрес, и агент должен повторить запрос. А правилом WebFetch(domain:example.com) в списке permissions.deny файла settings.json разработчик может запретить агенту конкретный сайт, даже если robots.txt этого сайта открыт.

Разницу между Claude и Claude Code видно и по ответам

Выборка Profound, июль 2026: одни и те же 1 724 запроса, два разных набора чисел на выходе.

Выборка Profound, июль 2026: одни и те же 1 724 запроса, два разных набора чисел на выходе.

Разбор Profound показывает ту же разницу со стороны ответов. На одних и тех же 1 724 запросах Claude Code в среднем называет 6,6 бренда за ответ, Claude — 5,2, и совпадает у них лишь один бренд из пяти. Длина ответа тоже разная: в среднем 322 слова у Claude Code и 459 у Claude.

Сильнее всего различается форма ответа. По данным Profound, Claude Code вставляет списки в 94% ответов и таблицы в 54%. У Claude списки есть в 56% ответов, таблицы — в 11%. Причин такой разницы Profound не называет, в разборе приведены только доли.

Разные и страницы, на которые ходят агенты. В топ-1000 страниц, посещённых с 18 июля по 18 августа, почти три четверти визитов Claude Code пришлись на документацию. У Claude 60% визитов — это robots.txt, карта сайта (sitemap) и главные страницы.

Одна цифра в открытых источниках не сходится. Profound на июльской выборке получил поиск больше чем в 93% ответов Claude. Другое исследование, представленное на сессии Profound Zero Click и пересказанное Search Engine Land в июне 2026 года, даёт для Claude 36,6% промптов с поиском при примерно 90% у ChatGPT. Там же частота поиска разложена по типам запросов: 81% у вопросов о свежих событиях, 67% у рейтингов, 55% у запросов с привязкой к месту и 51% у сравнений. Profound считает долю ответов, второе исследование — долю промптов, выборки и периоды у них разные, поэтому к одному числу эти данные не сводятся. Сравнивать 13% у Claude Code корректно только с цифрой Profound: обе сняты на одной выборке.

Сам Profound выводит из этих данных, что под два инструмента нужно оптимизировать раздельно. Для Claude Code компания советует машиночитаемую документацию и точные технические характеристики, для Claude — брендовый контент широкого охвата.

На сайт заходят три разных бота Anthropic

Правило в robots.txt действует только на того бота, чьё имя в нём стоит.

Правило в robots.txt действует только на того бота, чьё имя в нём стоит.

У Anthropic три краулера с разными именами и задачами, и правило в robots.txt для одного из них не действует на двух других. По документации поддержки Anthropic, обновлённой 7 апреля 2026 года, ClaudeBot собирает контент для обучения ИИ-моделей, и его блокировка исключает сайт из будущих обучающих наборов. Claude-User забирает страницу, когда о ней спрашивает конкретный пользователь Claude, и его блокировка снижает видимость сайта в ответах на такие вопросы. Claude-SearchBot индексирует контент для качества поиска, и без него, по той же документации, может упасть точность цитирования.

Все три бота соблюдают robots.txt, включая Claude-User. По разбору Search Engine Journal это отличает Anthropic от OpenAI, у которой ChatGPT-User по её же документации может файл не соблюдать. Правила пишутся на каждого бота и на каждый поддомен отдельно. Кто хочет остаться в ответах Claude, но не отдавать тексты на обучение, закрывает только ClaudeBot:

User-agent: ClaudeBotDisallow: /User-agent: Claude-UserAllow: /User-agent: Claude-SearchBotAllow: /

Группы с Allow: / для Claude-User и Claude-SearchBot нужны, если в файле есть общее правило User-agent: с запретами: по стандарту robots.txt (RFC 9309) бот, для которого есть группа со своим именем, общую группу не читает. Если общего запрета нет, эти две группы можно не писать. Блокировать ботов по IP-адресу Anthropic не советует: они работают на мощностях публичных облачных провайдеров. Список адресов в bots.json компания публикует, но надёжнее различать ботов по user-agent — подписи, которой бот представляется серверу.

С user-agent инструмента WebFetch в Claude Code как раз ничего не ясно: какой подписью он ходит на внешние сайты, Anthropic не публикует. Это может быть тот же Claude-User или отдельная строка, а независимые каталоги ботов расходятся даже в строке Claude-User. Ответ для своего сайта даёт только собственный лог.

Боты Anthropic llms.txt почти не читают

Файл llms.txt лежит по адресу /llms.txt и коротко описывает сайт для ИИ-моделей: ссылки на главные страницы в формате, удобном для машинного чтения. У platform.claude.com и code.claude.com такой файл есть, со ссылкой на полную версию llms-full.txt, так что для собственной документации Anthropic этот формат держит.

На чужих сайтах его почти никто не запрашивает, в том числе боты Anthropic. Ahrefs проверил 137 210 доменов в мае 2026 года и нашёл валидный llms.txt примерно у 38 000: у 97% из них за месяц к файлу не было ни одного обращения. Краулеры обучения всех компаний вместе дали 5,3% запросов к llms.txt, а ClaudeBot — 0,8% запросов внутри этой категории. Claude-User набрал 2,5% всех запросов к файлу. Saaslinks разобрал логи одного сайта за две недели: ClaudeBot, Claude-SearchBot и Claude-User сделали 319, 96 и 8 запросов к /robots.txt и ни одного к /llms.txt.

Claude Code в исследовании Ahrefs назван среди примеров категории ИИ-агентов, и вся эта категория дала 10,5% запросов к llms.txt. По какой подписи Ahrefs опознавал агентов, в исследовании не раскрыто: сказано только, что все user-agent разложены на двенадцать категорий. Боты, от которых зависит ответ пользователю Claude в чате, файл почти не трогают. Если у проекта есть документация для разработчиков, llms.txt там уместен, Anthropic держит такой файл и у своей. Как способ попасть в ответ Claude на вопрос о бренде он по этим логам не работает.

Как посмотреть в своём логе, кто из ботов Anthropic к вам заходит

Какие боты Anthropic заходят на конкретный сайт, показывает только его собственный access-лог. У nginx стандартный формат журнала (combined log) содержит поле user-agent, и скрипт на Python считает по нему хиты трёх ботов и запрошенные пути. Официальной подписи WebFetch в Claude Code нет, поэтому все прочие user-agent со словом claude в любом регистре скрипт печатает отдельным списком: по нему видно, какие подписи с этим словом приходят на сайт.

from __future__ import annotationsimport reimport sysfrom collections import CounterLOG_PATTERN = re.compile(    r'(?P<ip>\S+) \S+ \S+ \[(?P<time>[^\]]+)\] '    r'"(?P<method>\S+) (?P<path>\S+) \S+" '    r'(?P<status>\d+) (?P<size>\S+) '    r'"(?P<referer>[^"]*)" "(?P<agent>[^"]*)"')BOTS = ("ClaudeBot", "Claude-User", "Claude-SearchBot")def classify(user_agent: str) -> str | None:    for name in BOTS:        if name in user_agent:            return name    return Nonedef analyze(lines):    hits: Counter[str] = Counter()    paths_by_bot: dict[str, Counter[str]] = {}    other_claude_agents: Counter[str] = Counter()    for line in lines:        match = LOG_PATTERN.match(line)        if not match:            continue        agent = match.group("agent")        bot = classify(agent)        if bot:            hits[bot] += 1            paths_by_bot.setdefault(bot, Counter())[match.group("path")] += 1        elif "claude" in agent.lower():            other_claude_agents[agent] += 1    return hits, paths_by_bot, other_claude_agentsdef main() -> None:    if len(sys.argv) != 2:        sys.exit("Использование: python3 claude_log_stats.py access.log")    with open(sys.argv[1], encoding="utf-8", errors="replace") as f:        hits, paths_by_bot, other_claude_agents = analyze(f)    print("Хиты по ботам Anthropic:")    for bot, count in hits.most_common():        print(f"  {bot}: {count}")    print("\nПути по ботам:")    for bot, paths in paths_by_bot.items():        print(f"  {bot}: {dict(paths.most_common(5))}")    if other_claude_agents:        print("\nДругие user-agent с подстрокой claude:")        for agent, count in other_claude_agents.most_common():            print(f"  {agent}: {count}")if __name__ == "__main__":    main()

Файл читается построчно за один проход и не загружается в память целиком, так что большой лог скрипт тоже переварит. Функция classify ищет в user-agent имя одного из трёх ботов, analyze раскладывает строки на хиты, пути и прочие подписи с claude, а main без аргумента печатает подсказку и выходит с кодом 1. Строки, которые не разобрались по формату combined, пропускаются молча: если в логе nginx настроен свой формат, регулярное выражение придётся поправить под него.

Я проверил скрипт на шести синтетических строках, которые составил сам, это не трафик реального сайта. В них два захода ClaudeBot, по одному Claude-User и Claude-SearchBot, придуманный агент example-agent/0.1 (claude-test) и обычный браузер. Вывод прогона:

Хиты по ботам Anthropic:  ClaudeBot: 2  Claude-User: 1  Claude-SearchBot: 1Пути по ботам:  ClaudeBot: {'/robots.txt': 1, '/blog/article-1': 1}  Claude-User: {'/docs/pricing': 1}  Claude-SearchBot: {'/pricing': 1}Другие user-agent с подстрокой claude:  example-agent/0.1 (claude-test): 1

Браузер в счёт не попал, придуманный агент ушёл в последний список. На синтетике это проверка того, что разбор работает, и больше ничего. На настоящем логе в последнем списке окажется подпись, которой к сайту приходит всё остальное с именем Claude, в том числе, возможно, WebFetch из Claude Code.

Что по итогу разбора

Какой из двух инструментов важнее, решает аудитория сайта. Если вас выбирают покупатели, спрашивая чат, это Claude и его боты Claude-User и Claude-SearchBot. Если вашей документацией пользуются разработчики, добавляется Claude Code. Из документации и открытых исследований для владельца сайта следуют пять действий, первые два делаются за десять минут без разработчика.

  1. Прописать robots.txt отдельно для ClaudeBot, Claude-User и Claude-SearchBot. Правило для одного бота на других не действует. Чтобы остаться в ответах Claude, но не отдавать тексты на обучение, достаточно закрыть только ClaudeBot.

  2. Проверить, что важные страницы отдаются без JavaScript. Web fetch tool в Messages API не выполняет JavaScript, а WebFetch в Claude Code, по стороннему разбору кода, переводит в Markdown полученный HTML без выполнения скриптов. Если текст страницы собирает скрипт в браузере, оба инструмента его не увидят. Проверка простая: открыть страницу с отключённым JavaScript (в DevTools браузера это отдельная настройка). Что видно там, то видит и инструмент чтения.

  3. Смотреть в собственный access-лог по user-agent. У трёх ботов Anthropic фиксированные подписи, их считает любой разбор лога по этому полю, а неизвестные подписи с claude стоит выводить отдельным списком. Скрипт на 60 строк здесь хватит, но запускать его на сервере обычно будет разработчик или администратор.

  4. Не считать llms.txt способом попасть в ответы Claude. Боты, от которых зависят эти ответы, файл почти не запрашивают. У Saaslinks на логах одного сайта за две недели — ноль обращений от каждого из трёх, у Ahrefs 97% файлов на 38 000 доменов за месяц не получили ни одного обращения. Для документации, которую разработчики читают через Claude Code, llms.txt уместен.

  5. Ставить главное в начало длинной страницы. WebFetch обрезает длинные страницы до обработки, а затем пересказывает их вспомогательной ИИ-моделью. Markdown-версия обычному сайту пересказа не отменит: по стороннему разбору кода быстрый путь без пересказа есть только у примерно 80 зашитых сайтов документации.

У разбора три ограничения. Цифры Profound сняты на доменах, которые компания отслеживает сама, вероятно в основном SaaS и tech, и для других ниш доли могут быть другими. Частота поиска у Claude расходится между источниками: больше 93% ответов у Profound и 36,6% промптов во втором исследовании, при разном счёте и разных выборках. User-agent, которым WebFetch в Claude Code ходит на внешние сайты, официально не описан, и узнать его можно только по своему логу.

Путь запроса в обоих инструментах описан в открытой документации почти целиком. В Messages API он заканчивается цитатой с адресом и куском исходного текста, у Claude Code — пересказом вспомогательной ИИ-модели, и формата цитат для него в документации Claude Code нет.

ссылка на оригинал статьи https://habr.com/ru/articles/1082118/