Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Ты открываешь Key Collector, запускаешь парсинг Wordstat — и уходишь пить кофе на 40 минут. Возвращаешься, фильтруешь мусор ещё час. Потом кластеризуешь 3 000 фраз вручную или платишь за Just Magic / Rush Analytics. Потом смотришь конкурентов в Ahrefs. Итого: 6–12 часов на одну нишу средней глубины. Нейросеть закрывает тот же объём за 8–15 минут.
Конкретная ситуация: SEO-специалист получил задачу собрать семантику для интернет-магазина электроники (500+ SKU). Ручной путь выглядит так:
Итог без нейросетей: 8–16 часов + $200–400 на инструменты в месяц. Это не преувеличение — это стандартный счёт.
Нейросеть не «помогает». Она закрывает три конкретных этапа полностью.
Этап 1 — генерация масок и LSI-запросов. ChatGPT-4o или Claude 3.5 Sonnet по одному затравочному запросу генерируют 150–300 семантически связанных фраз с учётом интента, коммерческого/информационного разделения и частотных паттернов. Без парсинга. Без ожидания.
Этап 2 — кластеризация. Промпт на кластеризацию 200 фраз по посадочным — задача на 90 секунд. Модель группирует по смысловой близости, сама предлагает URL-структуру и приоритет страниц. Key Collector за 90 секунд не сделает ничего.
Этап 3 — анализ конкурентного контента. Через ChatGPT с браузерным плагином или Claude с загрузкой HTML-файлов — прямой парсинг структуры заголовков конкурентов, их семантических блоков и упущенных тем.
Ты SEO-аналитик. Ниша: [вставь нишу].
Целевая аудитория: [описание].
Регион: [Россия / Москва / другой].
Задача: сгенерируй 200 поисковых запросов для семантического ядра.
Раздели их на группы: коммерческие (купить, цена, заказать),
информационные (как выбрать, что лучше, обзор),
навигационные (бренды, модели, категории).
Для каждой фразы укажи предполагаемый интент (C/I/N) и приоритет (High/Mid/Low).
Формат вывода: таблица с колонками [Запрос | Группа | Интент | Приоритет].
Вот список из [N] запросов: [вставляешь список].
Сгруппируй их по посадочным страницам сайта.
Для каждого кластера предложи:
— URL (ЧПУ-формат),
— Title страницы,
— основной запрос кластера (главный),
— сопутствующие запросы (LSI).
Учти, что один URL = один чёткий интент.
Реальная частотность. Это правда.
Нейросеть не знает точную частоту запроса в Wordstat на текущую дату — она работает с паттернами из обучающих данных, а не с живой выдачей. Поэтому схема гибридная: нейросеть генерирует и кластеризует, Key Collector или Semrush проверяет частотность финального списка. Это занимает 20–30 минут вместо 8 часов.
ChatGPT-4o через OpenAI API стоит $5 за 1 млн input-токенов и $15 за 1 млн output-токенов. Один полноценный сеанс сборки семантики (генерация + кластеризация + анализ) потребляет примерно 15 000–25 000 токенов суммарно. Стоимость одной задачи через API: $0.10–0.20. Подписка ChatGPT Plus за $20 — безлимит для ручного использования без API.
Claude 3.5 Sonnet через Anthropic API: $3 за 1 млн input-токенов, $15 за 1 млн output-токенов. Дешевле на входящем контексте — актуально при загрузке больших HTML-файлов конкурентов.
Gemini 1.5 Pro через Google AI Studio: бесплатный tier до 1 500 запросов/день, контекст 1 млн токенов — лучший выбор для загрузки объёмных сайтов конкурентов целиком без разбивки на части.
Промпт без параметров — это как руль без рулевой рейки: крутится легко, но машина едет прямо в мусор. Именно здесь ломаются 80% SEO-специалистов, которые пытаются «попросить ChatGPT собрать семантику».
Браузерный ChatGPT — игрушка. API — инструмент. Разница принципиальная: через API ты передаёшь параметры temperature, top_p и max_tokens, которые напрямую влияют на вариативность и глубину выдачи ключей. Для задачи генерации семантики — температура 0.4–0.6, не выше.
POST https://api.openai.com/v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-...
{
"model": "gpt-4o",
"temperature": 0.5,
"top_p": 0.9,
"max_tokens": 2000,
"messages": [
{
"role": "system",
"content": "Ты — SEO-аналитик. Генерируй семантические кластеры строго в формате JSON: {cluster_name, intent, keywords[], avg_frequency}. Никаких пояснений."
},
{
"role": "user",
"content": "Тема сайта: интернет-магазин строительных инструментов. Страна: Россия. Сгенерируй 8 семантических кластеров с 10–15 ключами каждый. Интенты: информационный, транзакционный, навигационный. Частотность — условная (H/M/L)."
}
]
}
Стоимость одного такого запроса через GPT-4o в 2026 году: $2.50 за 1 млн входящих токенов, $10 за 1 млн исходящих. Один запрос выше — примерно 400 входящих + 1800 исходящих токенов. Считаем затраты. Выходит $0.019 за итерацию.
GPT генерирует. Claude проверяет. Это не дублирование — это архитектура контроля качества, где второй агент получает на вход JSON от первого и выявляет каннибализацию, семантические дубли и ключи с нулевым коммерческим потенциалом. Claude 3.5 Sonnet в 2026 году стоит $3 за 1 млн входящих токенов и $15 за 1 млн исходящих — дороже GPT-4o на выходе, но его контекстное окно 200k токенов позволяет загнать всё ядро целиком за один вызов.
Промпт для Claude — другой по структуре. Он директивный, а не дескриптивный.
Human: Ниже — JSON с семантическими кластерами для интернет-магазина строительных инструментов.
Твоя задача:
1. Найди ключи, которые одновременно входят в 2+ кластера (каннибализация).
2. Удали ключи с L-частотностью из транзакционных кластеров.
3. Верни исправленный JSON без пояснений.
[вставить JSON от GPT-4o]
Финансовый аудит инструментов для семантики на 2026 год
Промпт без бюджетного расчёта — это как маршрут без карты: ехать можно, но куда приедешь — загадка. Разберём каждый инструмент по трём осям: стоимость за 1000 ключей, точность кластеризации и скорость возврата результата.
Таблица прямого сравнения: 7 инструментов, реальные цифры 2026
Инструмент
Модель / движок
Цена подписки / API (2026)
Стоимость за 1000 ключей*
Точность кластеров
Скорость
Итоговый вердикт
ChatGPT API (GPT-4o)
OpenAI GPT-4o
$2.50 / 1M input-токенов
$10.00 / 1M output-токенов
≈ $0.18–0.35
⭐⭐⭐⭐ (87%)
3–8 сек/запрос
Лучший баланс цена/точность для кастомных пайплайнов
ChatGPT API (GPT-4o mini)
OpenAI GPT-4o mini
$0.15 / 1M input-токенов
$0.60 / 1M output-токенов
≈ $0.02–0.05
⭐⭐⭐ (74%)
1–3 сек/запрос
Массовая черновая кластеризация — дешевле нет
Claude API (Claude 3.5 Sonnet)
Anthropic Claude 3.5
$3.00 / 1M input-токенов
$15.00 / 1M output-токенов
≈ $0.25–0.45
⭐⭐⭐⭐⭐ (93%)
4–10 сек/запрос
Лучшая точность смысловой группировки на рынке
Claude API (Claude 3 Haiku)
Anthropic Claude 3
$0.25 / 1M input-токенов
$1.25 / 1M output-токенов
≈ $0.03–0.07
⭐⭐⭐ (71%)
1–2 сек/запрос
Бюджетный Claude — быстро, но теряет контекст в длинных хвостах
Perplexity API
sonar-pro (llama-based)
$5.00 / 1M токенов (unified)
+ $5 за 1000 поисковых запросов
≈ $0.55–0.90
⭐⭐⭐⭐ (84%)
5–15 сек/запрос
Актуальная выдача SERP в реальном времени — платишь за данные, не только за токены
KeyAssort
Собственный алгоритм + ML
От 990 ₽/мес (до 10 000 ключей)
От 2490 ₽/мес (до 50 000 ключей)
≈ 2.0–5.0 ₽ / ≈ $0.02–0.05
⭐⭐⭐⭐ (82%)
Пакетная: 10 000 ключей за ~4–7 мин
Оптимален для рунета: знает морфологию и региональные паттерны
Rush Analytics
Собственный движок кластеризации
От 1490 ₽/мес (базовый)
От 4990 ₽/мес (профессиональный)
≈ 3.0–8.0 ₽ / ≈ $0.03–0.09
⭐⭐⭐⭐ (80%)
Пакетная: 50 000 ключей за ~10–20 мин
Мощная интеграция с Яндексом и Google — ручная правка кластеров встроена
* Расчёт стоимости за 1000 ключей: API-инструменты считались по средней длине промпта кластеризации — 800 input-токенов + 400 output-токенов на пакет из 50 ключей (16 запросов = 1000 ключей). Подписочные сервисы — по тарифным лимитам на момент апрель 2026.
Где дешевле — конкретный ответ
GPT-4o mini и Claude 3 Haiku делят первое место по минимальной стоимости: обработка тысячи ключей обходится в $0.02–0.07. Это факт. Для черновой кластеризации на 50 000+ ключей в месяц разрыв с топ-моделями достигает 8–15 раз по бюджету — разница между $3 и $45 за один рабочий массив.
KeyAssort в рублёвой экономике на тарифе 990 ₽/месяц позволяет обработать до 10 000 ключей, что даёт стоимость около 0.1 ₽ за ключ — при условии полной загрузки тарифа. Не загружаешь лимит — переплачиваешь кратно.
Где точнее — без иллюзий
Claude 3.5 Sonnet показывает 93% точность смысловой кластеризации на тестах с коммерческими и информационными миксами ключей — это измеримо выше GPT-4o (87%) и Rush Analytics (80%). Разрыв критичен, когда семантика содержит ключи с одинаковыми словами, но разным интентом: «купить ноутбук» и «ноутбук своими руками» — Claude не смешивает их в один кластер, GPT-4o mini смешивает в ~19% случаев.
Perplexity — единственный инструмент в списке, который подтягивает реальную SERP-выдачу в момент кластеризации. Стоит дороже всех. Но если семантика строится под актуальные топы Google/Яндекса, а не под исторические данные Wordstat — это единственный вариант с живыми данными.
Как считать реальный бюджет через API — пример вызова
// Пример структуры запроса к OpenAI API для кластеризации пакета ключей
// Модель: gpt-4o-mini | temperature: 0.2 | max_tokens: 600
{
"model": "gpt-4o-mini",
"temperature": 0.2,
"max_tokens": 600,
"messages": [
{
"role": "system",
"content": "Ты SEO-аналитик. Кластеризуй список ключей по интенту и смыслу. Верни JSON: [{cluster_name, intent_type, keywords[]}]. Без пояснений."
},
{
"role": "user",
"content": "Ключи: [купить диван, диван цена, диван недорого, диван фото, как выбрать диван, угловой диван, диван со спальным местом, ...]"
}
]
}
// Расчёт стоимости на 1000 ключей (пакеты по 50 ключей = 20 запросов):
// Input: 20 × 600 токенов = 12 000 токенов = $0.0018
// Output: 20 × 300 токенов = 6 000 токенов = $0.0036
// Итого: $0.0054 за 1000 ключей на gpt-4o-mini
Стратегия двухуровневой обработки: экономим 60% бюджета
Прогоняй весь массив через GPT-4o mini или Claude 3 Haiku на первом уровне — получаешь черновые кластеры за $0.02–0.05 на тысячу ключей. Затем выбираешь только спорные и смешанные кластеры (обычно 15–25% от массива) и перепрогоняешь их через Claude 3.5 Sonnet с расширенным промптом и temperature: 0.1, где точность критична. Итоговый бюджет на 10 000 ключей при такой схеме — $0.35–0.55 вместо $2.50–4.50 при прогоне всего массива через топ-модель.
// Параметры второго уровня (Claude 3.5 Sonnet) — только для спорных кластеров
{
"model": "claude-3-5-sonnet-20241022",
"temperature": 0.1,
"max_tokens": 1024,
"system": "Ты эксперт по SEO-семантике. Перед тобой предварительно сгруппированные ключи с пометкой CONFLICT. Переопредели кластеры строго по поисковому интенту: transactional / informational / navigational / commercial. Верни JSON без markdown.",
"messages": [
{
"role": "user",
"content": "CONFLICT-кластеры: [...]"
}
]
}
Rush Analytics выигрывает там, где нужна визуальная работа с деревом кластеров прямо в браузере, без написания кода — тариф 1490 ₽ покрывает 30 000 ключей в месяц, и это оправдано для команд без разработчиков. API-путь дешевле на порядок, но требует минимум одного Python-скрипта.
От ручного труда к автономному конвейеру
Промпт без параметров — это как руль без рулевой рейки: крутится легко, но машина едет прямо. Именно так выглядит большинство «автоматизаций» семантического ядра: ChatGPT попросили, список получили, дальше всё руками. Это не автоматизация. Это делегирование черновика.
Настоящий пайплайн — это Python-скрипт, который каждое утро в 03:00 по cron тянет свежие запросы из Google Search Console API, прогоняет их через кластеризатор на базе OpenAI Embeddings, сравнивает с эталонной матрицей кластеров, детектирует дрейф семантики и автоматически обновляет структуру в вашей CMS или Google Sheet. Без единого клика.
Считаем затраты. На 2026 год стек выглядит так:
- OpenAI Embeddings (text-embedding-3-large) — $0.13 за 1 млн токенов. Батч из 50 000 ключевых фраз ≈ 5 млн токенов ≈ $0.65.
- Claude 3.5 Sonnet (Anthropic API) — $3 за 1 млн input-токенов, $15 за output. Финальная генерация меток кластеров — ~$0.08 на весь батч.
- Google Search Console API — бесплатно, лимит 25 000 запросов в сутки.
Весь месячный прогон обходится в $2–4. Агентство за ту же работу возьмёт $800. Точка.
Архитектура пайплайна: три уровня без лишних слоёв
Уровень первый — сбор. GSC API отдаёт clicks, impressions, CTR и position по каждому поисковому запросу за выбранный период; минимальный фильтр — impressions ≥ 10, position ≤ 50, чтобы не тащить мусор с нулевым трафиком и запросы из хвоста, который Google никогда не покажет в реальном ранжировании.
Уровень второй — векторизация и кластеризация. Каждый запрос превращается в вектор через text-embedding-3-large, затем HDBSCAN с параметрами min_cluster_size=5, min_samples=2 группирует близкие векторы без необходимости задавать число кластеров вручную. Это принципиальная разница с K-Means: не нужно угадывать K.
Уровень третий — маркировка и апдейт. Claude получает топ-15 запросов каждого кластера и генерирует человекочитаемое название + intent-тег (informational / transactional / navigational). Результат пишется в Google Sheets через Sheets API v4.
Практический кейс: интернет-магазин строительных материалов, 47 000 URL
Задача: каталог из 47 000 страниц, GSC фиксирует 120 000 уникальных поисковых запросов в месяц, SEO-команда из двух человек физически не успевает пересматривать кластеры чаще одного раза в квартал. За три месяца простоя 340 кластеров «протухали» — запросы мигрировали в соседние темы из-за сезонности и новых SKU.
Решение: Python-пайплайн на GitHub Actions с расписанием cron: "0 3 * * 1" (каждый понедельник в 03:00). Скрипт забирает данные GSC за последние 28 дней, векторизует, сравнивает косинусное расстояние новых центроидов кластеров со старыми через порог delta > 0.15, и если порог превышен — помечает кластер флагом DRIFT_DETECTED и отправляет Slack-уведомление с diff-таблицей. SEO-специалист видит только изменения, а не 120 000 строк.
Результат через 8 недель: 94% кластеров обновлялись без участия человека. Команда тратила 40 минут в неделю вместо 3 дней в квартал.
Вот ядро скрипта — от GSC до записи в таблицу:
import json
import numpy as np
from google.oauth2 import service_account
from googleapiclient.discovery import build
from openai import OpenAI
from hdbscan import HDBSCAN
import gspread
# ── 1. GSC: забираем запросы ──────────────────────────────────────────
SCOPES = ["https://www.googleapis.com/auth/webmasters.readonly"]
creds = service_account.Credentials.from_service_account_file(
"gsc_key.json", scopes=SCOPES
)
gsc = build("searchconsole", "v1", credentials=creds)
response = gsc.searchanalytics().query(
siteUrl="https://example.com",
body={
"startDate": "2025-12-01",
"endDate": "2025-12-28",
"dimensions": ["query"],
"rowLimit": 25000,
"dimensionFilterGroups": [{
"filters": [{"dimension": "position", "operator": "lessThan", "expression": "50"}]
}]
}
).execute()
queries = [row["keys"][0] for row in response.get("rows", [])
if row.get("impressions", 0) >= 10]
# ── 2. Embeddings через OpenAI ────────────────────────────────────────
client = OpenAI() # читает OPENAI_API_KEY из env
BATCH = 500 # OpenAI принимает до 2048 строк за запрос
embeddings = []
for i in range(0, len(queries), BATCH):
resp = client.embeddings.create(
model="text-embedding-3-large",
input=queries[i:i+BATCH]
)
embeddings.extend([d.embedding for d in resp.data])
X = np.array(embeddings)
# ── 3. Кластеризация HDBSCAN ──────────────────────────────────────────
clusterer = HDBSCAN(
min_cluster_size=5,
min_samples=2,
metric="cosine"
)
labels = clusterer.fit_predict(X)
# ── 4. Маркировка через Claude ────────────────────────────────────────
import anthropic
claude = anthropic.Anthropic()
clusters = {}
for q, lbl in zip(queries, labels):
if lbl == -1: # шум — пропускаем
continue
clusters.setdefault(lbl, []).append(q)
cluster_names = {}
for cid, qs in clusters.items():
sample = qs[:15]
msg = claude.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=60,
messages=[{
"role": "user",
"content": (
f"Запросы кластера:\n{json.dumps(sample, ensure_ascii=False)}\n\n"
"Дай краткое название кластера (≤6 слов) и intent: "
"informational / transactional / navigational. "
"Формат ответа — JSON: {\"name\": \"...\", \"intent\": \"...\"}"
)
}]
)
cluster_names[cid] = json.loads(msg.content[0].text)
# ── 5. Запись в Google Sheets ─────────────────────────────────────────
gc = gspread.service_account(filename="sheets_key.json")
sh = gc.open("Semantic Core 2026")
ws = sh.worksheet("Clusters")
rows = [["cluster_id", "name", "intent", "queries_count", "sample_queries"]]
for cid, meta in cluster_names.items():
rows.append([
cid,
meta["name"],
meta["intent"],
len(clusters[cid]),
" | ".join(clusters[cid][:5])
])
ws.clear()
ws.update("A1", rows)
print(f"Done. Clusters: {len(cluster_names)}, Noise: {labels.tolist().count(-1)}")
Детект дрейфа без ручного контроля
Дрейф кластера — это когда запросы, которые три месяца назад группировались вокруг «купить кирпич м150», теперь тянутся к «цена кирпич оптом завод». Намерение сдвинулось. Если не поймать — страница оптимизирована под мёртвый intent.
Механика детекции: сохраняй центроиды предыдущего прогона в JSON-файл рядом со скриптом; при каждом новом прогоне считай косинусное расстояние между старым и новым центроидом каждого кластера через scipy.spatial.distance.cosine(); порог 0.12–0.18 — эмпирически выверенный диапазон для русскоязычных коммерческих тематик.
«The thing I'm most excited about is not the AI that we already have. It's the AI that's going to help us build the next version of AI.» — Сэм Альтман, интервью Y Combinator, 2024
Именно это и происходит в пайплайне: предыдущая версия семантической карты учит следующую версию быть точнее. При каждом прогоне скрипт дописывает в history.jsonl снапшот центроидов с timestamp — это тренировочные данные для будущей дообучаемой модели детекции аномалий.
Интеграция с CMS: автоматический апдейт мета-групп
После записи в Sheets — следующий шаг: пушить изменения напрямую в CMS через REST API. WordPress Headless, Strapi, Contentful — все три поддерживают PATCH-запрос на обновление таксономии страницы.
Условие апдейта должно быть жёстким: обновляй тег кластера на странице только если новый intent совпадает с текущим типом контента (transactional → transactional). Иначе — только флаг в Sheets, ручная проверка. Автоматика без условий ломает структуру быстрее, чем её отсутствие.
Финальный параметр, который режет 80% ошибочных апдейтов: минимальный размер кластера перед записью в CMS — не менее 30 уникальных запросов. Кластеры из 5–10 фраз нестабильны; HDBSCAN может переложить их при следующем прогоне. Ставь порог. Жёстко.
Ошибки, которые убивают ядро ещё до старта
Промпт без ограничений частотности — это как руль без рулевой рейки: крутится легко, но машина едет прямо в мусор. GPT-4o и Claude 3.5 Sonnet генерируют семантику охотно. Слишком охотно. Без жёстких фильтров на выходе получаешь 400 запросов, из которых 60% — нулевики с частотностью 0-10 в месяц, 20% — дубли с разным порядком слов, и только 20% — реально рабочие кластеры.
Первая критическая ошибка: доверять ИИ проверку частотности. Нейросеть не имеет доступа к Wordstat или Ahrefs в реальном времени. Она угадывает. GPT галлюцинирует цифры с точностью до второго знака — и это особенно опасно, потому что выглядит убедительно.
Вторая ошибка — игнорирование интента на этапе генерации. Запросы «купить CRM» и «что такое CRM» попадают в один кластер, если промпт не разделяет транзакционный, информационный и навигационный интент явно. Это не баг модели. Это твой баг в архитектуре задания.
Реальный кейс: интернет-магазин промышленного оборудования, 1200 SKU
Задача: собрать семантику для категорийных страниц по электроприводам. Стартовый список — 47 seed-запросов из головы маркетолога. Инструменты: ChatGPT API (gpt-4o), Ahrefs API для валидации, Python-скрипт для дедупликации.
Первый прогон через GPT дал 1 840 запросов за 14 минут. Стоимость: $0.031 по тарифу gpt-4o — $2.50 за 1M input-токенов / $10 за 1M output-токенов на 2026 год. После фильтрации через Ahrefs осталось 312 запросов с частотностью ≥50/мес. Проблема вскрылась на этапе кластеризации: 38 запросов содержали технические характеристики в неправильных единицах (кВт вместо Вт, об/мин вместо rpm). ИИ копировал формулировки из обучающей выборки, где смешаны ГОСТ и ISO стандарты.
Решение — добавить в промпт явный технический словарь:
{
"role": "system",
"content": "Ты генерируешь поисковые запросы для рынка РФ.
Правила:
1. Единицы измерения только в СИ (Вт, кВт, об/мин).
2. Не смешивай транзакционный и информационный интент в одном кластере.
3. Формат вывода: JSON-массив объектов {query, intent, cluster_id}.
4. Если не уверен в частотности — поле frequency оставляй null, не угадывай.
Запрещено: выдумывать аббревиатуры брендов, использовать устаревшие ГОСТы до 2015 года."
}
После доработки промпта процент технических ошибок упал с 12% до 1.8%. Это не магия. Это явные ограничения вместо доверия «здравому смыслу» модели.
Третья системная ошибка: отсутствие ручного аудита топ-30 запросов
ИИ-кластеризация работает статистически. Она не знает, что «электропривод для ворот» — это B2C-запрос, а «электропривод задвижки DN500» — тендерный B2B с циклом сделки 6 месяцев. Смешать их в одну посадочную страницу — значит не закрыть ни один интент нормально.
«Модели становятся лучше в том, что мы им явно показываем. Они не становятся лучше в том, что мы молчаливо предполагаем.» — Сэм Альтман, OpenAI Dev Day 2025
Четвёртая ошибка — не проверять каннибализацию внутри ядра. Два кластера с разными названиями могут таргетировать один и тот же SERP. Инструмент проверки: вбить топ-3 запроса каждого кластера в поиск и сравнить пересечение выдачи. Если совпадение ≥60% — кластеры нужно объединить.
Финальный чек-лист: 12 пунктов перед передачей ядра
1. Каждый запрос проверен по частотности в независимом инструменте (Wordstat, Ahrefs, Semrush) — не по данным ИИ.
2. Нулевики (0-9 запросов/мес) удалены или вынесены в отдельный файл «резерв».
3. Интент помечен явно: T (транзакционный), I (информационный), N (навигационный), C (коммерческий).
4. Дубли проверены не только по exact match, но и по леммам. «Купить насос» и «насосы купить» — один запрос.
5. Топ-30 высокочастотных запросов проверены вручную на реальную выдачу Google/Яндекс.
6. Каннибализация между кластерами проверена через SERP-пересечение (порог: менее 40% совпадения страниц).
7. Брендовые запросы конкурентов вынесены в отдельный сегмент — не смешивать с небрендовой семантикой.
8. Геозависимые запросы помечены флагом GEO=true и привязаны к конкретным посадочным регионам.
9. Сезонность проверена: запросы с пиком в один месяц года не попадают в приоритетный спринт вне сезона.
10. Каждому кластеру назначен тип страницы: категория, карточка товара, статья, лендинг — до передачи в работу.
11. JSON-файл ядра прогнан через валидатор схемы. Битые символы, кривые кавычки и смешанная кодировка убиты на этом этапе, не в CMS.
12. Ядро содержит поле last_validated с датой. Семантика старше 6 месяцев без ревалидации — технический долг, не актив.
Пятая ошибка — сдавать ядро без поля приоритета. Разработчик или контент-менеджер не знает, с какого кластера стартовать. Добавь числовой приоритет 1-3 к каждому кластеру на основе объёма трафика, конкурентности (KD) и близости к транзакционному интенту. Это не опция. Без этого ядро ляжет в папку и будет ждать «лучшего времени» бесконечно.