Building jev-seo: Zero-Cost SEO and GEO Search Radar in Rust
Traditional SEO tooling is broken for independent developers. Semrush and Ahrefs cost upwards of $130 per month. Open-source alternatives still require paid DataForSEO API keys or heavy browser runtimes.
At the same time, search engine mechanics have bifurcated:
- Traditional SERP ranking: Crawlers index static metadata, Schema.org entities, and semantic content density.
- Generative Engine Optimization (GEO): AI answer engines (Perplexity, ChatGPT Search, Claude) synthesize answers from top snippets and cite concise, factual paragraph blocks.
I built jev-seo to give developers and coding agents a complete SEO and GEO audit engine with zero subscription costs.
+-------------------+ +----------------------+ +---------------------+
| Target Site / URL | | jev-seo (Rust CLI) | | TypeSafe AI (Jev) |
| Markdown / HTML | -----> | Local DuckDuckGo SERP| <----> | /v1/systemone |
+-------------------+ | Fast HTML Parser | | 70-120ms semantic |
+----------------------+ +---------------------+
|
+---> .jev-seo.db (Local SQLite)
+---> Terminal Tables & JSON-RPC MCP
Zero-Cost Architecture
jev-seo runs as a single static Rust binary with no headless Chrome dependencies.
- Zero-API SERP scraping: Queries DuckDuckGo HTML and autocomplete endpoints directly. No paid proxies or credit card registrations required.
- Fast static audits: Scans hundreds of local HTML and Markdown files in under 400ms using
fast-html-parserandgray_matter. - System One semantic scoring: Uses TypeSafe AI Jev (
jev-latest) to score search intent alignment, query relevance, and citation viability at 70ms latency. - Local SQLite telemetry: Stores historical rankings and audit runs in a local SQLite file (
.jev-seo.db) with zero external network tracking.
src/
main.rs # Clap CLI parsing and subcommands
mcp.rs # Stdio JSON-RPC 2.0 MCP server for agent integration
audit.rs # Local file scanner: titles, meta tags, and open graph
schema.rs # JSON-LD 2026 validator (SoftwareApplication, Article)
robots.rs # Robots.txt parser with AI crawler radar
serp.rs # DuckDuckGo HTML search scraper and parser
brief.rs # SERP content brief synthesizer
geo.rs # Generative Engine Optimization scorer
db.rs # SQLite storage with rusqlite
Subcommands and Capabilities
The CLI provides eight specialized subcommands:
# 1. Audit local project files for SEO defects
jev-seo audit ./content
# 2. Check JSON-LD Schema.org validity
jev-seo schema https://example.com
# 3. Inspect robots.txt rules for AI crawlers (GPTBot, ClaudeBot)
jev-seo robots https://example.com/robots.txt
# 4. Synthesize a content brief from live SERP competition
jev-seo brief "offline expense tracker android"
# 5. Run Generative Engine Optimization citation evaluation
jev-seo geo "What is the fastest grep tool for AI agents?"
# 6. Query live search rankings and competitor positions
jev-seo query "driverless cdp browser"
# 7. Track keyword positions over time
jev-seo track "agentic coding stack" --domain example.com
# 8. Start the MCP server for AI coding agents
jev-seo --mcp
GEO Scoring and Citation Blocks
Generative search engines do not read 3,000-word articles end to end. They extract grounded factual segments between 134 and 167 words that directly answer specific queries.
jev-seo geo runs input text through TypeSafe AI System One to evaluate two distinct metrics:
- Information density: Does the paragraph answer the user prompt immediately without introductory fluff?
- Factual claim clarity: Are architectural claims backed by concrete metrics (latency, binary size, memory usage)?
Evaluation:
Query: "fastest rust grep for coding agents"
Citation readiness: 94/100
Word count: 148 words (optimal band: 134-167)
Verdict: PASSED
Agent Integration via MCP
Coding assistants like Claude Code and Antigravity can run jev-seo as an stdio MCP server. When an agent writes documentation or landing pages, it queries jev-seo to verify Schema.org syntax and check keyword visibility before committing.
The binary compiles to 3.8MB on Windows and Linux with zero background daemon memory.
More Essays
Building jev-curate: Fast Synthetic Dataset Sifter in Rust
Filtering synthetic training data with TypeSafe AI Jev: streaming JSONL and Parquet rows through calibrated System One gates at 70ms latency with zero memory accumulation.
systemsBuilding jev-git: Sub-Second Git Reflex Gate in Rust
Screening staged git diffs for leaked secrets, destructive payloads, and AI hallucinations in 80ms using TypeSafe AI Jev System One.
systemsBuilding jev-scout: Zero-Hallucination Crate and Repo Scout
Preventing AI package hallucinations: discovering real crates and GitHub repositories using live registry APIs and TypeSafe Jev speculative fan-out scoring.