seo
Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping — audits and implements technical SEO, on-page optimization, Core Web Vitals, and structured data
Best use case
seo is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping — audits and implements technical SEO, on-page optimization, Core Web Vitals, and structured data
Teams using seo should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/seo/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How seo Compares
| Feature / Agent | seo | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping — audits and implements technical SEO, on-page optimization, Core Web Vitals, and structured data
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# SEO
Improve search visibility through technical correctness, performance, and content relevance — not gimmicks.
> **Distinct from [`ai-visibility`](../ai-visibility/SKILL.md):** This skill covers traditional search engine optimization (Google, Bing). `ai-visibility` covers GEO — optimizing for AI crawlers, llms.txt, and AI citation surfaces.
## When to Use
- Auditing crawlability, indexability, canonicals, or redirects
- Improving title tags, meta descriptions, and heading structure
- Adding or validating structured data (JSON-LD)
- Improving Core Web Vitals (LCP, INP, CLS)
- Keyword research and URL-to-keyword mapping
- Planning internal linking or sitemap/robots changes
## Principles
1. Fix technical blockers before content optimization
2. One page — one clear primary search intent
3. Prefer long-term quality signals over manipulative patterns
4. Mobile-first: indexing is mobile-first
5. Recommendations should be page-specific and implementable
## Technical SEO Checklist
### Crawlability
- `robots.txt` allows important pages, blocks low-value surfaces
- No important page is unintentionally `noindex`
- Important pages reachable within shallow click depth
- No redirect chains longer than two hops
- Canonical tags are self-consistent and non-looping
### Indexability
- Preferred URL format is consistent
- Multilingual pages have correct `hreflang` if used
- Sitemaps reflect the intended public surface
- No duplicate URLs without canonical control
### Core Web Vitals targets
| Metric | Target |
|--------|--------|
| LCP (Largest Contentful Paint) | < 2.5s |
| INP (Interaction to Next Paint) | < 200ms |
| CLS (Cumulative Layout Shift) | < 0.1 |
Common fixes: preload hero assets · reduce render-blocking JS · reserve layout space · trim heavy third-party scripts
## On-Page Rules
### Title tags
- ~50–60 characters
- Primary keyword/concept near the front
- Legible to humans first
### Meta descriptions
- ~120–160 characters
- Honest description of the page
- Include main topic naturally
### Heading structure
- One clear `H1` per page
- `H2`/`H3` reflect actual content hierarchy
- Do not skip levels for visual styling
## Structured Data
| Page type | Schema type |
|-----------|-------------|
| Homepage | `Organization` or `LocalBusiness` |
| Blog/article | `Article` or `BlogPosting` |
| Product page | `Product` + `Offer` |
| Interior nav | `BreadcrumbList` |
| Q&A sections | `FAQPage` (only when content truly matches) |
```json
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Page Title Here",
"author": { "@type": "Person", "name": "Author Name" },
"publisher": { "@type": "Organization", "name": "Brand Name" }
}
```
## Keyword Mapping
1. Define the search intent
2. Gather realistic keyword variants
3. Prioritize by intent match, value, and competition
4. Map one primary keyword/theme to one URL
5. Detect and avoid keyword cannibalization
## Audit Output Format
```text
[HIGH] Duplicate title tags on product pages
Location: src/routes/products/[slug].tsx
Issue: Dynamic titles collapse to the same default string.
Fix: Generate unique titles using product name + primary category.
[MEDIUM] Missing structured data on blog posts
Location: src/routes/blog/[slug].tsx
Issue: No Article schema — missing potential rich snippet eligibility.
Fix: Add JSON-LD BlogPosting schema with headline, author, datePublished.
```
## Anti-Patterns
| Anti-pattern | Fix |
|-------------|-----|
| Keyword stuffing | Write for users first |
| Thin near-duplicate pages | Consolidate or differentiate |
| Schema for content that doesn't match | Remove or align content |
| `noindex` on indexable pages | Audit robots meta tags |
| Missing canonical on paginated series | Add canonical pointing to series root |
## See Also
- [ai-visibility](../ai-visibility/SKILL.md) — GEO optimization for AI crawlers and llms.txt
- [content-strategy](../content-strategy/SKILL.md) — keyword research, topic clusters, content calendarRelated Skills
verification-before-completion
Use before claiming any task is done — run the exact command that proves the fix works, read the output, and only then report success.
using-git-worktrees
Use when you need multiple branches checked out at once — create isolated working directories for parallel development without cloning the repository repeatedly
triage
Use when a single issue needs structured triage — classify it, reproduce if needed, request missing information, and leave a durable brief or close-out note in the tracker.
to-issues
Use when a plan, spec, or PRD must become an actionable backlog — break it into thin dependency-aware issues that each deliver a verifiable vertical slice
sprint-workflow
Use when starting a new feature, refactor, or multi-step dev task — runs the full sprint cycle (Think → Plan → Build → Review → Test → Ship → Monitor) using Copilot CLI's plan/autopilot modes.
sprint-retro
Use at the end of a sprint to run a data-driven retrospective — analyzes session history and git metrics to surface what shipped, what slowed you down, and concrete improvements.
security-audit
Use when a codebase needs a formal security audit beyond a quick scan — applies OWASP Top 10 and STRIDE threat modeling from a CSO perspective to surface systemic vulnerabilities.
release
Use when a sprint or feature is complete and ready to ship — tags the version, generates GitHub Release notes, runs rollout or smoke verification, and publishes to npm/PyPI/Docker registries.
prompt-optimizer
Use when a rough prompt, vague idea, or task description needs to become a finished copy-pasteable prompt for a chat-based LLM - rewrite it into one ready-to-send prompt with no blanks, no placeholders, and a clear output shape.
outside-voice
Use when you need an independent second opinion before, during, or after implementation — run challenge, consult, or review mode in a direct builder-to-builder voice
llm-wiki
Use when research or domain knowledge keeps getting rediscovered across sessions — build a supplementary markdown wiki that compounds synthesized knowledge without replacing GitHub or committed project guidance
interview-me
Use when a request is underspecified and you need to discover what the user actually wants before writing a plan, spec, or code - ask one question at a time, attach your current hypothesis, and stop only after the intent is explicitly confirmed.