Skip to content

/seo

Optimize for search engine visibility and ranking. Use when asked to "improve SEO", "optimize for search", "fix meta tags", "add structured data", "sitemap optimization", or "search engine optimization".

From plugin
web-quality-skills
3k6 skills

Claude Code

$ npx -y skills add addyosmani/web-quality-skills --skill seo --agent claude-code

SKILL.md

seo.SKILL.md
name: seo
description: Optimize for search engine visibility and ranking. Use when asked to "improve SEO", "optimize for search", "fix meta tags", "add structured data", "sitemap optimization", or "search engine optimization".
license: MIT
metadata:
  author: web-quality-skills
  version: "2.0"

SEO optimization

Search engine optimization based on Lighthouse SEO audits and Google Search guidelines. Focus on technical SEO, on-page optimization, and structured data.

Evidence-led audit workflow

When a rendered page is available:

1. Run live Lighthouse SEO and Agentic Browsing checks when that capability is available; with Chrome DevTools MCP, use `lighthouse_audit`. Use the results to localize rendered-page failures. 2. Inspect signals Lighthouse cannot establish on its own: response headers, redirects, `robots.txt`, sitemap coverage, canonical consistency across page templates, structured-data eligibility, and Search Console evidence when the user provides access. 3. Separate technical crawl/index findings from content quality and authority. Do not invent ranking-factor weights or promise ranking changes. 4. Fix the source and re-run the same checks. For indexation or ranking outcomes, report that search-engine validation remains pending.

If live tools are unavailable, use category-specific Lighthouse CLI output plus direct source and HTTP inspection. A Lighthouse SEO score covers a useful subset of technical checks; it is not a prediction of rankings.

| Area | What this skill can verify | |------|----------------------------| | Crawl and index controls | Technical configuration and consistency | | Rendered metadata and semantics | Presence, validity, and page-template issues | | Structured data | Syntax and eligibility signals, not guaranteed rich results | | Core Web Vitals | Link to measured field/lab evidence from the Core Web Vitals skill | | Content usefulness and authority | Review quality, but do not assign synthetic ranking percentages |

---

Technical SEO

Crawlability

**robots.txt:**

# /robots.txt
User-agent: *
Allow: /

# Block admin/private areas
Disallow: /admin/
Disallow: /api/
Disallow: /private/

# Don't block resources needed for rendering
# ❌ Disallow: /static/

Sitemap: https://example.com/sitemap.xml

**Meta robots:**

<!-- Default: indexable, followable -->
<meta name="robots" content="index, follow">

<!-- Noindex specific pages -->
<meta name="robots" content="noindex, nofollow">

<!-- Indexable but don't follow links -->
<meta name="robots" content="index, nofollow">

<!-- Control snippets -->
<meta name="robots" content="max-snippet:150, max-image-preview:large">

**Canonical URLs:**

<!-- Prevent duplicate content issues -->
<link rel="canonical" href="https://example.com/page">

<!-- Self-referencing canonical (recommended) -->
<link rel="canonical" href="https://example.com/current-page">

<!-- For paginated content -->
<link rel="canonical" href="https://example.com/products">
<!-- Or use rel="prev" / rel="next" for explicit pagination -->

XML sitemap

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2024-01-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/products</loc>
    <lastmod>2024-01-14</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

**Sitemap best practices:**

  • Maximum 50,000 URLs or 50MB per sitemap
  • Use sitemap index for larger sites
  • Include only canonical, indexable URLs
  • Update `lastmod` when content changes
  • Submit to Google Search Console

URL structure

✅ Good URLs:
https://example.com/products/blue-widget
https://example.com/blog/how-to-use-widgets

❌ Poor URLs:
https://example.com/p?id=12345
https://example.com/products/item/category/subcategory/blue-widget-2024-sale-discount

**URL guidelines:**

  • Use hyphens, not underscores
  • Lowercase only
  • Keep short (< 75 characters)
  • Include target keywords naturally
  • Avoid parameters when possible
  • Use HTTPS always

HTTPS & security

<!-- Ensure all resources use HTTPS -->
<img src="https://example.com/image.jpg">

<!-- Not: -->
<img src="http://example.com/image.jpg">

**Security headers for SEO trust signals:**

Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY

---

On-page SEO

Title tags

<!-- ❌ Missing or generic -->
<title>Page</title>
<title>Home</title>

<!-- ✅ Descriptive with primary keyword -->
<title>Blue Widgets for Sale | Premium Quality | Example Store</title>

**Title tag guidelines:**

  • Use 50–60 characters only as a rough linting proxy, not a pass/fail limit. Google truncates title links to fit the rendered device width, so preview width when tooling supports it.
  • Describe the page topic naturally near the beginning
  • Unique for every page
  • Add the brand when it helps users distinguish the result
  • Action-oriented when appropriate

Treat title-link rewriting separately from truncation. Google may build a different title link from the visible page title, headings, anchor text, and other sources even when the `<title>` is short; investigate accuracy and consistency rather than shortening it automatically. See [Google's title-link guidance](https://developers.google.com/search/docs/appearance/title-link).

Meta descriptions

<!-- ❌ Missing or duplicate -->
<meta name="description" content="">

<!-- ✅ Compelling and unique -->
<meta name="description" content="Shop premium blue widgets with free shipping. 30-day returns. Rated 4.9/5 by 10,000+ customers. Order today and save 20%.">

**Meta description guidelines:**

  • Use roughly 150–160 characters only as a linting proxy. Snippets are query- and device-dependent, and Google may select page
Read more
@addyosmani-2
Ships withweb-quality-skills

An (unofficial) measurement-first collection of Agent Skills for optimizing web projects with Google Lighthouse, Chrome DevTools for agents, Core Web Vitals, WCAG, and search guidance. Stack-agnostic.

Stars on GitHub

Momentum

stars in total
3.0k
Star history of addyosmani/web-quality-skills on GitHub, a chart by star-history.com

Other skills on web-quality-skills.

More skills from other plugins.

ai-prompt-research

ai-prompt-research

Find the questions people ask about a market, how ChatGPT answers them, and which sites get cited in the answers. Use when the…

open-seo11d26k
@every-app@every-appInstall Skill
fire-your-seo-agency

fire-your-seo-agency

SEO·AEO·GEO·LLMO·NEO(네이버) 다섯 레인을 진단하고 직접 구현하며, 인용되는 콘텐츠를 계속 생산하는 서브 블로그·콘텐츠 운영 파이프라인까지 세팅하는 스킬. 사이트를 검색엔진·답변엔진·생성 AI·네이버 AI 브리핑이…

Questions about seo.

Which coding agents can use seo?
seo installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.