Skip to content
Skill Authoring
Skill

/site-audit

Use this skill when the user says 'SEO audit', 'site audit', 'check SEO', 'audit my site', 'SEO check', 'technical SEO', or is evaluating a website's search engine optimization health, meta tags, performance, or structured data. Do NOT use for keyword research or schema markup

BOOST
From plugin
memstack
42587 skills2 commands4 hooks
Install
$ npx -y skills add cwinvestments/memstack --skill site-audit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/site-audit

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use this skill when the user says 'SEO audit', 'site audit', 'check SEO', 'audit my site', 'SEO check', 'technical SEO', or is evaluating a website's search engine optimization health, meta tags, performance, or structured data. Do NOT use for keyword research or schema markup

SKILL.md

site-audit.SKILL.md
name: memstack-seo-site-audit
description: "Use this skill when the user says 'SEO audit', 'site audit', 'check SEO', 'audit my site', 'SEO check', 'technical SEO', or is evaluating a website's search engine optimization health, meta tags, performance, or structured data. Do NOT use for keyword research or schema markup generation alone."
version: 1.0.0
license: "Proprietary, MemStack™ Pro by CW Affiliate Investments LLC. See LICENSE.txt"

🔎 Site Audit: Running comprehensive SEO audit...

*Scans every page for meta tags, heading hierarchy, broken links, image optimization, Core Web Vitals, robots/sitemap, performance, and structured data, producing a prioritized fix list.*

Activation

When this skill activates, output:

`🔎 Site Audit, Scanning site for SEO issues...`

Then execute the protocol below.

| Context | Status | |---------|--------| | User says "SEO audit" or "site audit" or "check SEO" | ACTIVE | | User says "technical SEO" or "audit my site" | ACTIVE | | Evaluating a website's overall search health | ACTIVE | | Optimizing specific meta tags (not full audit) | DORMANT: use meta-tag-optimizer | | Adding schema markup (not auditing) | DORMANT: use schema-markup | | Researching keywords (not auditing) | DORMANT: use keyword-research |

Anti-patterns

| Trap | Reality Check | |------|---------------| | "The site looks fine in the browser" | Crawlers and users see different things. Missing meta tags, broken links, and slow JS are invisible to humans. | | "We'll optimize after launch" | Technical debt compounds. Fixing 5 issues now prevents 50 issues later when Google has already indexed the problems. | | "One audit is enough" | Sites change with every deploy. Audit after major content or code changes, minimum quarterly. | | "Performance doesn't affect SEO" | Core Web Vitals are ranking signals. Slow sites rank lower regardless of content quality. | | "Robots.txt is set and forget" | One wrong rule can deindex your entire site. Review after every major structural change. |

Protocol

For how each AI search engine ranks and cites content (ChatGPT, Perplexity, Google AI Overview, Copilot, Claude, and Google traditional as baseline), see [`references/platform-ranking-factors.md`](./references/platform-ranking-factors.md). Use it to prioritize fixes, a client whose audience is primarily on Perplexity benefits most from FAQ schema and PDF-friendly pages, while a ChatGPT-first audience needs backlinks and 30-day-fresh content.

Step 0: Live site snapshot (optional, for deployed URLs)

If the site is already deployed, run the bundled stdlib-only audit script for a one-shot snapshot before walking the source-tree checks below:

python scripts/live_audit.py https://example.com

No API keys, no pip installs, no external dependencies: pure Python 3 stdlib (`urllib`, `html.parser`, `json`). It fetches the page once and checks title, meta description, heading hierarchy, image alt attributes, JSON-LD structured data, canonical URL, Open Graph tags, robots meta, viewport, `robots.txt` (including AI bot rules), `sitemap.xml`, page load time, and internal vs. external link counts. Output uses the same severity format (🔴 Critical / 🟠 High / 🟡 Medium / 🔵 Low) as the scorecard in Step 9, and the script exit code reflects severity (`0` clean, `1` high, `2` critical) so it can also gate CI.

Use this for deployed-URL audits; use Steps 1-8 below for source-tree scans of unshipped code. The two are complementary, the live script confirms what actually reaches crawlers, the grep steps catch issues before they ship.

---

Step 1: Check Meta Tags

Scan every page for required meta tags:

# Find all page files
find app/ pages/ src/ -name "*.tsx" -o -name "*.jsx" -o -name "*.html" | grep -v node_modules

# Search for meta tag patterns
grep -rn "title\|<meta\|og:title\|og:description\|og:image\|canonical" --include="*.tsx" --include="*.jsx" --include="*.html" . | grep -v node_modules

**Required meta tags per page:**

| Tag | Required | Rule | |-----|----------|------| | `<title>` | Yes | Unique per page, 50-60 chars, includes primary keyword | | `<meta name="description">` | Yes | Unique per page, 150-155 chars, includes CTA | | `<link rel="canonical">` | Yes | Points to the canonical URL (prevents duplicate content) | | `<meta property="og:title">` | Yes | Social sharing title (can differ from page title) | | `<meta property="og:description">` | Yes | Social sharing description | | `<meta property="og:image">` | Yes | Social sharing image (1200x630px recommended) | | `<meta property="og:url">` | Yes | Canonical URL | | `<meta name="robots">` | Conditional | `noindex` on admin, auth, and internal pages | | `<meta name="viewport">` | Yes | `width=device-width, initial-scale=1` |

**Score per page:**

  • ✅ All required tags present and valid
  • ⚠️ Missing optional tags
  • ❌ Missing required tags or invalid values

Step 2: Check Heading Hierarchy

# Find heading usage across all pages
grep -rn "<h[1-6]\|<H[1-6]" --include="*.tsx" --include="*.jsx" --include="*.html" . | grep -v node_modules

**Heading rules:**

| Rule | Check | Why | |------|-------|-----| | Single H1 per page | Count H1 tags | Multiple H1s confuse crawlers about the page topic | | H1 matches page title (roughly) | Compare H1 to `<title>` | Consistency signals relevance | | No skipped levels | H1 → H2 → H3, not H1 → H3 | Broken hierarchy hurts accessibility and SEO | | Keywords in H1 and H2 | Check for target keyword | Headings are high-weight ranking signals | | No empty headings | Check for `<h2></h2>` | Empty headings are wasted signals | | Headings aren't used for styling | Check if headings are decorative | Use CSS for size, headings for structure |

Step 3: Check for Broken Links

# Find all links in the codebase
grep -rn 'href="\|href={' --include="*.tsx" --include="*.jsx" --include="*.html" --include="*.md" . | grep -v node_modules | grep -v "mailto:\|tel:\|#
Read more
Ships withmemstack

The structured skill framework for Claude Code: 131 professional skills for deployment, security, databases, content, marketing, and more. Skills activate automatically when you need them. Say "deploy this to Railway" and the right skill loads on demand.

Get the whole plugin

Other skills on memstack.