Repository avatar
Search & Data Extraction
v0.3.1
active

lv24-seo

io.github.LevapVeeskela/lv24-seo

Free-first SEO for agents: GSC, Yandex Webmaster/Metrika, Bing, CrUX, PSI, crawl.

Documentation

LV24 SEO β€” SEO insights for humans and AI agents

lv24-seo-optimizer

ci PyPI npm license python

Free-first SEO control plane for humans and AI agents.

Your site's SEO, without a dashboard. Pull Search Console, Yandex Webmaster and Metrika, Bing, CrUX and your own crawl into one history β€” then get a weekly diff by email, an MCP server and a CLI that agents can actually use. No paid platform, no SERP scraping, no vendor account.

πŸš€ Start🧠 UseπŸ›  Operate
Install Β· See it work Β· DocsCLI Β· MCP tools Β· SkillsScheduling Β· Data limits Β· Security

One tool that pulls Google Search Console, Yandex Webmaster, Yandex Metrika, Bing Webmaster, Chrome UX Report and PageSpeed Insights into a single normalized model, crawls your site for technical SEO regressions, and turns all of it into scheduled email reports, MCP tools, CLI commands and agent skills.

No paid SEO platform required. Everything in the default path has a free tier.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ data sources (free) ────────────┐      β”Œβ”€β”€β”€β”€ surfaces ────┐
β”‚ GSC Β· Yandex Webmaster Β· Metrika Β· Bing Β·    β”‚ ───▢ β”‚ CLI (--json)     β”‚
β”‚ CrUX Β· PSI Β· your own crawl + nginx logs     β”‚      β”‚ MCP server       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚ Skills / AGENTS  β”‚
                                                      β”‚ Email / Telegram β”‚
                                                      β”‚ SQLite history   β”‚
                                                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

From provider APIs and bounded crawl to reports, CLI, MCP and opt-in delivery

Why another SEO tool

  • Free-first fusion. Existing MCP servers wrap one vendor each and hand raw vendor shapes to the model. We join GSC + Bing + Yandex + Metrika per property, and we say out loud what the APIs cannot give you (Yandex has no queryΓ—page join, GSC caps at 50k rows/day, data lags 2–3 days). Bounded provider responses expose coverage, freshness and limitations; unknown totals stay unknown.
  • Comparable periods. The headline compares current and previous GSC windows. Yandex, Metrika, Bing, CrUX field data and PSI lab data keep separate sections. Opt-in delivery applies the configured significance thresholds and skips content already sent for the period.
  • Agent-native. A small, stable MCP tool surface (read-only by default), a JSON envelope on every CLI command, and skills that encode audit β†’ plan β†’ fix β†’ verify against a real repository.
  • Zero spend. Public-repo CI, SQLite storage, SMTP/Telegram delivery, no SaaS in the default path. Paid-provider integrations are research/planned work, not dependencies or shipped adapters.

Status

Beta (v0.3.1). Working today: six provider adapters (GSC, Yandex Webmaster, Yandex Metrika, Bing/IndexNow, CrUX, PSI), a 30-rule crawler, SQLite history, analysis (deltas, opportunities, indexing triage, multi-engine fusion, nginx log stats), report builders + HTML/text/Markdown renderers, SMTP/Telegram delivery with idempotency, the full CLI, the MCP server (11 tools, 3 resources, 3 prompts) and scheduler generators. Canonical source ids, GSC-only headline deltas, partial provider isolation and window/daily storage separation are enforced with regression tests.

Still honest gaps before v1.0: GSC service-account auth (OAuth token only today), sitemap submit / Yandex recrawl return an explicit WRITE_DISABLED (IndexNow really submits), and raw_retention_days is reserved (no raw archives are written yet). See docs/plans/2026-11-10-implementation-plan.md for the wave status.

Install

# Python (recommended)
uvx --from lv24-seo lv24-seo doctor
pipx install "lv24-seo[secrets]"       # or: uv tool install "lv24-seo[secrets]"

# Node users: thin launcher over the same CLI
npx @lv24/seo doctor --json
lv24-seo init --property https://example.com   # writes seo.toml + data/
lv24-seo auth set --provider gsc --stdin       # token to the OS keychain (needs lv24-seo[secrets])
lv24-seo gsc query --start 2026-11-01 --end 2026-11-07 --dimensions query,page
lv24-seo report weekly --days 7 --out reports/
lv24-seo report diff --markdown                 # week-over-week diff of stored snapshots
lv24-seo crawl --json                           # issues + sitemap↔crawl coverage diff
lv24-seo export skills --out ./skills          # packaged agent skills from the wheel
lv24-seo mcp serve                             # stdio MCP server
lv24-seo install --client claude|opencode|vscode|cursor

npx @lv24/seo requires uv (or an installed lv24-seo binary): the npm package is a launcher, not a second implementation.

See it work

$ lv24-seo doctor

[OK  ] python: 3.13.12
[OK  ] platform: Windows 11
[OK  ] config: C:\work\seo.toml
[OK  ] cwd_writable: C:\work
[FAIL] tokens: not configured yet (gsc / yandex / metrika / bing / crux)

doctor checks the runtime, config, data dir and token presence only β€” no network calls.

$ lv24-seo report weekly --days 7 --json --out reports/

# Writes report.json and report.html; the JSON envelope carries:
# meta.sources          successful providers
# meta.sources_failed   isolated source failures
# meta.complete         false for missing, capped or sampled inputs
# meta.limitations      caveats to read before interpreting the numbers
# No configured tokens: an explicit no-data report, with complete=false.

The same data is available as MCP tools (seo_weekly_report, gsc_search_analytics, yandex_query_stats, seo_indexing_triage, …) and as three skills that encode audit β†’ plan β†’ fix β†’ verify.

What it will do

SurfaceExamples
Reportsweekly search performance + delta, indexing triage, striking-distance opportunities, content decay, technical regressions
MCP toolsgsc_search_analytics, yandex_query_stats, yandex_indexing_state, seo_crawl_site, seo_weekly_report, seo_report_diff, seo_indexing_triage, seo_opportunities, seo_recrawl_request (gated), seo_sitemap_submit (gated)
CLIinit, doctor, auth, gsc, yandex, crawl, report, schedule, export, mcp serve
Skillsseo-weekly, seo-indexing-triage, seo-technical-audit β€” decision trees + tool recipes + output contracts (install from the wheel: lv24-seo export skills --out ./skills)
Automationcron / systemd timer / Windows Task Scheduler generators and a GitHub Actions recipe

Supported sources

SourceFree tierUsed forWrite operations
Google Search Consoleyes (access token; service-account flow planned)queries, pages, countries, devices; URL Inspection adaptersitemap submit disabled
Yandex Webmasteryes (OAuth)queries, indexing history, diagnosticsrecrawl disabled
Yandex Metrikayessessions and users; filtered reports through adapterβ€”
Bing Webmaster + IndexNowyesqueries, crawl issues, instant URL pingIndexNow submit
Chrome UX Reportyes (API key)origin-level field CWVβ€”
PageSpeed Insightsyeslab audits per URLβ€”
Your siteβ€”crawl, robots, sitemap, JSON-LD, hreflang, linksβ€”
nginx access logsβ€”Python analysis helpers; no log-ingest CLI command yetβ€”

Documents

For AI agents

Read AGENTS.md first. It is the canonical contract: repo layout, how to run things, what is read-only, how to propose a change. Machine-readable helpers:

  • schemas/tools.json β€” generated tool schemas (works without MCP)
  • llms.txt β€” doc map for LLM crawlers
  • skills/*/SKILL.md β€” portable skills (Claude Code, OpenCode, Codex)
  • MCP Registry: io.github.LevapVeeskela/lv24-seo

License

Apache-2.0. See LICENSE and TRADEMARKS.md. Data pulled from Google/Yandex/Bing belongs to the property owner β€” this project never resells it.

PYPI
lv24-seo
Install Command
pip install lv24-seo
Runtime: uvx