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 Gate | 18 проверок, CQS-скоринг |
| M5 Publisher | Запись в Git, пуш на сайт |
| M6 Pinger | IndexNow для быстрой индексации |
| 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).
Как это выглядит:
-
Spec: описываю что должно получиться. User stories, acceptance criteria, edge cases. Это занимает час-два, но экономит дни.
-
Design: архитектура, интерфейсы модулей, структуры данных. Ещё час.
-
Tasks: декомпозиция на задачи по 15-30 минут каждая. “Task 1.3: Create Config Package”. Конкретно, измеримо.
-
Code: пишу код по задачам. Claude Code видит spec и design, понимает контекст.
-
Review: каждые 5-10 коммитов прогоняю code review. Нашёл 10 issues, исправил, продолжил.
Claude Code в этой схеме не “автопилот”, а второй разработчик. Я формулирую задачу, он пишет код, я ревьюю. Иногда он ошибается, я поправляю. Но 80% кода получается рабочим с первой попытки.
Без SDD я бы тратил время на “а что тут нужно?” прямо в процессе кодинга. С SDD context уже есть, задача понятна, пиши.
Итоговые метрики проекта
Три дня работы, вот что получилось:
| Метрика | Значение |
|---|---|
| Коммитов | 97 |
| Файлов | 211 |
| Строк Go-кода | 18 750 |
| Пакетов | 16 |
| Фаз разработки | 4 |
| Проверок в Quality Gate | 18 |
| 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, потом код.