plugin/skills/seo-review/SKILL.md
Use this skill when auditing a public-facing page or site for search visibility, before publishing a marketing or blog page, when traffic drops or indexing issues are suspected, when validating JSON-LD / Open Graph / canonical / sitemap setup, or as the SEO gate inside `/content-creation` and `/docs-pack` — to run the SEO review workflow (technical SEO audit, meta tags, structured data validation, Core Web Vitals, crawlability, indexability, AI search readiness) applying the SEO Engineer role.
npx skillsauth add avav25/ai-assets seo-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Systematic SEO audit for public-facing pages. Checks crawlability, indexability, on-page SEO, structured data, Core Web Vitals, and AI search readiness. Applies Agent(seo-engineer) for all steps.
Works standalone or as a sub-workflow called by /docs, /feature-dev, or /bugfix.
Ask the user (or extract from parent workflow):
Apply Agent(seo-engineer) as primary role.
If implementation changes are needed, delegate to:
| Change Type | Delegate To |
|---|---|
| Frontend code (meta tags, JSON-LD, components) | Agent(frontend-engineer) |
| Content / copy improvements | Agent(content-writer) |
| Server config (redirects, headers, robots.txt) | Agent(devops-engineer) |
| Architecture changes (URL structure, routing) | Agent(solution-architect) |
Run automated checks before making changes.
Check the following (read project files or use browser/curl):
robots.txt — allows important pages, Sitemap: directive present<a href> linksnoindex on public pagesFor each target page:
| Element | Check |
|---|---|
| Title tag | Unique, descriptive, matches page intent |
| Meta description | Unique, compelling, relevant |
| H1 | Exactly one per page, matches topic |
| Heading hierarchy | Logical H1→H2→H3 |
| Image alt text | Descriptive for all meaningful images |
| Internal links | Present, descriptive anchor text |
| Outbound links | Qualified with rel attributes where needed |
Organization / WebSite on homepageArticle / BlogPosting on blog postsBreadcrumbList for navigationFAQ where genuinely usefulProduct, Review, HowTo where applicableE-E-A-T author signals (Experience, Expertise, Authoritativeness, Trustworthiness — see Google's helpful content guidance):
Person schema on every blog post with sameAs linking to author's LinkedIn, Wikipedia, personal site, or X profiledateModified current — refresh evergreen content within rolling 6 monthsnoindex), and link from each postOrganization schema on author pages reinforces publisher trustMobile-first indexing is universal in 2026 — mobile checks fold into CWV.
| Metric | Target | Tool | |---|---|---| | LCP (Largest Contentful Paint) | < 2.5s | PageSpeed Insights | | INP (Interaction to Next Paint) | < 200ms | PageSpeed Insights | | CLS (Cumulative Layout Shift) | < 0.1 | PageSpeed Insights |
Mobile rendering:
Modern transport baseline (verify with curl -I --http3 or browser devtools):
llms.txt present — recommended for AI-search visibility as an active discovery signal for AI engines (format: llmstxt.org). Google still does not honor it, but ChatGPT, Claude, and Perplexity surface it.The most-broken 2026 SEO/GEO surface: AI crawlers silently 403'd by CDN/WAF rules. Verify robots.txt allows current AI bots and that the edge layer (Cloudflare, Akamai, Fastly) is not blocking them.
Required robots.txt allowlist:
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Perplexity-User
User-agent: Google-Extended
User-agent: OAI-SearchBot
User-agent: Applebot-Extended
User-agent: CCBot
User-agent: meta-externalagent
Allow: /
CDN/WAF check — Cloudflare "Bot Fight Mode" and the "AI Scrapers and Crawlers" managed rule are the most common silent blockers. Either disable the rule or add explicit allow rules per AI bot UA string.
Verify each bot returns 200, not 403:
curl -A "GPTBot" https://example.com/ -I
curl -A "ClaudeBot" https://example.com/ -I
curl -A "Perplexity-User" https://example.com/ -I
curl -A "Google-Extended" https://example.com/ -I
Bot UA references (sources change — re-check on audit):
Apply @geo-writer skill to audit extractability for AI engines (ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews):
Article or BlogPosting + Person with sameAs + Organization on blog pages; FAQPage where FAQ present; HowTo for tutorials; Product / Review on commercial pages. JSON-LD must mirror visible text (no marketing-only prose in schema).dateModified present and recent; datePublished set; content updated within the pillar's freshness window.The geo-content rule enforces these for public-facing text. Use pre-publish-checklist.md from @geo-writer for the full checklist.
Compile audit results:
## SEO Audit Report
### Pages Reviewed: [count]
### Critical Issues (blocking indexing/ranking)
- [ ] [issue] — [affected page] — [fix]
### Warnings (affecting quality/performance)
- [ ] [issue] — [affected page] — [fix]
### Opportunities (improvements)
- [ ] [opportunity] — [affected page] — [recommendation]
### Scores
- Crawlability: [OK / issues found]
- Indexability: [OK / issues found]
- On-Page SEO: [OK / issues found]
- Structured Data + E-E-A-T: [OK / missing / errors]
- Core Web Vitals + Mobile + Transport: [LCP: Xs, INP: Xms, CLS: X.XX, HTTP/3: y/n, TLS 1.3: y/n]
- AI Search Readiness: [OK / opportunities]
- AI Bot Accessibility: [200 per bot / 403 found on: bot list]
- GEO/AEO: [OK / opportunities]
Wait for user to review and approve which fixes to implement.
For approved fixes:
Agent(frontend-engineer)Agent(frontend-engineer)Agent(content-writer)Agent(devops-engineer)Agent(frontend-engineer)Follow Agent(seo-engineer) standards for all changes. No black-hat techniques.
Re-run relevant checks from Step 3 for changed pages:
## SEO Review Summary
- **Scope**: [pages/environment reviewed]
- **Issues found**: [critical: X, warnings: X, opportunities: X]
- **Fixes applied**:
- [fix 1] — [page]
- [fix 2] — [page]
- **Delegated to**: [roles involved]
- **Verification**: [pass/fail per check]
- **Monitoring**: [what to watch — Search Console, PageSpeed, etc.]
- **Follow-ups**: [items for future attention]
Agent(seo-engineer) (primary), Agent(frontend-engineer) (implementation), Agent(content-writer) (content fixes)@geo-writer (GEO/AEO audit — step 3h), @humanizer (applied when content fixes are needed)geo-content (enforces GEO structure and schema on public-facing text), humanize-content (enforces humanizer pass)/feature-dev (SEO-relevant features), /docs (public content)development
Use this skill when running the recurring (daily) knowledge-base rescan for a repo that already has knowledge/.knowledge-sync.yml — the main-thread dispatcher that reads the config, computes the git delta since last_scanned_sha, maps changed paths to affected doc areas, early-exits cheaply when nothing changed, then fans out one Agent(content-writer) per affected area, applies the propose/direct update policy, advances the baseline only on success, and writes an L4 run log — all with the G1 untrusted-content choke-point, secret-scan, deny-list, and budget controls woven in. For first-time setup use /knowledge-sync-init.
development
Use this skill when bootstrapping scheduled knowledge-base sync for a repo that has no knowledge/.knowledge-sync.yml yet — to run one-time setup that detects the knowledge_root from CLAUDE.md/AGENTS.md, maps doc areas to source globs, records opt-in external sources (Linear/Notion/WebFetch, all disabled by default), captures a baseline last_scanned_sha, sets the per-area update policy, generates or seeds knowledge/CONVENTIONS.md, provisions the L4 memory dir, and offers to register the daily routine. Routes ongoing recurring sync operations to /knowledge-sync.
tools
Use this skill when bootstrapping a target repository to be ai-skills-aware — on the first run of any ai-skills workflow in a fresh repo, when adopting the ai-skills plugin in an existing repo, or after upgrading to a plugin version that adds new memory paths or templates, including when the user does not say "init" but asks to "set up" or "onboard" the repo — to detect codebase type, create CLAUDE.md + AGENTS.md scaffolding, initialize the .ai-skills-memory/ directory tree from L1 templates, and configure .gitignore. Idempotent — safe to re-run. Accepts `--codebase-type <type>` and `--overwrite`. Not for re-initializing only memory — use `/memory-init` instead.
tools
Use this skill when extending, repairing, or improving plugin assets, when ingesting a `/feedback` report as a fix-cycle backlog, or when you do not remember which lower-level command is right for the job — the umbrella workflow for ai-skills plugin-asset authoring and maintenance: creating, auditing, fixing, improving, refactoring, and migrating skills, agents, rules, hooks, prompts, schemas, and rubrics inside the plugin. Auto-classifies the request, loads the right knowledge skills (`@prompt-engineering`, `@context-engineering`, `@team-protocols`), and spawns the right subagents (`prompt-engineer`, `system-architect`, `python-engineer`, `software-engineer`, `qa-engineer`, `eval-judge`) via the `Agent` tool.