18 750 строк Go за 3 дня: как я автоматизировал SEO с Claude Code

Реальный кейс: 97 коммитов, 4 фазы разработки, полный pipeline от ключей до индексации. Разбираю SDD и AI-программирование на практике.

Три дня, 97 коммитов, 18 750 строк кода. На выходе работающий pipeline, который сам находит ключевые слова, пишет статьи, проверяет качество и публикует на сайт. Это история о том, как автоматизация SEO из абстрактной идеи превратилась в рабочий инструмент. И почему без AI-программирования я бы провозился месяц.

Почему я решил автоматизировать создание контента

Проблема простая: руками не масштабируешься.

Я веду контентный проект. Одна качественная статья занимает 4-6 часов: исследование ключей, анализ конкурентов, написание, редактура, публикация. При таком темпе максимум 5-6 статей в неделю, и это если только этим заниматься.

А для SEO-трафика нужен объём. Не 5 статей, а 50. Не в неделю, а в месяц. При этом качество должно быть стабильным: Google за это платит, а за мусор наказывает.

Нанимать авторов? Пробовал. Качество плавает, редактура съедает время, которое хотел сэкономить. Проще написать самому.

Значит, нужна система. Не “AI-писалка”, которая выдаёт слоп, а полноценный pipeline с контролем качества. Снайпер, не пулемёт.

Что должен уметь SEO-снайпер

Перед тем как писать код, я расписал архитектуру. Получилось 8 модулей:

МодульЗадача
M1 KeywordsОчередь ключей, скоринг через XMLRiver Wordstat
M2 SERPПарсинг выдачи, анализ конкурентов
M3 GeneratorГенерация статей через Claude API
M4 Quality Gate18 проверок, CQS-скоринг
M5 PublisherЗапись в Git, пуш на сайт
M6 PingerIndexNow для быстрой индексации
M7 TrackerМониторинг позиций через GSC и Яндекс
M8 NotifyАлерты и отчёты в Telegram

Поток простой: ключевое слово из очереди проходит через все модули. Если статья не прошла Quality Gate, возвращается на доработку. Если прошла, публикуется и отслеживается.

Принцип “снайпера”: один выстрел — одно попадание. Лучше 3 статьи с CQS выше 0.85, чем 10 статей с непредсказуемым качеством.

День первый: фундамент (42 коммита)

8 апреля, 42 коммита. Самый насыщенный день.

Начал с инфраструктуры: Go-модуль, Makefile, Docker-конфиг. Скучно, но без этого дальше не двинешься.

Потом модели данных. Keyword, Article, Position, Alert. SQLite для хранения. Для такого проекта хватает с запасом, а возни с PostgreSQL не хочется.

CLI сделал на cobra. Команды: sniper keyword add, sniper run, sniper daemon. Работать с системой должно быть удобно из терминала.

К вечеру первого дня уже работало:

  • Добавление ключей в очередь
  • Скоринг через XMLRiver (частотность, конкуренция)
  • Базовая генерация статей через Claude
  • Запись в Git-репозиторий

Генерация пока без Quality Gate, просто чтобы убедиться, что pipeline собирается. Это важно: сначала заставь работать end-to-end, потом улучшай отдельные части.

День второй: автоматизация и мониторинг (22 коммита)

9 апреля. Меньше коммитов, но каждый тяжелее.

Утро ушло на SERP-парсер. Использовал colly с мобильным user-agent и прокси-ротацией. Парсер вытаскивает топ-5 результатов: URL, title, description. Потом лезет на каждую страницу и собирает структуру: H2-заголовки, примерный объём, наличие FAQ.

Зачем это нужно? Чтобы генератор знал, с чем конкурирует. “Напиши статью про X” это плохой промпт. “Напиши статью про X, конкуренты раскрывают темы A, B, C, средний объём 2000 слов, у двоих есть FAQ”, уже можно работать.

Quality Gate — ключевая часть. 18 проверок, разбитых на три группы:

Структура (40% веса):

  • Есть H1, H2, правильная иерархия
  • Минимум 1500 слов
  • Есть введение и заключение
  • Абзацы не слишком длинные

SEO (35% веса):

  • Ключ в title, H1, первом абзаце
  • Meta description 150-160 символов
  • Внутренние ссылки
  • Alt-теги для изображений

Текст (25% веса):

  • Нет AI-паттернов (проверка на типичные фразы)
  • Разнообразие длины предложений
  • Нет переспама ключами

Каждая проверка даёт 0 или 1, потом взвешенная сумма. CQS (Content Quality Score) ниже 0.85, статья уходит на retry. Два неудачных retry, ключ помечается как rejected, алерт в Telegram.

Вечером добавил мониторинг. GSC API для Google, Яндекс.Вебмастер API для Яндекса. Раз в сутки система забирает данные о позициях и сохраняет в базу. Если статья вылетела из индекса или упала на 20+ позиций, алерт.

День третий: оптимизация (33 коммита)

10 апреля. Последний рывок.

Первое: Go/No-Go checkpoint. Через 10 недель работы система должна ответить на вопрос: масштабировать или останавливать? Метрики:

  • Индексация ≥60%
  • Топ-30 ≥30% статей
  • Клики ≥50 за период
  • CQS first-pass ≥70%
  • Критических алертов = 0

Если 5 из 5: GO, масштабируем. 3-4: CONDITIONAL, разбираемся. Меньше 3: NO_GO, что-то фундаментально не так.

Второе: автоматический rescan ключей. GSC показывает, по каким запросам страницы получают показы, но не клики. Это кандидаты на новые статьи: интерес есть, контента нет. Система сама добавляет такие запросы в очередь.

Третье: auto-linker. Когда статей становится много, нужна перелинковка. Auto-linker находит в новых статьях упоминания тем, по которым уже есть контент, и добавляет ссылки. Команда sniper relink прогоняет все старые статьи.

Четвёртое: монетизация. Добавил компонент для РСЯ (Рекламная сеть Яндекса): блоки в статьях, конфиг через переменные окружения. Пока трафика нет, не подключаю, но инфраструктура готова.

SDD-методология: почему получилось быстро

97 коммитов за 3 дня, это много. Но я не писал код с нуля. Я работал по SDD (Spec-Driven Development).

Как это выглядит:

  1. Spec: описываю что должно получиться. User stories, acceptance criteria, edge cases. Это занимает час-два, но экономит дни.

  2. Design: архитектура, интерфейсы модулей, структуры данных. Ещё час.

  3. Tasks: декомпозиция на задачи по 15-30 минут каждая. “Task 1.3: Create Config Package”. Конкретно, измеримо.

  4. Code: пишу код по задачам. Claude Code видит spec и design, понимает контекст.

  5. Review: каждые 5-10 коммитов прогоняю code review. Нашёл 10 issues, исправил, продолжил.

Claude Code в этой схеме не “автопилот”, а второй разработчик. Я формулирую задачу, он пишет код, я ревьюю. Иногда он ошибается, я поправляю. Но 80% кода получается рабочим с первой попытки.

Без SDD я бы тратил время на “а что тут нужно?” прямо в процессе кодинга. С SDD context уже есть, задача понятна, пиши.

Итоговые метрики проекта

Три дня работы, вот что получилось:

МетрикаЗначение
Коммитов97
Файлов211
Строк Go-кода18 750
Пакетов16
Фаз разработки4
Проверок в Quality Gate18
E2E тестов4

Стек:

  • Go 1.21
  • SQLite (go-sqlite3)
  • Claude API для генерации
  • colly для парсинга
  • robfig/cron для планировщика
  • Astro + Cloudflare Pages для сайта

Система работает как daemon: запускаешь sniper daemon, он по расписанию сам обрабатывает очередь, публикует статьи, собирает метрики, шлёт отчёты. Моя задача: раз в неделю глянуть Telegram и добавить новых ключей, если нужно.

Что не вошло и планы

Проект не закончен. В бэклоге:

Vertex AI Imagen: генерация иллюстраций. Сейчас статьи выходят без картинок или с плейсхолдерами. Спека готова, код нет.

A/B тестирование заголовков: публиковать две версии title, смотреть CTR в GSC, выбирать победителя.

Мультиязычность: тот же контент на английском. Технически несложно, но нужен отдельный сайт.

Ограничения текущей версии:

  • Только информационные статьи, коммерческие не умеет
  • Нет автоматического подбора изображений
  • Quality Gate не ловит все AI-паттерны (работаю над этим)

Но главное работает. Ключ → статья → публикация → индексация → мониторинг. Цикл замкнут.


Автоматизация SEO это не магия и не “нажал кнопку, получил трафик”. Это инженерная задача: разбить процесс на шаги, каждый шаг формализовать, собрать в pipeline. Claude Code ускоряет кодинг, но думать за тебя не будет.

97 коммитов за 3 дня реально, если знаешь что строишь. Spec-first, потом код.