agentsclimarketplace

Kai seo audit

Skill cgallic/kai-cmo-harness/harness/skills/kai-seo-audit

Open-source AI CMO for Claude Code: marketing agent skills for SEO, content, email, ads, launches, CRO, AEO/GEO, and AI-search visibility.

Install
npx -y skills add cgallic/kai-cmo-harness --skill kai-seo-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

One-click technical SEO audit of a website. Runs the full technical SEO audit SOP — crawlability, indexation, Core Web Vitals, schema markup, internal linking, mobile UX, and content quality. Outputs a prioritized fix list. Use when "SEO audit", "technical SEO", "site audit", "crawl issues", "indexation problems", "why aren't we ranking", "SEO health check", or any request to diagnose SEO issues on a website.

SKILL.md

9.2 KB, as published. Nobody here has run it

Run a technical SEO audit using the harness SOPs and checklists. Produces a prioritized fix list.

Non-Negotiable: Kai Data Provenance

Before writing any finding, load harness/references/audit-data-provenance.md.

Declare the audit mode:

  • sales_external for public-only or prospect audits.
  • onboarding_connected when GSC, GA4, GBP, crawl exports, or SEO platform data are connected.
  • internal_demo when values are placeholders.

Do not publish rankings, traffic, clicks, CTR, Core Web Vitals, PageSpeed, indexed-page counts, backlinks, Domain Rating, AI Overview visibility, schema validity, or local pack placement without source, retrieval date, and artifact/API note. Missing private data becomes a Data needed item, not an estimate.

Run before handoff:

python scripts/quality_gates/audit_provenance_lint.py workspace/seo-audit --audit-dir

Phase 0.5: Source-Backed Data Acquisition

Before writing the SEO audit, run the source-backed Kai collector. The collector is shared by all Kai workflows, not audit-only; this SEO audit must consume its audit-data.json alias. Existing audit automations may keep using python -m scripts.audit.collect; non-audit SEO workflows should prefer python -m kai.source_data.collect and read kai-data.json.

python -m scripts.audit.collect --url "<url>" --mode sales_external --workflow seo-audit --out workspace/seo-audit --pagespeed --dataforseo --seo-provider auto --keywords "<kw1>,<kw2>" --location "<city, state>"

Use --mode onboarding_connected only when GSC/GA4/GBP or SEO platform exports are connected:

python -m scripts.audit.collect --url "<url>" --mode onboarding_connected --workflow seo-audit --out workspace/seo-audit --pagespeed --places --dataforseo --seo-provider auto --gsc --ga4 --keywords "<kw1>,<kw2>" --location "<city, state>" --date-from "<YYYY-MM-DD>" --date-to "<YYYY-MM-DD>"

Add --third-party-sources serpapi,brightlocal,similarweb,builtwith,wappalyzer,bing-webmaster when the SEO audit needs licensed vendor or non-Google search data. Treat API vendor values as third_party_estimate; treat supplied exports as user_provided.

The audit must read SEO metrics from workspace/seo-audit/audit-data.json; non-audit SEO workflows can read the identical workspace/seo-audit/kai-data.json. If a ranking, traffic, backlink, review, PageSpeed, Core Web Vitals, schema, GSC, GA4, or local pack metric is missing there, write it as a data gap rather than estimating it.

Phase 0: Load Product Context

Check if MARKETING.md exists in the project root (same directory as CLAUDE.md, README.md, package.json).

If it exists: Read it — skip product discovery questions. It has the product name, ICP, value prop, monetization, brand voice, current channels, and competitive landscape.

If it does NOT exist: Auto-explore the codebase to create it in the project root (next to CLAUDE.md). Do NOT ask the user what the product is. Read CLAUDE.md, README.md, PROJECT.md, package.json, landing pages, and any project files. Search for email/ad/analytics config. Then create MARKETING.md using the template from /kai-email-system. Present draft to user for confirmation.


Phase 1: Site Input

Read from MARKETING.md. Only ask about things not covered there:

  1. URL — what site are we auditing?
  2. Scope — full site or specific sections?
  3. Known issues — anything already flagged?
  4. Access — do we have Search Console / analytics access?
  5. Priority — what matters most? (rankings, traffic, indexation, speed)
  6. Audit modesales_external, onboarding_connected, or internal_demo
  7. Data sources available — public crawl, PageSpeed Insights, DataForSEO, Ahrefs/Semrush/Moz, GSC, GA4, GBP, Screaming Frog/Sitebulb export

Phase 2: Audit Execution

Load these before starting:

  • knowledge/checklists/technical-seo-audit-sop.md
  • knowledge/checklists/technical-seo-checklist.md
  • knowledge/checklists/seo-checklist.md

Audit Layers (run in order)

Layer 1: Crawlability & Indexation

  • robots.txt — blocking important pages?
  • XML sitemap — exists, submitted, up to date?
  • Canonical tags — correct, consistent?
  • Noindex/nofollow — any unintended blocks?
  • HTTP status codes — 404s, redirect chains, 5xx errors?
  • Pagination — rel=next/prev or infinite scroll handling?

Layer 2: Technical Performance

  • Core Web Vitals (LCP, INP, CLS)
  • Mobile-friendliness
  • Page speed (server response time, render-blocking resources)
  • HTTPS — mixed content, certificate issues?
  • Structured data / schema markup — present, valid?

Layer 3: On-Page SEO

  • Title tags — unique, keyword-included, under 60 chars?
  • Meta descriptions — unique, compelling, under 155 chars?
  • H1 tags — one per page, keyword-relevant?
  • Image alt text — descriptive, keyword-relevant?
  • Internal linking — orphan pages, shallow link depth?
  • URL structure — clean, descriptive, flat hierarchy?

Layer 4: Content Quality

  • Thin content pages (under 300 words)
  • Duplicate content (internal and external)
  • Keyword cannibalization (multiple pages targeting same keyword)
  • Content freshness — last updated dates
  • E-E-A-T signals — author bios, citations, credentials

Layer 5: Off-Page Signals

  • Backlink profile overview (if data available)
  • Brand mentions without links
  • Local SEO (if applicable) — GBP, NAP consistency

Use the browse/gstack skill to actually crawl pages if available. Otherwise, work from what the user provides or can check.

Every check must carry source metadata:

source_tier: connected | public_observed | user_provided | inferred | missing_data
source_name: ""
source_url: ""
retrieved_at: ""
evidence_artifact: ""
confidence: high | medium | low
score_eligible: true | false

Do not include inferred or missing_data items in the health score.

Phase 3: Prioritized Fix List

Score each finding:

PriorityImpactEffortExamples
P0High impact, easy fix< 1 hourMissing title tags, broken canonical, noindex on important pages
P1High impact, moderate effort1 dayCWV failures, redirect chains, thin content
P2Medium impact1 weekSchema markup, internal linking optimization
P3Low impact / nice-to-haveOngoingAlt text gaps, URL cleanup

Recurring SEO Ops Monitor

For retained or repeated SEO work, add seo-ops-monitor.md beside the audit report. Keep it source-backed and operational:

  • Cadence: weekly for crawl/indexation/CWV/schema regressions; monthly for content decay, query movement, and internal-link opportunities.
  • Inputs: collector output, GSC/GA4 exports when connected, PageSpeed artifacts, crawl exports, sitemap and robots snapshots, rank or local data vendor exports when licensed.
  • Alert rules: new noindex, robots block, sitemap drop, 4xx/5xx spike, redirect chain, canonical conflict, CWV regression, schema error, title/H1 removal, orphaned priority page, organic landing-page drop.
  • Queue format: issue, source, retrieved_at, affected URL, severity, owner, proposed fix, approval needed, status, next check date.
  • Never report movement, traffic, rankings, or visibility without provenance. Missing connected data becomes a monitor gap.

Phase 4: Output

# SEO Audit Report: [site.com]

> **Kai root note:** `knowledge/`, `harness/`, and `scripts/` paths in this skill live in the Kai install, not the user's project. Resolve them against the first ancestor directory of this SKILL.md that contains a `knowledge/` folder (the Kai plugin root, `~/.claude/kai`, or the kai-cmo-harness repo). `MARKETING.md`, `memory/`, and any output files live in the current project. If a referenced `scripts/` command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.

Audit Mode: [sales_external/onboarding_connected/internal_demo]

## Health Score: [X]/100

## Critical Issues (P0)
| Issue | Pages Affected | Fix |
|-------|---------------|-----|
| ... | ... | ... |

## High Priority (P1)
| Issue | Pages Affected | Fix |
|-------|---------------|-----|

## Medium Priority (P2)
...

## Low Priority (P3)
...

## Technical Checklist Results
- [ ] robots.txt: [PASS/FAIL — detail]
- [ ] XML sitemap: [PASS/FAIL]
- [ ] Canonical tags: [PASS/FAIL]
- [ ] Core Web Vitals: [PASS/FAIL — LCP: Xs, INP: Xms, CLS: X]
- [ ] Mobile: [PASS/FAIL]
- [ ] HTTPS: [PASS/FAIL]
- [ ] Schema: [PASS/FAIL]
- [ ] Title tags: [PASS/FAIL]
- [ ] Internal linking: [PASS/FAIL]
...

## Recommendations
[Top 5 actions ordered by impact-to-effort ratio]

## Data Sources
[Source inventory with retrieved_at and artifacts]

## Data Gaps
[Missing access or exports that limit confidence]

Save to workspace/seo-audit/[domain].md.

Gives 0 of the 12 instructions most audit compliance skills give

Counted across 936 of the 1,487 authors here whose files we hold, read 2026-08-06

  • group findings by severityin 44 of 936
  • Fetch latest guidelines before each reviewin 43 of 936, across 3 files
  • Check files against all fetched rulesin 42 of 936, across 2 files
  • Output findings in terse file:line formatin 41 of 936, across 3 files
  • Ask user which files to review if none specifiedin 41 of 936, across 3 files
  • Read specified files or prompt user for filesin 39 of 936, across 1 file
  • generate the audit reportin 39 of 936, across 36 files
  • assign a severity to every findingin 25 of 936
  • run automated accessibility scansin 23 of 936, across 13 files
  • map findings to WCAG criteriain 20 of 936, across 10 files
  • confirm audit scopein 19 of 936, across 9 files
  • check title tags and meta descriptions for uniquenessin 19 of 936, across 5 files

Said here and by no other author read

  • load data provenance guidance before writing findings
  • run the audit provenance lint script before handoff
  • run the source-backed data collector before writing the audit
  • generate the marketing context file automatically if missing
  • cite sources and retrieval dates for published metrics
  • read seo metrics from the collected json file

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.