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.
What this skill does
# 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 ID | Check | Standard | Method | |----------|-------|----------|--------| | META-01 | Unique, descriptive `<title>` (50-60 chars) | Google guidelines | Extract `<title>`, check length and uniqueness | | META-02 | Meta description present (120-160 chars) | Google guidelines | Check `<meta name="description">` | | META-03 | Canonical URL set correctly | Google guidelines | Check `<link rel="canonical">` | | META-04 | Viewport meta tag present | Mobile SEO | Check `<meta name="viewport">` | | META-05 | Charset declared | HTML standard | Check `<meta charset>` | | META-06 | No duplicate meta tags | SEO best practice | Check for duplicate titles, descriptions | | META-07 | Favicon present | Branding/SEO | Check `<link rel="icon">` | | META-08 | Language declared | SEO/a11y | Check `<html lang="">` | | META-09 | No meta robots noindex on important pages | Indexing | Check `<meta name="robots">` | | META-10 | Hreflang tags for multi-language (if applicable) | International SEO | Check `<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 ID | Check | Standard | Method | |----------|-------|----------|--------| | SCHEMA-01 | JSON-LD structured data present | Schema.org | Check for `<script type="application/ld+json">` | | SCHEMA-02 | Schema type matches page content | Schema.org | Validate type (Organization, Product, Article, etc.) | | SCHEMA-03 | Required properties present | Schema.org | Validate against type requirements | | SCHEMA-04 | JSON-LD is valid JSON | Schema.org | Parse and validate JSON | | SCHEMA-05 | No deprecated schema properties | Schema.org | Check for deprecated fields | | SCHEMA-06 | Breadcrumb structured data | Schema.org | Check for BreadcrumbList on interior pages | | SCHEMA-07 | FAQ structured data (if applicable) | Schema.org | Check for FAQPage on FAQ sections | | SCHEMA-08 | Review/Rating structured data (if applicable) | Schema.org | Check 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 ID | Check | Standard | Method | |----------|-------|----------|--------| | OG-01 | og:title present and meaningful | Open Graph | Check `<meta property="og:title">` | | OG-02 | og:description present | Open Graph | Check `<meta property="og:description">` | | OG-03 | og:image present and accessible | Open Graph | Check `<meta property="og:image">`, verify URL loads | | OG-04 | og:image dimensions adequate (1200x630 recommended) | Open Graph | Check image size | | OG-05 | og:url matches canonical | Open Graph | Compare og:url with canonical | | OG-06 | og:type set correctly | Open Graph | Check og:type value | | OG-07 | Twitter card meta tags present | Twitter Cards | Check `twitter:card`, `twitter:title`, etc. | | OG-08 | Social sharing preview looks correct | UX | Construct 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 ID | Check | Standard | Method | |----------|-------|----------|--------| | CRAWL-01 | robots.txt exists and is valid | Google guidelines | Fetch /robots.txt | | CRAWL-02 | Sitemap.xml exists and is valid | Google guidelines | Fetch /sitemap.xml, validate format | | CRAWL-03 | Sitemap referenced in robots.txt | Best practice | Check robots.txt for Sitemap directive | | CRAWL-04 | Important pages are in sitemap | SEO | Cross-reference key pages with sitemap URLs | | CRAWL-05 | No broken internal links | Crawlability | Check all internal links on key pages | | CRAWL-06 | No redirect chains (>2 hops) | Crawl efficiency | Follow redirects, count hops | | CRAWL-07 | Clean URL structure (no excessive params) | SEO | Check URL patterns for cleanliness | | CRAWL-08 | 404 page returns correct HTTP status | SEO | Navigate to non-existent URL, check status | | CRAWL-09 | No orphan pages (accessible from navigation) | Crawlability | Verify key pages linked from homepage/nav | | CRAWL-10 | SSR/SSG content visible without JavaScript | SPA SEO | Disable JS, check if content renders | | CRAWL-11 | Page load time for crawlers | Crawl budget | Measure 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 ID | Check | Standard | Method | |----------|-------|----------|--------| | SEM-01 | Single `<h1>` per page | SEO best practice | Count h1 elements | | SEM-02 | Hea
Related in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".