Я исходил из простого допущения: сначала выводим страницу в топ поиска, а цитирование нейросетями подтянется следом — модель ведь тоже читает интернет. Допущение оказалось неверным.
Взял один сайт, снял два среза данных и свёл их по URL. Ниже метод, код и результат, который меня удивил.
Что и как я измерял
Срез первый — поиск. Search Console, окно 19 мая — 17 августа 2026. Отобрал страницы с позицией от 3,5 до 20 при показах не меньше трёх: этого хватает, чтобы страница считалась видимой, а не случайной.
Срез второй — нейросети. Свой скрипт мониторинга: 20 вопросов ниши прогоняются через ChatGPT, Perplexity, Gemini, Claude, GigaChat и Алису AI. За прогон получается 358 ответов, у каждого сохраняется список источников — те самые ссылки, на которых модель строит ответ. Прогон от 17 августа.
Дальше нужно было ответить на один вопрос: попадают ли в источники ответов те же страницы, которые видит поиск.
Код: как свести Search Console и логи замера по URL
Скрипт короткий, поэтому привожу целиком. На входе — markdown-отчёт из Search Console и папка с логами замера, на выходе три группы страниц.
import json, glob, re, collectionsfrom pathlib import Path# 1. ИИ-канал: какие свои URL попали в источники ответовcited = collections.Counter()prompts_by_url = collections.defaultdict(set)for f in glob.glob("logs/2026-08-17/*/*.json"): d = json.load(open(f)) for s in d.get("sources_cited") or []: url = s if isinstance(s, str) else (s.get("url") or "") if "example.com" in url: # свой домен path = re.sub(r"https?://(www\.)?example\.com", "", url).rstrip("/") or "/" cited[path] += 1 prompts_by_url[path].add(d["prompt_id"])# 2. Поисковый канал: позиции и клики из отчёта Search Consolegsc = {}for line in Path("opportunities.md").read_text(encoding="utf-8").splitlines(): if not line.startswith("| ") or line.startswith(("| #", "|---")): continue c = [x.strip() for x in line.strip("|").split("|")] if len(c) < 7 or not c[1].startswith("/"): continue try: gsc[c[1].rstrip("/") or "/"] = { "показы": int(c[2]), "клики": int(c[3]), "позиция": float(c[5])} except ValueError: continue# 3. Три группы: в обоих каналах, только в поиске, только в ответах ИИboth = {p: (gsc[p], n) for p, n in cited.items() if p in gsc}search_only = {p: g for p, g in gsc.items() if p not in cited}ai_only = {p: n for p, n in cited.items() if p not in gsc}
Ключевая деталь — нормализация URL до пути. Модель отдаёт ссылки то с www, то без, то со слешем на конце, то без него; Search Console — свой вариант. Без приведения к общему виду пересечение получается пустым, и вывод выходит ровно обратный правильному.
Что получилось: три группы страниц
Группа №1 — страницы в обоих каналах
Группа №2 — страницы в топе поиска с нулём цитирований.
/blog/kak-neyroseti-vidyat-kluby-rpl — позиция 4,8, 24 показа. /blog/kak-neyroseti-vidyat-ii-blogerov — позиция 5,0, 24 показа. /playbook/seo-content-marketplace — 4,0. /contacts — 4,2. /team/igor-novikov — 4,9.
Пять страниц, которые поиск считает релевантными, ни разу не попали в источники ответов ни одной из шести моделей.
Группа №3 — страницы, которые цитирует ИИ, а в отчёте поиска их нет вовсе.
/audit, /services/ai-assistant, /blog/prodvizhenie-etapy-sroki, /blog/proverit-nazyvaet-li-vas-neyroset, /team, /cases/influence. Шесть адресов, у которых нет ни позиции, ни показов в отобранном диапазоне, но которые модель берёт в ответ.
Отдельно про главную. Её 15 цитирований выглядят красиво ровно до момента, когда смотришь, на каких вопросах они получены. А почти все из них — на вопросе, где название компании стоит в самом запросе. Убираем его — остаётся два цитирования.
Почему позиция не тянет за собой цитирование
Разные единицы отбора. Поиск ранжирует страницу по запросу, модель подбирает фрагмент под вопрос. Страница про цену проигрывает выдачу сотне более сильных доменов по короткому запросу и выигрывает у них же, когда нужен абзац с конкретными цифрами в развёрнутом ответе.
Позиция влияет не на весь ответ. Часть ответа собирается из веб-поиска, часть — из обучающих данных и кэша. На вторую часть выдача не влияет вовсе.
Пригодность к цитированию важнее релевантности запросу. Рейтинг клубов держит позицию 4,8 и отлично отвечает на свой запрос. Фрагмента про выбор подрядчика в нём нет — цитировать нечего.
Что это меняет в работе
Я перестал считать позицию прокси-метрикой цитируемости. Это два канала с разными правилами отбора, и оптимизировать их приходится по-разному, хотя работа частично пересекается.
Практический вывод, который проверяю дальше: страницу, которую уже цитирует модель, выгоднее усиливать под цитирование, а не тащить в топ. Строка на второй странице выдачи с нулём кликов приносит упоминание в ответе, и это упоминание видит человек, который никогда бы не долистал до неё в поиске.
И обратное тоже стоит пробовать → страницу из топ-5 без единого цитирования стоит проверить на пригодность к цитированию: есть ли в ней фрагмент с прямым ответом, цифрами и понятной формулировкой. Если нет, она останется хорошей поисковой страницей и никакой для ответов ИИ.
Скрипт лежит в статье целиком: если у вас есть Search Console и любой способ сохранять источники ответов, тот же срез снимается за час. Мне интересно, воспроизведётся ли расхождение на других сайтах — у себя я его увидел на первом же прогоне.
ссылка на оригинал статьи https://habr.com/ru/articles/1073316/