api-relay-audit
toby-bridges
Local security audit for AI API relays and LLM proxies: detects prompt injection, model substitution, tool-call rewriting, SSE anomalies, error leakage, and Web3 wallet risks.
Haniubub/seo-toolkit
The SEO audit toolkit built for DeepSeek Harness (DSH) — runs locally, no Claude Code, no API key required. Self-contained port of claude-seo v2.2.5: 53 Python scripts + 24 sub-skills + 18 agents, weighted score, gated fan-out, schema.org, E-E-A-T, GBP, GEO/AI Overviews.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Haniubub/seo-toolkit
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
Status: production-ready · v1.0.0
A production-grade SEO audit toolkit built for DeepSeek Harness (DSH) that runs a full, weighted technical, content, schema and local audit on any website — self-contained and strictly local: no Claude Code, no plugin marketplace, no third-party SaaS, no per-domain pricing, and no API key required for the core audit. It executes as a plain CLI + agent library in the DeepSeek Harness environment and works out of the box.
Unlike SEO skills bound to Claude Code, seo-audit is DSH-native: you run it in the harness you already use, with nothing leaving your machine.
Built for local SEO, technical SEO, schema.org, E-E-A-T, GEO / AI Overviews, Google Business Profile (GBP), on-page & content audits across any industry.
It combines deterministic measurement (own Python specialists + 53 curated scripts) with LLM-driven judgment (24 sub-skills + 18 specialist agents), and synthesises everything into one weighted, prioritised report.
The audit logic is anchored in primary-source Google guidance and this is a native, self-contained port of the MIT toolkit AgriciDaniel/claude-seo v2.2.5 — see Attribution & License.
seo-audit is a free, local SEO audit toolkit for DeepSeek Harness (DSH). You run
one command (./seo audit <url>) and get a weighted, prioritised action plan covering
technical SEO, on-page, schema/JSON-LD, E-E-A-T, GEO/AI Overviews, Local/GBP, backlinks,
e-commerce, sitemap, image SEO, content briefs, keyword clustering, drift tracking and
Google APIs (PSI/CrUX/GSC). It runs on your own machine — no per-domain pricing, no
SaaS, and no API key required for the core audit. Measurement (53 Python scripts +
lib/) is deterministic; judgment (24 sub-skills + 18 agents, e.g. E-E-A-T, GEO/AIO,
GBP) is LLM-driven. Every recommendation carries the four claude-seo fields:
Observation → Dependency → Failure signal → Early indicator.
Top use cases: auditing a website's search visibility, technical SEO, schema markup, content/E-E-A-T, local SEO or Google Business Profile, GEO/AI-Overview readiness, Core Web Vitals, sitemap/hreflang, keyword clustering, content briefs and drift tracking.
Yes. It's MIT-licensed and runs locally. The core audit needs no API key, no account,
no domain pricing — only Python 3.10+, requests, beautifulsoup4, lxml and
Playwright (installed by ./setup.sh into a workspace-local pylibs/).
No. seo-audit is a self-contained port of claude-seo and runs standalone. It needs no Claude Code, no plugin marketplace and no third-party SaaS.
The core audit works fully without any key. Google APIs (PageSpeed, CrUX, GSC, GA4), DataForSEO, Firecrawl, Ahrefs, Bing and Banana are ported but only activate once you supply their own credentials — otherwise they degrade gracefully.
It's a native, self-contained port of claude-seo v2.2.5 (MIT-compatible), with the same weighted score (Technical 22% · Content 23% · On-Page 20% · Schema 10% · Performance 10% · AI-Readiness 10% · Images 5%) and the same gated multi-agent fan-out, but it runs entirely in your own environment.
Every recommendation ships with Observation → Dependency → Failure signal → Early indicator: field 2 sets the execution order, field 3 tells you how you'd know it worked, field 4 is the leading signal to watch.
A full audit is split into two layers:
| Layer | What it is | How it runs |
|---|---|---|
| Measurement | 5 Python specialists + 53 curated scripts | ./seo <command> |
| Judgment | 24 sub-skills + 18 agent prompts (E-E-A-T, GEO/AIO, Local/GBP, SXO, …) | Agent executes via subagent/workflow |
Every recommendation carries the four claude-seo fields: Observation → Dependency → Failure signal → Early indicator.
A sample of the top recommendations an audit produces, with their four fields. These are illustrative (anonymised, no real site data) — they show the shape of the output, not a specific client's findings.
① Complete the local structured data (LocalBusiness / Restaurant)
LocalBusiness markup.② Fix a case-sensitive asset path (stylesheet 404)
③ Add crawlable fallback content + robots & sitemap
These three span different impact axes — local visibility, rendering/performance and indexation — which is exactly why they surface near the top of an audit. Full audit output is a weighted score across seven categories plus a dependency-ordered action plan.
Most SEO automation on GitHub falls into a few buckets, and most cover only one of them. This toolkit is the only one that combines all four:
| Capability | Single-feature tools | Claude-Code-only | Hobby projects | Agent frameworks | seo-audit |
|---|---|---|---|---|---|
| Full audit (technical + content + schema + local) | — | ✅ | — | — | ✅ |
| Deterministic measurement layer (no LLM for the crawl) | — | — | — | — | ✅ |
| Weighted, Google-aligned scoring | — | — | — | — | ✅ |
| Gated multi-agent fan-out by business type | — | — | — | — | ✅ |
| Runs locally, no SaaS / no per-site pricing | — | — | — | — | ✅ |
| Secret redaction + sandbox hardening | — | — | — | — | ✅ |
| Drift tracking (baseline / compare / history) | — | — | — | — | ✅ |
| Pluggable extensions (DataForSEO, Firecrawl, Ahrefs, Bing) | — | — | — | — | ✅ |
The through-line: measurement is deterministic Python (repeatable, cheap), judgment is LLM-backed, and the two are gated so you only run the agents a site actually needs. That combination — plus primary-source Google guidance and cost transparency — is what separates it from the single-feature and Claude-locked alternatives.
The judgment layer uses an LLM, so that part costs real tokens. But the
measurement layer is pure local Python (53 scripts + lib/) — it runs on
your machine for $0 in LLM tokens. Only the LLM reasoning over those findings
costs anything, and on DeepSeek that's a few cents per audit — the whole reason
this port is worth switching to.
💡 12×–30× cheaper per audit than running the same audit on Claude.
Full comparison below — the number holds for every Claude tier you would otherwise run (Sonnet 5, Opus 5, even Haiku).
| Model (per 1M tokens — in / out) | Input | Output | Cost per full audit | Cost × 50 | Cost × 500 |
|---|---|---|---|---|---|
| Claude Sonnet 5 (cheapest tier) | $2.00 | $10.00 | ≈ $0.45 | ≈ $22.50 | ≈ $225.00 |
| Claude Opus 5 (top tier) | $5.00 | $25.00 | ≈ $1.13 | ≈ $56.50 | ≈ $565.00 |
| DeepSeek V3.2 | $0.27 | $0.40 | ≈ $0.04 | ≈ $2.00 | ≈ $18.50 |
The gap only widens at volume. At 500 audits Claude Opus would bill you ≈ $565 for the LLM judgment — DeepSeek runs the same ≈ $18.50.
Worked example — one full ./seo audit on a local-service site spawns the
always-on agents (technical, content/E-E-A-T, schema, page, sxo, geo) plus a few
industry-specific ones, then synthesises the weighted report. Measure that as
100,000 input tokens and 25,000 output tokens per audit:
Claude Sonnet 5: (0.10 M × $2) + (0.025 M × $10) = $0.20 + $0.25 = $0.45
Claude Opus 5: (0.10 M × $5) + (0.025 M × $25) = $0.50 + $0.625 = $1.13
DeepSeek V3.2: (0.10 M × $0.27)+ (0.025 M × $0.40) = $0.027 + $0.01 = $0.037
So the same audit costs ≈ $0.04 on DeepSeek against ≈ $0.45–$1.13 on Claude (Sonnet 5 to Opus 5) — roughly 12×–30× cheaper, depending on the Claude tier you would otherwise run. At 20 sites a day Claude would bill you ≈ $9.00–$22.60 for the LLM judgment alone; DeepSeek does the same for ≈ $0.74.
💡 With DeepSeek V4-Flash the gap can be even larger. The table above uses the conservative DeepSeek V3.2 tiers. Running the same audit on V4-Flash (
$0.14/Min,$0.28/Mout) lowers the DeepSeek side to ≈ $0.02, which raises the comparison to ~21× vs. Sonnet 5 and ~54× vs. Opus 5. So the honest range is ~12×–54×, and it only improves with newer DeepSeek models.
The measurement layer never touches the LLM, so a technical, schema or
local check costs $0 in LLM tokens — only the reasoning steps that need
judgement cost anything.
Prices are indicative list rates as of August 2026 and change frequently. DeepSeek rates per OpenRouter; Claude rates per Anthropic pricing. Token volumes are illustrative of a typical multi-agent audit and vary by site.
New here? See docs/TUTORIAL.md — an end-to-end audit in 5 minutes.
cd seo-toolkit
./setup.sh # installs workspace-local deps + Playwright Chromium
./seo doctor # environment health check
./seo audit https://example.com # full weighted audit
./seo technical <url> # technical SEO (9 categories)
./seo page <url> # on-page / content signals
./seo schema <url> # schema.org / LocalBusiness
./seo local <url> # local / NAP signals
./seo visual <url> # render, hydration, console errors
./seo sitemap <url> # sitemap discovery & validation
./seo content <url|file> # QRG content-quality scoring
./seo backlinks <url> # free backlink sources
./seo cluster <keyword> # keyword clustering
./seo content-brief <topic> [keyword] # content brief
./seo drift baseline|compare|history <url>
./seo google <sub> [args] # PSI / CrUX / GSC / GA4 (key required)
./seo run <script.py> [args] # run any of the 53 scripts directly
./seo list # enumerate scripts, skills, extensions
./seo audit detects the business type, then spawns only the relevant
sub-agents in parallel (never all 18):
Ready-made workflow: audit-fanout.workflow.js.
seo-toolkit/
├── seo.py # CLI orchestrator (weighted score, redaction, gating)
├── lib/ # measurement core (fetch, report, drift, checks_*)
├── scripts/ # 53 ported measurement scripts
├── skills/ # 24 sub-skill prompt packs + reference knowledge
├── agents/ # 18 specialist agent prompts
├── extensions/ # DataForSEO, Firecrawl, Ahrefs, Bing, Banana, …
├── schema/ pdf/ data/ # support assets
└── audit-fanout.workflow.js # reproducible parallel fan-out
Weighted SEO Health Score (claude-seo parity): Technical 22% · Content 23% · On-Page 20% · Schema 10% · Performance 10% · AI-Readiness 10% · Images 5%.
Sandbox-safe runtime: workspace-local pylibs/ (pinned to known-good
lxml==5.4.0, requests==2.32.5, playwright==1.55.0) and browsers/.
requests, beautifulsoup4, lxml, playwright (see requirements.txt)Google APIs (PageSpeed, CrUX, GSC, GA4), DataForSEO, Firecrawl, Ahrefs, Bing and Banana are ported but require their own credentials. Without them the core measurement still works fully.
Your API keys are read from environment variables at runtime
(os.environ.get(...)) — nothing is stored in the repo or in a config file that
gets committed. A few best practices:
The audit logic and scoring are grounded in primary-source guidance rather than
blog-level folklore. The bundled pdf/google-seo-reference.md
is the canonical, curated source-of-truth shipped with this toolkit, and the
categories map to the following references.
The bundled references and this list stay aligned with Google Search currency through August 2026. Deprecated structured-data types (HowTo, SpecialAnnouncement, ClaimReview, VehicleListing, …) are flagged rather than recommended.
This project is a native re-implementation and port of AgriciDaniel/claude-seo v2.2.5 (MIT, © Agrici Daniel). It does not vendor the original repository or run Claude Code; the upstream toolkit was ported, adapted and rebuilt to run standalone as a local CLI + agent library in the DeepSeek Harness environment.
Where the measurement logic is derived from claude-seo, the original MIT
copyright and permission notice is preserved in LICENSE and in the
individual ported script headers.
This repo's own work (also MIT, © 2026 seo-audit contributors):
./seo, with dependency pinning and a sandbox-safe,
workspace-local runtime (no global installs, no SaaS).overall_score() renormalisation.audit-fanout.workflow.js.lib/ measurement core, and curated script set../seo doctor, GitHub Actions
CI, CHANGELOG.txt/release notes.Both the upstream-derived and the original code are released under the MIT License.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: claude-skills、dsh-skill、claude-code、seo-audit。