Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
SEO и аналитика

OpenSEO

Open-source альтернатива Ahrefs/Semrush: self-host, оплата за данные по факту и MCP-сервер для AI-агента из коробки. Развернули на своем сервере, прогнали живые запросы и проверили главное - годится ли он для российского SEO.

Июль 2026 ~6 минут чтения Fatmetal Team
SEO и аналитика Лицензия: MIT Для РФ из коробки: нет

Вердикт

Подходит
  • нужна дешевая замена Ahrefs/Semrush для Google/глобального SEO, оплата по факту
  • хочется гонять SEO через AI-агента - MCP и skills есть из коробки
  • работаете с не-российского адреса и вам не нужен Яндекс
Не подходит
  • нужен Яндекс и российские регионы - источник данных их не отдает
  • хостинг и работа из РФ - API данных не отвечает российскому серверу
  • нужен «поставил и забыл» прод - проект очень молодой (v0.0.x)

Тестовый стенд: CPU4-RAM8-DISK100, Ubuntu 24.04, OpenSEO v0.0.26.

Что это

SEO-комбайн, который дружит с агентом

Semrush только что купила Adobe за $1.9 млрд, а подписки на Ahrefs/Semrush начинаются от сотни долларов в месяц - и для РФ к цене добавляются сложности с оплатой и доступом. OpenSEO (MIT, версия 0.0.26 на момент теста) заходит с другой стороны: open-source, self-host, «плати только за данные».

Внутри - привычный набор: keyword research, обзор доменов, бэклинки, rank tracking, site audit, интеграция с Google Search Console. Отличие от грандов - «SEO для тебя и твоего AI-агента»: встроенный MCP-сервер и набор skills, чтобы работать с данными прямо из Claude Code, OpenClaw или другого агента.

Ключевой нюанс под капотом: OpenSEO сам данные не собирает. Это аккуратный фронт и оркестратор поверх стороннего платного API - DataForSEO. Без ключа приложение - пустая оболочка. К этому мы еще вернемся.

Разворачивание

Один docker-образ

Ставится готовым образом, отдельная БД не нужна - состояние живет в volume. Мы подняли его на Ubuntu 24.04 и закрыли Caddy с Let's Encrypt и basic-auth (своей авторизации у приложения нет).

services:
  open-seo:
    image: ghcr.io/every-app/open-seo:latest
    environment:
      - DATAFORSEO_API_KEY=${DATAFORSEO_API_KEY}
      - ALLOWED_HOST=openseo.example.ru
    ports:
      - "127.0.0.1:3001:3001"

Что стоит знать заранее, из замеров живого стенда:

  • Образ ~3.07 ГБ, и контейнер делает Vite-билд на каждом старте (~48 секунд) - до этого сервер не отвечает. Рестарт - это минута прогрева.
  • В простое: RAM ~524 МиБ, CPU ~0.1%.
  • Своей авторизации нет (AUTH_MODE=local_noauth): наружу - только за reverse-proxy с аутентификацией.
Веб-интерфейс OpenSEO: Keyword Research и навигация по разделам
Рабочий интерфейс OpenSEO: keyword research и разделы (домены, бэклинки, rank tracking, site audit, AI & MCP).
OpenSEO: страница AI и MCP - подключение агента и адрес MCP-сервера
«SEO для агента»: страница AI & MCP с адресом MCP-сервера и гайдами под Claude Code / Codex.
Деньги за данные

Сначала $1, потом $50

DataForSEO - pay-as-you-go. На старте дают $1 бесплатных кредитов (без карты), дальше минимальный депозит $50, а сами запросы стоят копейки (живой Google-SERP - около $0.002, пачка частотностей - центы). Модель «свой UI + плати по факту» на бумаге дешевле фиксированной подписки при нерегулярном использовании.

С не-российского адреса все работает: запрос выдачи Google вернул 20000 Ok и живой топ по «self hosted analytics» - matomo.org, plausible.io. Частотности приходят с CPC и конкуренцией. А теперь - про гео-IP-ограничения.

Главное

Ограничения по гео-IP - в два слоя

Слой первый - нет Яндекса. SEO в России - это в первую очередь Яндекс и российские регионы. Проверяем на живом API:

# Google, локация Russia:
task 40501  Invalid Field: 'location_code'   # российской локации не существует
# Яндекс:
task 40402  Invalid Path                      # API Яндекса вырезан целиком

Это не наша ошибка настройки: DataForSEO с 9 марта 2022 года убрал Яндекс и заблокировал локации РФ и Беларуси.

Слой второй - API не отвечает российскому серверу. OpenSEO мы поставили на российский сервер. С него DataForSEO не отвечает вообще - запрос виснет и обрывается по таймауту (30 секунд, пустой ответ). В логах приложения - TimeoutError: aborted due to timeout, в интерфейсе keyword research отдает «An unexpected error occurred». Наши успешные тесты выше шли с зарубежного адреса; на самой российской VM данных нет в принципе.

OpenSEO: ошибка keyword research при недоступном из РФ DataForSEO
Тот же поиск с российского сервера: DataForSEO недоступен, keyword research падает с ошибкой.

Складываем: для РФ это двойной блокер - нет российских данных И источник недоступен с российской инфраструктуры. Self-host OpenSEO в России из коробки не «неудобный», а именно нерабочий.

Решение

Мы не сдались - вернули в проект Россию

OpenSEO - open-source, и весь слой доступа к данным сходится в одну точку. Значит источник можно заменить. Мы не стали сдаваться: форкнули OpenSEO и вернули в него Россию - вписали Яндекс.Wordstat для частотностей и Yandex-выдачу для позиций, доступные из РФ. Получился тот же удобный self-host + MCP/AI, но уже с российскими данными и работающий с российского сервера.

Ограничения

Когда это НЕ ваш выбор

  • Нужен Яндекс и российские регионы. В исходном виде источник данных их не отдает - разбор про Google-срез, для РФ нужен форк.
  • Хостинг и работа из РФ. API данных не отвечает российскому egress - на российском сервере продукт данных не получает.
  • Нужен стабильный прод «поставил и забыл». Проект очень молодой (v0.0.x): тяжелый образ, билд на каждом старте, ранние шероховатости.
  • Не готовы платить за данные. Сам self-host бесплатный, но без платного DataForSEO (мин. депозит $50) приложение - пустая оболочка.
FAQ

Частые вопросы

Это правда бесплатно?

Сам OpenSEO - да (open-source, self-host). Но данные платные: DataForSEO pay-as-you-go, минимальный депозит $50, $1 trial на старте. Без ключа приложение пустое.

Работает ли для Яндекса / российского SEO?

В исходном виде - нет. Источник данных (DataForSEO) не отдает Яндекс и российские локации, а его API не отвечает с российского egress. Нужен форк на российский источник данных.

Docker или Cloudflare?

Есть оба пути. Docker - для личного использования (мы так и ставили). Cloudflare Workers - для команды/интернет-доступа с бэкапами БД.

Насколько он «прод»?

Проект очень молодой (v0.0.x), активная разработка. UI аккуратный, но образ тяжелый (3 ГБ) и билдится на каждом старте (~48с) - рестарт небыстрый.

Зачем ему MCP?

Чтобы подключить AI-агента (Claude Code, OpenClaw, Hermes) и гонять SEO-задачи через него, а не только руками в UI.

Итог

OpenSEO разворачивается одним docker-образом, UI работает, MCP/AI - из коробки, оплата за данные копеечная. Но для РФ из коробки он нерабочий: источник данных не знает Яндекса и российских регионов, а его API не отвечает российскому серверу. Но мы не сдались: форкнули проект и вернули в него Россию - Яндекс и работу из РФ, на российском сервере.

Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Стенд у нас запущен на тарифе CPU4-RAM8-DISK100. Нашли неточность в разборе - напишите, поправим в течение дня.