MCPInstall

seo-review

SEO and discoverability review: evaluate meta tags, structured data, Open Graph, crawlability, sitemap, robots.txt, semantic HTML, and social sharing with browser-based validation.

Installs
416
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/shiplightai/agent-skills --skill seo-review
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads seo-review automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

SEO Review

Evaluate your application's search engine optimization and discoverability. This review catches SEO issues that are invisible during normal development — missing meta tags, broken structured data, poor crawlability, missing sitemaps, and social sharing problems. Many SPAs ship with zero SEO consideration.

When to use

Use /seo-review when:

  • Before launching a public-facing website or application
  • After redesigning or migrating a website
  • When organic traffic is a growth channel
  • After switching to an SPA framework (React, Vue, Angular)
  • When social sharing (Open Graph) is important
  • Setting up content marketing pages

Standards Referenced

  • Google Search Central — SEO best practices and guidelines
  • Schema.org — Structured data vocabulary
  • Open Graph Protocol — Social sharing meta tags
  • Twitter Card — Twitter sharing markup
  • W3C Semantic HTML — Accessibility and SEO semantics
  • Web.dev SEO Guidelines — Google's SEO recommendations

Phase Overview

Phase 1: EDUCATE   → Why SEO matters and what we check
Phase 2: SCOPE     → Identify key pages, content types, SEO goals
Phase 3: ANALYZE   → Browser-based SEO validation
Phase 4: REPORT    → Findings with impact assessment and priority
Phase 5: REMEDIATE → Fix guidance + YAML regression tests

Phase 1: Educate

Why this matters: 53% of all website traffic comes from organic search (BrightEdge). The first Google result gets 27.6% of all clicks; position 10 gets 2.4% (Backlinko). SPAs often render blank HTML to crawlers, making millions of pages invisible to search. Proper SEO doesn't require tricks — it requires making your content discoverable and understandable by search engines.

This review checks the technical SEO foundation — the things that must be correct before content strategy matters.


Phase 2: Scope

Gather context

  1. Auto-detect from codebase:

    • Framework and rendering strategy (SSR, SSG, CSR, ISR)
    • Meta tag management (react-helmet, next/head, vue-meta, etc.)
    • Sitemap generation
    • robots.txt configuration
    • Structured data (JSON-LD, microdata)
    • i18n/hreflang setup
    • Canonical URL handling
    • Route structure and page types
  2. Ask the user (one at a time):

    • Target URL: Where is the app running? (production preferred for realistic crawling)
    • Key pages: Which pages are most important for search? (homepage, product pages, blog posts, landing pages)
    • Target keywords: Any primary keywords you want to rank for? (optional, for content evaluation)
    • Social sharing important?: Is Open Graph / Twitter Cards needed? (default: yes for public sites)
    • Multi-language?: Does the site serve multiple languages? (auto-detected)
  3. Identify page types:

    • Homepage
    • Content pages (blog, docs, about)
    • Product/listing pages
    • Dynamic pages (search results, user profiles)
    • Utility pages (login, 404, terms)

Phase 3: Analyze

Open a browser session with new_session using record_evidence: true. For each key page, run all check categories.

Category A: Meta Tags & Head Elements (META)

Check IDCheckStandardMethod
META-01Unique, descriptive <title> (50-60 chars)Google guidelinesExtract <title>, check length and uniqueness
META-02Meta description present (120-160 chars)Google guidelinesCheck <meta name="description">
META-03Canonical URL set correctlyGoogle guidelinesCheck <link rel="canonical">
META-04Viewport meta tag presentMobile SEOCheck <meta name="viewport">
META-05Charset declaredHTML standardCheck <meta charset>
META-06No duplicate meta tagsSEO best practiceCheck for duplicate titles, descriptions
META-07Favicon presentBranding/SEOCheck <link rel="icon">
META-08Language declaredSEO/a11yCheck <html lang="">
META-09No meta robots noindex on important pagesIndexingCheck <meta name="robots">
META-10Hreflang tags for multi-language (if applicable)International SEOCheck <link rel="alternate" hreflang="">

Browser validation: Use inspect_page to read the DOM. Extract all <head> elements via JavaScript.

Category B: Structured Data (SCHEMA)

Check IDCheckStandardMethod
SCHEMA-01JSON-LD structured data presentSchema.orgCheck for <script type="application/ld+json">
SCHEMA-02Schema type matches page contentSchema.orgValidate type (Organization, Product, Article, etc.)
SCHEMA-03Required properties presentSchema.orgValidate against type requirements
SCHEMA-04JSON-LD is valid JSONSchema.orgParse and validate JSON
SCHEMA-05No deprecated schema propertiesSchema.orgCheck for deprecated fields
SCHEMA-06Breadcrumb structured dataSchema.orgCheck for BreadcrumbList on interior pages
SCHEMA-07FAQ structured data (if applicable)Schema.orgCheck for FAQPage on FAQ sections
SCHEMA-08Review/Rating structured data (if applicable)Schema.orgCheck for AggregateRating

Browser validation: Extract JSON-LD scripts via JavaScript. Parse and validate structure. Compare page content against schema claims.

Category C: Open Graph & Social Sharing (OG)

Check IDCheckStandardMethod
OG-01og:title present and meaningfulOpen GraphCheck <meta property="og:title">
OG-02og:description presentOpen GraphCheck <meta property="og:description">
OG-03og:image present and accessibleOpen GraphCheck <meta property="og:image">, verify URL loads
OG-04og:image dimensions adequate (1200x630 recommended)Open GraphCheck image size
OG-05og:url matches canonicalOpen GraphCompare og:url with canonical
OG-06og:type set correctlyOpen GraphCheck og:type value
OG-07Twitter card meta tags presentTwitter CardsCheck twitter:card, twitter:title, etc.
OG-08Social sharing preview looks correctUXConstruct preview from OG tags

Browser validation: Extract all OG and Twitter meta tags. Verify og:image URL is accessible. Construct a preview representation.

Category D: Crawlability & Indexing (CRAWL)

Check IDCheckStandardMethod
CRAWL-01robots.txt exists and is validGoogle guidelinesFetch /robots.txt
CRAWL-02Sitemap.xml exists and is validGoogle guidelinesFetch /sitemap.xml, validate format
CRAWL-03Sitemap referenced in robots.txtBest practiceCheck robots.txt for Sitemap directive
CRAWL-04Important pages are in sitemapSEOCross-reference key pages with sitemap URLs
CRAWL-05No broken internal linksCrawlabilityCheck all internal links on key pages
CRAWL-06No redirect chains (>2 hops)Crawl efficiencyFollow redirects, count hops
CRAWL-07Clean URL structure (no excessive params)SEOCheck URL patterns for cleanliness
CRAWL-08404 page returns correct HTTP statusSEONavigate to non-existent URL, check status
CRAWL-09No orphan pages (accessible from navigation)CrawlabilityVerify key pages linked from homepage/nav
CRAWL-10SSR/SSG content visible without JavaScriptSPA SEODisable JS, check if content renders
CRAWL-11Page load time for crawlersCrawl budgetMeasure server response time

Browser validation: Navigate to robots.txt, sitemap.xml. Follow internal links. Disable JavaScript to test server-rendered content. Check HTTP status codes.

Category E: Semantic HTML & Content (SEM)

Check IDCheckStandardMethod
SEM-01Single <h1> per pageSEO best practiceCount h1 elements
SEM-02Heading hierarchy is logical (h1→h2→h3)SEO/a11yCheck heading sequence
SEM-03Images have descriptive alt textSEO/a11yCheck alt attributes for descriptiveness
SEM-04Internal links use descriptive anchor textSEOCheck for "click here" or bare URLs as links
SEM-05Semantic HTML elements used (nav, main, article, section)SEOCheck for semantic landmarks
SEM-06Content-to-HTML ratio is reasonableSEOCalculate text content vs HTML markup
SEM-07No duplicate content across pagesSEOCompare key content sections across pages
SEM-08URLs are human-readableSEOCheck for descriptive slugs vs IDs/hashes

Browser validation: Extract headings, links, images, and semantic elements via JavaScript. Analyze content structure.

Category F: Technical SEO (TECH)

Check IDCheckStandardMethod
TECH-01HTTPS everywhereGoogle ranking signalCheck protocol
TECH-02HTTP → HTTPS redirect worksSEOTest HTTP URL redirect
TECH-03www → non-www (or vice versa) redirect consistentSEOTest both variants
TECH-04Mobile-friendly (responsive)Google mobile-firstCheck viewport, responsive behavior
TECH-05Core Web Vitals pass "Good" thresholdsGoogle ranking signalMeasure LCP, INP, CLS
TECH-06No render-blocking resourcesPage speedCheck script/style loading
TECH-07Proper 301 redirects for moved contentSEOCheck known old URLs if applicable
TECH-08International targeting correct (if multi-region)International SEOCheck hreflang, geo-targeting

Browser validation: Test redirects, measure performance metrics, check mobile rendering.


Phase 4: Report

Generate a structured report saved to shiplight/reports/seo-review-{date}.md:

# SEO Review Report
**Date:** {date}
**URL:** {url}
**Pages reviewed:** {list}
**Rendering:** {SSR/SSG/CSR/ISR}

## Overall Score: {X}/10 | Confidence: {X}%

## Score Breakdown
| Category | Score | Findings |
|----------|-------|----------|
| Meta Tags (META) | 7/10 | 1 high, 2 medium |
| Structured Data (SCHEMA) | 4/10 | 1 critical, 1 high |
| Social Sharing (OG) | 6/10 | 2 high |
| Crawlability (CRAWL) | 5/10 | 1 critical, 1 high |
| Semantic HTML (SEM) | 8/10 | 1 medium |
| Technical SEO (TECH) | 7/10 | 1 high |

## Page-by-Page Summary
| Page | Title | Description | OG Image | Schema | H1 | Score |
|------|-------|-------------|----------|--------|----|-------|
| / | ✅ | ✅ | ❌ missing | ❌ none | ✅ | 6/10 |
| /blog | ✅ | ⚠️ too short | ✅ | ✅ Article | ✅ | 8/10 |

## Findings
(structured findings with evidence and impact)

Confidence Scoring

  • 90-100%: Verified in browser — tag present/absent, URL accessible/broken
  • 70-89%: Content analysis suggests issue (e.g., thin content, generic alt text)
  • 50-69%: Best practice recommendation without clear violation
  • Below 50%: Don't report

Phase 5: Remediate

1. Fix guidance (example)

#### CRAWL-10: Content not visible without JavaScript
**Impact:** Search engines may not index your content (especially Google Discover, Bing, social crawlers)
**Current:** Client-side rendered React app, empty HTML shell
**Fix:** Implement SSR or SSG:
- Next.js: Use `getServerSideProps` or `getStaticProps`
- Nuxt: Default SSR mode
- Gatsby: Static generation
- Or: Add prerendering service (prerender.io, rendertron)
**Quick win:** Ensure critical content is in initial HTML response

2. YAML regression test

- name: meta-01-title-present
  description: Verify each key page has a unique, properly-sized title tag
  severity: high
  standard: Google-SEO-Guidelines
  steps:
    - URL: /
    - description: Assert the page title is present and 20-60 characters
      js: |
        const title = await page.title();
        if (!title || title.trim() === '') {
          throw new Error('Page has no title');
        }
        if (title.length < 20) {
          throw new Error(`Title too short (${title.length} chars): "${title}"`);
        }
        if (title.length > 60) {
          throw new Error(`Title too long (${title.length} chars): "${title}"`);
        }
        console.log(`Title OK (${title.length} chars): "${title}"`);
    - VERIFY: Page has a descriptive title between 20 and 60 characters

Save all YAML tests to shiplight/tests/seo-review.test.yaml.


Depth Levels

  • --quick: Meta tags + canonical + robots.txt on homepage only. ~2 minutes.
  • default: All categories on key pages. ~8-12 minutes.
  • --thorough: All categories + full site crawl + all page types + content analysis. ~20-30 minutes.

Tips

  • Test with JavaScript disabled to see what search engines see (especially for SPAs)
  • Use inspect_page DOM output to extract <head> content efficiently
  • Check sitemap.xml manually — auto-generated sitemaps often include pages that shouldn't be indexed
  • OG image must be an absolute URL — relative URLs don't work for social sharing
  • For SPA SEO, the critical question is: "Does the initial HTML contain the content?"
  • Close session with close_session and use generate_html_report for evidence

FAQ

What does the seo-review skill do?

SEO and discoverability review: evaluate meta tags, structured data, Open Graph, crawlability, sitemap, robots.txt, semantic HTML, and social sharing with browser-based validation.

How do I install seo-review?

Run npx skills add https://github.com/shiplightai/agent-skills --skill seo-review in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/seo-review/ (personal) or .claude/skills/seo-review/ (project).

Which AI agents can use seo-review?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is seo-review safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains seo-review?

It is published by shiplightai in shiplightai/agent-skills. It has 416 recorded installs.

More from shiplightai/agent-skills

View all →

verify

shiplightai/agent-skills

Verify UI changes in the browser using Shiplight MCP tools.

AI & Agents636 installs

review

shiplightai/agent-skills

Review orchestrator and single entry point for all application reviews. Triage what needs reviewing, then run the right domains: security (OWASP, auth, headers, supply chain), privacy (PII, tracking, consent, GDPR/CCPA), compliance (HIPAA, SOC 2, PCI-DSS, GDPR), design (responsive, accessibility, typography, i18n), resilience (error handling, degradation, API contracts), performance (Core Web Vitals, bundles, runtime), SEO (meta, structured data, crawlability), and GEO (AI citation readiness, llms.txt, entity clarity). Use for pre-launch readiness, post-incident planning, or any 'review my app for X' request.

cloud

shiplightai/agent-skills

Sync local tests with Shiplight cloud — push and pull YAML test cases, templates, and functions between your repo and the cloud. Requires a Shiplight cloud subscription.

Testing & QA593 installs

triage

shiplightai/agent-skills

Triage failing Shiplight YAML tests: reproduce failures, inspect evidence, apply minimal correct fixes, report app/spec mismatches, and update project memory.

AI & Agents584 installs

create-tests

shiplightai/agent-skills

Deprecated alias for create-yaml-tests. Renamed to create-yaml-tests; this entry only redirects for backward compatibility. Use create-yaml-tests to create, update, and repair local Shiplight YAML E2E tests.

Testing & QA495 installs

compliance-review

shiplightai/agent-skills

Open the skill to read its SKILL.md instructions.

Popular code quality & workflow skills

View category →

grill-me

mattpocock/skills

A relentless interview to sharpen a plan or design.

Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.

handoff

mattpocock/skills

Compact the current conversation into a handoff document for another agent to pick up.

domain-modeling

mattpocock/skills

Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.

codebase-design

mattpocock/skills

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

diagnosing-bugs

mattpocock/skills

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.