title: "jev-seo: FOSS Zero-Cost SEO & GEO Search Radar" description: "Open-source, subscription-free alternative to Semrush and OpenSEO. Powered by TypeSafe AI Jev and local DuckDuckGo scraping." canonical: "https://github.com/AkashPriyadarshii/jev-seo" keywords:
- seo
- geo
- generative-engine-optimization
- typesafe-ai
- jev
- rust
- mcp
- search-radar
See it run
Live crawl of a real production site with health score, ranked actions, and completeness notes:

Single-file HTML report from audit --html, with grade scorecard:

Grade scorecard close-up from the same report:

Why jev-seo?
Semrush and Ahrefs cost upwards of $130 per month. OpenSEO still requires paid DataForSEO credit cards. Most SEO suites are bloated web dashboards filled with vanity charts.
- Zero subscriptions (₹0): Scrapes DuckDuckGo HTML and suggest endpoints directly. No credit cards, no paid API keys.
- TypeSafe Jev System One: Semantic intent classification, competitive gap detection, and AI visibility (GEO) scored deterministically without conversational LLM hallucinations.
- Batch Directory Auditing: Audits hundreds of markdown/HTML files in <1 second, detecting title collisions, canonical mismatches, and thin pages.
- 2026 Schema.org Validator: Deeply inspects JSON-LD schemas (
SoftwareApplication,Article,Organization,Product) and flags deprecated schemas. - Robots.txt & AI Crawler Radar: Evaluates permissions for AI bots (
GPTBot,ClaudeBot,PerplexityBot,Google-Extended,Bytespider). - SERP Content Briefs: Synthesizes competitor SERP snippets into an actionable content blueprint with H2 outlines and optimal 134-167 word GEO blocks.
- Agent native (MCP): Native stdio JSON-RPC 2.0 MCP server directly feeds 11 SEO tools into Claude Code, Gemini CLI, and Antigravity.
- Live-site crawler: Parallel BFS crawl with canonical dedup, per-page timing, health scores, and ranked fix actions.
- Fifty-rule engine: R01-R50 checks with severity weights and reach scoring across nine areas, one truth for crawl and audit output.
- Answer-engine readiness:
llms.txtplus AI crawler permission scoring with readiness actions. - Local & private: All rank tracking and audit histories persist in a single local SQLite database (
.jev-seo.db). - Low RAM footprint: Fast native Rust binary that runs in under 30MB RAM on resource-constrained machines.
Free vs paid dashboards
| Job | Paid dashboards | jev-seo |
|---|---|---|
| One-site audit with fixes | Monthly seat, queued crawl | crawl in seconds, ranked actions free |
| Rank tracking over time | Subscription per project | SQLite drift history, zero cost |
| AI visibility scoring | Add-on tier | geo plus llms readiness, fractions of a cent |
| Agent access | API credits per call | 10-tool MCP server on stdio |
| Report exports | Export limits per plan | HTML, PDF, Markdown, CSV from every run |
Quickstart
# Install via Cargo (crates.io)
# Set your free TypeSafe key for semantic oracle scoring
# Run a live SERP competitive radar check
# Audit a single file or an entire documentation directory
# Audit an XML sitemap for protocol security, URL limits, and hreflang
# Validate JSON-LD Schema.org markup
# Check AI crawler permissions on a live domain
# Generate a SERP-driven content brief
# Track domain rankings over time (saved to local SQLite)
# Start the Native Agent MCP Server
Install
One binary, no runtime. Pick a lane:
| Lane | Command |
|---|---|
| Cargo | cargo install jev-seo |
| Linux x86_64 / ARM64 | Download jev-seo-<target>.tar.gz from Releases |
| macOS Intel / ARM | Same Releases page, tar.gz archives with SHA256 |
| Windows x86_64 | Same Releases page, .zip archive |
Wire the agent server into your client once:
Workflows
1. Batch Directory & File On-Page Audit
Recursively scans all markdown and HTML files, identifies title collisions, detects thin content (<300 words), verifies canonical links, and flags image alt deficiencies.
2. JSON-LD Schema.org Validation
Validates required properties across SoftwareApplication, Article, Organization, and Product. Flags deprecated schema types (e.g. HowTo rich results).
3. Robots.txt & AI Crawler Inspection
Audits robots.txt directives specifically for modern generative AI indexers:
GPTBot(OpenAI model training)ClaudeBot&anthropic-ai(Anthropic)PerplexityBot(Perplexity citation engine)Google-Extended(Gemini training)Bytespider(ByteDance)
4. SERP-Driven Content Brief Generator
Pulls live DuckDuckGo competitors, calculates optimal word count, and uses Jev System One fan-out to generate an actionable heading outline with a 150-word GEO direct-answer prescription.
5. Generative Engine Optimization (GEO)
Calculates citation probability for Perplexity, SearchGPT, and Gemini Overviews using Jev Score (1-10) and Noul. Prints a five-dimension composite (structure, density, directness, statistics, freshness) with code-owned weights, plus the score delta since your last check. Low-confidence answers are withheld instead of printed.
6. Confidence-Gated Scoring
Every Jev verdict carries calibrated confidence. Confident scores print as facts, shaky ones are marked [verify], and unsure ones are withheld with a note. Thresholds live in one place (src/policy.rs) and scale with the stakes of each command.
7. SEO Gate for CI
Exits nonzero when the pass rate falls below the floor. A ready-made workflow (.github/workflows/seo-gate.yml) runs tests plus the gate on every push and pull request.
8. XML Sitemap & International Hreflang Auditor
Validates sitemaps against Google webmaster standards: enforces canonical HTTPS protocols, flags parameter pollution, verifies the 50,000 URL limit, and audits international hreflang codes (flagging malformed codes like en-UK vs en-GB and enforcing x-default).
9. Google Helpful Content & AI Slop Radar
Integrated into jev-seo audit:
- Em-dash density scanner: Flags excessive em-dash saturation (>2 per 500 words).
- AI Vocabulary Detector: Flags 17 pervasive AI boilerplate crutches (
delve,leverage,testament,foster,seamless,crucial,robust,landscape, etc.). - Heading Hierarchy Auditor: Flags illegal skip-levels (e.g.
H1 -> H3withoutH2). - Internal Link Graph: Pinpoints orphan pages with 0 inbound internal links across directories.
- Keyword Cannibalization Radar: Identifies competing articles targeting identical keyword stems.
Command Reference
| Command | Description | Flags |
|---|---|---|
keywords <query> |
Autocomplete discovery and Jev intent classification | --json |
query <query> |
Live SERP competitor scraping, Jev relevance rerank, and winning gap analysis | --limit <n>, --provider auto|ddg|tavily, --json |
audit <path> |
Batch directory or file on-page, orphan, and AI-slop audit, 50-rule findings | --target-query <query>, --json, --min-pass <pct>, --html <path>, --pdf <path>, --md <path>, --csv <path>, --rescore <path> |
geo <target> |
Generative Engine Optimization citation scoring (1-10), composite dimensions, score trend | --query <query>, --json |
schema <target> |
Schema.org JSON-LD structural and deprecation validator | --json |
robots <domain> |
Robots.txt and AI crawler permission auditor | --json |
brief <topic> |
SERP-driven heading outline and 150-word GEO direct-answer | --limit <n>, --markdown, --json |
rank |
SQLite rank drift tracker (~/.jev-seo/jev-seo.db) | --domain <domain>, --query <query> |
sitemap <target> |
XML sitemap, 50k limit, HTTPS, and hreflang validator | --json |
crawl <url> |
Live-site BFS crawl: health score, ranked actions, broken links, redirect chains, orphans, timing | --max-pages <n>, --fetch auto|direct|jina|firecrawl, --max-credits <n>, --json, --diff, --csv <path>, --rescore <path> |
llms <domain> |
llms.txt plus AI crawler scoring with ranked readiness actions | --json |
doctor |
Environment check: version, API key presence, database, platform | --json |
gsc <auth|sites|query> |
Google Search Console: free first-party query data for your own sites | --site <url>, --limit <n>, --json |
mcp |
Native Stdio JSON-RPC 2.0 Agent MCP Server | (None) |
Native MCP Server (11 Tools)
When launched via jev-seo mcp, the binary acts as a stdio JSON-RPC 2.0 Model Context Protocol server exposing 11 tools. It answers the initialize handshake, stays silent on notifications, reports parse errors, and flags tool failures with isError. File tools share a guarded reader (content extensions only, no dot-files, no URLs) plus a Jev safety classifier that blocks secret-looking targets. Remote fetches refuse private hosts, resolved DNS, and redirect landings.
| MCP Tool | Arguments | Purpose |
|---|---|---|
seo_keywords |
query: string |
Discover keyword autocomplete variants and classify user intent |
seo_serp_inspect |
query: string, limit?: int |
Scrape live top-ranking competitor titles, snippets, and URLs |
seo_audit |
path: string |
Audit local markdown/HTML files, orphan pages, and AI slop |
seo_geo |
target: string, query: string |
Evaluate AI citation likelihood (1-10) and direct answer presence |
seo_schema |
target: string |
Validate JSON-LD schemas and check active search rich result rules |
seo_robots |
domain: string |
Inspect live robots.txt directives for major LLM crawlers |
seo_brief |
topic: string, limit?: int |
Generate structured markdown content briefs with H2 outlines |
seo_sitemap |
target: string |
Validate XML sitemap protocols, HTTPS links, and hreflang tags |
seo_crawl |
url: string, max_pages?: int |
Crawl a live site for broken links, redirect chains, and orphan pages |
seo_llms |
domain: string |
Check llms.txt presence and AI crawler permissions |
seo_extract |
urls: string[], query: string |
Extract clean markdown via paid API (key-gated) |
Examples from real runs
Every file below is real output, not mockups:
examples/jevseo-site/crawl.json— 10-page live crawl with health score, areas, findings, and actions.examples/jevseo-site/llms.json— answer-engine readiness with checks and actions.examples/local-docs/report.html,report.md,findings.csv— the same audit in three formats.
Benchmarks
Measured 2026-09-22. Rerun any row; full notes in docs/EVAL.md.
| Check | Result | Rerun |
|---|---|---|
| Cold start | 6ms | time jev-seo --help |
| Local audit, 4 files | ~0.2s | jev-seo audit docs/ --json |
| Live crawl, 6-10 pages | 3-11s wall, server-bound | jev-seo crawl <url> --max-pages 10 |
| Score repeatability, 3 runs | 99 stable, findings ±2 from server timing | jev-seo crawl <url> --json ×3 |
| Test suite | 46 green, zero clippy warnings | cargo test |
FAQ
What does jev-seo cost to run? Nothing for rules, crawls, and reports. Semantic scoring costs fractions of a cent per Jev call.
Does it need API keys? No for everything deterministic. Jev scoring needs TYPESAFE_API_KEY; without it those sections report local-only output.
How is this different from a web dashboard? It is a binary, not a seat. It crawls, scores, and exports from your terminal and CI, and agents call it over MCP.
What is a GEO score? Citation likelihood 1-10 for answer engines, backed by a five-dimension composite with published weights.
Which pages does it check? Up to 50 per crawl by default, seeded from sitemap.xml, robots.txt honored. Raise --max-pages deliberately.
Can CI fail on it? Yes. audit --min-pass exits nonzero below your floor, and crawl --diff reports drift between runs.
Do I need paid APIs? No. Paid backends are opt-in per flag and stay parked at zero spend by default. Free paths never call them.
Architecture
jev-seo
├── src
│ ├── main.rs CLI entrypoint & command dispatch
│ ├── engine.rs TypeSafe Jev client & speculative fan-out
│ ├── paths.rs Shared guarded file reader, domain match, SSRF block
│ ├── policy.rs Confidence thresholds, GEO weights, intent routing
│ ├── serp.rs DuckDuckGo HTML & suggest scraper
│ ├── audit.rs Batch directory & file on-page meta auditor
│ ├── schema.rs JSON-LD Schema.org structural & semantic validator
│ ├── robots.rs Robots.txt & AI crawler permission analyzer
│ ├── brief.rs SERP-driven content brief generator
│ ├── rank.rs Local SQLite rank drift tracker (~/.jev-seo/jev-seo.db)
│ ├── sitemap.rs XML sitemap & international hreflang auditor
│ ├── crawl.rs Live-site BFS crawler with canonical dedup and timing
│ ├── llms.rs llms.txt and AI crawler readiness scorer
│ ├── mcp.rs Native stdio JSON-RPC 2.0 MCP server (10 tools)
│ └── tests.rs Unit & integration test harness (35 tests passing)
├── Cargo.toml
└── README.md
Agent Readiness
The live site is scored by is-agentic: 51/100 on the last snapshot, with trust pages, JSON-LD, metadata, and llms.txt shipped since. Jev predicts 65-74 on rescan (medium confidence); homepage markdown negotiation needs server compute and stays red on static hosting.
Star History
Non-Goals
- No bloated electron or cloud web dashboards.
- No paid third-party API dependencies (no forced DataForSEO subscriptions).
- No generative AI prose synthesis (Jev is used strictly as a deterministic evaluation oracle).
Ecosystem
- jev-superpowers — Jev-powered agent superpowers
- jev-curate — Jev-curated content toolkit
- tdlib-android — Precompiled TDLib native binaries for all 4 Android ABIs
- kharcha — India-first offline-first UPI expense tracker for Android
Author
Akash Priyadarshi
Patna, Bihar, India
- GitHub: @AkashPriyadarshii
- Portfolio: akashpriyadarshi.vercel.app
- LinkedIn: Akash Priyadarshi
- Resume: akashpriyadarshii.github.io/Resume
Social: X / Twitter • Threads • Instagram • Reddit
Contributors
- @jerryrat — paid search provider path and DuckDuckGo header research (PR #2)
Zero-cost, agent-first SEO radar built with TypeSafe AI System One.