Быстрый старт
LV24 SEO Optimizer — SEO-контур управления с приоритетом бесплатных источников для людей и AI-агентов. Он собирает Google Search Console, Яндекс.Вебмастер, Яндекс.Метрику, Bing/IndexNow, Chrome UX Report и PageSpeed Insights в одну нормализованную историю, добавляет ограниченный технический обход вашего сайта и превращает результат в недельные отчёты, команды CLI, MCP-инструменты и навыки агентов.
Пакет Python lv24-seo — основной движок. Настольное приложение — оболочка Tauri вокруг того же движка; она не переписывает SEO-логику и клиенты провайдеров. В пути по умолчанию нет платной платформы, парсинга выдачи и аккаунта вендора.
Путь за пять минут
Установите движок:
uv tool install lv24-seoСоздайте рабочую область, проверьте машину и прочитайте первый снимок:
lv24-seo init --property https://example.com
lv24-seo doctor
lv24-seo stats --days 7 --jsoninit записывает seo.toml и создаёт <config dir>/data; относительный data_dir привязывается к файлу конфигурации. doctor работает офлайн: проверяет Python, файл конфигурации, эффективный каталог данных и его область, запись в текущий каталог и наличие токенов, но не делает сетевых вызовов. stats работает только на чтение и возвращает один ограниченный конверт для панели: текущее и предыдущее окна, статус каждого провайдера, покрытие, возраст данных, усечение и ограничения.
Конверт stats содержит period, previous_period, generated_at, массив services и сводку coverage. У каждой карточки сервиса есть provider, label, configured, ready, status, metrics, previous, rows, data_age_days, truncated, limitations, warnings и error. status принимает одно из значений ok, no_data, missing_token, not_configured или error.
coverage.complete истинно только тогда, когда каждый настроенный сервис имеет статус ok, вернул строки, не усечён и ни один сервис не пропущен и не завершился ошибкой. previous есть только для сопоставимых текущего и предыдущего окон (GSC, Яндекс.Вебмастер и Метрика); Bing, CrUX и PSI возвращают null. Метрики содержат только реально полученные значения: без заполнения нулями и без сводных итогов по разным источникам.
Когда будете готовы, добавьте токен провайдера:
lv24-seo auth login --provider gsc
lv24-seo auth set --provider gsc --stdinauth set читает секрет из stdin или скрытого приглашения, но никогда из argv. Для хранения в системном keychain нужен необязательный extra secrets; установите uv tool install "lv24-seo[secrets]" или используйте переменные окружения. Наличие токена не доказывает, что он действителен и имеет нужные права.
Требования
- Python 3.11 или новее.
uvможет сам предоставить интерпретатор, поэтому системный Python не обязателен. - Учётные данные провайдеров, которые вам нужны: OAuth-токен доступа GSC, OAuth-токен Яндекс.Вебмастера, Яндекс.Метрика, API-ключ Bing Webmaster и API-ключ CrUX. PageSpeed Insights работает без ключа с меньшей квотой. У всех источников по умолчанию есть бесплатный тариф.
- Node.js 18 или новее — только для лаунчера
npx @lv24/seo. Python CLI не требует Node. - Сетевой доступ к API провайдеров. У инструмента нет телеметрии, сам по себе он ничего не отправляет.
- Для настольного приложения: Windows 10/11 x64 с WebView2, Linux x64 с glibc 2.35 или новее либо macOS 13 или новее.
Сейчас GSC использует вручную заданный OAuth-токен доступа; поток с сервисным аккаунтом запланирован, но не поставлен. Яндекс, Bing и другие адаптеры также используют вручную заданные токены или ключи.
По умолчанию только чтение
По умолчанию инструмент не меняет состояние провайдеров. stats, doctor, config show, properties, gsc query, yandex queries, yandex indexing и report diff вообще ничего не записывают. report weekly без --send только строит и сохраняет локальный снимок; crawl пишет только в локальное хранилище SQLite; init записывает seo.toml и создаёт <config dir>/data.
Операции записи к провайдерам защищены. Пробный запуск возвращает план и confirm_token; для применения нужны --allow-write и свежий --confirm <token> в течение пяти минут, а также LV24_SEO_WRITE_SECRET в окружении. При инициализированной рабочей области применяется SQLite-журнал идемпотентности: повторный токен возвращает skipped / duplicate, и провайдер вызывается один раз. Без каталога данных применение всё равно выполняется, но конверт предупреждает, что защита от повтора отключена на пять минут жизни токена. IndexNow действительно отправляет URL. Отправка sitemap в GSC и переобход в Яндексе сейчас возвращают WRITE_DISABLED, а не делают вид, что путь провайдера подключён.
MCP-сервер по умолчанию работает только на чтение; его инструменты записи помечены и защищены, а некоторые пути провайдеров всё ещё возвращают WRITE_DISABLED. Настольное приложение требует диалога подтверждения с точным именем цели, прежде чем отправить отчёт, установить задание планировщика, добавить запись MCP-клиента или выполнить запись к провайдеру.
Интерфейсы
| Интерфейс | Что он даёт |
|---|---|
| CLI | Каждая команда поддерживает --json, стабильный конверт и документированные коды выхода. |
| MCP | stdio-сервер с 11 инструментами, 3 ресурсами и 3 промптами для Claude, OpenCode, Cursor и других клиентов. |
| Настольное приложение | Оболочка Tauri 2 + React с выбором рабочей области, панелью статистики, формой настроек, выводами конфигурации, отчётами, рекомендациями и подписанными обновлениями. |
| Автоматизация | Генераторы cron, systemd timer и Windows Task Scheduler, а также доставка через SMTP и Telegram. |
Конверт CLI — {ok, data, meta, warnings}. meta.complete равен false, когда входные данные отсутствуют, усечены или сэмплированы, а meta.limitations объясняет, что нужно учесть перед тем, как доверять числу. Те же правила честности действуют для MCP-ответов и отчётов.
Необязательное приложение
Настольное приложение — превью 0.2.2 с движком lv24-seo 0.5.2. Оно полезно, когда не хочется помнить флаги: выберите seo.toml в настройках, посмотрите панель, отредактируйте конфигурацию через проверяемую форму, откройте недельный HTML-отчёт и скопируйте ограниченную рекомендацию как Markdown-промпт для агента. Windows NSIS, macOS .app и Linux AppImage умеют обновляться автоматически; portable ZIP, deb и rpm обновляются вручную. Обновлятор останавливает только запущенные им sidecar и блокируется с UPDATE_ENGINE_BUSY, если остановить не удалось.
Статус и ограничения
Движок — бета 0.5.2; приложение — превью 0.2.2. Известные пробелы до 1.0:
- GSC сейчас поддерживает вручную заданный OAuth-токен доступа; поток с сервисным аккаунтом запланирован.
- Отправка sitemap в GSC и переобход в Яндексе возвращают
WRITE_DISABLED; IndexNow действительно отправляет. storage.raw_retention_daysзарезервирован; сырые архивы пока не пишутся.- В приложении
0.2.2нет отдельного экрана Crawl, прогресса задания и отмены. report indexing,report opportunitiesиreport historyзапланированы, но не поставлены.- Логирование опционально: установите
LV24_SEO_LOG_LEVEL, чтобы включить redacting-handler в CLI иmcp serve. Стабильным диагностическим интерфейсом остаётся конверт--json.
Неизвестные значения остаются неизвестными, а не заполняются. Это сделано намеренно: ограниченный ответ с явными ограничениями полезнее, чем аккуратно выглядящее число без покрытия.
Куда дальше
- Установка — движок, npm-лаунчер, пакеты приложения, токены и удаление.
- Настольное приложение — что добавляет оболочка, как работают обновления и что делать при сбоях.
- Справочник CLI — команды, конверты и коды выхода.
- Справочник конфигурации —
seo.toml, приоритет, локаль и секреты. - Источники данных — что каждый провайдер может и не может вернуть.
- Отчёты и диффы — недельные отчёты, доставка и сравнение снимков.
- Безопасность и приватность — работа с токенами, защита записи и границы доверия приложения.
Source: _source/engine-README.md, _source/engine-cli.md, _source/desktop-README.md.