---
title: Как работает сбор SEO-аналитики
description: Пять семейств источников, ежедневно собираемых в шесть таблиц временных рядов и один композитный health score — и список способов, которыми поисковые данные врут при наивном чтении.
locale: ru
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/ru/how-it-works/seo-analytics/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

**Проблема:** поисковые платформы отчитываются кумулятивными окнами, с
многодневным лагом, ретроактивными правками и причудами каждой
поверхности. Прочитанные наивно, эти данные производят уверенную чушь.
Работа аналитического слоя — превратить это в **собственные временные
ряды**, где искажения названы и обработаны.

## Слой 1 — коллекторы в собственное хранилище

Ежедневный сбор обходит подключённые источники — поисковую консоль
(показы, клики, запросы, индексация), вебмастер-поверхность второго
поисковика, пробы SERP-присутствия и discovery-годности, CDN-аналитику и
пробу доменного авторитета — каждый источник как отдельный коллектор со
своими причудами каденса. Всё ложится в **шесть Postgres-таблиц**
идемпотентными апсертами по натуральным ключам; сырой подённый JSON —
эфемерный скрэтч. Единственная долговечная правда — база.

```mermaid
flowchart LR
    subgraph SRC [Sources]
      GSC[Search console]
      BW[2nd engine webmaster]
      SERP[SERP + discovery probes]
      CDN[CDN analytics]
      DR[Authority probe]
    end
    SRC --> RUN[Daily collection run]
    RUN --> T[(6 time-series tables:<br/>run · instance snapshot ·<br/>search metric · page audit ·<br/>index check · authority)]
    T --> H[Composite health score<br/>+ boolean health flags]
    T --> LOOP[Topic feedback loop]
```

## Слой 2 — снапшот инстанса и health score

Рабочая таблица — **ежедневный снапшот сайта**: одна строка на сайт в
день, несущая сырые оконные значения плюс вычисленный **композитный
health score** и набор булевых health-флагов — дрейф канонизации,
рассинхрон схем, раздутие фида, переполнение тайтла, молчание краулеров,
рост 404. Всё это считает одна функция, поэтому дашборд, ночной отчёт и
алерты читают одни и те же вердикты.

## Слой 3 — искажения, названные поимённо

Это та часть, которую большинство аналитических конструкций оставляет
неявной. Правила чтения этих данных, зафиксированные как знание системы:

```mermaid
timeline
    title The life of one day's search data
    Day 0 : impressions happen
    Day 1-3 : platform reports with lag — zeros are "not final yet"
    Day 7 : weekly delta of two snapshots = the real weekly number
    Later : history silently backfilled and corrected upstream
```

- **Кумулятивные окна.** Значения показов/кликов снапшота — кумулятивные
  тоталы длинного окна: недельная цифра — всегда *дельта двух снапшотов*,
  никогда не сырая колонка.
- **Лаг созревания.** Свежие дни приходят неполными и правятся ещё до
  нескольких дней — нулевая дельта за вчера значит «не финализировано»,
  а не «показов не было».
- **Разбивки top-N никогда не сходятся с тоталами** — ожидаемое
  поведение сэмплирования, не баг качества данных.
- **Разные окна у разных источников.** CDN отчитывается скользящими
  30-дневными окнами; сэмплирование бот-хитов — более коротким адаптивным;
  сравнивать их ячейка-к-ячейке нельзя.

Петля обратной связи тем потребляет эти данные через фильтры зрелости
ровно из-за этих искажений — молодые страницы исключены из вердиктов,
пока их сигнал не устаканился.

## Компромиссы

Часть ячеек матрицы пуста намеренно: один аналитический пакет и один
коммерческий SEO API не интегрированы (оценены, не подключены); коллектор
page-experience существует, но в проде пропускается ради экономии квоты;
географическая разбивка собирается выше по течению, но пока не
персистится во временные ряды — это задокументировано, чтобы никто не
принял «не сохранено» за «нет трафика». Проба авторитета ходит
еженедельно непрямым путём, а не с прод-хоста.

## Пощупать за две минуты

API-домен `analytics` отдаёт снапшоты и health-флаги; еженедельный отчёт
владельцу строится ровно из этих таблиц — каждое его число трассируется
до строки.
