skills/google-seo/SKILL.md
--- name: google-seo version: 1.0.0 author: Claude (sourced from Google SEO Starter Guide) created: 2026-01-22 last_updated: 2026-01-22 status: active complexity: moderate category: content-optimization tags: [seo, content-quality, web-optimization, google-search, metadata] source: https://developers.google.com/search/docs/fundamentals/seo-starter-guide --- # Google SEO Best Practices ## Description This skill provides comprehensive guidance for optimizing web content and documentation for sea
npx skillsauth add enuno/claude-command-and-control google-seoInstall 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.
This skill provides comprehensive guidance for optimizing web content and documentation for search engine discoverability based on Google's official SEO Starter Guide. Use this skill when creating new web content, reviewing existing pages for SEO compliance, or documenting best practices for web-based projects. The skill ensures content follows Google's people-first approach while implementing technical optimizations that improve search visibility.
<title>, <meta>, <img> tags)Purpose: Ensure Google can find and access your content
Check if Google has already indexed your content:
# Use site: search operator in Google
site:example.com/your-page
Expected Output: Verification of whether page is indexed
Ensure Google can access critical resources:
Decision Point:
Expected Output: Confirmation that Googlebot can fully render page
Enable natural discovery through links:
Expected Output: Clear path for crawlers to discover content
Purpose: Create descriptive, organized URLs that enhance search results
Best Practices:
✅ Use meaningful words: example.com/pets/cats.html
❌ Avoid random IDs: example.com/2/6772756D707920636174
Implementation:
# Good URL structure
https://example.com/docs/api/authentication
https://example.com/products/laptops/gaming
# Poor URL structure
https://example.com/page?id=12345
https://example.com/p/a/b/c/xyz
Validation:
Group similar content logically:
/policies/ # Infrequently updated content
/blog/ # Frequently updated content
/docs/getting-started/
/docs/api-reference/
/products/category/
Expected Output: Hierarchical URL structure that communicates update frequency and content grouping
Implement canonicalization:
<!-- In <head> of duplicate/alternate pages -->
<link rel="canonical" href="https://example.com/preferred-url" />
Or use 301 redirects:
# .htaccess example
Redirect 301 /old-page.html https://example.com/new-page.html
Expected Output: Each content piece accessible via one primary URL
Purpose: Create compelling titles and descriptions that appear in search results
Write clear, concise <title> elements:
<!-- Good examples -->
<title>API Authentication Guide | Example Docs</title>
<title>Gaming Laptops - High Performance | Example Store</title>
<!-- Poor examples -->
<title>Page 1</title>
<title>Home - Home - Home - Example</title>
<title>Buy cheap laptops gaming computers best deals discount sale</title>
Guidelines:
Expected Output: Unique, descriptive titles for each page
Create 1-2 sentence summaries:
<!-- Good example -->
<meta name="description" content="Learn how to implement OAuth 2.0 authentication in our API with step-by-step code examples for Node.js, Python, and Ruby." />
<!-- Poor example -->
<meta name="description" content="API docs page authentication login security OAuth token password credential user access." />
Guidelines:
Expected Output: Unique meta descriptions that accurately summarize page content
Purpose: Make images discoverable and accessible
Best Practices:
Implement proper alt attributes:
<!-- Good examples -->
<img src="golden-retriever-playing-fetch.jpg"
alt="Golden retriever catching red frisbee in park" />
<img src="api-authentication-flow.png"
alt="Diagram showing OAuth 2.0 authentication flow from client to server" />
<!-- Poor examples -->
<img src="img123.jpg" alt="image" />
<img src="photo.jpg" alt="" />
<img src="product.jpg" alt="buy now click here cheap discount sale" />
Guidelines:
Expected Output: All images have meaningful alt text
Purpose: Create people-first content with proper link practices
Core Attributes Checklist:
Organization:
Expected Output: High-quality, original, well-organized content
Anchor Text:
<!-- Good examples -->
<a href="/api/authentication">Learn about API authentication</a>
<a href="/products/gaming-laptops">Browse gaming laptops</a>
<!-- Poor examples -->
<a href="/page">click here</a>
<a href="/info">read more</a>
Outbound Links:
rel="nofollow" to untrusted sources<!-- Trusted resource -->
<a href="https://oauth.net/2/">OAuth 2.0 specification</a>
<!-- User-generated or untrusted content -->
<a href="https://unknown-site.com" rel="nofollow">User submitted link</a>
Expected Output: Descriptive anchor text and properly qualified outbound links
Purpose: Implement technical SEO features
Add schema.org markup for rich results:
<!-- Breadcrumb example -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Docs",
"item": "https://example.com/docs"
},{
"@type": "ListItem",
"position": 2,
"name": "API Reference",
"item": "https://example.com/docs/api"
}]
}
</script>
Generate XML sitemap for content management:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/docs/getting-started</loc>
<lastmod>2026-01-22</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Expected Output: Sitemap submitted to Search Console
Control crawl/index behavior when needed:
<!-- Prevent indexing of test pages -->
<meta name="robots" content="noindex, nofollow" />
<!-- Allow indexing, prevent link following -->
<meta name="robots" content="index, nofollow" />
Expected Output: Appropriate robots directives on all pages
Context: Creating new API documentation site with 50+ pages
Input:
Project: API Documentation
Pages: Authentication, Endpoints, Examples, Guides
Current state: Basic HTML with generic titles
Execution Flow:
/page1.html to /docs/authentication<title>API Authentication - OAuth 2.0 Guide | Example API</title><title>POST /users Endpoint Reference | Example API</title>Expected Output:
/docs/authentication, /docs/endpoints/users)Rationale: Documentation sites benefit greatly from SEO as users primarily discover APIs through search
Context: Existing blog with poor search performance
Input:
Current issues:
- Generic titles ("Blog Post 1", "Blog Post 2")
- No meta descriptions
- Short, thin content (<200 words)
- Heavy keyword stuffing
- No internal linking structure
Execution Flow:
Expected Output:
<!-- Before -->
<title>Blog Post 1</title>
<!-- No meta description -->
<p>OAuth security authentication login API security token...</p>
<!-- After -->
<title>How to Implement OAuth 2.0 in Node.js | Example Blog</title>
<meta name="description" content="Learn how to add OAuth 2.0 authentication to your Node.js application with this step-by-step tutorial including code examples." />
<p>OAuth 2.0 provides a secure authentication framework for web applications. This guide walks through implementing OAuth in a Node.js Express application...</p>
Rationale: Demonstrates transformation from SEO anti-patterns to best practices
Context: 500 product pages with duplicate content issues
Input:
Problem: Multiple URLs for same product
- example.com/products/laptop-123
- example.com/products/laptop-123?color=black
- example.com/products/laptop-123?utm_source=email
All have identical content, causing duplicate content issues
Execution Flow:
<link rel="canonical" href="https://example.com/products/laptop-123" />
<img src="laptop.jpg" alt="15-inch gaming laptop with RGB keyboard and GeForce RTX 4080" />
{
"@type": "Product",
"name": "Gaming Laptop XZ-500",
"description": "High-performance 15-inch gaming laptop",
"offers": {
"@type": "Offer",
"price": "1299.99",
"priceCurrency": "USD"
}
}
Expected Output:
Rationale: E-commerce sites particularly benefit from structured data and canonical URLs
<title> elements (100% compliance)alt attributes (100% compliance)Issue: Repeating keywords unnaturally to manipulate rankings Why it happens: Misunderstanding of how modern search algorithms work Solution:
Issue: Using same title on multiple pages (e.g., "Welcome to Example.com") Why it happens: Copy-paste during development, template issues Solution:
# Audit for duplicate titles
grep -r "<title>" . | sort | uniq -d
# Each page needs unique title reflecting its specific content
# Bad: All pages use "<title>Example Docs</title>"
# Good: Each page has specific title like "Authentication | Example Docs"
Issue: Images without alt text or generic placeholders ("image", "photo") Why it happens: Alt text seen as optional, not understanding its importance Solution:
alt="") but content images need descriptionIssue: robots.txt blocks stylesheets or JavaScript, preventing proper page rendering Why it happens: Overcautious robots.txt configuration Solution:
# Bad - blocks critical rendering resources
User-agent: *
Disallow: /css/
Disallow: /js/
# Good - allows CSS/JS, blocks actual private content
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /css/
Allow: /js/
Issue: Poor mobile rendering affects rankings (mobile-first indexing) Why it happens: Desktop-only testing, responsive design issues Solution:
/docs: Use SEO skill when generating documentation to ensure search discoverability/prepare-pr: Include SEO validation in pre-merge checklist for web content changes/create-skill: Reference as example of comprehensive skill documentationNone required for basic functionality. Optional integrations:
Symptoms: Content exists but doesn't show in site: search
Diagnosis:
noindexAllow: /noindex directives if inappropriateSymptoms: Google shows different title or description than your HTML Diagnosis: Google may override titles/descriptions deemed unhelpful Solution:
Symptoms: Search Console reports duplicate content issues Diagnosis: Same content accessible via multiple URLs Solution:
<!-- Add canonical link to all duplicate versions -->
<link rel="canonical" href="https://example.com/preferred-url" />
<!-- Or implement 301 redirects -->
Symptoms: Images exist but don't show in Google Image Search Diagnosis: Missing alt text, poor image quality, or blocked images Solution:
The following practices are ineffective or harmful:
<meta name="keywords"> is ignored by Googletools
MemPalace local-first AI memory system. Use when setting up persistent memory for Claude Code sessions, mining project files or conversation transcripts, querying past context, configuring MCP tools, managing the knowledge graph, or troubleshooting palace operations.
tools
LangSmith Python SDK — trace, evaluate, and monitor LLM applications. Covers @traceable decorator, trace context manager, Client API, evaluate() / aevaluate(), comparative evaluation, custom evaluators, dataset management, prompt caching, ASGI middleware, and pytest plugin.
development
LangGraph (Python) — build stateful, controllable agent graphs with checkpointing, streaming, persistence, interrupts, fault tolerance, and durable execution. Covers both Graph API (StateGraph) and Functional API (@entrypoint/@task).
development
LangGraph Graph API (Python) — build explicit DAG agent workflows with StateGraph, typed state, nodes, edges, Command routing, Send fan-out, checkpointers, interrupts, and streaming. Use when you need explicit control flow and graph topology.