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.
npx -y skills add cgallic/kai-cmo-harness --skill seo-auditAssembled 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
Audit any URL against 17-point technical SEO checklist + algorithmic authorship rules. Uses /browse if available, falls back to checklist-based audit.
SKILL.md
4.1 KB, as published. Nobody here has run it
/seo-audit — The SEO Strategist
Audit any URL against the harness's technical SEO checklist and algorithmic authorship rules. If gstack's /browse is available, crawls the live page for real data. Otherwise, runs a checklist-based audit on provided content.
Arguments
Required:
- url: The URL to audit (or file path for local content)
Optional:
- --deep: Run the full 17-point technical SEO audit (default: content-only)
- --site: Site key for GSC data context
Example: /seo-audit https://kaicalls.com/blog/ai-receptionists
Example: /seo-audit article.md --site kaicalls
The Skill
Step 1: Load SEO Checklists
Read from the knowledge base:
knowledge/checklists/technical-seo-audit-sop.md— 17-point Screaming Frog SOPknowledge/checklists/seo-checklist.md— SEO validation checklistknowledge/frameworks/content-copywriting/algorithmic-authorship.md— writing rulesknowledge/frameworks/aeo-ai-search/aeo-ai-search-playbook-2026.md— AI search optimization
Step 2: Gather Page Data
If /browse is available (gstack installed): Try using the browse skill to load the page:
$B navigate {url}
$B snapshot -i
Extract from the live page:
- Title tag and meta description
- H1, H2 hierarchy
- Word count
- Internal/external link count
- Image alt text coverage
- Schema markup presence
- Page load indicators
If /browse is NOT available: Tell the user: "/browse not available — running checklist-based audit. For live page crawling, install gstack."
If the input is a URL, attempt to fetch basic metadata. If it's a file path, read the file directly.
Step 3: Content Quality Audit
Run the quality scorer on the page content:
kai-gate score {content_file} --format json --rules aa,geo
Score specifically against:
- Algorithmic Authorship rules (conditions after clause, verbs first, sentence length)
- AEO signals (entity mentions, citation patterns, information gain)
- Content structure (heading hierarchy, list formatting, bold usage)
Step 4: Technical SEO Checklist
Evaluate against the 17-point checklist:
SEO AUDIT — {url}
══════════════════════════════════════════
CONTENT QUALITY: {score}/100
Algorithmic Authorship: {aa}%
AEO/AI Search Signals: {geo}%
Content Structure: {cs}%
TECHNICAL SEO:
[PASS] Title tag present and under 60 chars
[PASS] Meta description present and under 160 chars
[FAIL] H1 missing or duplicate
[PASS] H2 hierarchy logical
[WARN] Only 1 internal link (recommend 3+)
[PASS] Images have alt text (4/4)
[FAIL] No schema markup detected
[PASS] Word count: 1,423 (target: 1,200-1,800)
[WARN] Keyword density: 0.8% (target: 1-2%)
[PASS] Average sentence length: 16 words (target: <20)
[N/A] Page speed (requires /browse --deep)
AEO/AI SEARCH READINESS:
[PASS] Entity mentioned 3+ times
[WARN] No citation-style references
[FAIL] No FAQ schema for passage extraction
[PASS] Clear atomic facts in opening paragraph
OVERALL: {total_pass}/{total_checks} passed
Step 5: Recommendations
Prioritize fixes by impact:
FIX PRIORITY:
1. [HIGH] Add FAQ schema markup — enables Featured Snippet extraction
2. [HIGH] Fix H1 tag — currently missing/duplicate
3. [MEDIUM] Add 2 more internal links — improves PageRank flow
4. [LOW] Increase keyword density from 0.8% to 1.2%
Step 6: Offer Fixes
If the content is a local file (not a live URL): "Want me to fix the content issues? The technical SEO issues (schema, H1) need to be fixed in the HTML template."
Error Handling
- /browse unavailable: Graceful fallback to checklist-based audit
- URL unreachable: Suggest checking the URL, offer to audit a local file instead
- No GSC data: Audit without search performance context
Chain State
Standalone: Does not require prior chain steps
Optional reads: GSC data via kai-report for keyword context