Ручной сбор семантики занимает 2 рабочих дня: брейнсторм, парсинг сайта, прогон через Wordstat, классификация по intent. Аналитик за это время устаёт и допускает ошибки. Когда нужно прогонять GEO-аудит для десятков клиентов в месяц — этот путь не масштабируется.
Альтернатива — связка YandexGPT + Wordstat API. YandexGPT генерирует 50 кандидатов под нишу за 10 секунд. Wordstat отсеивает нулёвки и шум за ещё 20 секунд. На выходе — 20 топ-запросов с живой частотностью и intent-метками. В aiseen эту связку используем как ядро pipeline.
Почему YandexGPT, а не ChatGPT для русской семантики?
YandexGPT обучен на русском поисковом потоке Яндекса. Модель видит реальные паттерны поисковых запросов в РФ — как пользователи пишут, какие сокращения используют, какие конструкции работают. ChatGPT и Claude обучены на большем мировом корпусе, но для русской поисковой семантики дают больше шума.
По нашим внутренним замерам, при генерации 50 запросов под русскую нишу: YandexGPT — 3–4 запроса оказываются нулёвками после Wordstat. GPT-4o-mini — 8–10 нулёвок. Claude Haiku — 11–14. Разница ощутимая. YandexGPT угадывает «создать чат-бот», ChatGPT придумывает «чат-бот платформа разработка интеграция b2b», которого никто не ищет.
Цена: YandexGPT-pro обходится в ~3 ₽ за генерацию 50 запросов. ChatGPT GPT-4o-mini — ~1.5 ₽. Разница 1.5 ₽, но уровень шума у YandexGPT в 3 раза ниже — экономия времени на валидации перевешивает.
Готовый промпт для генерации 50 запросов
Промпт ниже — production-версия из pipeline aiseen. Генерирует 50 запросов, разбитых на 4 intent-сегмента (транзакционные, информационные, локальные, сравнительные). На выходе — JSON-структура, готовая для дальнейшего прогона через Wordstat.
Ты — SEO-аналитик для русского рынка. Сгенерируй 50 поисковых запросов
для бренда {BRAND} в нише {NICHE}.
Контекст:
- Сайт: {URL}
- Основные продукты: {PRODUCTS}
- Регион: {REGION}
Правила:
1. Запросы должны быть на русском, как реальные люди пишут в Яндексе
2. Длина 1-5 слов, без кавычек и спецсимволов
3. Распределение по intent (ровно 50 запросов):
- 15 транзакционных ("купить", "заказать", "цена")
- 15 информационных ("как", "что такое", "почему")
- 10 локальных (с городом или "рядом")
- 10 сравнительных ("vs", "лучшие", "топ")
Формат ответа — строго JSON:
{
"queries": [
{"q": "запрос 1", "intent": "transactional"},
{"q": "запрос 2", "intent": "informational"},
...
]
}
Без комментариев, без markdown, только JSON.
Какие параметры модели использовать?
Для генерации семантики оптимальные параметры YandexGPT-pro: temperature: 0.5, maxTokens: 2000, response_format: json_object. Низкая температура (0.3) даёт скучную, дубликатную семантику. Высокая (0.9) — креатив, но больше выдумок. 0.5 — золотая середина для разнообразия без шума.
maxTokens: 2000 — достаточно для 50 запросов в JSON-формате. Если поставите 500 — модель оборвёт ответ на 30-м запросе. Если 5000 — платите за неиспользуемый буфер. json_object заставляет модель отдавать валидный JSON, избегаете парсинг markdown с wrappers типа ```json.
В n8n настройки YandexGPT-ноды: модель yandexgpt/latest, temperature 0.5, output format JSON. Folder ID из Yandex Cloud — обязательно. API-ключ через credentials, не inline. После каждого прогона проверяйте размер ответа: если меньше 4 КБ — модель срезала, увеличьте maxTokens.
Как подключить Wordstat для отсева нулёвок?
После генерации 50 запросов — прогон через Wordstat API. Эндпоинт /v1/keywordsresearch/searchqueries принимает массив фраз и возвращает частотность по каждой. Для 50 запросов один батч-запрос, 15–20 секунд.
Фильтр на выходе: оставляем только запросы с частотностью > 30 показов в месяц (для b2c) или > 15 (для b2b). Из 50 кандидатов остаётся 35–45 валидных. Дальше — классификация уже сделана YandexGPT при генерации, остаётся только отобрать топ-20 с балансом по 4 intent-сегментам.
Дополнительно проверяем дубликаты: «чатбот» и «чат-бот» — одна и та же фраза, оставляем с большей частотностью. После всех фильтров — 20 финальных запросов с intent-метками и частотностями. Эти 20 идут в runner, который прогоняет их через Я.Нейро и Google AIO.
Готовый код на Python (структура)
import requests
import json
from collections import defaultdict
YGPT_KEY = "your-yandex-cloud-api-key"
FOLDER_ID = "your-folder-id"
DIRECT_TOKEN = "your-yandex-direct-oauth-token"
def generate_queries(brand, niche, url, products, region):
prompt = f"""Ты — SEO-аналитик. Сгенерируй 50 запросов для {brand}
в нише {niche}. Сайт: {url}. Продукты: {products}. Регион: {region}.
Распределение: 15 транзакционных, 15 информационных, 10 локальных,
10 сравнительных. Формат: JSON {{"queries":[{{"q":"...","intent":"..."}}]}}."""
response = requests.post(
"https://llm.api.cloud.yandex.net/foundationModels/v1/completion",
headers={"Authorization": f"Api-Key {YGPT_KEY}"},
json={
"modelUri": f"gpt://{FOLDER_ID}/yandexgpt/latest",
"completionOptions": {"temperature": 0.5, "maxTokens": 2000},
"messages": [{"role": "user", "text": prompt}]
}
)
text = response.json()["result"]["alternatives"][0]["message"]["text"]
return json.loads(text)["queries"]
def validate_with_wordstat(queries):
phrases = [q["q"] for q in queries]
response = requests.post(
"https://api.direct.yandex.ru/v5/keywordsresearch",
headers={"Authorization": f"Bearer {DIRECT_TOKEN}"},
json={"method": "search", "params": {"Phrases": phrases}}
)
freq_map = {item["Phrase"]: item["Shows"] for item in response.json()["result"]}
for q in queries:
q["shows"] = freq_map.get(q["q"], 0)
return [q for q in queries if q["shows"] >= 30]
def pick_top_20(validated):
by_intent = defaultdict(list)
for q in validated:
by_intent[q["intent"]].append(q)
for intent in by_intent:
by_intent[intent].sort(key=lambda x: x["shows"], reverse=True)
return (by_intent["transactional"][:5] + by_intent["informational"][:6]
+ by_intent["local"][:5] + by_intent["comparative"][:4])
# Использование:
raw = generate_queries("BotCraft", "разработка чат-ботов",
"https://bot-craft.ru", "Salebot, Telegram-боты", "РФ")
validated = validate_with_wordstat(raw)
final_20 = pick_top_20(validated)
Что делать с дубликатами и шумом?
Дубликаты убираются в 3 шага: нормализация (нижний регистр, удаление дефисов «чат-бот» → «чатбот»), сравнение по нормализованной форме, удаление пар с меньшей частотностью. После Wordstat-фильтра 35–45 запросов; после удаления дубликатов — обычно 30–38.
«Шум» — это запросы с частотностью > 30, но коммерчески нерелевантные. Например, «чат-бот скачать бесплатно» с частотностью 1200 в месяц — живой запрос, но для платного b2b-SaaS бесполезный. Stop-list со словами «скачать», «бесплатно», «своими руками», «c++», «c sharp» убирает такие запросы. У нас в pipeline есть универсальный stop-list плюс ниша-specific (для медицины — «народные средства», для b2b — «своими руками»).
Сколько стоит прогон 50 запросов через YandexGPT?
YandexGPT-pro: 1.20 ₽ за 1000 input-токенов, 2.40 ₽ за 1000 output-токенов. Промпт + контекст — ~600 токенов input. Ответ JSON с 50 запросами — ~800 output-токенов. Итого: 0.72 ₽ + 1.92 ₽ = 2.64 ₽ за генерацию.
Wordstat API через Яндекс.Директ бесплатный. Итоговая стоимость семантики на одного клиента — 3 ₽. При цене продукта 2990 ₽ это 0.1% от выручки — семантика становится практически бесплатной операцией. Это и есть ключевой unit-экономики GEO-аудита через API: то, что у агентства стоит 8–15 тыс. (день работы аналитика), у нас стоит 3 ₽ и 15 секунд compute.
Когда YandexGPT даёт плохую семантику?
YandexGPT срывается на нишах с узкой профессиональной лексикой — фармакология, инженерные стандарты, юридические термины. Модель догадывается о терминах, но путает технические нюансы. Запросы вроде «купить азитромицин 500мг 6 таблеток» она генерирует криво — получается «азитромицин таблетки купить» без дозировки и количества.
Для таких ниш промпт нужно усиливать: подкладывать список технических терминов, давать 3–5 примеров правильных запросов через few-shot. Простой fix: вместо «продукты: {PRODUCTS}» давать «продукты с примерами запросов: {PRODUCTS_WITH_EXAMPLES}». 3 примера правильных запросов разгоняют модель.
Не хотите интегрировать API самостоятельно?
aiseen автоматизирует весь pipeline — YandexGPT генерация, Wordstat валидация, прогон через Я.Нейро и Google AIO, расчёт метрик и план действий. Готовый отчёт за 15 минут.
Заказать GEO-аудит за 2 990 ₽Частые вопросы
temperature=0.3 модель даёт скучную, предсказуемую семантику — много дубликатов. При temperature=0.9 — креатив, но больше выдумок. Оптимум для генерации запросов — 0.5–0.6: достаточно разнообразия для покрытия 4 intent-сегментов, но без шума.