Зачем нужен SEO-бот

SEO-специалист тратит до 60% рабочего времени на рутинные задачи: сбор семантического ядра, кластеризация запросов, создание контент-планов, написание мета-тегов, генерация текстов. Всё это можно автоматизировать с помощью AI-бота, который будет выполнять эти задачи по расписанию или по команде.

В этом туториале мы создадим SEO-бота, используя Claude API, MCP-серверы и Playwright. Бот будет:

  • Собирать поисковые подсказки и связанные запросы
  • Кластеризовать запросы по интенту
  • Генерировать SEO-оптимизированные тексты
  • Автоматически публиковать контент

Весь процесс разработки — через вайбкодинг в Claude Code.

Архитектура бота

Компоненты

Бот состоит из четырёх модулей:

  • Collector — сбор семантического ядра через поисковые подсказки и API
  • Clusterer — кластеризация собранных запросов по темам и интенту
  • Generator — генерация текстов и мета-тегов через Claude API
  • Publisher — автоматическая публикация в CMS (WordPress или Hugo)

Технологический стек

  • Python 3.12
  • Claude API (Anthropic SDK)
  • Playwright для парсинга поисковых подсказок
  • SQLite для хранения семантического ядра
  • FastAPI для API-интерфейса (опционально)

Шаг 1: Модуль сбора семантики (Collector)

Сбор поисковых подсказок

Поисковые подсказки — один из лучших источников для семантического ядра. Google и Яндекс подсказывают запросы, которые реально ищут пользователи.

Мы используем Playwright для автоматизации сбора. Промпт для Claude Code:

«Создай класс SuggestCollector на Python. Метод collect(seed_keyword: str) -> list[str] принимает базовое ключевое слово, открывает Google через Playwright, вводит ключевое слово + каждую букву алфавита (а-я), собирает подсказки из выпадающего списка. Возвращает дедуплицированный список подсказок. Добавь задержку 1-2 секунды между запросами для избежания блокировки».

Обогащение данных

После сбора подсказок бот обогащает каждый запрос дополнительными данными:

  • Примерная частотность (через Яндекс.Wordstat API или оценку на основе конкуренции)
  • Тип интента (информационный, транзакционный, навигационный)
  • Длина запроса (количество слов)

Определение интента происходит через Claude API: «Определи тип поискового интента для запроса “{query}”: информационный, транзакционный, навигационный или коммерческий. Ответь одним словом».

Хранение в базе данных

Все собранные запросы сохраняются в SQLite-базу с полями:

  • id — уникальный идентификатор
  • keyword — поисковый запрос
  • seed — исходное ключевое слово
  • intent — тип интента
  • cluster_id — ID кластера (заполняется позже)
  • created_at — дата сбора

Шаг 2: Кластеризация (Clusterer)

Алгоритм кластеризации

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

Семантическая кластеризация через Claude:

Отправляем пакет из 50-100 запросов в Claude API с промптом: «Сгруппируй следующие поисковые запросы в тематические кластеры. Каждый кластер = одна потенциальная страница. Для каждого кластера укажи: название темы, основной запрос (наиболее частотный), список запросов. Формат ответа — JSON».

Пороговая кластеризация по SERP:

Для более точной кластеризации проверяем пересечение поисковой выдачи. Если два запроса имеют более 3 одинаковых URL в топ-10, они попадают в один кластер. Playwright парсит поисковую выдачу для каждого запроса.

Приоритизация кластеров

После кластеризации бот оценивает каждый кластер по приоритету:

  • Количество запросов в кластере
  • Суммарная частотность
  • Преобладающий интент (транзакционные кластеры — приоритет)
  • Конкурентность (оценка через количество результатов в выдаче)

Шаг 3: Генерация контента (Generator)

Промпт для генерации текста

Ключевой элемент — промпт, который обеспечивает SEO-оптимизированный текст. Вот структура промпта, которую использует наш бот:

Бот отправляет в Claude API структурированный запрос с информацией о кластере (основной запрос, дополнительные запросы, интент) и требованиями к тексту (длина, структура, ключевые слова, мета-теги).

Генерация мета-тегов

Отдельный промпт для мета-тегов: «Для статьи с заголовком “{title}” о теме “{topic}” создай: 1) meta description (150-160 символов, с ключевым словом в начале), 2) 5-7 тегов для категоризации, 3) Open Graph описание (до 200 символов)».

Контроль качества

Бот автоматически проверяет сгенерированный контент:

  • Длина текста: минимум 1000 слов
  • Наличие ключевых слов: основной запрос кластера встречается 3-5 раз
  • Структура: минимум 3 заголовка H2, наличие списков
  • Уникальность: проверка через API антиплагиата (опционально)
  • Читабельность: оценка длины предложений и абзацев

Если текст не проходит проверку, бот автоматически перегенерирует его с уточнённым промптом.

Шаг 4: Автопубликация (Publisher)

Публикация в WordPress

Для WordPress бот использует REST API:

  • Создание поста с заголовком, контентом и мета-данными
  • Загрузка обложки через media API
  • Установка категорий и тегов
  • Планирование публикации на заданную дату

Публикация в Hugo

Для Hugo (как в нашем случае) бот создаёт Markdown-файлы:

  • Формирование frontmatter (title, slug, date, description, tags, categories)
  • Сохранение в нужную директорию (content/blog/)
  • Git commit и push для автоматического деплоя через CI/CD

Расписание публикаций

Бот поддерживает планирование публикаций:

  • Равномерное распределение по дням (1-2 статьи в день)
  • Учёт часовых поясов (публикация в 09:00 МСК)
  • Возможность ручного утверждения перед публикацией

Оркестрация: собираем всё вместе

Основной пайплайн

Полный цикл работы бота выглядит так:

  1. Ввод: список seed-ключевых слов
  2. Collector: сбор 500-1000 подсказок по каждому seed
  3. Clusterer: группировка в 50-100 кластеров
  4. Приоритизация: выбор топ-10 кластеров для контента
  5. Generator: генерация текстов для выбранных кластеров
  6. Publisher: публикация по расписанию

Запуск через CLI

Бот управляется через командную строку:

python seo_bot.py collect --seed "SEO оптимизация"
python seo_bot.py cluster
python seo_bot.py generate --limit 10
python seo_bot.py publish --schedule daily

Запуск через cron

Для автоматической работы настройте cron-задачи:

  • Сбор семантики: раз в неделю
  • Кластеризация: после каждого сбора
  • Генерация: ежедневно (1-2 текста)
  • Публикация: ежедневно в заданное время

Оптимизация расходов на Claude API

Выбор модели

Для разных задач используйте разные модели:

  • Claude Haiku: определение интентов, классификация запросов (дёшево и быстро)
  • Claude Sonnet: генерация мета-тегов и коротких текстов
  • Claude Opus: генерация длинных экспертных статей (дороже, но качественнее)

Батчинг запросов

Вместо отправки каждого запроса отдельно, группируйте их:

  • Определение интентов: 50-100 запросов в одном промпте
  • Кластеризация: пакеты по 100-200 запросов
  • Генерация мета-тегов: 10-20 за раз

Батчинг снижает расходы на 50-70% за счёт уменьшения накладных расходов на каждый вызов API.

Кэширование

Кэшируйте результаты для избежания повторных вызовов API:

  • Интенты запросов (меняются редко)
  • Кластеры (пересчитывать только при добавлении новых запросов)
  • Шаблонные части контента (вступления, заключения)

Результаты

Метрики бота за первый месяц работы

  • Собрано ключевых слов: 12 000+
  • Сформировано кластеров: 340
  • Сгенерировано статей: 30
  • Расходы на Claude API: ~$45
  • Расходы на время разработки: 2 часа на базовую версию, 8 часов на доработки
  • Индексация: 90% статей проиндексированы в течение 72 часов
  • Трафик: +2 400 визитов в первый месяц

Выводы

  1. SEO-бот через вайбкодинг — реалистичный проект для одного вечера. Базовая версия (сбор семантики + генерация текстов) создаётся за 2 часа. Полноценная система с кластеризацией и автопубликацией — за 1-2 дня.
  2. Автоматизация рутины освобождает SEO-специалиста для стратегической работы: анализ конкурентов, оптимизация конверсий, работа с внешними ссылками.
  3. Качество AI-контента зависит от промптов. Инвестируйте время в настройку промптов для генерации — это окупится сторицей.
  4. Оптимизация расходов на API критична для рентабельности: используйте разные модели для разных задач, батчинг и кэширование.
  5. Контроль качества нельзя полностью автоматизировать. Периодически проверяйте сгенерированный контент вручную и корректируйте промпты.

Вопросы и ответы

Сколько стоит запуск SEO-бота на Claude API?
Основные расходы — подписка на Claude API ($20-100/мес в зависимости от тарифа) и API-вызовы ($30-50/мес при генерации 30 статей). Итого $50-150/мес. Это значительно дешевле найма SEO-копирайтера.
Не будет ли Google штрафовать за AI-контент?
Google штрафует не за AI-контент как таковой, а за некачественный и неполезный контент. Если AI-тексты отвечают на вопросы пользователей, содержат экспертную информацию и хорошо структурированы — они ранжируются наравне с человеческими.
Какой объём контента может генерировать бот ежедневно?
Технически — десятки статей в день. Практически рекомендуется 1-3 статьи для нового сайта и 3-5 для зрелого. Важнее не количество, а качество и регулярность публикаций.
Можно ли использовать бота для разных языков?
Да, Claude API отлично работает с русским, английским, испанским и десятками других языков. Достаточно указать целевой язык в промпте. Качество генерации для русского языка сопоставимо с английским.