jev-seo 0.1.1

FOSS zero-cost, agent-first SEO & GEO search radar CLI powered by TypeSafe Jev
jev-seo-0.1.1 is not a library.

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

stars crates.io downloads release ci


See it run

Live crawl of a real production site with health score, ranked actions, and completeness notes:

jev-seo live crawl output

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

jev-seo HTML audit report

Grade scorecard close-up from the same report:

jev-seo scorecard


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.txt plus 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)
cargo install jev-seo

# Set your free TypeSafe key for semantic oracle scoring
export TYPESAFE_API_KEY=your_key_here

# Run a live SERP competitive radar check
jev-seo query "offline expense tracker android"

# Audit a single file or an entire documentation directory
jev-seo audit docs/

# Audit an XML sitemap for protocol security, URL limits, and hreflang
jev-seo sitemap https://example.com/sitemap.xml

# Validate JSON-LD Schema.org markup
jev-seo schema index.html

# Check AI crawler permissions on a live domain
jev-seo robots github.com

# Generate a SERP-driven content brief
jev-seo brief "agentic skills" --limit 5

# Track domain rankings over time (saved to local SQLite)
jev-seo rank --domain "crates.io" --query "rust grep"

# Start the Native Agent MCP Server
jev-seo mcp

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:

{
  "mcpServers": {
    "jev-seo": { "command": "jev-seo", "args": ["mcp"] }
  }
}

Workflows

1. Batch Directory & File On-Page Audit

jev-seo audit content/posts/

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

jev-seo schema content/guide.md

Validates required properties across SoftwareApplication, Article, Organization, and Product. Flags deprecated schema types (e.g. HowTo rich results).

3. Robots.txt & AI Crawler Inspection

jev-seo robots example.com

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

jev-seo brief "fast local sqlite tui" --markdown

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)

jev-seo geo README.md --query "agentic skills framework for coding agents"

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

jev-seo audit docs/ --min-pass 40

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

jev-seo sitemap sitemap.xml
jev-seo sitemap https://example.com/sitemap.xml

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 -> H3 without H2).
  • 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

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.