Мы прогнали pimenov.ai через внешний agent-ready чекер, отсеяли лишние рекомендации и внедрили только то, что реально полезно: markdown negotiation, Content Signals, Link headers и…
База знаний
Как собрать данные с сотен сайтов конкурентов и подать их в Codex
Методология сбора данных с десятков и сотен сайтов конкурентов: когда нужен парсинг, какой сервис выбрать, как очистить данные и подать их в Codex.
Практическая методология: как собрать данные с десятков, сотен и тысяч сайтов конкурентов, привести их в порядок и подать в Codex (или любого другого агента) так, чтобы он реально с ними работал, а не захлёбывался в мусоре. Это не обзор одного сервиса, а карта всего конвейера и развилок на каждом шаге.
Как выглядит правильный конвейер
Любая задача «спарсить конкурентов для Codex» раскладывается на пять звеньев. Думайте о ней не как о парсинге, а как о потоке данных от сырого сайта до готового датасета, на котором агент даёт ответы.
flowchart LR
A["Список доменов<br>конкурентов"] --> B{"Нужен весь сайт<br>или только факты?"}
B -->|"Точечные ответы"| C["Search API<br>Tavily / Brave"]
B -->|"Контент страниц"| D["Краулинг и парсинг<br>Firecrawl / ZenRows / Scrapy"]
C --> E["Очистка и структура<br>Markdown + JSON по схеме"]
D --> E
E --> F["Хранилище<br>файлы / БД / эмбеддинги"]
F --> G["Подача в Codex<br>AGENTS.md + RAG"]Чеклист быстрой проверки
Пройдите по нему до того, как запускать сбор на сотнях сайтов. Если хоть один пункт без ответа — вы соберёте мусор.
Шаг 1. Нужен ли вообще парсинг
Самая частая ошибка — кидаться краулить сайты, когда задача решается дешевле.
Search API против краулинга
- Нужны точечные факты («какая цена на тарифе Pro у 50 конкурентов») — начните с поискового API (Tavily, Brave Search API, Parallel). Он возвращает уже найденный и очищенный контент без обхода всего сайта.
- Нужен весь контент страниц (полные описания, документация, блоги, структура каталога) — тогда краулинг через Firecrawl, ZenRows или собственный Scrapy.
- Нужны соцсети — это отдельная история со своими API и ограничениями, обычный краулинг там не работает.
Развилка по масштабу
| Масштаб | Чем брать | Почему |
| 10 сайтов | Managed API (Firecrawl, ZenRows) или даже ручной экспорт | Настройка своей инфраструктуры дороже, чем сами данные |
| 100 сайтов | Managed API + очередь и схема данных | Нужна автоматизация и нормализация, но не свои прокси |
| 1000+ сайтов | Managed API на объёме или собственный Scrapy + прокси | Решает экономика запросов: на больших объёмах считайте цену за страницу |
Шаг 2. Какой инструмент выбрать
Нет «лучшего» сервиса — есть подходящий под тип сайтов, масштаб и ваш уровень контроля.
Firecrawl — managed API, который забирает контент целого сайта одной командой и сразу отдаёт его в LLM-ready виде. Берите, когда нужно быстро получить чистый Markdown или JSON по всему сайту и не хочется возиться с инфраструктурой: его AI-extract умеет вытаскивать поля прямо по вашему описанию схемы.
ZenRows — тоже managed API, но заточенный под сайты с жёсткой антибот-защитой — Cloudflare, DataDome и подобными. Его сильная сторона — высокий процент успешных запросов и оплата по сути за результат (платите только за успешные запросы; 404 и 410 считаются успехом), поэтому он выручает там, где обычные парсеры упираются в капчи и блокировки. Важный нюанс по цене: базовый запрос дешёвый, но JS-рендеринг множит стоимость ×5, premium-прокси — ×10, а оба режима вместе — ×25, причём на хорошо защищённых сайтах сервис может включать их сам. Поэтому реальную цену на защищённых доменах считайте с учётом множителей.
Tavily / Brave Search API — это поисковые API, а не краулеры. Выбирайте их, когда нужны конкретные ответы и факты, а не весь сайт: они находят и извлекают релевантный контент без обхода всех страниц, что заметно дешевле и быстрее для точечных вопросов.
Scrapy — self-hosted фреймворк для тех, кому нужно собрать тысячи сайтов с полным контролем и минимальной ценой за страницу. Это зрелый инструмент под крупные краулы, но взамен вы сами держите прокси, ротацию IP и обработку ошибок.
Playwright / Puppeteer — браузерная автоматизация для сложных случаев: SPA на React/Vue, авторизация, клики и многошаговые сценарии. Даёт полный рендеринг страницы и контроль над поведением, но требует больше кода и ресурсов на каждый сайт.
Apify — платформа с маркетплейсом готовых «акторов» (скраперов). Удобна, когда нужны соцсети и нишевые источники: часто под нужный сайт уже есть готовое решение, которое не придётся писать с нуля.
- Поисковые API: Parallel — от ~$0,005 за запрос (10 результатов); у Tavily и Brave есть бесплатные тарифы для старта.
- Firecrawl: есть бесплатный тариф на пробу, платные планы — помесячно за объём запросов.
- ZenRows: подписка с балансом (от ~$69/мес), деньги списываются только за успешные запросы по тарифу с множителями (см. выше).
- Self-hosted (Scrapy + прокси): сам фреймворк бесплатный, основная статья расходов — резидентные прокси (порядка нескольких $ за ГБ трафика).
Цены ориентировочные и быстро меняются — перед запуском сверяйтесь с актуальными тарифами.
Шаг 3. Антибот, лимиты и легальность
Этот шаг чаще всего ломает наивные парсеры.
- Антибот-защита. Cloudflare, DataDome, reCAPTCHA блокируют обычные скрипты после нескольких запросов. Либо берите сервис, который обходит это сам (ZenRows, Firecrawl), либо стройте свою ротацию резидентных прокси.
- Rate limiting. Не бейте по сайту в сотню потоков. Ставьте задержки и лимит параллельных запросов на домен — иначе бан и испорченные данные.
- JavaScript-сайты. React/Vue/Angular отдают пустую болванку обычному парсеру. Нужен рендеринг страницы (браузер или сервис с JS-рендером).
robots.txt и Terms of Service источника. Парсинг публичных данных в большинстве случаев допустим, но коммерческое использование, обход защит и сбор персональных данных могут нарушать правила и закон. На больших проектах согласуйте подход с юристом.Шаг 4. Очистка и структурирование
Сырой HTML или даже Markdown — это ещё не данные. Агенту нужна структура.
- Markdown как промежуточный формат. Чистый Markdown без скриптов и навигации — то, что хорошо переваривают модели. Managed API отдают его из коробки.
- JSON по схеме — главный результат. Не храните «простыни текста». Извлекайте поля по заранее заданной схеме, одинаковой для всех сайтов. Тогда данные сравнимы между собой.
- OCR для PDF и картинок. Если у конкурентов цены или условия лежат в PDF — прогоните их через OCR, иначе потеряете эту часть.
- Дедупликация. Один и тот же контент часто приходит с разных URL. Считайте хэш контента и схлопывайте дубли, иначе агент будет «голосовать» повторами.
Пример единой схемы извлечения, в которую складывается каждый сайт:
{
"company": "string",
"source_url": "string",
"positioning": "string",
"pricing_plans": [
{ "name": "string", "price": "string", "features": ["string"] }
],
"key_features": ["string"],
"target_audience": "string",
"collected_at": "2026-06-19"
}Шаг 5. Где хранить данные
Хранилище выбирается по объёму и тому, как вы будете запрашивать данные.
| Объём и задача | Хранилище | Когда подходит |
| До сотен карточек, отдаём агенту целиком | Файлы (Markdown + JSON в репозитории) | Codex читает папку напрямую, версионирование через git |
| Тысячи строк, нужны фильтры и агрегаты | БД (Supabase, ClickHouse) | Сравнение цен, аналитика, выборки по полям |
| Нужен семантический поиск по контенту | Эмбеддинги (BGE-M3, EmbeddingGemma) + векторная БД | RAG: агент ищет смысл, а не точное слово |
| Поиск связей без LLM | TF-IDF / semantic snapshot | Дёшево и быстро, когда эмбеддинги избыточны |
Шаг 6. Как подать данные в Codex
Цель — чтобы агент работал с данными уверенно и не выдумывал.
- Markdown + AGENTS.md. Положите данные в репозиторий и опишите в
AGENTS.md, где что лежит и как с этим работать. Это самый надёжный способ для Codex. - Чанкинг. Большие файлы режьте на смысловые куски (по одному сайту/разделу на файл), а не один файл на 5 МБ.
- RAG для больших объёмов. Если данных тысячи карточек — не суйте всё в контекст. Поднимите векторный поиск и подавайте агенту только релевантное.
- Skills. Повторяемую логику работы с датасетом оформите как навык, чтобы не объяснять её каждый раз.
Пример AGENTS.md для датасета конкурентов:
# Датасет: конкуренты
## Структура
- structured/*.json — карточки конкурентов по единой схеме (competitor.schema.json)
- raw/*.md — исходные страницы, если нужен контекст
- index.md — оглавление: домен → файл
## Правила
- Отвечай только на основе файлов в structured/.
- Если данных по полю нет — пиши "нет данных", не выдумывай.
- При сравнении цен всегда указывай source_url.Шаг 7. Масштаб и регулярность
Одноразовый сбор и постоянный мониторинг — разные задачи.
- Очереди и фоновые задачи. На сотнях сайтов гоняйте сбор через очередь с ретраями, а не одним скриптом, который падает на 50-м домене.
- Инкрементальный краулинг. Не пересобирайте всё каждый раз — забирайте только изменившиеся страницы.
- Расписание. Цены и офферы меняются: поставьте регулярный прогон (cron, systemd timer) и сравнивайте срезы во времени.
- Оркестрация без кода. Для связки «собрал → очистил → положил → уведомил» удобно использовать n8n или Composio.
Эталонный сценарий: 200 сайтов конкурентов → датасет для Codex
Собранный рабочий пример, на который можно опираться.
Шаг 1. Собрать список доменов в domains.txt — по одному на строку.
Шаг 2. Краулить каждый домен через managed API с извлечением по схеме. Блок ниже — условный псевдокод для иллюстрации логики, а не реальные команды CLI: точный синтаксис смотрите в документации выбранного сервиса.
# псевдо-пайплайн: на каждый домен — crawl + extract по схеме
while read domain; do
firecrawl crawl "$domain" \
--extract-schema competitor.schema.json \
--formats markdown,json \
--output "raw/${domain}"
done < domains.txtШаг 3. Нормализовать результаты в единый вид и сложить в structured/<domain>.json по единой схеме из раздела «Очистка и структурирование».
Шаг 4. Дедуплицировать по хэшу контента и собрать index.md (домен → файл).
Шаг 5. Разложить в репозиторий с понятной структурой:
competitors-dataset/
raw/ # сырой markdown по каждому сайту
structured/ # JSON по единой схеме
competitor.schema.json # схема данных
index.md # оглавление: домен → файл
AGENTS.md # инструкция агентуШаг 6. Подключить Codex к репозиторию: агент читает AGENTS.md, работает с structured/ и ссылается на source_url.
Шаг 7. Поставить на расписание инкрементальное обновление и сравнение срезов.
Антипаттерны
- ❌ Краулить всё подряд без схемы данных — получите терабайты мусора, который агент не переварит
- ❌ Игнорировать антибот и бить в сотню потоков — бан, капчи и битые страницы
- ❌ Скидывать сырой HTML агенту — теги и скрипты съедают контекст и качество ответов
- ❌ Забыть про дедуп — повторы искажают любые сравнения и агрегаты
- ❌ Совать весь датасет в контекст вместо RAG, когда данных тысячи карточек
- ❌ Собрать один раз и считать данные актуальными через полгода
По теме
Если перед вами стоит задача собрать данные по рынку или конкурентам и превратить их в рабочий контур для агента — обычно дешевле начать с одного аккуратного пайплайна на 10–20 сайтов и довести его до автоматизма, прежде чем масштабировать на тысячи.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov
Если хотите разобрать свою задачу — напишите мне Если хотите разобрать свою задачу — напишите мне.
Можно прийти с идеей, черновым контекстом или уже живой задачей. Помогу быстро понять, где реальный следующий шаг, а где лишний шум.
Обычно хватает 2–3 сообщений, чтобы понять, могу ли я здесь реально помочь и в каком формате лучше двигаться дальше.
Связанные материалы
OpenClaw выпустил крупнейшее обновление с версии 3.12: поиск по X в реальном времени, approval hooks для безопасности агентов и встроенная генерация изображений через MiniMax.
Официальное руководство X API по настройке ИИ-агента Hermes с навыком xurl — публикация, поиск, закладки и управление X через естественный язык.