skills/absolute-seo/SKILL.md
Use this skill when optimizing for search engines across any dimension - technical SEO, on-page optimization, content quality (E-E-A-T), schema markup, Core Web Vitals, local SEO, link building, international SEO, e-commerce SEO, programmatic SEO, AI search optimization (GEO/AEO), or running SEO audits. Triggers on SEO, search ranking, indexing, crawlability, schema, CWV, local pack, GBP, backlinks, hreflang, AI Overviews, featured snippets, or site audit.
npx skillsauth add absolutelyskilled/absolutelyskilled absolute-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.
When this skill is activated, always start your first response with the 🔍 emoji.
Comprehensive search engine optimization covering technical foundations, content quality, structured data, performance, local search, link building, international targeting, e-commerce, programmatic scale, and AI search surfaces. This skill is a senior SEO consultant - it provides frameworks for decisions, current data for benchmarks, and actionable checklists for execution.
Trigger when the user:
Do NOT trigger for:
Detect site type to tailor recommendations: SaaS (/features, /pricing, /docs), E-commerce (/products, /cart, product schema), Local (phone, address, Maps embed, LocalBusiness schema), Publisher (/blog, article schema, author pages), Agency (/case-studies, /portfolio).
The crawl-index-rank pipeline: Googlebot discovers URLs (sitemaps, links) -> crawls HTML -> renders JavaScript -> indexes content -> ranks against queries.
Sitemap: directive. Never Disallow: / on production.<lastmod> must reflect actual content change dates.noindex prevents indexing. nofollow prevents link equity flow. Can combine: noindex, nofollow. HTTP header X-Robots-Tag works for non-HTML.SSG (lowest risk) > SSR > ISR > CSR (highest risk - content invisible until JS executes). Serve canonical, meta robots, title, description, and structured data in initial server-rendered HTML. Never rely on JavaScript injection for SEO-critical elements.
Key crawlers: GPTBot (OpenAI training), ChatGPT-User (real-time browsing), ClaudeBot (Anthropic), PerplexityBot (search + training), Google-Extended (Gemini training only), Bytespider (ByteDance). Blocking Google-Extended does NOT affect Google Search or AI Overviews (those use Googlebot).
Load
references/technical-seo-deep.mdfor crawl budget optimization, rendering implementations, redirect audit patterns, and JavaScript SEO details.
| Element | Guidelines |
|---------|-----------|
| Title tag | 50-60 chars, primary keyword near start, unique per page |
| Meta description | 120-160 chars, include CTA, unique per page |
| H1 | One per page, contains primary keyword |
| Headings | Logical hierarchy (H2 > H3 > H4), no skipping levels |
| Images | Descriptive alt text (10-125 chars), width/height for CLS, fetchpriority="high" on LCP image, decoding="async", WebP/AVIF, lazy load below fold only |
| Internal links | Descriptive anchor text (not "click here"), link to related content, distribute authority |
As of December 2025, E-E-A-T applies to ALL competitive queries, not just YMYL. Anonymous/generic authorship is penalized even for non-YMYL content.
| Signal | Weight | How to demonstrate | |--------|--------|--------------------| | Experience | 20% | First-hand testing, original photos/videos, case studies, specific examples | | Expertise | 25% | Author credentials, certifications, technical depth, author schema (ProfilePage) | | Authoritativeness | 25% | External citations, industry recognition, backlinks from authorities | | Trustworthiness | 30% | Contact info, privacy policy, HTTPS, reviews, date stamps, transparent corrections |
AI content: Acceptable if it demonstrates genuine E-E-A-T. Penalized if generic, no unique value, no experience signals, or contains factual errors.
| Page type | Min words | Unique content | |-----------|-----------|----------------| | Homepage | 500 | 100% | | Service/Feature | 800 | 100% | | Blog post | 1,500 | 100% | | Product page | 400 | 80%+ | | Category page | 400 | 100% | | Location (primary) | 600 | 60%+ | | Location (secondary) | 500 | 40%+ | | FAQ page | 800 | 100% |
Word count is NOT a ranking factor (John Mueller confirmed) - these are topical coverage floors.
Thumbnails <50KB, content images <100KB, hero/banner <200KB. Format priority: AVIF (93.8% support) > WebP (95.3%) > JPEG > PNG.
Load
references/eeat-content-quality.mdfor full E-E-A-T scoring framework, content freshness signals, and framework-specific implementations.
Always use JSON-LD format (Google's explicit recommendation). Schema earns rich results but does not directly boost rankings. However, pages with structured data have 2.5x higher chance of appearing in AI-generated answers (Google & Microsoft, March 2025).
| Type | Rich result | Key requirement | |------|------------|-----------------| | Article / BlogPosting | Article carousel | headline, datePublished, author | | Product | Shopping, price | name, offers with price/availability | | LocalBusiness | Local pack, maps | name, address, telephone | | Organization | Knowledge panel | name, url, logo | | BreadcrumbList | Breadcrumb trail | itemListElement array | | VideoObject | Video carousel | name, uploadDate, thumbnailUrl | | Event | Event listing | name, startDate, location | | SoftwareApplication | App info | name, offers, operatingSystem | | ProfilePage | Author info | mainEntity with Person | | ProductGroup | Variant selector | hasVariant, variesBy |
| Type | Status | Date | |------|--------|------| | HowTo | Removed | Sept 2023 | | FAQPage | Restricted to gov/healthcare only | Aug 2023 | | SpecialAnnouncement | Retired | July 2025 | | CourseInfo, EstimatedSalary, LearningVideo | Deprecated | June 2025 | | ClaimReview, VehicleListing, Dataset | Deprecated | Late 2025 |
FAQPage exception: While Google no longer shows rich results for most sites, FAQPage schema still improves AI/LLM citation visibility on non-Google platforms.
E-commerce update: returnPolicyCountry in MerchantReturnPolicy is required since March 2025. Product Certification markup available since April 2025.
Test with Google Rich Results Test before deploy. Ensure: all required properties present, @context uses https://, all URLs absolute, dates in ISO 8601, no deprecated types, prices include ISO 4217 currency, content marked up is visible on page.
Load
references/schema-types-full.mdfor complete type catalog, JSON-LD examples, and industry-specific implementations.
| Metric | Good | Needs improvement | Poor | What it measures | |--------|------|-------------------|------|-----------------| | LCP | <=2.5s | 2.5-4.0s | >4.0s | Largest visible element load time | | INP | <=200ms | 200-500ms | >500ms | Responsiveness to user interaction | | CLS | <=0.1 | 0.1-0.25 | >0.25 | Visual stability / layout shifts |
INP replaced FID on March 12, 2024. FID fully removed September 9, 2024. INP = Input Delay + Processing Time + Presentation Delay.
fetchpriority="high", lazy-loaded above fold), render-blocking CSS/JS, slow TTFB (>200ms)scheduler.yield(). Excessive DOM size (>1,500 elements).width/height attributes. Web font FOUT/FOIT. Dynamically injected content above viewport.Load
references/cwv-performance.mdfor CrUX API queries, LCP subparts breakdown, and framework-specific fixes (Next.js, Nuxt, Astro).
| Factor | Weight | |--------|--------| | GBP Signals | 32% (primary category is #1 signal) | | Proximity | 55.2% of ranking variance (Search Atlas ML) | | Review Signals | ~20% (up from 16% in 2023) | | On-Page Signals | 15-19% | | Link Signals | Declining |
domain.com/locations/city-name/ (50%+ traffic lift vs subdomain)@id + branchOf OrganizationLoad
references/local-seo-signals.mdfor full ranking factors, citation tiers, GBP audit checklist, and industry-specific weights.
A link is valuable when: Domain Rating is strong AND topically relevant AND editorially placed AND the linking page has real organic traffic. Missing any of these significantly reduces value.
| Type | SaaS | E-commerce | Local | |------|------|------------|-------| | Branded | 40-55% | 35-45% | 45-60% | | URL/naked | 15-20% | 15-25% | 10-15% | | Generic | 10-15% | 10-15% | 15-20% | | Exact-match keyword | 3-8% | 5-10% | 5-10% | | Partial-match | 10-15% | 10-20% | 5-10% |
Exact-match keyword anchor >15% = Penguin penalty risk.
Load
references/link-building-offpage.mdfor all 30 toxic patterns, velocity red flags, disavow file format, and detailed acquisition workflows.
x-default: Fallback for users whose language/region does not match any variant.<link rel="alternate" hreflang="xx">, HTTP headers (PDFs/non-HTML), or XML sitemap (best for large sites).The #1 crawl budget killer in e-commerce. Control spectrum (least to most aggressive):
Selectively index high-value facets (e.g., brand + category) that have search volume.
| Status | Action |
|--------|--------|
| In-stock | Full optimization, Product schema with InStock |
| Out-of-stock | Keep page live, show alternatives, update availability to OutOfStock |
| Discontinued | 301 redirect to replacement or parent category |
| Seasonal | Keep URL, update content and availability seasonally |
rel=next/prev is deprecated but harmless.ProductGroup schema with hasVariant to consolidateBreadcrumbList schema on every product and category page| Metric | Threshold | Action | |--------|-----------|--------| | Pages without review | 100+ | WARNING - enforce 40%+ unique content | | Pages without justification | 500+ | HARD STOP - require explicit justification | | Unique content between pages | <40% | Flag as thin content | | Word count per page | <300 | Review required |
Safe: Integration/tool pages with real docs, glossary (200+ word definitions), product pages with unique specs/images/reviews, data-driven pages with unique statistics per record.
| Factor | Weight | |--------|--------| | Self-contained answer blocks with specific facts | 25% | | Structural readability (semantic headings, lists, tables) | 20% | | Authority signals (author byline, publication date, primary sources) | 20% | | Multi-modal content (text + images + data) | 15% | | Technical accessibility (SSR critical - AI does not execute JS) | 20% |
Princeton GEO research: Statistics +40% citation, cited sources +30%, expert quotes +25%.
Emerging guidance file at /llms.txt (domain root). Structured content guidance for AI crawlers: key page highlights, content areas, authority info.
Featured snippet formats:
<ol> or <ul><thead>/<tbody>People Also Ask: Dynamic, auto-populated. Research via AlsoAsked.com. Target question-based H2/H3 headings with concise 40-60 word answers.
Voice search: Conversational queries (7-10 words), local bias. Optimize with FAQ schema, concise answers, LocalBusiness schema.
Load
references/geo-aeo-ai-search.mdfor platform-specific optimization, AI crawler directives, RSL 1.0, and detailed AEO strategies.
| Category | Checks | Focus | |----------|--------|-------| | Technical SEO | 10 | Crawlability, indexability, sitemaps, canonicals, HTTPS, mobile, speed | | On-Page SEO | 8 | Titles, meta, headings, images, internal links, URL structure | | Content SEO | 7 | E-E-A-T, topical authority, freshness, cannibalization, thin content | | Off-Page SEO | 5 | Backlink profile, anchor diversity, toxic links, domain authority | | AEO & GEO Readiness | 5 | Schema, featured snippet eligibility, AI citation signals, llms.txt |
Scoring: PASS (meets standard) / WARN (partially meets) / FAIL (does not meet)
| Priority | Criteria | Examples | |----------|----------|---------| | Critical | Prevents indexing or causes penalty | noindex on key pages, security issues, manual actions | | High | Significant ranking impact | Missing titles, broken canonicals, CWV failures | | Medium | Moderate impact, easy to fix | Missing alt text, thin meta descriptions | | Low | Minor optimization opportunity | Schema enhancements, minor redirect chains |
Cadence: Full audit quarterly. Quick health check (top 10 items) monthly.
Fetch and inspect any page's SEO elements:
curl -sL -A "Mozilla/5.0" -o /tmp/seo-page.html "URL" # Fetch HTML
curl -sL "https://domain.com/robots.txt" # Check robots.txt
curl -sI -L "URL" # Headers & redirects
curl -sL "https://domain.com/llms.txt" # Check llms.txt
curl -sL "https://domain.com/sitemap.xml" | head -50 # Check sitemap
grep -iE '<title|<meta name="(robots|description)|rel="canonical"' /tmp/seo-page.html
grep -oP '<script type="application/ld\+json">.*?</script>' /tmp/seo-page.html
| Anti-pattern | Why it fails |
|-------------|-------------|
| Keyword stuffing in titles/content | Spam signal since Panda; degrades user experience |
| Buying links or joining link schemes | Penguin penalty; manual actions |
| noindex left on production after staging | Entire site deindexed |
| Publishing thousands of pSEO pages day one | Scaled content abuse; immediate manual action |
| Blocking CSS/JS in robots.txt | Prevents rendering; pages indexed as blank |
| Duplicate title tags across pages | Wastes ranking potential; confuses intent signals |
| Stuffing keywords in GBP business name | Violation of Google guidelines; suspension risk |
| Canonical pointing to a different page's content | Signals the wrong page should rank |
| Ignoring mobile experience | 100% mobile-first indexing since July 2024 |
| Treating CWV lab scores as truth | Field data (CrUX) determines ranking, not Lighthouse |
noindex to prevent indexing.Load these on demand when the task requires deep data:
references/technical-seo-deep.md - Crawl budget, rendering implementations, redirect audit, robots.txt advanced, JS SEOreferences/eeat-content-quality.md - Full E-E-A-T scoring, content freshness, framework-specific SEO implementationsreferences/schema-types-full.md - Complete type catalog, JSON-LD examples, industry-specific schemas, validationreferences/local-seo-signals.md - Whitespark 2026 factors, review benchmarks, citation tiers, GBP audit, multi-locationreferences/link-building-offpage.md - 30 toxic indicators, anchor text analysis, disavow format, acquisition workflowsreferences/geo-aeo-ai-search.md - AI crawler directives, llms.txt spec, Princeton research, featured snippets, voice searchOn first activation, check if the user has keyword-research installed. If not, suggest installing it for keyword discovery, difficulty scoring, and gap analysis.
development
Diátaxis-driven documentation writing, improvement, and auditing for AI agents. Writes public-facing product docs (tutorials, how-to guides, reference, explanation) and repo developer docs (README, CONTRIBUTING, ARCHITECTURE, ADRs, changelogs, runbooks), improves existing pages to their quadrant's standard, and audits whole doc sites against the Diátaxis map. Detects the docs stack (Fumadocs, Docusaurus, Starlight, MkDocs, VitePress, Mintlify, plain Markdown) and follows its conventions. Triggers on "write docs", "document this", "write a tutorial", "write a README", "improve this doc", "audit our docs", "restructure the documentation", or "absolute-documentations this".
development
End-to-end, phase-gated software development lifecycle for AI agents. Turns a ticket, task, plan, or migration into a validated design, a dependency-graphed task board, and verified code. Triggers on "build this end-to-end", "plan and build", "break this into tasks", "pick up this ticket", "grill me on this", "run this migration", "absolute-work this", or any multi-step development task. Relentlessly interviews to a shared design, writes a reviewed spec, decomposes into atomic tasks on a persistent markdown board, then peels tasks one safe wave at a time with test-first verification. Handles features, bugs, refactors, greenfield projects, planning breakdowns, and migrations.
development
Use this skill when building user interfaces that need to look polished, modern, and intentional - not like AI-generated slop. Triggers on UI design tasks including component styling, layout decisions, color choices, typography, spacing, responsive design, dark mode, accessibility, animations, landing pages, onboarding flows, data tables, navigation patterns, and any question about making a UI look professional. Covers CSS, Tailwind, and framework-agnostic design principles.
development
Autonomously simplifies code in your working changes or targeted files. Detects staged or unstaged git changes, analyzes for simplification opportunities following clean code and clean architecture principles, applies improvements directly, runs tests to verify nothing broke, and shows a structured summary with reasoning. Triggers on "simplify this", "refactor this", "clean up my changes", "absolute-simplify", "simplify my code", "make this cleaner", "tidy this up", "reduce complexity", "flatten this", "remove dead code", or when code needs clarity improvements, nesting reduction, or redundancy removal. Language-agnostic at base with deep opinions for JS/TS/React, Python, and Go.