Files
portal/docs/superpowers/2026-07-07-spark-ad-scan-RUNBOOK.md
T
Дмитрий 65b4e1c3df feat(ad-scan): робот run_spark.py — Спарк-выгрузка → готовый файл рекламодателей
Единая команда: скан сайтов + Директ (Москва+город объединением) + вилка бюджета
+ все реквизиты Спарка (ОГРН, директор, ИНН директора, адрес, email, совладельцы).
Чекпоинты, чистка агрегаторов/дублей, .txt-сводка для приёмки. Рунбук приложен.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 19:17:07 +03:00

5.4 KiB

Рунбук: «Кто из фирм платит за рекламу» из выгрузки Спарка

Что это. Регулярная задача: заказчик даёт выгрузку из Спарка (юрлица с сайтами/телефонами) — робот по каждой фирме определяет, платит ли она за рекламу и где (Яндекс.Директ, коллтрекинг, соцпиксели), с вилкой бюджета и всеми реквизитами. Заказчик делает приёмку и работает с готовым файлом.

Робот: моя/ad-scan/run_spark.py. Код в git; данные, результаты и токен — вне git.


Как запускать (одна команда)

cd "c:/моя/проекты/портал crm/Документация/моя/ad-scan"
python -u run_spark.py "<путь к спарк.xlsx>" "<тег>"
# пример:
python -u run_spark.py "../СПАРК_клиники_МСК.xlsx" "клиники-мск"
  • <тег> — короткое имя для файлов результата.
  • Прогон длинный (сотни фирм = 15–40 мин): запускать в фоне, прогресс печатается каждые 50 фирм, файл сохраняется чекпоинтами каждые 200 (потерь нет).

Результатмоя/результат/):

  • <тег>-реклама-ФИНАЛ.xlsx — таблица, рекламодатели сверху.
  • <тег>-реклама-СВОДКА.txt — цифры для приёмки.

Что нужно на входе

  1. Спарк-выгрузка .xlsx со стандартными колонками (заголовки в строке 4): № · Наименование · Рег.номер(ОГРН) · Адрес · Руководство · Должность · Руководство-ИНН · Телефон · Email · Сайт · Совладельцы · Вид деятельности. Если структура другая — сначала поправить индексы в adscan/extract.py.
  2. Токен Keys.so в моя/ad-scan/secrets/keyso_token.txt (тариф с API — «Профессиональный», ~9 300 ₽/мес). Токен НЕ коммитить (в .gitignore).

Колонки результата

№ · Наименование · Домен · Телефон · Рекламируется платно · Коллтрекинг · Пиксели · Директ · Ключей Директ · База(город) · Бюджет от · Бюджет до · Доказательства · ОГРН · ФИО директора · ИНН директора · Адрес · Email · Совладельцы.


Как это считается (чтобы принимать осознанно)

  • Рекламируется платно = да, если нашли Директ или коллтрекинг (Calltouch/Comagic/Callibri/Roistat/Mango) или рекламный пиксель (VK-myTarget/Google Ads/Meta) на сайте.
  • Директ берётся из Keys.so по двум базам сразу — Москва и родной город фирмы (город из адреса), объединением: «да», если крутит хоть в одной.
  • Бюджет — вилка «от–до»: от средней оценки Keys.so до максимума. Это оценка модели, не факт из кассы; годится для ранжирования, не для рубля.
  • Дубли по домену и агрегаторы (vk.com, yell.ru, prodoctorov, 2gis, banki.ru и т.п.) — исключаются.

Приёмка — на что смотреть

  • СВОДКА.txt: доля «рекламируется», число Директ, вилка бюджета, медиана (реальный масштаб) и ТОП-4 выброса (несколько крупных сетей раздувают сумму).
  • «Не проверено» — у фирм, чей сайт не открылся; их реклама не оценена.

Известные ограничения

  • Keys.so нет базы «вся Россия» — города вне ~20 поддерживаемых уходят в msk (список баз в adscan/regions.py). Такие фирмы могут быть недосчитаны.
  • Первый запрос к региону Keys.so «прогревается» (HTTP 202) — отсюда время.
  • «ИНН фирмы» в выгрузке Спарка нет — есть ОГРН (по нему при желании ИНН тянется через DaData отдельным шагом).
  • Коллтрекинг/пиксели, подгружаемые через диспетчер тегов, скан не видит — число «рекламируется» это занижает (нижняя граница, не потолок).

Уже прогнано (примеры)

  • Стоматологии: 1 854 → 456 рекламируется, 238 Директ.
  • Ломбарды/МФО: 638 → 124 рекламируется, 74 Директ.