ESPN DeportesEl clásico de Manchester quedó definido por el VAR; silbidos para Real Madrid; Chelsea fue superado por HullInquirerDILG chief Remulla visits QC jail ahead of looming Romualdez transferThe Jerusalem PostA good deal in bad neighborhoods: Why the Gulf’s best bet remains in Jerusalem - opinionESPNPower Rankings: Everything we learned from the top 25 in Week 2RTP DesportoEuroVolley 2026. Portugal soma quarta derrota consecutiva frente à UcrâniaBBC NewsI had 11 years of chemotherapy for a cancer I didn't have20 MinutenUrsache unklar: Fischsterben im MühlebachComplete SportsBlackburn Give Injury Update On Super Eagles StarESPN CricinfoFleming to link up with T20I squad in preparation for Test coaching stintBBC عربيجماعة أنصار الله تعلن استهداف قاعدة ثانية في السعودية، ومحمد بن سلمان يلتقي قائد القيادة المركزية الأمريكيةIl Fatto QuotidianoKimi Antonelli ora ha in mano il titolo di Formula 1: quel vantaggio su Russell e il sogno di una passerella trionfaleABC News4 people hospitalized after a crane collapsed at a Miami construction site: Officials
The Daily Newsstand · Free, Always
Monday, September 14, 2026

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

Translate

Совет оптимизировать сайт под 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: ClaudeBot
Disallow: /

User-agent: Claude-User
Allow: /

User-agent: Claude-SearchBot
Allow: /

Группы с 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 annotations

import re
import sys
from collections import Counter

LOG_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 None

def 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_agents

def 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 нет.

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.