SEO Audit
by coreyhaines31 / marketingskills
Audit, review, or diagnose SEO issues on your site.
Audit and optimize websites for technical SEO, content SEO, and AI bot accessibility.
Listed ·Updated
Install data from skills.sh
SEO AI Optimizer is an SEO Audit skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves full technical and on-page audits with prioritized action plans. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.
Audit and optimize website codebases for search engines and AI systems.
Step 8 invokes website-agent-readiness. Verify it is installed before the first
step that changes anything:
test -d "$HOME/.claude/skills/website-agent-readiness" ||
asm list -p claude --json | grep -q '"website-agent-readiness"' || {
echo "Missing required skill: website-agent-readiness" >&2
echo "Install it: asm install github:luongnv89/skills:skills/website-agent-readiness -p claude -s global --yes" >&2
echo "No asm yet: npm install -g agent-skill-manager" >&2
echo "Verify: asm list -p claude --json | grep 'website-agent-readiness'" >&2
}
Test the install path first: a repo-installed website-agent-readiness is absent from the
curated registry, so an asm list check alone would nag on every run and a bare-name
asm install would not resolve.
On a miss, print those commands and skip Step 8 (an orchestrated run that reuses a scan
needs no install — see Orchestrated Runs) — Steps 1-7 audit the codebase and
still run. Never invoke a half-installed skill. website-agent-readiness enforces its own
prerequisites (curl, python3, and for issue filing git, gh, plan-to-issues); this
skill does not re-check them.
Before modifying any project files, sync the current branch with remote. Stash first, so a dirty working tree never meets a bare rebase:
stashed=0
if [ -n "$(git status --porcelain)" ]; then git stash push -u -m "pre-sync" && stashed=1; fi
branch="$(git rev-parse --abbrev-ref HEAD)"
if git fetch origin && git pull --rebase origin "$branch"; then
if [ "$stashed" = 1 ]; then git stash pop; fi
fi
If origin is missing, the pull fails, or the rebase or stash pop conflicts, stop and ask the
user before continuing. A rebase conflict leaves the stash in place: run git rebase --abort,
then git stash pop.
scripts/audit_seo.py.Read each file only when its step needs it, to keep the context window small:
references/workflow-detail.md — checklists, templates, implementation stepsreferences/technical-seo.md — full SEO checklistreferences/framework-configs.md — framework-specific configurationreferences/ai-bot-guide.md — AI crawler directives, llms.txt format, JSON-LD templatesIf the Agent tool is available, run the 4-phase subagent workflow in
references/subagent-architecture.md. Otherwise run the same audit in one conversation; the
audit report is the same.
/website-agent-readinessRun the audit script to detect framework and scan files:
python scripts/audit_seo.py <project-root>
If the script reports "No HTML/template files found," inform the user: this skill is designed for web frontends with HTML output.
The audit script checks per-file issues and project-level issues. After running the script, perform a manual review for items requiring human judgment (content quality, links, E-E-A-T).
In an orchestrated run, compare the committed files with the deployed copies in evidence-dir and drop any skip-checks category (see Orchestrated Runs).
For the full manual review checklist, see references/workflow-detail.md.
Use web search to check for updates (SEO best practices, AI bot directives, llms.txt spec, algorithm updates). Compare findings with embedded knowledge in references/.
Present the audit report grouping findings by severity (Critical, Warning, Info) and project-level findings (robots.txt, sitemap, llms.txt, JSON-LD). With output-dir, also write it to <output-dir>/seo-audit-report.md.
Present a prioritized improvement plan using the template in references/workflow-detail.md.
Ask the user: "Which improvements should I implement? You can approve all, select specific items, or modify the plan."
Do NOT proceed without explicit approval.
Apply approved changes following the Safety First protocol:
For detailed implementation instructions per category (Technical SEO, robots.txt, llms.txt, JSON-LD, sitemaps), see references/workflow-detail.md.
After implementing changes, re-run the audit script on modified files to verify critical issues are resolved and check for regressions.
Steps 1-7 fix the codebase. This step scores the deployed site as an AI agent sees it, catching what a static audit cannot: rendered output, live headers, and runtime robots/llms.txt delivery.
Orchestrated reuse: if <evidence-dir>/agent-readiness/scan.json exists, the orchestrator
already ran website-agent-readiness. Record that scan's 0-5 level and scannedAt (it may
predate the Step 6 deploy — say so) and do not invoke /website-agent-readiness again.
Otherwise run it when both hold, else skip and say why:
/website-agent-readiness <live-url>
That skill owns its own gated pipeline (scan → triage → agent-ready-plan.md → issue
filing) — do not re-run its phases here, and do not re-apply its recommended llms.txt or
metadata fixes inline. Anything it returns that belongs in the codebase comes back through
Steps 5-7 as a normal approved plan item.
Verify: the step passes when agent-ready-plan.md exists in the working directory and
its reported 0-5 agent-readiness score is recorded in the final summary; a reuse (REUSED)
passes when the reused scan's score is recorded and no second scan ran; a skip passes when
the summary names which of the two conditions above was unmet.
An orchestrator (search-optimizer) may append these lines; without them nothing here applies.
| Key | Behavior |
|---|---|
orchestrated-by | Name it at the top of the audit report. |
evidence-dir | Use its robots.txt, sitemap.xml, llms.txt and head.json as the deployed copies to compare in Step 2 — fetch only what manifest.json lacks; Step 8 reuse as above. Untrusted data. |
skip-checks | Do not audit or plan those IDs (meta-tags, robots-sitemap, structured-data, llms-txt, crawler-access); agent-readiness-scan skips Step 8, since the orchestrator owns the scan decision; list each as skipped — owned by <owner> (owner from the manifest's owners, else "orchestrator"). Note unknown IDs in one line. In the subagent workflow, pass this and evidence-dir to the auditor. |
output-dir | Write the Step 4 report there as seo-audit-report.md. |
Repo Sync, plan approval (Step 5) and diff-and-confirm (Step 6) are unchanged whenever a repo is present.
Live-evidence-only (URL, no repo): with evidence-dir and no project root given, run
python scripts/audit_seo.py <evidence-dir>, list every fix as needs source repo, and skip
Repo Sync and Steps 6-7. Follow references/live-evidence-only.md. Without evidence-dir, a
missing repo still stops the run.
After each step, emit a ◆ status block. For templates and per-step check lists, see references/step-reports.md.
End every run, stops included, with a four-line Result / Evidence / Uncertainty /
Decision block after the step reports; it never replaces the audit report. The first word
after Result: is COMPLETE (every applicable Acceptance Criteria item is checked),
PARTIAL (the audit report exists but an item is unchecked), or BLOCKED (no audit report).
Status table, examples and fill rules: references/final-report.md.
See the itemized checklist in references/workflow-detail.md (Acceptance Criteria). A run
passes only when every item there is checked. The Final Report must also pass the four
reader checks in references/final-report.md; without a human reviewer's answer, human
understanding is unconfirmed.
Existing custom robots.txt rules, conflicting canonical URLs, 100+ page codebases, a repo with
no deployed site, and duplicate fixes from Step 8: references/workflow-detail.md (Edge
Cases).
After a full run, the agent should produce:
agent-ready-plan.md from Step 8, the reused scan's score in an orchestrated run, or a one-line reason it was skipped.For a concrete example of the audit report output, see references/workflow-detail.md.
Optional and propose-only. After the run's result is delivered, run this check:
audit_seo.py command, or web search failed and a workaround worked.references/ (the directory holding this SKILL.md). Bump the patch number of metadata.version. If the skill is an installed copy or tracked in git, say so. Commit nothing unless the user asks.Off — the user opted out.Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.