SEO Automation
0/10 модулей

SEO как агентская задача

Почему SEO — одна из лучших задач для автоматизации агентами

Масштаб против качества

SEO — это дисциплина, в которой работа делится на два принципиально разных типа: механические операции над данными (сбор позиций, аудит ссылок, генерация отчётов) и стратегические суждения (выбор приоритетов, формирование голоса бренда, оценка рисков). Первый тип идеально подходит для агентов — он структурирован, повторяем и масштабируем. Второй требует бизнес-контекста и человеческой экспертизы.

Цифры говорят сами за себя: агент проверяет 10 000 URL за несколько минут, тогда как опытный SEO-специалист потратит на ту же задачу несколько дней. При этом качество механической проверки у агента не ниже — он не устаёт, не пропускает строки в таблице, не делает опечаток при копировании данных.

Однако агент не заменяет SEO-экспертизу. Он усиливает её: берёт на себя рутинный объём, освобождая специалиста для задач, где важно понимание — стратегия, бренд, интерпретация аномалий, кризисный менеджмент. Это и есть ключевой принцип агентного SEO: агент — инструмент, а не замена эксперту.

Три зоны автоматизируемости

Не все SEO-задачи одинаково поддаются автоматизации. Полезно разделить их на три зоны:

Полная автоматизация

Агент выполняет задачу от начала до конца без участия человека.

  • Rank tracking (мониторинг позиций)
  • Keyword data fetch (сбор данных по ключевым словам)
  • Broken link checks (проверка битых ссылок)
  • Performance monitoring (мониторинг скорости/Core Web Vitals)
  • Sitemap генерация
  • Автоматическая отчётность

Augmentation (агент + человек)

Агент выполняет объём, человек принимает решения.

  • Написание контента (LLM генерирует → редактор проверяет)
  • Link prospecting (агент находит кандидатов, человек выбирает)
  • Технический аудит (агент находит проблемы, человек приоритизирует)

Остаётся человеку

  • SEO-стратегия — требует знания бизнес-целей, рынка, конкурентной позиции
  • Brand voice — тональность и стиль определяет команда бренда
  • Кризисный менеджмент — резкое падение трафика требует контекстного суждения
  • E-E-A-T сигналы — оценка авторитетности и экспертизы требует качественного анализа

График ниже показывает ROI автоматизации для восьми репрезентативных SEO-задач по шкале от 0 до 10:

Цветовое кодирование: ▮ Зелёный — высокий ROI, полная автоматизация;  ▮ Жёлтый — средний ROI, augmentation (агент + человек);  ▮ Красный — низкий ROI, задача остаётся человеку.

Типы SEO-агентов

Агентные системы в SEO делятся на несколько функциональных типов — каждый решает свой класс задач:

  • Data-collector — собирает данные из API (Search Console, Ahrefs, Semrush, PageSpeed Insights), парсит SERP, агрегирует метрики в таблицы. Базовый строительный блок большинства SEO-систем.
  • Auditor — сканирует сайт, выявляет технические проблемы (404, дубли, missing meta, медленные страницы), формирует приоритизированный список находок для SEO-специалиста.
  • Content-generator — использует LLM для написания черновиков, оптимизации title/description, генерации семантического ядра. Работает в паре с редактором.
  • Monitor — отслеживает изменения в реальном времени: падение позиций, появление новых конкурентов, изменения алгоритма. Отправляет алерты при аномалиях.
  • Orchestrator — координирует работу остальных агентов, управляет очередью задач, агрегирует результаты в единый отчёт. Самый сложный тип — требует надёжного планирования и обработки ошибок.
В реальных системах один агент может совмещать несколько ролей. Например, мониторинговый агент часто включает в себя data-collector как подмодуль.

Проверьте себя

Какая из задач лучше всего поддаётся полной агентной автоматизации?
A) Разработка SEO-стратегии на год
B) Мониторинг позиций по 10 000 ключевых слов
C) Создание фирменного стиля контента
D) Оценка E-E-A-T сигналов конкурентов
Агент усиливает SEO-специалиста по масштабу и скорости — стратегические решения остаются за человеком.

Агентский стек для SEO

Четыре слоя: от источников данных до готового результата

Архитектура стека

Любой SEO-агент состоит из четырёх слоёв. Каждый слой решает свою задачу — важно понимать их границы, чтобы правильно выбирать инструменты.

1. Data Sources

  • Google Search Console API — позиции, CTR, клики, импрессии по каждому запросу и странице. Единственный официальный источник данных от Google.
  • SERP APIs (SerpAPI, DataForSEO, Bright Data) — реальная выдача Google в реальном времени: топ-10, featured snippets, PAA.
  • Ahrefs / Semrush API — бэклинки, keyword difficulty, органический трафик конкурентов.
  • Веб-краулерыrequests + BeautifulSoup для статических сайтов, Scrapy для масштаба, Playwright для JS-сайтов (рендеринг в браузере).

2. Processing

  • Парсинг HTML — извлечение title, h1, meta description, canonical, structured data.
  • Нормализация данных — приведение URL к единому виду, очистка текста, удаление HTML-тегов.
  • Дедупликация — выявление дублей страниц и ключевых слов.
  • ХранениеSQLite для старта и прототипов, PostgreSQL для production-нагрузки.

3. Agent Logic

  • LLM — Claude API, GPT-4o, Ollama (локально). Мозг агента: анализирует, рассуждает, формирует рекомендации.
  • Промпт-инжиниринг — системный промпт с контекстом сайта, ролью и форматом вывода.
  • Tool use / function calling — агент сам вызывает GSC API, SERP API, краулер в нужный момент.
  • Память — сохранение предыдущего состояния (прошлые позиции, история изменений) для сравнения динамики.

4. Output

  • Отчёты — Markdown или JSON с конкретными рекомендациями и приоритетами.
  • Задачи в трекер — автоматическое создание тикетов в Jira или Linear.
  • CMS API — публикация оптимизированного контента напрямую в WordPress, Strapi, Contentful.
  • Алерты — уведомления в Telegram или Email при резком падении позиций.

Минимальный Python-агент

Вот скелет простейшего SEO-агента. В реальном проекте каждая функция расширяется, но структура остаётся той же:

import anthropic
import sqlite3
from datetime import datetime

# --- 1. Data Sources ---
def fetch_gsc_data(site_url: str, days: int = 28) -> list[dict]:
    """
    Возвращает топ-страницы из Google Search Console API.
    Требует: google-auth, google-api-python-client
    Scope: googleapis.com/auth/webmasters.readonly
    """
    # ... инициализация credentials ...
    # ... вызов searchanalytics.query(...) ...
    return [
        {"page": "/blog/seo-guide", "clicks": 320, "position": 4.2},
        # ...
    ]

def fetch_serp(keyword: str) -> dict:
    """
    Реальная выдача через SerpAPI / DataForSEO.
    """
    # import serpapi; результаты top-10
    return {"organic_results": [...]}

# --- 2. Processing ---
def normalize_pages(raw_data: list[dict]) -> list[dict]:
    """Дедупликация URL, нормализация позиций."""
    seen = set()
    result = []
    for row in raw_data:
        url = row["page"].rstrip("/")
        if url not in seen:
            seen.add(url)
            result.append({**row, "page": url})
    return result

def save_to_db(conn: sqlite3.Connection, rows: list[dict]) -> None:
    conn.execute("""
        CREATE TABLE IF NOT EXISTS pages
        (page TEXT, clicks INT, position REAL, date TEXT)
    """)
    for row in rows:
        conn.execute(
            "INSERT INTO pages VALUES (?,?,?,?)",
            (row["page"], row["clicks"], row["position"],
             datetime.today().isoformat())
        )
    conn.commit()

# --- 3. Agent Logic ---
client = anthropic.Anthropic()

def analyze_pages(pages: list[dict]) -> str:
    """LLM анализирует данные и генерирует рекомендации."""
    data_str = "\n".join(
        f"- {p['page']}: позиция {p['position']:.1f}, кликов {p['clicks']}"
        for p in pages[:20]  # топ-20
    )
    message = client.messages.create(
        model="claude-sonnet-4-6"  # актуальный ID: проверьте docs.anthropic.com,
        max_tokens=1024,
        system=(
            "Ты SEO-аналитик. Анализируй позиции страниц, "
            "выявляй возможности роста, давай конкретные приоритеты."
        ),
        messages=[{
            "role": "user",
            "content": f"Данные GSC за 28 дней:\n{data_str}\n\n"
                       "Выдай топ-5 рекомендаций в формате Markdown."
        }]
    )
    return message.content[0].text

# --- 4. Output ---
def save_report(text: str, path: str = "report.md") -> None:
    with open(path, "w", encoding="utf-8") as f:
        f.write(f"# SEO-отчёт {datetime.today().date()}\n\n{text}")
    print(f"Отчёт сохранён: {path}")

# --- Main ---
if __name__ == "__main__":
    conn = sqlite3.connect("seo.db")
    raw = fetch_gsc_data("example.com")
    pages = normalize_pages(raw)
    save_to_db(conn, pages)
    report = analyze_pages(pages)
    save_report(report)
Совет: Начните с этого скелета. Замените fetch_gsc_data на реальный вызов API, добавьте логирование — и у вас уже рабочий агент. Усложнять можно постепенно.

Выбор инструментов

SERP API: сравнение по цене и возможностям

SerpAPI

  • Free tier: 100 запросов/мес — только для прототипа
  • Платный план: от $50/мес за 5 000 запросов
  • Простой API, хорошая документация
  • Поддержка Google, Bing, YouTube, Maps

DataForSEO

  • Pay-as-you-go: от $0.0006 за запрос
  • Широкое покрытие: 50+ поисковых систем
  • Bulk API для большого объёма
  • Подходит для production с непредсказуемым трафиком

Bright Data

  • Специализация: сложные JS-сайты, обход защиты
  • Выше по цене, но надёжнее при масштабе
  • Подходит для агентов, работающих с динамическим контентом
Важно: Free tier любого SERP API (обычно 100 запросов/мес) годится только для проверки концепции. Для production-агента, обрабатывающего тысячи ключей, нужен платный план.

LLM: выбор модели для SEO-агента

Claude Sonnet — оптимальный выбор
Лучший баланс качества и цены для SEO-задач. $3/1M входных токенов, $15/1M выходных. Отлично понимает SEO-контекст, генерирует структурированные рекомендации.
GPT-4o — альтернатива от OpenAI
Сопоставимое качество с Claude Sonnet. $2.50/1M входных, $10/1M выходных. Хороший выбор если уже используете экосистему OpenAI.
Ollama — локальный запуск (бесплатно)
Бесплатно, данные не покидают сервер — важно при работе с закрытыми данными клиентов. Минус: медленнее, требует GPU, качество ниже облачных моделей.

Калькулятор стоимости агентского стека

При 10 000 запросов/мес полный стек обходится около $30/мес — меньше одного часа работы SEO-специалиста. Рассчитайте свой сценарий:

Вывод: Основные расходы — SERP API. LLM при разумном числе токенов на запрос обычно дешевле. Оптимизируйте промпты (меньше токенов) и кэшируйте SERP-результаты (меньше запросов) — стоимость снизится в 2–3 раза.

Проверьте себя

Агент должен получать данные о позициях сайта в выдаче Google. Какой официальный Google API для этого?
A) Google Analytics API
B) Google Search Console API
C) Google PageSpeed Insights API
D) Google Tag Manager API
Итог модуля: Минимальный стек: GSC API + один SERP API + Claude API = ~$30/мес. Этого достаточно для первого рабочего агента, который анализирует позиции, выявляет возможности роста и формирует конкретные рекомендации — автоматически, без участия человека.

Технический аудит сайта

Агент-аудитор: находить, приоритизировать, сообщать

Чеклист технического SEO

Агент-аудитор последовательно проверяет каждый из этих пунктов при обходе сайта:

  • robots.txt и sitemap.xml — файлы доступны, синтаксис корректен, sitemap зарегистрирован в GSC
  • Статус индексации — нет нежелательных noindex; canonical указывает на правильные URL
  • Broken links (4xx / 5xx) — все внутренние ссылки возвращают 2xx
  • Дублированный контент — одинаковые или почти одинаковые страницы без canonical приводят к каннибализации
  • Core Web Vitals — LCP ≤ 2.5 сек, CLS ≤ 0.1, INP ≤ 200 мс (прямые факторы ранжирования Google)
  • HTTPS и mixed content — весь контент загружается по HTTPS, нет HTTP-ресурсов на HTTPS-странице
  • Мобильная адаптация — viewport meta присутствует, контент не обрезается на экранах < 375 px
  • Structured Data / Schema.org — разметка валидна, охватывает ключевые типы сущностей
  • Alt тексты у изображений — каждое значимое изображение имеет описательный alt
  • Мета-тегиtitle 50–60 символов, description 120–158 символов, уникальны на каждой странице
  • Глубина вложенности страниц — важные страницы доступны не более чем за 3 клика от главной
  • Orphan pages — ни одна индексируемая страница не лишена входящих внутренних ссылок

Архитектура агента-аудитора

crawl(url)
  → fetch_page(url)          # скачать HTML, статус, заголовки
  → check_all(page): [findings]  # прогнать все 12+ проверок
  → prioritize(findings):    # priority = severity × traffic_impact
  → generate_report(findings)    # JSON / Markdown / HTML-отчёт
  → notify(report)           # Slack / email / Jira ticket

Инструменты краулера

requests + BeautifulSoup

Базовый краулер для статического HTML. Быстро, без зависимостей браузера.

Playwright

JS-рендеринг для SPA и React-сайтов. Видит то, что видит реальный браузер.

Screaming Frog API

Промышленный краулер для крупных сайтов при наличии лицензии.

Приоритизация находок

Сырой список из сотен находок бесполезен. Агент-аудитор применяет формулу:

priority = severity × traffic_impact
  • Severity (1–5): 5 = прямой фактор ранжирования Google, 1 = косметическая правка
  • Traffic Impact (1–5): 5 = затрагивает весь сайт, 1 = одна страница
  • Итоговый диапазон: 1–25

Примеры приоритетов

Находка Severity Traffic Impact Priority
LCP > 4 сек (Core Web Vitals fail) 5 5 25
Mixed content (HTTP на HTTPS) 4 5 20
Дубли страниц без canonical 4 4 16
Broken links (4xx) 3 3 9
Отсутствует H1 3 3 9
Alt тексты у изображений 2 2 4
Рубрика Severity (1–5):
  • 5 — прямой фактор ранжирования Google (Core Web Vitals, noindex, robots.txt block)
  • 4 — значимый технический сигнал (дублированный контент, HTTPS/mixed content)
  • 3 — умеренное влияние (broken links, отсутствие H1, meta description)
  • 2 — косметика с минимальным SEO-влиянием (alt текст, мелкие schema-ошибки)
  • 1 — не влияет на ранжирование (стилевые несоответствия, избыточные теги)
Аналогично Traffic Impact: 5 = весь сайт, 4 = раздел/категория, 3 = несколько страниц, 2 = одна страница, 1 = декоративный элемент.

Калькулятор приоритета находки

Калькулятор приоритета находки
Priority Score: —

Проверьте себя

Страница загружается 6 секунд (LCP = 6 сек). У неё 2 broken links и отсутствует H1. Что агент поставит в наивысший приоритет?
A) Добавить H1
B) Исправить broken links
C) Ускорить загрузку страницы
D) Добавить Structured Data
Агент-аудитор не просто находит проблемы — он ранжирует их по формуле severity × impact, чтобы команда занималась самым важным.

Keyword Intelligence

Кластеризация, intent mapping и поиск gap-возможностей

Классификация ключевых слов

Прежде чем агент приступит к работе с семантикой, ему нужна таксономия ключевых слов — единая система классификации по длине и по намерению. Без неё кластеризация не имеет смысла: агент не знает, каким страницам назначать найденные слова.

По длине запроса

Head keywords

1–2 слова. Высокий объём (>10 000 / мес), сложность KD > 70. Огромная конкуренция — нереалистичная цель для нового сайта.

python, SEO, купить телефон

Body keywords

3–4 слова. Средний объём и сложность. Хороший баланс, но всё ещё высокая конкуренция в большинстве ниш.

купить iPhone 15, курс по SEO

Long-tail keywords — sweet spot для нового сайта

5+ слов. Объём < 500 / мес, KD < 30. По отдельности дают немного трафика, но тысячи таких запросов в сумме перекрывают одно head-ключевое слово — и продвигаться по ним несравнимо легче.

как выбрать SEO-агентство для интернет-магазина в 2025

По намерению (Search Intent)

Search intent — это цель пользователя за запросом. Агент, неправильно определивший intent, назначит ключ на неправильный тип страницы и контент никогда не выйдет в топ — даже при высоком техническом качестве.

Информационный

Пользователь хочет узнать.

"как работает SEO"
"что такое PageRank"

→ статьи, гайды, FAQ

Навигационный

Пользователь ищет конкретный сайт.

"ahrefs войти"
"google search console"

→ брендовые страницы

Коммерческий

Пользователь сравнивает варианты.

"лучший SEO-инструмент"
"ahrefs vs semrush"

→ обзоры, сравнительные таблицы

Транзакционный

Пользователь готов купить.

"купить semrush"
"цена ahrefs подписка"

→ продуктовые страницы, PLP

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

Агент собирает тысячи ключевых слов, но без группировки это просто шум. Кластеризация превращает плоский список в карту будущей структуры сайта: каждый кластер — одна страница (или раздел).

Традиционный N-gram overlap

Объединяет ключи, которые содержат одинаковые слова. Быстро, без ML, работает на любом железе.

Минус: не понимает синонимы. «Ноутбук» и «лэптоп» попадут в разные кластеры.

Embeddings + k-means

sentence-transformers преобразует каждый запрос в вектор → cosine similarity → k-means кластеризация по семантической близости.

Плюс: ловит синонимы и перефразировки. Минус: требует GPU / облачного API.

Выход агента после кластеризации — карта кластеров с предложением по структуре сайта: «Кластер "покупка iPhone" (42 ключа, avg KD 35) → создать раздел /shop/iphone/ с 1 категорийной и 4 продуктовыми страницами».

Keyword Gap Analysis

Gap Analysis — это поиск ключевых слов, по которым конкурент уже ранжируется, а вы — нет. Это готовые к захвату позиции: спрос подтверждён, релевантность доказана конкурентом, ваша задача — создать лучшую страницу.

Алгоритм агента

  1. Fetch доменных ключевых слов конкурента через Ahrefs / Semrush API
  2. Fetch ваших доменных ключевых слов
  3. Set difference: competitor_kw - your_kw → список gap-ключей
  4. Сортировка по формуле приоритета: Volume / (KD + 1)
  5. Фильтрация по matching intent — подбор нужного типа страниц
  6. Вывод топ-N в отчёт с рекомендациями по контенту

«Sweet spot» в gap-анализе — ключи с высоким Volume + низким KD + matching intent под существующие страницы или страницы, которые легко создать. Агент умеет автоматически выделять этот квадрант.

Пример Python-псевдокода:

# gap_analysis.py — псевдокод агентного Gap Analysis

import requests

AHREFS_TOKEN = "..."

def fetch_domain_keywords(domain: str) -> set[str]:
    """Возвращает множество ключевых слов домена через Ahrefs API."""
    # GET api.ahrefs.com/v3/site-explorer/organic-keywords
    resp = requests.get(
        AHREFS_TOKEN,  # endpoint вынесен в конфиг
        params={"target": domain, "limit": 10000},
        headers={"Authorization": f"Bearer {AHREFS_TOKEN}"}
    )
    resp.raise_for_status()
    return {row["keyword"] for row in resp.json()["keywords"]}

def fetch_kw_metrics(keywords: list[str]) -> dict:
    """Получает Volume и KD для списка ключевых слов."""
    # POST api.ahrefs.com/v3/keywords-explorer/overview
    resp = requests.post(
        AHREFS_TOKEN,  # endpoint вынесен в конфиг
        json={"keywords": keywords},
        headers={"Authorization": f"Bearer {AHREFS_TOKEN}"}
    )
    resp.raise_for_status()
    return {r["keyword"]: r for r in resp.json()["keywords"]}

def gap_analysis(your_domain: str, competitor_domain: str, top_n: int = 50):
    your_kws     = fetch_domain_keywords(your_domain)
    competitor_kws = fetch_domain_keywords(competitor_domain)

    gap_kws = list(competitor_kws - your_kws)          # разница множеств
    metrics  = fetch_kw_metrics(gap_kws)

    # Сортировка: высокий объём, низкая сложность — сначала
    ranked = sorted(
        gap_kws,
        key=lambda kw: metrics.get(kw, {}).get("volume", 0)
                       / (metrics.get(kw, {}).get("kd", 100) + 1),
        reverse=True
    )

    return [
        {
            "keyword": kw,
            "volume":  metrics[kw]["volume"],
            "kd":      metrics[kw]["kd"],
            "intent":  metrics[kw].get("intent", "unknown"),
            "score":   metrics[kw]["volume"] / (metrics[kw]["kd"] + 1),
        }
        for kw in ranked[:top_n]
        if kw in metrics
    ]

if __name__ == "__main__":
    results = gap_analysis("yoursite.com", "competitor.com", top_n=50)
    for r in results:
        print(f"{r['score']:6.1f}  Vol={r['volume']:5d}  KD={r['kd']:2d}  "
              f"[{r['intent'][:4]}]  {r['keyword']}")

Карта ключевых слов

Scatter-карта «Volume vs Difficulty» — главный визуальный инструмент приоритизации. Каждая точка — ключевое слово; пунктирные линии делят пространство на квадранты.

Sweet spot — правый нижний квадрант (правее пунктирной вертикали, ниже горизонтали): высокий объём + низкая сложность. Зелёные точки — ваши gap-возможности: конкурент уже ранжируется по ним, KD невысок, и агент рекомендует создать страницы под эти ключи в первую очередь.

Проверьте себя

Запросы «купить iPhone 15 Pro Max», «цена iPhone 15 Pro Max», «где купить iPhone 15 Pro Max дешевле» — какой у них search intent?

  • A) Информационный
  • B) Навигационный
  • C) Транзакционный / коммерческий
  • D) Образовательный
Агент превращает тысячи ключевых слов в actionable карту: какой intent → какая страница, и где зияет gap у конкурентов.

Контентный агент

От ключевого слова до готовой SEO-статьи за один пайплайн

6-этапный пайплайн

Контентный агент не пишет статью за один вызов — он проходит шесть последовательных этапов, каждый из которых сужает контекст и повышает качество результата.

1 Keyword Input

Целевое ключевое слово, кластер смежных запросов и search intent — информационный, транзакционный или навигационный.

2 Brief Generation

Агент создаёт бриф: тема, целевая аудитория, структура H1/H2/H3, тональность, анализ конкурентов в топ-10.

3 Outline

Агент генерирует полное оглавление и ключевые тезисы каждого раздела на основе брифа.

4 Draft

Агент пишет полный текст статьи, строго следуя утверждённому outline. Каждый раздел — отдельный вызов или один большой промпт.

5 SEO Check

Агент проверяет: ключ в H1 и meta title, плотность 1–2%, длина title 50–60 симв., meta description 120–158 симв.

6 Review Gate

Человек проверяет факты, соответствие бренд-голосу и публикует. Единственный обязательный ручной шаг.

System Prompt: что внутри

Качество контентного агента на 80% определяется системным промптом. Вот обязательные компоненты:

  • Целевое ключевое слово и LSI-слова — явным списком, чтобы агент знал, какие варианты использовать естественно.
  • Search intent — что именно хочет пользователь: узнать (информационный), купить (транзакционный) или найти сайт (навигационный).
  • Требуемая структура — H1 с ключевым словом, 4–5 H2, обязательный вывод/CTA.
  • Ограничения-запреты — НЕ выдумывать статистику без источников, НЕ использовать ключ чаще 2% от объёма текста.
  • Примерная длина — 1000–1500 слов для информационного контента, 500–800 для транзакционного.

Шаблон системного промпта (псевдокод):

Ты SEO-копирайтер. Напиши статью строго по параметрам.

ЦЕЛЕВОЙ ЗАПРОС: {target_keyword}
LSI-СЛОВА: {lsi_list}
INTENT: {intent_type}  # informational | transactional

СТРУКТУРА:
  H1: обязательно содержит {target_keyword}
  H2 x 4-5: {h2_list}
  Заключение: краткое резюме + призыв к действию

ОГРАНИЧЕНИЯ:
  - НЕ придумывать статистику без ссылки на источник
  - Плотность ключевого слова: 1-2% от текста
  - Длина: {min_words}-{max_words} слов

META:
  title: 50-60 символов, содержит {target_keyword}
  description: 120-158 символов, призыв кликнуть

АУДИТОРИЯ: {audience_description}
ТОНАЛЬНОСТЬ: {tone}  # formal | conversational | expert

Когда агент, когда редактор

Агент справится сам

  • Long-tail контент с низкой конкуренцией
  • Programmatic SEO — тысячи однотипных страниц (города, товары, категории)
  • Технические описания с чёткой структурой
  • FAQ-страницы и глоссарии

Редактор обязателен

  • YMYL-контент (здоровье, финансы, юридическое)
  • E-E-A-T материалы с личным опытом автора
  • Экспертные статьи со свежими данными
  • Бренд-голос с уникальной тональностью
Запрещённые практики: keyword stuffing (Google Panda карает снижением позиций), AI-спам без ценности для читателя, фактические галлюцинации без верификации.

Стоимость контент-пайплайна

Рассчитайте реальную стоимость производства контента при вашем масштабе.

Ключевой инсайт: при дефолтных значениях (100 статей/мес) LLM стоит всего $0.39/мес, а редактор — $750/мес. LLM буквально в 1900 раз дешевле. Главная статья расходов — человеческое время проверки, а не токены.

Проверь себя

Что нельзя включать в system prompt контентного агента для SEO-статьи о смартфонах?

A) Целевое ключевое слово и семантические вариации
B) Требуемую структуру документа (H1 / H2 / заключение)
C) Таблицу биржевых котировок S&P500 за 5 лет
D) Целевой intent пользователя (информационный / транзакционный)
При 100 статьях/мес LLM стоит $0.39 — всё остальное это редакторский труд. Автоматизация меняет не стоимость текста, а скорость его производства.

SERP-мониторинг и ссылочный профиль

Агент следит за позициями и backlinks — и бьёт тревогу первым

SERP-мониторинг

Поисковые позиции меняются каждый день. Мониторить их вручную — значит всегда узнавать об изменениях с опозданием. Агент-монитор решает это системно.

Что отслеживать

Позиции ключевых слов

Ранжирование в органике — базовый сигнал. Отслеживать ежедневно по приоритетным ключам.

CTR из GSC

Google Search Console даёт реальные клики и impressions. Позиция стабильна, а CTR падает? Заголовок или сниппет требует доработки.

SERP-фичи

Featured Snippet, People Also Ask, Local Pack — занимают место над органикой. Потеря сниппета = падение CTR даже при той же позиции.

Правило скользящего среднего. Не реагируйте на каждое колебание позиции. Смотрите на 3–7 дневное скользящее среднее. Дневной шум — норма; устойчивое движение тренда — сигнал.

Пороги аномалий

  • Падение > 20% трафика за день — немедленная диагностика: algo update или техническая проблема
  • Падение позиции > 10 мест за день по одному ключу — проверить конкурентов и свежий контент на странице
  • Падение по всем ключам одновременно — скорее всего robots.txt / noindex или Google algo update

Волатильность рынка в целом отслеживают инструменты MozCast и SERPoscope — если их индексы высокие, "штормит" не только ваш сайт.

Агент-монитор: псевдокод

# Агент-монитор позиций (cron: каждые 24ч)

def serp_monitor_agent(keywords: list, threshold_drop: int = 5):
    state = load_state("serp_positions.json")   # предыдущие позиции
    alerts = []

    for keyword in keywords:
        current_pos = fetch_position(keyword)   # GSC API / DataForSEO
        prev_pos    = state.get(keyword, current_pos)

        drop = current_pos - prev_pos           # положительное = хуже

        if drop > threshold_drop:
            alerts.append({
                "keyword":  keyword,
                "prev":     prev_pos,
                "current":  current_pos,
                "drop":     drop,
                "severity": "HIGH" if drop > 15 else "MEDIUM"
            })

        state[keyword] = current_pos            # обновить состояние

    save_state("serp_positions.json", state)

    if alerts:
        # Дополнительный контекст: проверить MozCast
        volatility = fetch_mozcast_score()
        context = "algo-update likely" if volatility > 80 else "site-specific issue"

        send_alert(alerts, context=context)

    return alerts

Динамика позиций за 30 дней

На графике ниже: чем ниже линия — тем выше позиция в поиске (позиция 1 лучше позиции 25).

Что видно на графике: «Главный ключ» упал с позиции ~3 до позиции ~22 на днях 10–15 — вероятный algo update. Затем восстановился. «Растущий ключ» стабильно движется вверх с позиции 25 до позиции 2 — результат планомерной SEO-работы. Пунктирная линия = граница Топ-10.

Ссылочный профиль

Backlinks — один из ключевых факторов ранжирования Google с момента появления PageRank. Ссылки передают "авторитет" (link equity) от одного домена к другому.

Метрики качества ссылки

DR
Domain Rating (Ahrefs)
0–100, логарифмическая
DA
Domain Authority (Moz)
0–100, логарифмическая
TF
Trust Flow (Majestic)
качество ссылочного пути
RD
Referring Domains
уникальные домены-доноры

Токсичные ссылки и риски

Google Penguin / Manual Action. Массовые ссылки со спам-директорий, платные ссылочные схемы и PBN (Private Blog Networks) могут получить ручное наказание от Google или попасть под алгоритм Penguin. Результат: обвал позиций, который не исправляется контентом.

Признаки токсичных ссылок:

  • Домены с DR < 5 и нерелевантной тематикой
  • Один и тот же anchor text в сотнях ссылок (over-optimized anchors)
  • Ссылки с форумных подписей, комментариев, каталогов низкого качества
  • Внезапный прирост сотен ссылок за короткий период (ссылочный взрыв)

Link Gap Analysis

Link Gap — домены, с которых ссылаются на конкурентов, но не на вас. Это готовый список перспектив для получения ссылок.

Логика агента-аналитика ссылочного профиля
# Агент: анализ ссылочного профиля + link gap

def link_profile_agent(my_domain: str, competitors: list):

    # 1. Получить backlinks через API (Ahrefs / Semrush)
    my_backlinks  = fetch_backlinks(my_domain)
    comp_backlinks = {c: fetch_backlinks(c) for c in competitors}

    # 2. Скорить домены-доноры
    scored = []
    for link in my_backlinks:
        score = compute_link_score(
            dr=link["domain_rating"],
            tf=link["trust_flow"],
            relevance=link["topical_relevance"]   # 0..1
        )
        scored.append({**link, "score": score})

    # 3. Фильтровать токсичные (score < 0.2)
    toxic    = [l for l in scored if l["score"] < 0.2]
    healthy  = [l for l in scored if l["score"] >= 0.2]

    if toxic:
        build_disavow_file(toxic)   # -> disavow.txt для Google

    # 4. Link Gap: домены конкурентов, которых нет у нас
    my_domains   = {l["domain"] for l in healthy}
    gap_domains  = set()
    for comp, links in comp_backlinks.items():
        for link in links:
            if link["domain"] not in my_domains:
                gap_domains.add(link["domain"])

    # 5. Приоритизировать проспекты по DR
    prospects = sorted(gap_domains,
                       key=lambda d: get_dr(d), reverse=True)[:50]

    return {
        "healthy_links": len(healthy),
        "toxic_links":   len(toxic),
        "prospects":     prospects
    }
  
Принцип нескольких источников. Один сигнал — не истина. Падение трафика в Analytics нужно сопоставить с данными GSC, индексом MozCast и состоянием ссылочного профиля. Только совокупность данных даёт достоверный диагноз.

Проверь себя

Сайт потерял 45% органического трафика за один день, позиции упали по всем ключевым словам сразу. Что проверить первым?
A) Количество токсичных обратных ссылок
B) Обновление алгоритма Google и индексацию сайта
C) Активность конкурентов
D) Social media упоминания
Агент-монитор выявляет аномалии за секунды — человек узнаёт об algo update не через неделю, а в тот же день. Ссылочный агент непрерывно чистит токсичный профиль и строит список перспектив для роста авторитета домена.

Оркестрация SEO-пайплайнов

Как собрать все воркеры в единую систему с надёжными триггерами

Паттерн оркестратор-воркеры

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

AuditorWorker
Технический аудит страниц, поиск ошибок, приоритизация
KeywordWorker
Сбор, кластеризация ключевых слов, gap-анализ
ContentWorker
Генерация briefs, outline, draft, SEO-проверка
MonitorWorker
SERP + backlink мониторинг, алерты, аномалии

Параллельный запуск воркеров существенно сокращает общее время выполнения: пока KeywordWorker собирает данные, AuditorWorker краулит сайт.

class SEOOrchestrator:
    def route_task(self, task_type, complexity):
        """Выбор модели по типу задачи (интеграция с M10)."""
        if complexity == 'high' or task_type in ('strategy', 'eeat', 'competitive'):
            return 'claude-opus-4'       # frontier — глубокий анализ
        elif task_type in ('content', 'audit', 'monitor'):
            return 'claude-sonnet-4-6'   # workhorse — контент и аудит
        else:
            return 'claude-haiku-4-5'    # bulk — массовая обработка

    async def run(self, task: SEOTask):
        # Декомпозиция задачи
        subtasks = self.decompose(task)

        # Параллельный запуск воркеров
        results = await asyncio.gather(
            self.auditor.run(subtasks.audit),
            self.keyword.run(subtasks.keywords),
            self.monitor.run(subtasks.serp),
        )

        # Агрегация и принятие решений
        plan = self.aggregate(results)

        # HITL-проверка перед необратимыми действиями
        if plan.requires_human_approval:
            await self.request_approval(plan)
        else:
            await self.execute(plan)

Типы триггеров

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

Cron / Schedule
  • Ежедневный SERP-мониторинг (06:00)
  • Еженедельный аудит (понедельник)
  • Ежемесячный сводный отчёт
0 6 * * * serp_monitor.py
Event-driven
  • Новая страница опубликована → keyword + audit check
  • Позиции упали на 20% → алерт + причинный анализ
  • Конкурент вышел в топ-3 → пересмотр контента
Manual
  • По запросу менеджера — разовый аудит
  • Срочный анализ конкурента
  • Проверка перед запуском рекламной кампании

Интерактивный пайплайн

Нажмите на любой блок, чтобы узнать подробнее о его роли в системе.

Trigger
Orchestrator
AuditorWorker
KeywordWorker
ContentWorker
MonitorWorker
⚠ HITL
Output
Нажмите на блок, чтобы увидеть описание его роли в пайплайне.

Human-in-the-loop: когда обязателен

Автоматизация не означает полное отсутствие человека. Есть сценарии, где HITL обязателен — когда действие необратимо, репутационно рискованно или может уронить сайт.

Никогда не публикуйте контент и не меняйте robots.txt автоматически без подтверждения. Ошибка в robots.txt может полностью закрыть сайт от индексации за минуты.
Публикация контента
Необратимое публичное действие. Контент может нарушить бренд-голос или содержать фактические ошибки.
Outreach к донорам
Репутационный риск. Неверное письмо невозможно «отозвать», оно остаётся во входящих партнёра.
robots.txt / редиректы
Одна опечатка может заблокировать весь сайт от индексации или сломать цепочку редиректов.
Низкий confidence агента
Если агент не уверен в решении (confidence < порога), лучше спросить человека, чем ошибиться.
Правило большого пальца: если действие трудно откатить или имеет внешние последствия — добавьте HITL-шаг. Всё остальное — кандидат на автоматизацию.

Обработка ошибок и управление состоянием

Устойчивость к ошибкам

Retry + exponential backoff
delay = base * (2 ** attempt)
# 1s → 2s → 4s → 8s
# для API 429 / 503
Dead letter queue
Задачи, провалившиеся все попытки — сохраняем в очередь «мёртвых писем» для ручного разбора, не теряем.
Graceful degradation
SERP API упал → пропустить итерацию, записать в лог, продолжить работу. Система не падает из-за одного компонента.

Что хранить между запусками (State)

Пайплайн должен «помнить» предыдущие запуски — без этого невозможно обнаружить аномалии и тренды.

Что хранить Формат Зачем
Позиции по ключевым словам SQLite / JSON Тренды, аномалии, алерты на падение
Список проиндексированных URL SQLite Инкрементальный краулинг, дедупликация
Результаты аудита JSON Сравнение «до/после», отслеживание прогресса
Статус задач / DLQ SQLite Retry-логика, ручной разбор ошибок

Проверь себя

В каком случае SEO-пайплайн обязательно должен запросить подтверждение человека?
A) При ежедневном сборе позиций из GSC API
B) При автоматической публикации статьи на сайт
C) При генерации keyword-отчёта во внутренний файл
D) При кластеризации ключевых слов
Оркестратор — дирижёр системы: он не знает деталей краулинга или генерации, но знает, кому что делегировать и когда позвать человека.

Оценка и итерация

KPI, anti-patterns и путь от курса к первому рабочему агенту

KPI для SEO-агентов

Метрики делятся на два уровня: операционные (система работает правильно) и бизнес (система приносит пользу).

Операционные KPI

KPI Формула Цель Источник
Coverage % страниц аудировано ≥ 95% Краулер
Error Rate # ошибок / # запусков < 2% Логи
Latency Время воркфлоу < 30 мин Оркестратор
Cost/Action $ / единица работы Тренд вниз API биллинг

Бизнес KPI

KPI Формула Цель
Organic Traffic Growth % рост MoM ≥ 5% MoM
Avg Position Improvement Δ avg_pos Тренд вниз
Content Conversion Rate Конверсии / визиты с SEO ≥ 2%
Indexed Pages Growth # проиндексированных страниц Тренд вверх

A/B тесты контента

Что тестировать: meta title, H1, вводный абзац, CTA.

Процесс:

  1. Агент генерирует вариант B (альтернативный title / H1).
  2. Публикуешь рядом или по расписанию — два URL или ротация.
  3. Ждёшь 2–4 недели, GSC собирает CTR по каждому варианту.
  4. Агент мониторит CTR → обнаруживает победителя (ΔCTR > порог) → рекомендует (или автоматически применяет) лучший вариант.
Агент автоматизирует весь цикл: генерация вариантов title → мониторинг CTR → winner detection. Это превращает A/B в непрерывный self-improving loop без ручного труда.

Anti-patterns — что убивает систему

Самый опасный: Missing HITL. Агент самостоятельно меняет robots.txt или canonical-теги — сайт может полностью выпасть из индекса за часы. Любые необратимые действия с индексированием — только через Human-in-the-Loop.
  • Hallucinated facts — агент выдумывает статистику и цитаты. Google E-E-A-T штрафует сайты с недостоверным контентом → потеря доверия и позиций.
  • Keyword stuffing — избыточное насыщение ключами. Google Panda filter → понижение всего сайта в выдаче.
  • Duplicate content — агент генерирует похожие статьи без проверки на уникальность. Каннибализация — оба URL теряют позиции, Google не знает, какой ранжировать.
  • Blind scaling — публикация 500 статей без контроля качества. Массовый low-quality контент → возможный Manual Action от Google.
  • Missing HITL — агент меняет robots.txt / canonical без проверки человека. Сайт выпадает из индекса. Необратимые действия — только через подтверждение.

ROI SEO-автоматизации

Рассчитай, сколько экономит агентская система по сравнению с ручным SEO.

Калькулятор использует упрощённую модель: ROI = (экономия − стоимость системы) / стоимость системы. Реальные расчёты должны учитывать capex на разработку, время внедрения и косвенные выгоды (качество, скорость реакции). Используйте как ориентир, а не точный финансовый прогноз.

5 шагов к первому рабочему агенту

  1. Выбрать ОДНУ задачу.
    Лучший старт — rank monitoring: нет необратимых действий, быстрый feedback, легко проверить результат вручную.
  2. Собрать минимальный стек.
    GSC API + Claude API — меньше $5/мес для старта. Никаких сложных инфраструктур на первом этапе.
  3. Запустить на 50–100 ключевых словах.
    Вручную проверить первые результаты. Убедиться, что данные корректны, логика правильная, нет hallucinations.
  4. Добавить второй воркер.
    Аудит страниц или keyword gap analysis — задачи с высоким ROI и низким риском.
  5. Итерировать по данным.
    Что работает в топ-15% → изучить паттерн → обновить промпты и топик-листы → масштабировать. Повторять каждые 4–6 недель.

Проверь себя

Контентный агент публикует 200 статей/мес. За 3 месяца: 90 статей (15%) дали трафик > 100 визитов/мес, остальные 510 статей — почти 0 трафика. Что делать?
A) Удвоить объём — 400 статей/мес
B) Проанализировать топ-15% и перенастроить агента на аналогичные темы
C) Полностью перейти на ручной копирайтинг
D) Немедленно удалить 570 неуспешных статей
Итерация важнее первого запуска: агент с данными за 3 месяца умнее агента, запущенного 3 месяца назад. Отслеживай KPI, чини anti-patterns, масштабируй то, что работает.

AI-поиск и GEO

Как изменить SEO-стратегию, когда поиск уходит в AI-ответы

Что происходит с поиском

За 2024–2026 годы поисковая выдача претерпела структурный сдвиг: AI-сгенерированный ответ появляется над органическими результатами, и пользователь всё реже доходит до синих ссылок.

Google AI Overviews

Появляются в 40–60% информационных запросов. Пользователь получает сводку прямо в SERP и зачастую не кликает дальше.

Zero-click searches

Featured Snippet, PAA (People Also Ask) и AI Overview дают ответ без перехода. Органический клик по информационному запросу стал редкостью.

Альтернативные AI-поисковики

Perplexity — цитирует источники. ChatGPT Search, Bing Copilot — самостоятельные поисковые поверхности с многомиллионной аудиторией.

Тренд однозначный: для информационных запросов («как», «что такое», «почему») органический клик становится исключением, а не правилом. Сайты, не адаптировавшие стратегию, теряют 30–60% трафика при появлении AI Overview.

GEO — новый термин, новая логика

GEO (Generative Engine Optimization) — оптимизация не под клик пользователя, а под цитирование AI-движком. Цель: стать источником, который Perplexity, Google AI Overview или ChatGPT Search включит в свой ответ.

Как AI выбирает источники

  • E-E-A-T (Experience / Expertise / Authoritativeness / Trustworthiness) — Google и LLM-движки выше доверяют авторитетным доменам с явными экспертами.
  • Структурированные данные — FAQ schema, HowTo schema, Article schema помогают парсеру AI вычленить структуру.
  • Цитируемость — сколько других авторитетных ресурсов ссылается на страницу.
  • Авторитетность домена — Domain Rating / Domain Authority как прокси надёжности.

Форматы контента, которые AI предпочитает

Чёткие определения
В первом абзаце — ответ на запрос.
Нумерованные списки
AI легко цитирует шаги и перечни.
FAQ-структура
Вопрос–ответ — идеальный формат для snippet.
Данные с источниками
Статистика с указанием первоисточника повышает trust-score.

Вероятность AI Overview по типу запроса

Данные ориентировочные (BrightEdge, 2025): информационные ~47% в среднем, healthcare/finance до 77%; транзакционные < 10%. Транзакционные и навигационные запросы — «безопасная зона» традиционного SEO.

Стратегия по типам запросов

Не все запросы одинаково подвержены AI Overviews. Правильная тактика зависит от intent:

Информационный
«как выбрать», «что такое», «почему»

AIO-риск: высокий (~47% в среднем, до 77% в нише). Стратегия: GEO — FAQ-структура, structured data, чёткие определения, авторитетность.

Образовательный
«курс по», «руководство», «обучение»

AIO-риск: средний (40–50%). Стратегия: гибридная — GEO + традиционный SEO.

Коммерческий
«лучший», «сравнение», «рейтинг»

AIO-риск: низкий (15–20%). Стратегия: традиционное SEO, акцент на конверсию.

Транзакционный / Навигационный
«купить», «цена», «[бренд] сайт»

AIO-риск: минимальный (5–10%). Стратегия: традиционное SEO работает в полную силу.

Вывод для контент-агента: переориентировать генерацию на транзакционный и коммерческий контент. Информационные статьи переписывать под цитирование: FAQ schema, авторские экспертные данные, ссылки на первоисточники.

Агент мониторинга AI Overviews

Задача агента — отслеживать, появился ли AI Overview по вашим ключевым словам, и менять контент-стратегию по алерту.

Инструменты

  • DataForSEO SERP API — поддерживает ai_overview в объекте ответа (поле items_types[]).
  • SerpAPI / Bright Data — альтернативы с аналогичным детектированием AIO.
  • Хранилище состояний — SQLite/Redis: фиксировать дату первого появления AIO и динамику.

Псевдокод агента

# AIO Monitor Agent — псевдокод
# Запуск: cron каждые 24 ч (или webhook по изменению позиций)

import serp_api, db, alerts

def run_aio_monitor(keywords: list[str]):
    for kw in keywords:
        result = serp_api.fetch(kw, features=["ai_overview", "featured_snippet"])

        aio_present = result.has("ai_overview")
        prev_state  = db.get_aio_state(kw)          # True/False/None

        if aio_present and not prev_state:
            # AIO появился впервые
            db.set_aio_state(kw, True, date=today())
            alerts.send(
                channel="slack",
                msg=f"[AIO ALERT] AI Overview появился для '{kw}'. "
                    f"Текущий URL в топ-1: {result.top_organic_url}. "
                    f"Рекомендация: переключить стратегию на GEO."
            )
            content_pipeline.schedule_geo_rewrite(kw)

        elif not aio_present and prev_state:
            # AIO исчез — возврат к традиционному SEO
            db.set_aio_state(kw, False, date=today())
            alerts.send(
                channel="slack",
                msg=f"[AIO GONE] AI Overview исчез для '{kw}'. "
                    f"Традиционный SEO снова приоритетен."
            )

        # Логировать позицию в органике независимо от AIO
        db.log_rank(kw, result.organic_position, result.url)
Агент не требует браузерной автоматизации — SERP API возвращает структурированный JSON с флагом ai_overview. Стоимость: ~$0.002–0.005 за запрос. Для 500 ключевых слов в день — менее $2.5/день.

Обновление контент-пайплайна для GEO

Мост к модулю M5: добавляем GEO-слой поверх существующего пайплайна генерации контента.

1. Изменения в system prompt контент-агента

# Добавить в SYSTEM PROMPT контент-агента (GEO-режим): CONTENT_RULES_GEO = """ - Первый абзац = чёткое определение: ответь на запрос в 1–2 предложениях. - Добавь раздел FAQ (минимум 4 вопроса-ответа) в конце статьи. - Для каждого утверждения с цифрами — указывай первоисточник в скобках. - Используй нумерованные списки для шагов и инструкций. - Автор статьи должен быть указан с credentials (bio блок). - Избегай разбавленных введений — AI выбирает плотный, фактический контент. """

2. Добавить structured data

# Генерация FAQ schema (добавить в SEO Check шаг пайплайна)

def generate_faq_schema(faq_items: list[dict]) -> str:
    """
    faq_items: [{"question": "...", "answer": "..."}, ...]
    Возвращает JSON-LD строку для вставки в <head>.
    """
    schema = {
        "@context": "schema.org",
        "@type": "FAQPage",
        "mainEntity": [
            {
                "@type": "Question",
                "name": item["question"],
                "acceptedAnswer": {
                    "@type": "Answer",
                    "text": item["answer"]
                }
            }
            for item in faq_items
        ]
    }
    return f'<script type="application/ld+json">{json.dumps(schema)}</script>'

# Аналогично: HowTo schema для пошаговых инструкций,
# Article schema с author.name + author.url для E-E-A-T

3. Intent detection как шаг SEO Check

# Добавить в SEO Check Agent перед публикацией:

def check_aio_risk(keyword: str, content: str) -> dict:
    intent = classify_intent(keyword)          # 'informational'|'commercial'|...
    aio_prob = AIO_RISK_MAP.get(intent, 0.5)   # из базы данных мониторинга

    if aio_prob > 0.4:
        geo_score = score_geo_readiness(content)
        # geo_score: 0..1 (наличие FAQ, определений, структ. данных, авторства)
        if geo_score < 0.6:
            return {
                "status": "warn",
                "msg": f"AIO-риск {aio_prob:.0%}, GEO-готовность {geo_score:.0%}. "
                       "Рекомендуется: добавить FAQ, structured data, улучшить определение."
            }
    return {"status": "ok", "aio_prob": aio_prob}
Итоговый пайплайн (M5 + GEO-слой): Intent Detection → Content Generation (GEO prompt) → SEO Check (AIO-риск + GEO-score) → Schema Injection → Publish. При AIO-риске >40% — автоматически добавляем FAQ schema и GEO-правила.

Тест: проверь понимание

Ваш сайт занимает позицию #1 по информационному запросу «как выбрать CRM». Google добавил AI Overview. Трафик упал на 55%. Что делать?
A) Ждать — позиция #1, алгоритм не изменился
B) Оптимизировать под GEO: добавить FAQ-структуру, чёткие определения, structured data
C) Переключиться на рекламу
D) Создать ещё 10 аналогичных статей
Главный вывод: AIO не убивает SEO — он разделяет его на две задачи: для транзакционных запросов работает прежняя логика, для информационных нужен GEO. Агент-монитор отслеживает, когда менять стратегию.

Frontier Models в SEO — правильный роутинг

Sonnet делает 95% работы. Opus нужен реже, чем вы думаете.

Мы подошли к финальному модулю курса. Прежде чем перейти к практике — важная коррекция ментальной модели, без которой вы будете тратить деньги на Opus там, где Sonnet справляется отлично.

Мета-точка: весь этот курс из 10 модулей — архитектура, исследование, код, стратегия, конкурентный анализ, GEO-оптимизация — был создан с помощью Claude Sonnet. Не Opus. Если Sonnet справился с разработкой полного учебного курса по SEO-автоматизации, он справится и с вашим конкурентным анализом.

1. Переосмысление «умных» задач

Большинство SEO-специалистов наследуют устаревшую ментальную модель уровней моделей. Вот где она ломается:

Неправильно

Haiku = дёшево
Sonnet = средний уровень
Opus = умный, для сложных задач

Эта модель ведёт к избыточным расходам и неправильным ожиданиям

Правильно

Haiku = bulk throughput (10k+ вызовов/день)
Sonnet = стратегия + контент + анализ (95% задач)
Opus = extended thinking, edge cases (<5%)

Правильный вопрос: «Справится ли Sonnet?» — почти всегда да

Ключевой сдвиг: Sonnet — это не «средний уровень», это основной рабочий инструмент. Opus — страховка для <5% случаев, где расширенное мышление принципиально меняет результат.

2. Три реальных сценария выбора модели

Haiku — когда нужен МАСШТАБ при фиксированном шаблоне

Используйте когда задача шаблонная и количество вызовов исчисляется тысячами:

  • Проверить 50 000 мета-тегов на длину и дубли
  • Классифицировать 10 000 ключевых слов по intent (информационный/транзакционный/навигационный)
  • Генерировать краткие alt-тексты для 5 000 изображений по шаблону
  • Выгружать и структурировать данные GSC в табличный формат
Критерий Haiku: задача решается одним шагом по фиксированным правилам, а не через рассуждение

Sonnet — почти всё остальное (включая «умные» задачи)

Это дефолтная модель для всего, что требует анализа, синтеза или стратегии:

  • Конкурентный анализ ТОП-10 SERP по ключевому слову
  • Оценка E-E-A-T профиля страницы конкурента
  • Стратегическое решение: атаковать head term или long-tail кластер?
  • Создание контентного брифа, outline, черновика статьи
  • Технический SEO-аудит с интерпретацией приоритетов
  • Анализ 50–100 страниц сайта за один запрос (200k контекст)
  • GEO-оптимизация под AI Overviews
  • «Какой content gap заполнить следующим?»
Весь этот 10-модульный курс создан Sonnet — включая архитектуру, код, стратегический анализ и конкурентные рекомендации

Opus — только когда Sonnet реально недостаточен

Не «сложная задача» — а задача где расширенное мышление меняет вывод:

  • Мульти-шаговое рассуждение на 15+ шагов с ветвящейся неопределённостью
  • Документ 500+ страниц в одном вызове с глубоким синтезом
  • Необратимое решение (напр., полный редизайн архитектуры сайта), где одна ошибка = месяцы работы
  • Задача, где именно extended thinking принципиально меняет итоговый вывод
Opus стоит в ~10× дороже Sonnet. Прежде чем использовать — убедитесь что пробовали Sonnet и он реально не справился, а не просто «задача кажется сложной».

3. Sonnet в действии: паттерны для «сложных» задач

Три задачи, которые кажутся «умными» — и все три решаются Sonnet:

Паттерн A — Competitive Intelligence

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=4096,
    messages=[{"role": "user", "content": f"""
Проанализируй ТОП-10 результатов Google по запросу '{keyword}'.
Для каждого: тип контента, длина, структура H1-H3, основные темы.
Выяви: какие темы пропущены? Какой формат доминирует?
Составь бриф для статьи, которая займёт первое место.
"""}]
)

Паттерн B — E-E-A-T Assessment

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    messages=[{"role": "user", "content": f"""
Оцени E-E-A-T профиль этой страницы по шкале 1-10:
{page_content}

Что улучшить? Какие сигналы авторитетности добавить?
"""}]
)

Паттерн C — Strategic Decision

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=3000,
    messages=[{"role": "user", "content": f"""
GSC данные: {gsc_summary}
Конкурентный профиль: {competitor_data}

Вопрос: стоит ли нам конкурировать по head-term '{head_term}'
или сосредоточиться на long-tail кластере '{longtail_cluster}'?
Обоснуй через данные, укажи риски каждого варианта.
"""}]
)
Все три паттерна используют claude-sonnet-4-6 — не как компромисс по бюджету, а как правильный выбор для этих задач.

4. Честный порог для Opus

Правило: «Если задача решается за 1–2 шага рассуждения — Sonnet. Если нужно 10+ шагов с ветвящейся логикой и цена ошибки высока — рассмотри Opus с extended thinking».

Пример задачи, где Opus оправдан в SEO:

«Анализ 200-страничного сайта» — одним вызовом:
  • Выявить конфликтующие canonical-ошибки среди 200 страниц
  • Кластеризовать в типовые проблемы
  • Автоматически сгенерировать план редиректов
  • Разработать canonical-стратегию для всей структуры

Ошибка в этом плане = сотни часов ручной работы → extended thinking меняет качество вывода.

Обратите внимание: это не «сложная SEO-задача», а очень специфичная комбинация: огромный объём входных данных + многошаговая логика + высокая цена ошибки. Конкурентный анализ по одному ключевому слову под это определение не подпадает.

5. Model Routing в реальном пайплайне

Правильный роутер ставит Sonnet дефолтом, а не исключением:

def route_task(task_type, input_size, complexity):
    # Правило 1: massive bulk -> Haiku
    if task_type in ('bulk_classify', 'simple_check') and input_size > 1000:
        return 'claude-haiku-4-5'

    # Правило 2: Opus только для truly exceptional
    if complexity == 'exceptional' and task_type in ('full_site_strategy', 'canonical_rebuild'):
        return 'claude-opus-4-8'

    # Правило 3: Sonnet -- дефолт для всего остального
    return 'claude-sonnet-4-6'
Ключевая архитектурная точка: return 'claude-sonnet-4-6' — это не fallback для «средних» задач. Это правильный выбор для конкурентного анализа, E-E-A-T оценки, контентных стратегий и технических аудитов.

6. Калькулятор стоимости SEO-пайплайна

Посмотрим на реальные цифры. По умолчанию — типичное распределение: Haiku берёт объём, Sonnet — ценность:

Ключевой инсайт: при дефолтных настройках Sonnet обрабатывает только ~1.6% задач по количеству — но все стратегически важные. Haiku обрабатывает 98%+ задач по количеству за сопоставимую стоимость. Opus добавляет страховку для edge cases за минимальный процент бюджета.

Формула: пусть Haiku делает объём — Sonnet делает ценность.

7. Проверьте понимание

Нужно провести конкурентный анализ: изучить ТОП-10 по ключевому слову, выявить темы которые они упускают, и написать контентный бриф. Это задача на несколько шагов рассуждения. Какую модель выбрать?
A) Haiku — экономия бюджета
B) Sonnet
C) Opus с extended thinking
D) Ensemble из всех трёх моделей
Главный вывод модуля и курса: правильный вопрос не «нужен ли Opus?» — а «справится ли Sonnet?». Ответ почти всегда «да». Opus — это не «умный уровень» для сложных задач, это страховка для <5% случаев, где расширенное мышление принципиально меняет результат. Весь этот курс — живое доказательство: 10 модулей, архитектура, исследование, стратегия, код — всё создано Sonnet.

Готово!

10 модулей пройдены. Вы изучили полный стек SEO-агентов — от архитектуры до AI-поиска и frontier-аналитики.

  • Декомпозировать SEO-воркфлоу на задачи для агентов
  • Собрать агентский стек: Data Sources → LLM → Output
  • Построить агент технического аудита с приоритизацией
  • Автоматизировать keyword research и intent mapping
  • Настроить контентный пайплайн с SEO-оптимизацией
  • Мониторить SERP и backlink-профиль агентом
  • Оркестрировать полный SEO-пайплайн с human-in-the-loop
  • Измерять ROI автоматизации и итерировать систему
  • Адаптировать SEO-стратегию к AI Overviews и GEO
  • Применять frontier-модели для глубокого SEO-анализа

Что читать дальше

  • Google Search Central Blog — официальные обновления алгоритмов
  • Anthropic API Docs — Claude API для контентных агентов
  • Screaming Frog Docs — продвинутый технический аудит
  • Ahrefs Academy — keyword research и backlink analysis