jev-seo README

The project's README from github.com/AgriciDaniel/jev-seo. As one markdown file: README.md.

jev-seo

version checks license python jev

jev-seo is a live SEO audit for any website, from one homepage URL. It crawls the site, checks it against 52 rules tied to Google Search Central, measures Core Web Vitals, and asks Jev, TypeSafe's System One model, typed questions about every page. Code scores and ranks every fix, and you get a designed PDF, an Excel action tracker and a Markdown report, all built from the same data.

It runs as a Claude Code skill (/jev-seo https://example.com) or from the command line. The standard mode needs no SEO data subscription and costs about a cent in Jev per site. An optional --full mode adds rankings, keywords and backlinks from DataForSEO for about 0.30 USD.

Cover, executive summary and plan of a jev-seo PDF report

Why it is useful

What you get Why it matters
A live crawl, not a template robots.txt, sitemaps, redirects, broken links, canonicals, structured data and JavaScript-only pages, checked on the real site in about a minute.
Meaning, judged by Jev Page type, search intent, importance, helpfulness, specificity, trust, citability, title and meta fit, and pages competing for the same searches, each a typed answer with its probabilities kept.
Ranked, explained fixes Every action has an ID, priority, impact, effort, evidence, a fix and an official source. Heuristics are labelled as heuristics.
Honest numbers Missing data stays missing. Scores rank work; they never predict rankings or traffic. The written summary is checked against the audit before it renders.
Three formats, one source PDF for the client, XLSX to track the work, Markdown for GitHub and Obsidian, all from one audit.json.

Start here: Example report · Skill workflow · How Jev is asked · How far to trust it · Method and formulas

See the output

A full audit of claude-seo.md, run with --full on 2026-09-22. Every file is in examples/claude-seo.md/: report.pdf · report.xlsx · report.md · digest.md · narrative.json.

PDF: how the audit was made, the scorecard and the priorities

Pipeline, scorecard and priority pages

PDF: search visibility from DataForSEO, filtered by Jev

Rankings, keyword opportunities and site structure pages

PDF: how Jev reads the site

Jev judgment cards, quality heatmap and where to invest

XLSX: the Actions sheet is the editable status tracker (rendered preview of the real workbook cells)

Actions sheet of the jev-seo workbook

Markdown: renders on GitHub and in Obsidian, with charts

Markdown report rendered

Live progress while it runs (lines from a real run)

jevseo progress output

Impact versus effort Keywords worth winning Where to invest
Impact versus effort Keyword opportunities Where to invest

Try it

Python 3.10+. WeasyPrint needs the Pango text library: on Debian or Ubuntu sudo apt install libpango-1.0-0 libpangoft2-1.0-0, on macOS brew install pango, on Fedora it is usually present (WeasyPrint install notes).

git clone https://github.com/AgriciDaniel/jev-seo.git
cd jev-seo
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env                           # add TYPESAFE_API_KEY (optional keys are listed inside)
bin/jevseo doctor                              # dependencies and keys, never prints values
bin/jevseo run https://example.com             # audit and render with an automatic summary

Optional: pip install playwright && playwright install chromium renders pages whose content only appears after JavaScript runs; without it those pages are audited from their raw HTML. pdftoppm (poppler) is only used by the Claude Code skill to look at rendered pages.

Reports land in jev-seo-reports/<domain>-<stamp>/. The offline tests need no keys and spend nothing:

python -m unittest discover -s tests -v

In Claude Code, link the folder as a skill (ln -s "$PWD" ~/.claude/skills/jev-seo) and run /jev-seo https://example.com. The skill runs the audit in the background, relays progress, reads the digest, checks surprising findings, writes the narrative and renders the three reports.

bin/jevseo audit https://example.com                            # crawl, rules, Jev, PageSpeed -> audit.json + digest.md
bin/jevseo render jev-seo-reports/<dir>                         # -> report.pdf, report.xlsx, report.md
bin/jevseo audit https://example.com --full                     # add DataForSEO (paid per call)
bin/jevseo audit https://example.com --full --reuse-dfs <dir>   # reuse DataForSEO data already collected
bin/jevseo rescore jev-seo-reports/<dir>                        # rebuild findings and scores offline, no spend

What runs where, and what it costs

How a jev-seo audit runs

Part Where it runs Cost
Crawl, rules, scoring, charts, PDF, XLSX, MD Your machine Free
JavaScript rendering for script-only pages Local headless Chromium (Playwright, optional) Free
Core Web Vitals and Lighthouse Google PageSpeed Insights API Free
Page, site and keyword judgments TypeSafe Jev API 0.042 USD per million input tokens; about 0.00015 USD per page
Rankings, keywords, competitors, backlinks, live SERPs, AI mentions (--full) DataForSEO API Reported per call; about 0.30 USD per site

Both paid APIs sit behind hard caps (--jev-budget, default 0.25 USD; --dfs-budget, default 1.00 USD) checked before every request, and every call is in the report's cost ledger. Keys come from the environment or a .env file (see .env.example): TYPESAFE_API_KEY, optionally PAGESPEED_API_KEY (without it PageSpeed is often rate limited), and for --full DATAFORSEO_USERNAME and DATAFORSEO_PASSWORD. Without the TypeSafe key the audit still runs, marks the Jev sections as not assessed, and labels the score a partial audit.

How far to trust it

Measured on 2026-09-22 and recorded in references/evaluation.md:

Check Result
Rule and crawl facts, re-fetched independently from the live site All verified; word counts within 5%
DataForSEO internal consistency (keyword counts, position buckets, traffic sum, referring domains) Exact
PageSpeed, fresh independent run Identical scores and field values
Jev repeatability, same 59 pages twice Scores moved 0.03 or less on average; confident page types agreed 44/44
Jev against a blind second judge, answers Jev marks decisive Helpfulness and specificity 28/29, opens with the point 23/23, next step 16/16, keyword relevance 27/30

The blind judge is a separate model, not a human, so this shows Jev is consistent and reasonable, not that it is right. Answers outside the decisive band are flagged "to verify" in every format. Question wording and the decisiveness measure were chosen by A/B tests; the results are in references/judgments.md.

What works

This is an evidence tool, not a rank tracker or a replacement for Search Console. It does not measure traffic, revenue or rankings over time.

Layout

SKILL.md              Claude Code skill: workflow, options, rules
bin/jevseo            runs the package from any directory
jevseo/               crawl, parse, checks, jev, dfs, psi, score, cli
jevseo/report/        view model, charts, pdf, xlsx, md
jevseo/templates/     report HTML and CSS
references/           narrative contract, Jev question registry, evaluation, method
examples/             a complete example audit
docs/assets/          README images
tests/                offline tests, no network and no spend

Limits

Large sites are sampled at the page cap (60 by default) and the report says so. Jev thresholds are not yet tuned against human labels. PageSpeed lab scores vary between runs, and field data exists only for sites with enough Chrome traffic. DataForSEO volumes, difficulty and traffic are estimates. Rules marked heuristic are editorial conventions, not search engine requirements.

License

MIT. The bundled fonts in jevseo/fonts/ are Inter and JetBrains Mono under the SIL Open Font License (license texts alongside). Jev is a product of TypeSafe AI; DataForSEO and PageSpeed Insights are third-party services with their own terms.

jev-seo (AgriciDaniel/jev-seo)

Searching Database…

这是什么?jev-seo 是一个实时 SEO 审计工具:从一个首页 URL 出发爬取整站,依据与 Google Search Central 挂钩的 52 条规则进行检查,测量 Core Web Vitals,并向 Jev(TypeSafe 的「系统一」模型)逐页提出类型化问题,从同一份审计数据生成 PDF、XLSX 行动跟踪表和 Markdown 报告。
这是独立的 CLI 工具,还是只是 Claude Code 技能?两者都是:它既能作为常规的 Python 命令行工具运行,也能作为 Claude Code 技能(/jev-seo)在后台驱动同样的审计并转发进度。
怎么跑第一次审计?安装 Python 3.10+ 和 WeasyPrint 需要的 Pango 库(Debian/Ubuntu 上用 apt install,macOS 上用 brew install pango),然后从命令行运行它,或者用 'ln -s "$PWD" ~/.claude/skills/jev-seo' 把它链接为 Claude Code 技能并运行 '/jev-seo'。报告存放在 jev-seo-reports/。
Jev 评判的部分需要 API key 吗?需要,Jev 的页面级和站点级评判需要 TYPESAFEAPIKEY(每页约 $0.00015);PAGESPEEDAPIKEY 对 Core Web Vitals 是可选的,DATAFORSEOUSERNAME/PASSWORD 只有付费的 --full 模式才需要。没有 TypeSafe key 时审计仍然运行,但会把相应部分标记为未评估。
不管站点多大它都会审计全站吗?不会,大站点默认按最多 60 页抽样,报告中会说明何时发生了抽样;PageSpeed 实验室分数在不同运行之间可能有波动,Jev 的评分阈值也尚未针对人工标注调优过。
它能在 Windows 上用,还是只有 Linux 和 macOS?安装说明只覆盖 Debian/Ubuntu、Fedora 和 macOS(Pango 库通过 apt 或 brew 安装);安装步骤中没有提到 Windows。
三种报告格式里实际都有什么?PDF 包含封面、摘要、评分卡、影响-成本对比图和面向客户的优先级;XLSX 包含带下拉选项的可编辑 Actions 跟踪表,以及原始的 Jev 判定和概率;Markdown 版本在 GitHub 或 Obsidian 中可渲染 Mermaid 图表。三者都来自同一份 audit.json。
Jev 的判定有多可靠?对同样 59 个页面的重复运行平均分数变动不超过 0.03,44 次对有把握的页面类型判断全部一致;另一个盲测模型评判在大多数检查项上也认同 Jev 的明确结论——不过这体现的是一致性,并非已证明的正确性。
--full 模式增加了什么?--full 标志会从 DataForSEO API 拉取排名、关键词、竞争对手、外链域名、实时 SERP 和 AI 提及,每个站点约 $0.30,这是在免费爬取和约 $0.01 的仅 Jev 标准审计之外的。
免费爬取涵盖哪些检查?它会礼貌地爬取 robots.txt 和站点地图,记录重定向和主机/HTTPS 探测,检查软 404 和 llms.txt,并运行 52 条规则,覆盖索引、页面内容、链接、结构化数据、AI 爬虫访问、性能和安全。
Size
6.5 MB
Stars
651
Updated
CommitSep 22
Age
26d
Commits · 90 Days