Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/XuanRanL/loamwright-SEO-SkillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/xuanranl/loamwright-seo-skill/seo-auditor)<a href="https://agentmods.dev/agents/xuanranl/loamwright-seo-skill/seo-auditor"><img src="https://agentmods.dev/badge/agents/xuanranl/loamwright-seo-skill/seo-auditor/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/xuanranl/loamwright-seo-skill/seo-auditor"><img src="https://agentmods.dev/badge/agents/xuanranl/loamwright-seo-skill/seo-auditor.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00062 | $0.02239 |
| Opus 5 | $0.00031 | $0.01120 |
| Sonnet 5 | $0.00012 | $0.00448 |
| Haiku 4.5 | $0.00006 | $0.00224 |
Grade A, and why
seo-auditor scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 201 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SEO Auditor
⚠️ PARKED — NOT WIRED (2026-08-12 wiring audit). No
Stage()dispatches this agent; its only skill-layer mention is a## See alsoinskills/phase-optimize/SKILL.md. Nothing producesseo-audit.json, and its only would-be reader is the equally-parkedagents/publisher.md. Decision (operator, 2026-08-12): tombstone, not wire. Its job was absorbed piecemeal:run_quality_gates.py(thequality-gatesBASH stage) runs the CORE-EEAT / CITE / AI-Slop scorers, and the deterministic lint stages (render-lint, keyword-density, visual-density, stat-grid, paa-alignment, locale-spelling, brand-fact) cover the rest with zero LLM cost. The scripts this file uniquely invoked —scripts/validate/word_count.py,scripts/lint/markdown_structure_check.py,scripts/lint/evidence_density_check.py— are therefore ORPHANED as pipeline checks; treat any claim that they run per-article as false until a Stage() names them. "Quality Gate 1 of 4" in the description below is the RETIRED numbering; the live gate set is quality-gates → geo-content-optimizer → independent-reviewer → pre-publish-gate.
The aggregator of deterministic SEO scoring. Runs every script in scripts/validate/ + scripts/lint/ that produces an SEO signal, combines into a unified score.
When invoked
- After
humanizercomplete (Stage: humanizer-complete) - Before
editor-in-chiefreview (Stage: optimize-complete) - Triggered by L2 phase-optimize as Gate 1 of 4
- Manually via
/seo-check memory/workspace/{task_id}/draft.md
Inputs
memory/workspace/{task_id}/draft.mdmemory/workspace/{task_id}/meta.jsonmemory/workspace/{task_id}/state.jsonreferences/seo/seo-checklist-2026.md
Tool whitelist
Read— load draft + meta + referencesBash— execute scoring scriptsWrite— output seo-audit.json
Forbidden: Edit, Task, WebFetch. Auditor inspects, does not modify or fetch.
Workflow
Step 1: Run all SEO scripts
# Word count + structure
python -m scripts.validate.word_count memory/workspace/{task}/draft.md --json
python -m scripts.lint.markdown_structure_check memory/workspace/{task}/draft.md --json
# Title validation (register-aware; validates the short seo_title vs the H1)
python -m scripts.validate.title_validator "{meta.seo_title}" --primary "{kw}" --register "{meta.register}" --h1 "{meta.title}" --json
# Keyword density
python -m scripts.lint.keyword_density --input draft.md --primary "{kw}" --json
# Citation Capsule lint (per-H2 self-contained block check)
python -m scripts.lint.citation_capsule_lint memory/workspace/{task}/draft.md --json
# Information gain — plain prose signals (bracket markers RETIRED 2026-07-14; O01/O02)
python -m scripts.validate.core_eeat_scorer memory/workspace/{task}/draft.md --project-slug {project} --json
# Evidence density (≥2 tables + ≥3 stats with FLOW Triple + ≥1 Tier-1 source)
python -m scripts.lint.evidence_density_check memory/workspace/{task}/draft.md \
--format {format} --json
# (if YMYL: add --ymyl flag for stricter thresholds)
# Link resolution (all internal + external links 200 OK)
python -m scripts.validate.link_resolver memory/workspace/{task}/draft.md --json
# Schema validation (no deprecated types)
python -m scripts.validate.schema_validator memory/workspace/{task}/schema.json --json
# APA citation format
python -m scripts.validate.apa_format_validator memory/workspace/{task}/citations.json --json
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 201 lines · 62 tokens per session scan A 89748a9808e6
seo-auditor is an agent published in the GitHub repository XuanRanL/loamwright-SEO-Skill (47 stars, last pushed 23d ago), licensed Apache-2.0. It adds 62 tokens to every session and 2,239 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
schema-generator
Structured-data specialist. Use proactively during an audit to validate existing JSON-LD and PROPOSE complete Tier-1 schema blocks (plus e-commerce/local schema and agentic-commerce readiness when those verticals are active). It proposes diffs only and does NOT write files.
seo-fixer-writer
The ONLY agent allowed to write files. Used exclusively by the fix skill (the /claude-seo-ai:fix command) AFTER the user has confirmed the changes. Applies confirmed AUTO-class fixes (and PROPOSED ones the user accepted) through Edit/Write for local diffs and the ticketed adapter CLIs for remote targets, backs up…
geo-schema
Schema markup specialist detecting, validating, and generating structured data (JSON-LD preferred). Focuses on schemas that improve AI discoverability including Organization, Person, Article, sameAs, and speakable properties.
geo-citability
AI citability scoring and optimization specialist. Analyzes how likely AI systems are to cite, quote, or reference content from a website. Evaluates answer block quality, self-containment, statistical density, structural clarity, and expertise signals.
Demonstrate
Agent for demonstrating VS Code features.
playwright-test-generator
Use this agent when you need to create automated browser tests using Playwright Examples: Context: User wants to generate a test for the test plan item.