Нейросети с поиском цитируют не статью целиком, а отдельные абзацы. Проверка на 60 ответах Perplexity показала заметную разницу в длине: медиана абзаца, который нейросеть взяла в ответ, - 41 слово, медиана пропущенного - 23. В окно 30-80 слов попадает 65% взятых абзацев против 34% у невзятого.
Практический вывод: делайте каждый абзац самодостаточным и держите длину в районе 30-80 слов. Популярный совет про вред слов-отсылок в начале абзаца при проверке не подтвердился: начала с «это», «он», «поэтому» встречаются у взятых и у пропущенных фрагментов одинаково редко.
Дальше идут методика разбора, цифры по длине, Python-скрипт для разметки абзацев по четырём меткам, чек-лист и границы применимости. Данные собраны только по Perplexity и только на одном наборе вопросов, поэтому речь о наблюдении, а не о доказанном законе.
Почему нейросеть берёт не всю статью, а один-два абзаца
Системы ответов с поиском, включая Perplexity, не читают страницу сверху вниз. Они режут её на фрагменты и ранжируют эти фрагменты между собой. В ответ попадает один-два абзаца, а не статья целиком.
Ahrefs пишет, что поисковые ИИ могут резать страницу на фрагменты, доставать самые подходящие к запросу и цитировать только те, что подтверждают ответ. Bing говорит почти то же: ассистент не читает страницу сверху вниз, он режет её на небольшие куски и ранжирует их, поэтому стены текста мешают. Оба тезиса и методику разбора приводит разбор на Habr с результатами по 60 ответам Perplexity.
Условие, которое из этого следует для автора: абзац должен быть понятен без соседей. Если смысл держится на предыдущем абзаце, вырванный фрагмент рассыпается и в цитату не идёт. Текст в шапке страницы и лид не имеют автоматического приоритета: ранжирование идёт по отдельным кускам.
В руководствах по GEO-оптимизации (generative engine optimization, подготовка сайта к ответам нейросетей) советов много. Сравнения со страницами, которые нейросеть реально цитирует, там нет. Автор разбора прочитал эти руководства и проверил их советы на скачанных страницах-источниках.
Чем GEO-оптимизация отличается от классического SEO
Классическое SEO работает со страницей целиком: заголовок, структура, ключевые фразы, ссылки, скорость загрузки. Оценка идёт на уровне документа. GEO работает с фрагментом: нейросеть может проигнорировать статью, но взять один абзац из её середины.
Отсюда разная единица работы. В классическом SEO вы правите страницу, в GEO - абзац. Конкретных цифр по длине абзаца в руководствах нет: Ahrefs говорит про фрагменты и подтверждение ответа, Bing просит не писать стен текста. Чем GEO отличается от классического продвижения и какие цифры по генеративному поиску уже есть, разбирается в отдельном материале о GEO-оптимизации контента.
Как это проверялось: 60 ответов Perplexity, 113 взятых абзацев и 4390 невзятых
Автор разбора взял 60 ответов Perplexity с включённым поиском и скачал страницы, на которые они ссылаются. Каждую страницу разрезал на абзацы по тегам, заголовки и куски короче 10 слов выбросил.
Взятым считался абзац, в котором нашлось не меньше половины слов из предложения ответа со ссылкой на эту страницу. Если подходило несколько абзацев, брался самый похожий.
Получилось 113 взятых абзацев на 79 страницах. Остальные 4390 абзацев тех же страниц пошли в группу невзятого. Дальше по каждой группе считалось, как часто абзац начинается со слова-отсылки, содержит число, называет предмет и попадает в диапазон длины.
Ограничения метода лучше держать в голове с самого начала: данные только по Perplexity, набор вопросов один, а «взятость» определялась по совпадению слов, и этот способ мог добавить часть разницы между группами.
Другой срез той же механики дал разбор 1355 отсылок Perplexity с сопоставлением утверждений и текста страниц: почти дословное совпадение дают единицы отсылок, а модель пересказывает содержимое своими словами, задействуя на сработавшей странице медианно два фрагмента.
Главный фактор - длина: медиана 41 слово против 23
Самая заметная разница между группами - длина. Медиана взятого абзаца - 41 слово, медиана невзятого - 23. В окно 30-80 слов попадает 65% взятых абзацев против 34% у невзятого.
Окно 30-80 слов автор выбрал сам. Ahrefs конкретной длины не называет, Bing просит только не писать стен текста. Так что 30-80 - рабочая эвристика из данных, а не стандарт из документации.
Вероятное объяснение связи такое: в 30-80 слов укладывается законченная мысль с контекстом, но без лишних деталей. Абзац на 20 слов часто требует соседа, абзац на 150 слов распадается на несколько мыслей, и резать его приходится уже самой нейросети.
Практический вывод: проверяйте длину абзацев и держите основную массу в 30-80 словах. Короткие обрывки и стены текста цитируются реже.
Почему короткие абзацы проигрывают
Короткий абзац часто не несёт достаточно контекста, чтобы жить отдельно от текста. Пример Anthropic: фраза «Выручка компании выросла на 3% за квартал» сама по себе не говорит, о какой компании и каком квартале речь. В исправленной версии в тот же фрагмент дописаны название компании, квартал и выручка за прошлый период.
Разница между двумя вариантами по смыслу большая, по длине - несколько слов. Нейросети проще цитировать второй вариант, потому что его не нужно достраивать догадками.
Почему стены текста мешают
Bing пишет, что ассистент режет страницу на небольшие куски и ранжирует их, поэтому стены текста мешают. Абзац на 150-200 слов сложнее разбить на законченные фрагменты: внутри него может не оказаться отдельной мысли, которую можно вырвать без потери смысла.
Рабочее действие: разбивайте длинные абзацы на несколько по 30-80 слов. Один абзац - одна мысль с числом и названием предмета внутри.
Миф о словах-отсылках: «это», «он», «поэтому» не мешают цитированию
Популярный совет: не начинайте абзац со слова-отсылки к предыдущему тексту, потому что нейросеть не понимает, к чему оно относится. В список таких слов попадают «это», «он», «поэтому», «при этом».
Проверка на 60 ответах Perplexity этот совет не подтвердила: такие начала одинаково редки у взятых и у пропущенных абзацев. В разборе это сформулировано прямо как неподтвердившаяся гипотеза.
Что это значит на практике: не тратьте время на переписывание начал абзацев, если абзац в остальном самодостаточен. Проверка при этом не отменяет здравого смысла. Если абзац начинается с «это» и нигде не называет предмет, он непонятен сам по себе, и это уже вопрос самодостаточности, а не слов-отсылок.
Число и название предмета внутри абзаца: связь есть, но не доказана
У взятых абзацев чаще встречается число и название предмета внутри самого абзаца, а не только в заголовке над ним. Выглядит логично: конкретика делает фрагмент самодостаточным.
Но при сравнении только длинных абзацев разрыв по этим признакам сокращается и на такой выборке не доказывается. Возможное объяснение: длинный абзац чаще содержит число и название предмета просто потому, что в нём больше слов.
Практический совет без категоричности: добавляйте числа и названия предметов там, где они несут смысл. Цифра ради галочки ничего не даёт. Числа и имена работают не сами по себе, а через конкретику и понятность отдельного абзаца.
Python-скрипт: как разметить абзацы по четырём меткам
Из советов по GEO автор разбора вывел четыре признака, которые проверяются кодом: абзац начинается со слова-отсылки; в абзаце есть число; предмет назван словом в самом абзаце, а не только в заголовке; длина от 30 до 80 слов. По ним удобно размечать готовый Markdown перед публикацией.
Скрипт ниже читает файл Markdown, режет его на абзацы и печатает таблицу с метками. Он не даёт гарантий попадания в цитаты, а показывает места, на которые стоит посмотреть глазами.
import re
from pathlib import Path
REFERRAL = ("это", "эти", "этот", "эта", "он", "она", "они", "оно", "поэтому")
def iter_paragraphs(md: str):
for block in re.split(r"\n\s*\n", md):
text = " ".join(line.strip() for line in block.strip().splitlines())
if not text or text.startswith("#") or text.startswith("```"):
continue
text = re.sub(r"^(?:[-*>]|\d+\.)\s+", "", text)
yield text
def tokens(text: str):
return re.findall(r"[0-9A-Za-zА-Яа-яЁё]+", text)
def label(text: str, subject: str):
words = tokens(text)
count = len(words)
first = words[0].lower() if words else ""
return {
"words": count,
"short": count < 30,
"long": count > 80,
"referral_start": first in REFERRAL,
"has_number": bool(re.search(r"\d", text)),
"has_subject": subject.lower() in text.lower(),
}
def main(path: str, subject: str):
md = Path(path).read_text(encoding="utf-8")
print(f"{'#':>3} {'слов':>5} метки")
for i, para in enumerate(iter_paragraphs(md)):
marks = label(para, subject)
flags = []
if marks["short"]:
flags.append("короткий")
if marks["long"]:
flags.append("длинный")
if marks["referral_start"]:
flags.append("отсылка")
if marks["has_number"]:
flags.append("число")
if marks["has_subject"]:
flags.append("предмет")
print(f"{i:>3} {marks['words']:>5} {', '.join(flags) or '-'}")
if __name__ == "__main__":
import sys
main(sys.argv[1], sys.argv[2])
Запуск: python mark.py article.md Perplexity. Первый аргумент - путь к файлу, второй - название предмета, которое ищется внутри абзацев.
Для проверки всей страницы, а не только абзацев, пригодится отдельный материал AI-Manual: чанкование текста с оверлапом, микроразметка Schema.org, robots.txt для ретривал-ботов и таблица для отслеживания упоминаний в нейросетях.
Как читать результаты разметки
Скрипт печатает метки, решение остаётся за вами. Перед номером абзаца стоит счётчик слов, после него - сработавшие признаки.
| Метка | Что означает | Что делать |
|---|---|---|
| короткий | меньше 30 слов | Объединить с соседним абзацем или дописать контекст до 30-80 слов. |
| длинный | больше 80 слов | Разбить на два-три абзаца по 30-80 слов, по одной мысли в каждом. |
| отсылка | начинается с «это», «он», «поэтому», «при этом» | Проверить, понятен ли абзац без предыдущего. Если да, оставить как есть. |
| число | в абзаце есть цифра | Хороший признак, если цифра по делу. Нет цифры, но есть конкретика - добавьте её. |
| предмет | название предмета встречается внутри абзаца | Хороший признак. Если название есть только в заголовке, впишите его в абзац. |
Смотрите на распределение, а не на отдельные строки. Если большинство абзацев помечены как короткие или длинные, это первый кандидат на правку.
Что делать с этим на практике: чек-лист для вашего сайта
- Проверьте длину абзацев. Держите основную массу в 30-80 словах: короткие обрывки и стены текста цитируются реже.
- Убедитесь, что абзац понятен без соседей. Мысленно уберите предыдущий абзац: если смысл рассыпался, допишите контекст.
- Добавьте числа и названия предметов там, где они уместны. Проверьте, отвечает ли абзац на вопрос «о чём именно речь» без заголовка.
- Не переписывайте начала абзацев со слов-отсылок, если абзац самодостаточен. Вреда таких начал проверка не показала.
- Прогоните текст через скрипт разметки и отредактируйте абзацы с метками «короткий», «длинный» и без конкретики.
- Держите в голове границы данных: Perplexity, один набор вопросов, метод определения взятого абзаца по совпадению слов.
Ограничения разбора: почему это наблюдение, а не эксперимент
Выводы стоит читать как наблюдение. Данные получены только по Perplexity, на одном наборе вопросов. Другой набор вопросов мог дать другие цифры, и насколько шире картина, разбор не проверял.
Метод определения «взятого» абзаца по совпадению слов тоже мог внести вклад в разницу. Абзац, который пересекается словами с предложением ответа, попадает в группу взятых по построению метрики, а не по решению нейросети.
Окно 30-80 слов автор выбрал сам. Ahrefs конкретной длины не называет, Bing просит только не писать стен текста, так что диапазон - эвристика из этих данных.
Практическая линия поведения: применяйте правило про 30-80 слов как быстрое улучшение, проверяйте его на своих страницах и своих вопросах и не переносите цифры на другие нейросети без проверки.