Как работает сбор SEO-аналитики
Проблема: поисковые платформы отчитываются кумулятивными окнами, с многодневным лагом, ретроактивными правками и причудами каждой поверхности. Прочитанные наивно, эти данные производят уверенную чушь. Работа аналитического слоя — превратить это в собственные временные ряды, где искажения названы и обработаны.
Слой 1 — коллекторы в собственное хранилище
Заголовок раздела «Слой 1 — коллекторы в собственное хранилище»Ежедневный сбор обходит подключённые источники — поисковую консоль (показы, клики, запросы, индексация), вебмастер-поверхность второго поисковика, пробы SERP-присутствия и discovery-годности, CDN-аналитику и пробу доменного авторитета — каждый источник как отдельный коллектор со своими причудами каденса. Всё ложится в шесть Postgres-таблиц идемпотентными апсертами по натуральным ключам; сырой подённый JSON — эфемерный скрэтч. Единственная долговечная правда — база.
Слой 2 — снапшот инстанса и health score
Заголовок раздела «Слой 2 — снапшот инстанса и health score»Рабочая таблица — ежедневный снапшот сайта: одна строка на сайт в день, несущая сырые оконные значения плюс вычисленный композитный health score и набор булевых health-флагов — дрейф канонизации, рассинхрон схем, раздутие фида, переполнение тайтла, молчание краулеров, рост 404. Всё это считает одна функция, поэтому дашборд, ночной отчёт и алерты читают одни и те же вердикты.
Слой 3 — искажения, названные поимённо
Заголовок раздела «Слой 3 — искажения, названные поимённо»Это та часть, которую большинство аналитических конструкций оставляет неявной. Правила чтения этих данных, зафиксированные как знание системы:
- Кумулятивные окна. Значения показов/кликов снапшота — кумулятивные тоталы длинного окна: недельная цифра — всегда дельта двух снапшотов, никогда не сырая колонка.
- Лаг созревания. Свежие дни приходят неполными и правятся ещё до нескольких дней — нулевая дельта за вчера значит «не финализировано», а не «показов не было».
- Разбивки top-N никогда не сходятся с тоталами — ожидаемое поведение сэмплирования, не баг качества данных.
- Разные окна у разных источников. CDN отчитывается скользящими 30-дневными окнами; сэмплирование бот-хитов — более коротким адаптивным; сравнивать их ячейка-к-ячейке нельзя.
Петля обратной связи тем потребляет эти данные через фильтры зрелости ровно из-за этих искажений — молодые страницы исключены из вердиктов, пока их сигнал не устаканился.
Трейд-оффы, честно
Заголовок раздела «Трейд-оффы, честно»Часть ячеек матрицы пуста намеренно: один аналитический пакет и один коммерческий SEO API не интегрированы (оценены, не подключены); коллектор page-experience существует, но в проде пропускается ради экономии квоты; географическая разбивка собирается выше по течению, но пока не персистится во временные ряды — задокументированная дыра, чтобы никто не принял «не сохранено» за «нет трафика». Проба авторитета ходит непрямым еженедельным путём, потому что класс адресов прод-хоста заблокирован провайдером, — честный обход, записанный как обход.
Пощупать за две минуты
Заголовок раздела «Пощупать за две минуты»API-домен analytics отдаёт снапшоты и health-флаги; еженедельный отчёт
владельцу строится ровно из этих таблиц — каждое его число трассируется
до строки.
Спеки: SPEC-068 (хранилище аналитики), SPEC-086/087 (пробы), SPEC-096 (health-детекторы), SPEC-125 (потребляющая петля).