Сбор контента сайта: карта адресов и чтение страниц
Команды, которым нужен корпус документов: мониторинг, аналитика, обучение
Чтобы прочитать сайт, его сначала нужно перечислить. Перечислять раздел вручную бессмысленно: карты сайта содержат все адреса, но разбирать их самому - отдельная работа с вложенными индексами и относительными ссылками.
Обновлено 27 сентября 2026
Что мешает сейчас
- Адреса разбросаны по вложенным картам сайта, а часть сайтов карт не отдаёт вовсе.
- Нужны только разделы по теме, но фильтровать приходится после загрузки всего сайта.
- Половина страниц не читается, и непонятно, почему: контент за скриптом, отказ доступа или страницы правда нет.
- За отказ доступа списывают деньги, потому что вызов формально выполнился.
Как это делается
- 01
Постройте карту адресов
map читает robots.txt, затем /sitemap.xml и /sitemap_index.xml вместе с вложенными картами - до восьми за вызов. Если карт нет, берёт ссылки со стартовой страницы. В ответе pages, sections с числом адресов в каждом разделе и source, откуда взялись адреса.
- 02
Сузьте выборку
search фильтрует по адресу, selectPaths и excludePaths - до десяти подстрок по адресам, includeSubdomains добавляет поддомены. Если у нужных страниц нет общего фрагмента пути, задайте задачу словами в intent - адреса упорядочатся по смыслу. Так вместо всего сайта в работу идёт нужный раздел.
- 03
Прочитайте найденное
crawl берёт карту и читает найденные страницы: адрес, заголовок и до 20 000 символов текста. Страницы, которые не прочитались, попадают в skipped с причиной - и не тарифицируются.
- 04
Разберитесь с отказами
Сайт, ответивший отказом доступа, не тарифицируется: это outcome blocked, а не «страниц нет». Разница важна, когда вы принимаете решение по объёму корпуса.
Инструменты в этом сценарии
mapcrawlread_urlsЧто на выходе: На выходе - корпус страниц в Markdown, готовый к индексации, плюс явный список того, что прочитать не удалось и почему.
Дальше по теме
Осталось непонятное?
срезAI - не универсальный поиск: у него есть задачи, под которые он не подходит, и мы говорим об этом прямо. Опишите свою - скажем честно, решается она нашим API или чужим.