jev-seo CLI
Free Rust CLI and MCP for SEO and GEO: a 64-rule audit, site crawls, AI crawler, schema and llms.txt checks.
- 100 ★ on the repository
- Last commit
Extended access
Why this level
- The CLI crawls sites over the network and writes reports and a rank database to disk.
- Connecting Search Console and paid services exposes analytics data and spends money.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add cli/jev-seoDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The CLI crawls sites over the network and writes reports and a rank database to disk.
- Connecting Search Console and paid services exposes analytics data and spends money.
This is third-party code. Review the repository files before installing.
What it does
A single `jev-seo` binary checks a docs folder or a site. The `audit` command runs 64 rules and gives a score with ranked actions, `crawl` walks a site for broken links, redirects and orphans, and `robots`, `llms`, `schema` and `sitemap` answer narrow questions: AI crawler access, JSON-LD markup, sitemap and hreflang. `geo` estimates how likely a page is to be cited for a query. It keeps rank history in a local SQLite file, exports HTML, PDF, Markdown and CSV, gates CI with `--min-pass`, pulls Search Console data with your own OAuth client and runs an MCP server, `jev-seo mcp`, over stdio for agents. Semantic scores come from the optional TypeSafe Jev service with a hard spend cap per run.
Who it is for. Site owners, developers and SEO specialists who want audits from a terminal and CI without a paid service subscription.
Good fit when
- Documentation must be checked before release and a deploy stopped when the score is below a threshold.
- It must be established whether `robots.txt` lets AI crawlers in, and `llms.txt` checked.
- An agent is asked to gather a SERP for a query and write a brief with a heading outline.
- Positions and clicks from Search Console are pulled without third-party dashboards.
Not a fit when
- A traffic or ranking forecast is needed; scores rank work and predict nothing.
- A full cloud dashboard is required; the tool has no web interface.
- Text generation is wanted; the tool evaluates pages and writes no prose.
Example request
Audit the docs/ folder with `jev-seo audit`, show the score and the top five actions, then check `jev-seo robots` for example.com.Limitations
The free path runs locally and through DuckDuckGo for suggestions and results. Jev scores go through TypeSafe System One with `TYPESAFE_API_KEY`, and spend per run is capped by `--jev-budget` (default 0.25 dollars). The paid sources Tavily, DataForSEO, Jina and Firecrawl are enabled only explicitly. Large crawls sample by `--max-pages` (default 50), and the report says so. Heuristics such as AI-slop markers are editorial conventions and not Google ranking factors. The README mentions both 15 and 19 MCP tools, so confirm the count with `tools/list`.
How to disable. Run `cargo uninstall jev-seo`, remove the MCP entry from the client and delete the local data in `.jev-seo.db` and `~/.jev-seo/` by hand if needed.
FAQ
How do I install jev-seo?
With `cargo install jev-seo` or a ready archive from the releases for Linux, macOS and Windows. Run `jev-seo doctor` after installing.
How do I connect MCP?
Add a `jev-seo` server to the client with command `jev-seo` and argument `mcp`. It speaks stdio and exposes audit, crawl, schema, robots, llms.txt and brief tools.
Is a paid key required?
No, audits, crawls and exports are free and local. Jev semantic scores need `TYPESAFE_API_KEY`, while paid sources are enabled separately.
How do I stop a deploy on a poor score?
With `jev-seo audit docs/ --min-pass 40` in CI: below the threshold it exits with an error. Reports have `--html`, `--md` and `--sarif`.
How do I get Search Console data?
Run `jev-seo gsc auth`, then `jev-seo gsc query --site <url>`. You need your own Google OAuth client, whose id and secret come from environment variables.
Discussion
No questions or reviews yet.
Related
CLI toolsSEO CLI and MCP
seo-cli
The seo command and an MCP server for SEO work: page audits, Search Console, analytics and keywords. Sign-in through Google
A plugin with an MCP server and skills: Claude Code crawls a site, finds broken links and SEO and GEO errors and suggests fixes.
A CLI, Python library and MCP server that scores how ready a site is to be cited by ChatGPT, Perplexity and AI Overviews
A CLI and agent skill for website SEO audits: technical SEO, Core Web Vitals, structured data, security and AI search readiness
Open SEO Crawler: an SEO crawler with MCP for agents
Open SEO Crawler
A free local SEO crawler with a site audit and AI bot check: agents start crawls and read the issues
A free SEO audit inside Codex CLI: 26 sub-skills and 19 expert roles check technical SEO, content, schema and AI search
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| jev-seo (this card) | no | 100 | ||
| SEO CLI and MCP | no | OAuth | 620 | a `seo` command and MCP with Google sign-in for Search Console and analytics; this is a standalone binary with a 64-rule audit and AI crawler checks |
| seo-audit-skill | no | 785 | a single-page audit by URL with an HTML report; jev-seo crawls sites and docs and works as a CI gate |
README in short
The repository holds a Rust binary, a `SKILL.md` for agents, example reports and tests. A README table shows what runs locally and what costs money, and the scores are backed by commands that reproduce them.
README badge
Original SKILL.md
---
name: jev-seo
description: Free SEO and GEO audits for any site or docs folder. Use when the user asks to audit SEO, check rankings, score AI visibility, validate schemas, inspect robots.txt, crawl for broken links, or gate a deploy on search health. Runs a single Rust binary, no paid APIs. Semantic judgments by TypeSafe Jev when keyed, deterministic scores otherwise.
---
# jev-seo skill
Run the binary. Prefer JSON output when chaining commands. Never invent scores; every number below comes from a command.
## Fast paths
- Full site picture: `jev-seo crawl <url> --max-pages 50` then `jev-seo llms <domain>`.
- Own-site truth: `jev-seo gsc auth`, then `jev-seo gsc query --site <url>` for free Search Console clicks and positions.
- Docs folder gate: `jev-seo audit docs/ --min-pass 60 --html report.html --pdf report.pdf --md report.md`.
- One question, one answer: `jev-seo geo <file> --query "<query>"`, `jev-seo robots <domain>`, `jev-seo schema <file>`, `jev-seo sitemap <url>`.
- Internal links: `jev-seo link docs/ --limit 10` suggests one contextual target per page, or `no_link`.
- Environment check first on a new machine: `jev-seo doctor`.
## Reading output
- `Health`, `Score`, and `Grade` lines are deterministic 0-100 values with A-F grades.
- `Top Actions` are ranked by impact with effort bands; ids like `RULE-R01` map to the rule registry (R01-R64) in `src/rules.rs`.
- New in v0.4.0 (unreleased): `check` + `verify`, `.jev-seo/policy.toml`, regional `--country/--language/--device`, GSC inspect/winners/losers, `bing` sites/queries, `--sarif`/`--junit`, R59-R64, citation struct, `seo_index`, 4 new MCP tools (19 total), `jev://` resources, evidence snapshots. Portable manifest (`plugin.json` + `mcp.json` + `.app.json`), annotated tools, bundled `skills/jev-audit/SKILL.md`, bridge `GET /health`. New in v0.3.0 (2 Oct 2026): `serve`, `capabilities --json`, `watch --diff-only`, `fix-plan`, crawl sitemap seeding (closes #3), R32/R08/R56 breadth, JS feature gate, GEO trends with sparkline SVG, offline `--rescore`. v0.1.2 shipped 26 Sep: `explain`, `report --baseline`, `crawl --vitals`, `query --provider dfs`, `seo_cite_check`, `seo_gap`, keyless GEO, drift gates.
- Jev contract: Choices offer `insufficient_context`, Flags print the runner-up, every fan-out appends to `~/.jev-seo/eval.jsonl`. Question version rides the spend line.
- `Completeness` says what was skipped (caps, missing sitemap, missing robots). A capped crawl is a sample, not a verdict.
- `Needs review` marks Jev answers below the confidence bar. Treat those lines as unverified.
- `--json` keeps stdout machine-clean; progress goes to stderr.
## MCP server (19 tools)
Run it over stdio: `npx -y @akashpriyadarshii/jev-seo` (or `jev-seo mcp` with a local build). Client config:
```json
{ "mcpServers": { "jev-seo": { "command": "npx", "args": ["-y", "@akashpriyadarshii/jev-seo"] } } }
```
No local build? Set `JEV_SEO_BIN=/path/to/jev-seo` and the wrapper uses it instead of downloading. First npx run needs network for the one-time download; musl/Alpine systems cannot run the glibc builds and must use `JEV_SEO_BIN` with a local `cargo build`.
`seo_cite_check` reports whether an AI answer names the target domain. Three paths, first one that works wins: pass `answer` to score your own words (works everywhere); omit it and sampling-capable clients answer via `sampling/createMessage`; otherwise you get `needs_answer: true` plus the prompt, answer it naturally as you would a user, and re-call with `answer`. Result fields: `cited` (bool), `since_last` (previous verdict or null), `source` (answer/sampling/engine), `excerpt` (300 chars).