absolute-seo
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.
marketing seotechnical-seolocal-seoschemacore-web-vitalsgeoaeolink-buildingecommerce-seointernational-seoprogrammatic-seoauditWhat is absolute-seo?
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.
Quick Start
- Open your terminal or command prompt
- Run:
npx skills add AbsolutelySkilled/AbsolutelySkilled --skill absolute-seo - Start your AI coding agent (Claude Code, Cursor, Gemini CLI, or any supported agent)
- The absolute-seo skill is now active and ready to use
absolute-seo
absolute-seo is a production-ready AI agent skill for claude-code, gemini-cli, openai-codex. Comprehensive search engine optimization covering technical SEO, on-page optimization, E-E-A-T content quality, schema markup, Core Web Vitals, local SEO, link building, international SEO, e-commerce SEO, programmatic SEO, AI search optimization (GEO/AEO), and SEO audits.
Quick Facts
| Field | Value |
|---|---|
| Category | marketing |
| Version | 1.0.0 |
| Platforms | claude-code, gemini-cli, openai-codex, mcp |
| License | MIT |
How to Install
- Make sure you have Node.js installed on your machine.
- Run the following command in your terminal:
npx skills add AbsolutelySkilled/AbsolutelySkilled --skill absolute-seo- The absolute-seo skill is now available in your AI coding agent (Claude Code, Gemini CLI, OpenAI Codex, etc.).
Overview
Absolute SEO is the definitive search optimization skill - a senior SEO consultant distilled into one comprehensive package. It covers the full SEO spectrum: technical foundations (crawlability, indexing, rendering), on-page optimization (titles, meta, headings, images), content quality (E-E-A-T framework updated for December 2025), structured data (JSON-LD with current schema deprecations), Core Web Vitals (LCP, INP, CLS with 2026 thresholds), local SEO (GBP optimization, NAP consistency, review strategy), link building (acquisition, toxic detection, disavow), international SEO (hreflang, URL structures), e-commerce SEO (faceted navigation, product lifecycle), programmatic SEO (quality gates, scale strategies), and AI search optimization for Google AI Overviews, ChatGPT, and Perplexity. Includes inline web analysis patterns for fetching and inspecting any page's SEO elements. Built from 2026 data sources with current metrics, deprecation dates, and algorithm weights.
Tags
seo technical-seo local-seo schema core-web-vitals geo aeo link-building ecommerce-seo international-seo programmatic-seo audit
Platforms
- claude-code
- gemini-cli
- openai-codex
- mcp
Related Skills
Pair absolute-seo with these complementary skills:
Frequently Asked Questions
What is absolute-seo?
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.
How do I install absolute-seo?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill absolute-seo in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support absolute-seo?
This skill works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.
Does absolute-seo replace individual SEO skills?
Yes. absolute-seo consolidates the knowledge from technical-seo, on-site-seo, content-seo, schema-markup, core-web-vitals, local-seo, link-building, international-seo, ecommerce-seo, programmatic-seo, aeo-optimization, geo-optimization, seo-mastery, and seo-audit into one comprehensive skill. The keyword-research skill remains separate for dedicated keyword workflows.
Maintainers
Generated from AbsolutelySkilled
SKILL.md
Absolute SEO
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.
When to use this skill
Trigger when the user:
- Asks about improving search rankings, indexing, or crawlability
- Needs to implement or audit schema markup / structured data
- Wants to optimize Core Web Vitals (LCP, INP, CLS)
- Works on local SEO, Google Business Profile, or maps rankings
- Needs link building strategy or backlink audit
- Implements hreflang or multi-language/region targeting
- Optimizes e-commerce pages (products, categories, faceted navigation)
- Plans programmatic SEO at scale (location pages, comparison pages)
- Wants to optimize for AI search (Google AI Overviews, ChatGPT, Perplexity)
- Needs a comprehensive SEO audit or health check
- Asks about featured snippets, People Also Ask, or voice search
- Needs to configure robots.txt, sitemaps, or canonical tags
Do NOT trigger for:
- Keyword research workflows, difficulty scoring, gap analysis - use keyword-research skill
- Paid advertising (Google Ads, PPC campaigns)
- Social media marketing strategy
- General content writing without SEO focus
Key Principles
- Crawlable before rankable - If search engines cannot crawl and index your pages, nothing else matters. Fix technical foundations first.
- E-E-A-T is demonstrated, not declared - Experience, Expertise, Authoritativeness, and Trustworthiness come from first-hand evidence, credentials, citations, and transparency - not claims.
- Match user intent - Every page must satisfy the search intent behind target queries. Mismatched intent means zero chance of ranking regardless of optimization.
- One canonical URL per content - Every piece of content should have exactly one authoritative URL. Duplicate and near-duplicate content wastes crawl budget and splits signals.
- Measure, iterate, re-audit - SEO is not set-and-forget. Track rankings, traffic, and indexation. Re-audit quarterly. Expect 90-day windows before results stabilize.
- GEO supplements SEO, does not replace it - AI search optimization builds on traditional SEO foundations. 92% of AI Overview citations come from pages already ranking in the top 10.
Industry Detection
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).
Technical SEO
The crawl-index-rank pipeline: Googlebot discovers URLs (sitemaps, links) -> crawls HTML -> renders JavaScript -> indexes content -> ranks against queries.
Crawlability Essentials
- robots.txt: Allow CSS/JS (required for rendering). Include
Sitemap:directive. NeverDisallow: /on production. - XML sitemaps: Max 50,000 URLs or 50MB per file. Use sitemap index for larger sites.
<lastmod>must reflect actual content change dates. - Canonical tags: Self-referencing canonicals on every page. Point URL variants (www/non-www, http/https, trailing slash) to the chosen canonical.
- Redirects: Use 301 for permanent moves. Single-hop only - chains waste crawl budget and leak PageRank. Audit redirect chains quarterly.
- Meta robots:
noindexprevents indexing.nofollowprevents link equity flow. Can combine:noindex, nofollow. HTTP headerX-Robots-Tagworks for non-HTML. - IndexNow: Instant indexing protocol for Bing, Yandex, Naver (not Google). Push URL changes immediately instead of waiting for crawl.
Rendering Strategy
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.
AI Crawler Management
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.
On-Page & Content Quality
On-Page Hierarchy
| 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 |
E-E-A-T Framework (Updated Dec 2025)
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.
Content Quality Gates
| 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.
Image Size Targets
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.
Schema Markup
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).
Active Types (Most Used)
| 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 |
Deprecated / Restricted - NEVER Recommend
| 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.
Validation
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.
Core Web Vitals
| 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.
- Evaluation: 75th percentile of real user data (CrUX). Field data (CrUX) determines ranking, not lab data (Lighthouse). CWV is a tiebreaker signal.
- December 2025 update: Mobile CWV weighted more heavily than desktop.
Top Bottlenecks
- LCP: Unoptimized hero images (no
fetchpriority="high", lazy-loaded above fold), render-blocking CSS/JS, slow TTFB (>200ms) - INP: Long JavaScript tasks (>50ms). Break with
scheduler.yield(). Excessive DOM size (>1,500 elements). - CLS: Images/iframes without
width/heightattributes. 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).
Local SEO
Ranking Factors (Whitespark 2026)
| 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 |
GBP Optimization Priority
- Primary category - Most specific subtype (e.g., "Cosmetic Dentist" not "Dentist")
- Additional categories - Optimal: 4 additional
- Complete business info - Name, address, phone, hours, website (NAP must match everywhere)
- Photos - 10+ photos (logo, cover, interior, exterior, team, products). Refresh within 30 days.
- Reviews - The 18-day rule: rankings cliff if no new reviews for 3 weeks. The magic 10: significant boost at 10 reviews. Never incentivize reviews.
- Google Posts - 1+ per week (update, offer, event)
- Services/Products - List all with descriptions
- Note: GBP Q&A deprecated Dec 3, 2025 (replaced by Ask Maps Gemini AI). GBP messaging removed July 2025.
GBP Platform Changes (2025-2026)
- Diversity Update (2025): Harder to rank in BOTH map pack AND organic. Do NOT link GBP to your strongest organic page.
- Bing Places overhauled (Oct 2025) - now powers ChatGPT, Copilot, Alexa. Critical for AI visibility.
- Dedicated service pages = #1 local organic factor AND #2 AI visibility factor (Whitespark 2026).
Multi-Location
- Subdirectory structure:
domain.com/locations/city-name/(50%+ traffic lift vs subdomain) - Each location page needs >60-70% unique content (doorway page risk below this)
- Doorway page test: If you can swap the city name and content still makes sense, it is a doorway page
- Individual LocalBusiness schema per location with unique
@id+branchOfOrganization
AI Impact on Local (2026)
- 45% of users now use ChatGPT/AI for local recommendations
- ChatGPT conversion rate: 15.9% vs Google organic: 1.76%
- ChatGPT sources: Bing web index, Yelp, TripAdvisor, BBB, Reddit (NOT GBP directly)
- 3 of top 5 AI visibility factors are citation-related (Whitespark 2026)
Load
references/local-seo-signals.mdfor full ranking factors, citation tiers, GBP audit checklist, and industry-specific weights.
Link Building & Off-Page
Acquisition Priority
- Digital PR - Original research, data studies, expert commentary -> editorial links from publications
- Resource/link pages - Find curated lists in your niche, pitch inclusion
- Broken link building - Find broken outbound links on relevant sites, offer your content as replacement
- Guest posting - Contribute to relevant sites with editorial standards (vet: organic traffic, relevance, editorial links)
- Unlinked mentions - Find brand mentions without links, request link addition
Link Quality Evaluation
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.
Anchor Text Benchmarks
| 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.
Toxic Link Indicators (Auto-Flag)
- 10K+ outbound links per page
- Domain not indexed in Google
- Known link networks / PBNs
- Exact-match anchors from 5+ unrelated domains
- Hacked sites with pharma/casino injections
Load
references/link-building-offpage.mdfor all 30 toxic patterns, velocity red flags, disavow file format, and detailed acquisition workflows.
International SEO
- hreflang is bidirectional: If page A lists page B as alternate, page B MUST list page A. Missing return tags invalidate the signal.
- Always include
x-default: Fallback for users whose language/region does not match any variant. - URL structure: ccTLD (strongest geo signal, separate domain authority) vs subdomain (moderate signal, shared authority) vs subfolder (weakest signal, consolidated authority). Most sites should use subfolder.
- Localize, do not just translate: Currency, date formats, phone numbers, cultural references, legal requirements.
- Implementation: HTML
<link rel="alternate" hreflang="xx">, HTTP headers (PDFs/non-HTML), or XML sitemap (best for large sites).
E-commerce SEO
Faceted Navigation
The #1 crawl budget killer in e-commerce. Control spectrum (least to most aggressive):
- Canonical to base category - Faceted URLs point canonical to unfaceted version
- robots.txt Disallow - Block crawling of facet parameters
- noindex, follow - Allow link discovery but prevent indexing
- AJAX/dynamic filtering - No URL change, no crawl waste
Selectively index high-value facets (e.g., brand + category) that have search volume.
Product Lifecycle
| 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 |
Key Patterns
- Category taxonomy: 3 levels max (Department > Category > Subcategory)
- Pagination: Each page self-canonicalizes (NOT to page 1).
rel=next/previs deprecated but harmless. - Product variants: Use
ProductGroupschema withhasVariantto consolidate - Breadcrumbs:
BreadcrumbListschema on every product and category page
Programmatic SEO
Quality Gates
| 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 vs Penalty Risk Patterns
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.
Penalty Risk Patterns
- Location pages with only city name swapped (doorway pages)
- "[Competitor] alternative" without real comparison data
- AI-generated content without human review (5-10% sample human review minimum)
- Site reputation abuse: pSEO content under high-authority domain triggers penalties (Nov 2024 escalation). Scaled content abuse enforcement intensified June-Aug 2025.
Launch Strategy
- Seed: Publish 50-100 pages first
- Observe: Monitor for 4-6 weeks (indexation rate, rankings, GSC coverage)
- Scale: If quality signals positive, publish in batches of 100/day (not thousands at once)
- Monitor: Search Console API for cluster-level metrics
AI Search Optimization (GEO + AEO)
Generative Engine Optimization (GEO)
- Brand mentions correlate 3x stronger with AI visibility than backlinks (Ahrefs, Dec 2025). YouTube mentions show 0.737 correlation (strongest single signal).
- AI Overviews reach 1.5B users/month across 200+ countries. Google AI Mode (May 2025) has zero organic blue links - AI citation is the only visibility mechanism.
- 92% of AI Overview citations come from top-10 ranking pages, but 47% from below position 5
- Only 11% domain overlap between ChatGPT citations and Google AI Overviews - platform-specific optimization needed
- Optimal citation passage length: 134-167 words
- Multi-modal content sees 156% higher selection rates in AI answers
Citability Scoring
| 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%.
llms.txt Standard
Emerging guidance file at /llms.txt (domain root). Structured content guidance for AI crawlers: key page highlights, content areas, authority info.
Answer Engine Optimization (AEO)
Featured snippet formats:
- Paragraph: 40-60 words, question in heading, answer immediately after
- List: 5-8 items, self-contained, use
<ol>or<ul> - Table: 3-5 columns, semantic HTML with
<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.
SEO Audit Methodology
35-Check Scorecard (5 Categories)
| 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 Matrix
| 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.
Web Analysis Patterns
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.htmlAnti-Patterns
| 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 |
Gotchas
- robots.txt blocks crawling, not indexing - URLs can appear in results (without snippet) via inbound links. Use
noindexto prevent indexing. - Canonical is a hint, not a directive - Google may ignore it. Ensure canonical target is clearly the better version.
- Redirect chains leak PageRank - Each hop loses ~15% equity in practice. Single-hop 301s only.
- Staging site indexed - Password-protect staging, do not rely solely on meta robots.
- hreflang without return tags - Missing bidirectional tags invalidate the entire hreflang cluster.
References
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 search
Companion Check
On first activation, check if the user has keyword-research installed. If not, suggest installing it for keyword discovery, difficulty scoring, and gap analysis.
References
eeat-content-quality.md
E-E-A-T & Content Quality Reference
E-E-A-T Scoring Framework
Experience (20% weight)
| Signal | Strong | Weak |
|---|---|---|
| First-hand evidence | Original photos, videos, case studies | Stock images, generic descriptions |
| Specific examples | "We tested X for 6 months and saw Y" | "Many experts recommend X" |
| Process documentation | Step-by-step with screenshots of real usage | Theoretical steps without evidence |
| Unique data | Original research, proprietary benchmarks | Citing others' data only |
| Community engagement | Author responds to comments, shares updates | No interaction |
Expertise (25% weight)
| Signal | Strong | Weak |
|---|---|---|
| Author credentials | Named author with verifiable background | "Admin" or no author |
| Professional depth | Technical accuracy, nuanced analysis | Surface-level overview |
| Certifications | Relevant industry certs displayed | No credential signals |
| Publication history | Consistent writing in the domain | Single post on topic |
| ProfilePage schema | Person entity with sameAs links |
No author markup |
Authoritativeness (25% weight)
| Signal | Strong | Weak |
|---|---|---|
| External citations | Other authoritative sites reference this content | No inbound citations |
| Brand mentions | Named in industry discussions, news, forums | Unknown brand |
| Industry awards | Recognized by peers | No recognition |
| Backlink profile | Links from .edu, .gov, industry leaders | Links from directories only |
| Wikipedia/Wikidata | Entity has knowledge panel | No entity presence |
Trustworthiness (30% weight)
| Signal | Strong | Weak |
|---|---|---|
| Contact information | Physical address, phone, email visible | No contact page |
| Privacy policy | Clear, accessible, GDPR/CCPA compliant | Missing or generic |
| HTTPS | Valid SSL, no mixed content | HTTP or certificate errors |
| Reviews/testimonials | Third-party reviews with responses | No social proof |
| Date stamps | Published and updated dates on content | Undated content |
| Corrections | Transparent updates, changelog | Errors left uncorrected |
| Editorial process | Stated review process, fact-checking | No editorial standards |
December 2025 Core Update Impact
Key Changes
- E-E-A-T now applies to ALL competitive queries, not just YMYL
- Anonymous/generic authorship penalized even for non-YMYL content
- Experience elevated as key differentiator (first-person narrative required)
- AI-generated content without genuine E-E-A-T signals actively demoted
Traffic Impact by Industry (Dec 2025)
| Industry | Average decline for low-E-E-A-T sites |
|---|---|
| Affiliate | 71% |
| Health/YMYL | 67% |
| E-commerce | 52% |
| Technology | 38% |
| Entertainment | 22% |
Recovery Playbook
- Add author bylines with verifiable credentials to all content
- Implement ProfilePage schema for authors
- Add first-hand experience signals (original images, case studies, test results)
- Update publication dates and add "last reviewed" dates
- Add editorial process documentation (about page, methodology)
- Build external authority signals (guest posts, PR, conference talks)
AI Content Assessment
Google's stance (Sept 2025 Quality Rater Guidelines):
- AI content is acceptable if it demonstrates genuine E-E-A-T
- AI content is penalized when:
- Generic phrasing without unique value
- No first-hand experience signals
- Factual errors or hallucinations
- Mass-produced without editorial review
- Duplicative of existing content without added perspective
AI Content Quality Checklist
- Contains original insights not available elsewhere
- Includes first-hand experience (photos, case studies, specific examples)
- Factually verified by subject matter expert
- Author byline with verifiable credentials
- Unique perspective or angle on the topic
- Edited for style, voice, and accuracy (not raw AI output)
Content Quality Gates (Extended)
Word Count by Page Type
| Page type | Min words | Unique content | Notes |
|---|---|---|---|
| Homepage | 500 | 100% | Clear value proposition, service overview |
| Service/Feature page | 800 | 100% | Detailed explanation, benefits, CTAs |
| Blog post (standard) | 1,500 | 100% | Comprehensive coverage of topic |
| Blog post (pillar) | 3,000 | 100% | Definitive guide, links to cluster pages |
| Product page | 400 | 80%+ | Unique descriptions, not manufacturer copy |
| Category page | 400 | 100% | Unique intro, not just product grid |
| Location (primary market) | 600 | 60%+ | Market-specific content, local details |
| Location (secondary) | 500 | 40%+ | Location-specific details, not template fill |
| FAQ page | 800 | 100% | Real questions from customers |
| About page | 400 | 100% | Team, mission, credentials, contact |
| Landing page | 600 | 100% | Focused conversion, clear CTA |
| Comparison page | 1,000 | 100% | Real data, not template fill |
Title Tag Requirements
- 30-60 characters (Google truncates ~60)
- Primary keyword near beginning
- Unique per page (no duplicates across site)
- Brand at end (optional, e.g., "| Brand Name")
- No keyword stuffing or pipe-separated keyword lists
Meta Description Requirements
- 120-160 characters (Google truncates ~155-160)
- Include a clear call-to-action
- Unique per page
- Include primary keyword naturally
- Preview what the user will find on the page
Image Alt Text Requirements
- 10-125 characters
- Describe the image content, not the filename
- Include keywords naturally (not forced)
- Decorative images: use
alt=""orrole="presentation" - Functional images (buttons, links): describe the action, not the image
Content Freshness Signals
Update Tiers
| Content type | Update frequency | Priority |
|---|---|---|
| News/breaking | Same day | Highest |
| Industry trends | Monthly | High |
| How-to guides | Quarterly | Medium |
| Product reviews | When product updates | Medium |
| Evergreen (definitions) | Annually | Low |
| Legal/compliance | When regulations change | Critical |
Freshness Indicators
<meta property="article:published_time">andarticle:modified_time- Schema
datePublishedanddateModifiedin Article/BlogPosting - Visible "Last updated: [date]" on page
<lastmod>in XML sitemap matching actual content changes
Helpful Content System (March 2024)
- Merged into core algorithm during March 2024 update
- No longer a separate HCU classifier
- Helpfulness signals weighted within every core update
- Key factors: satisfies search intent, provides unique value, demonstrates experience
Topic Cluster Architecture
Pillar-Spoke Model
[Pillar Page: "Complete Guide to X"]
|
|-- [Spoke: "X for Beginners"]
|-- [Spoke: "Advanced X Techniques"]
|-- [Spoke: "X vs Y Comparison"]
|-- [Spoke: "Best X Tools in 2026"]
|-- [Spoke: "X Case Studies"]Rules:
- Pillar page covers the broad topic comprehensively (3,000+ words)
- Spoke pages go deep on subtopics (1,500+ words each)
- Pillar links to all spokes, spokes link back to pillar
- Spokes link to related spokes (lateral connections)
- Each spoke targets a distinct keyword cluster (no cannibalization)
Cannibalization Detection
Check Google Search Console for:
- Multiple URLs ranking for the same query
- Rankings fluctuating between pages (position volatility)
- Neither page ranking well (split authority)
Fix: Consolidate content into the stronger page, 301 redirect the weaker page.
Internal Linking Strategy
Guidelines
- Every page should be reachable within 3 clicks from homepage
- Use descriptive anchor text (not "click here" or "read more")
- Link contextually within body content (not just navigation)
- Distribute links to important pages (more internal links = more crawl priority)
- Avoid excessive links per page (>100 internal links dilutes per-link value)
Hub-and-Spoke Pattern
- Hub pages (categories, pillars) link down to detail pages
- Detail pages link up to hub and sideways to related detail pages
- Breadcrumbs provide consistent upward navigation
- Related posts/products sections provide lateral discovery
Framework-Specific SEO Patterns
Next.js
- Use
generateMetadata()for dynamic pages metadataBasefor canonical resolutionrobots.tsfor programmatic robots.txtsitemap.tsfor dynamic sitemap generation- Image component with
priorityprop for LCP images next/fontfor CLS-free web fonts
Nuxt
useSeoMeta()composable for reactive metadatauseHead()for canonical and hreflang links@nuxtjs/sitemapmodule for automatic sitemapsnuxt-og-imagefor dynamic OG imagesNuxtImgcomponent for optimized images
Astro
- Layout-based metadata with props
@astrojs/sitemapintegration- Static site generation by default (best for SEO)
<Image>component for optimization- Partial hydration keeps pages fast (minimal JS)
Remix
metaexport function per routelinksexport for canonical tags- Server-side rendering by default
- Nested routes for layout inheritance
geo-aeo-ai-search.md
GEO, AEO & AI Search Optimization Reference
Generative Engine Optimization (GEO)
How AI Search Works
AI search engines use Retrieval-Augmented Generation (RAG):
- Retrieve: Query is converted to embeddings, matched against indexed web content
- Augment: Top-matching passages are assembled as context
- Generate: LLM synthesizes an answer, citing source passages
Unlike traditional search (10 blue links), AI search produces a single synthesized answer with inline citations. Visibility depends on being selected as a citation source.
Citation Mechanism
AI selects citations based on:
- Semantic relevance: Content closely matches the query intent
- Authority signals: Brand recognition, domain authority, entity presence
- Content structure: Self-contained passages, clear headings, data points
- Unique value: Original data, expert perspective, primary source
Key Statistics (2025-2026)
| Metric | Value | Source |
|---|---|---|
| Brand mentions vs backlinks | Brand mentions correlate 3x stronger with AI visibility | Ahrefs, Dec 2025 |
| AI Overviews reach | 1.5B users/month, 200+ countries | Google, 2025 |
| AI Overview query coverage | 50%+ of queries | Various studies, 2025 |
| Citation from top-10 pages | 92% of AI Overview citations | Ahrefs |
| Citations from below position 5 | 47% of citations | Ahrefs |
| Domain overlap ChatGPT vs Google AIO | Only 11% | ZipTie study |
| Optimal citation passage length | 134-167 words | Multiple studies |
| Multi-modal content selection rate | 156% higher | Google, 2025 |
GEO Analysis Criteria (Weighted)
| Factor | Weight | How to optimize |
|---|---|---|
| Citability | 25% | Self-contained answer blocks, specific facts, statistics, data points |
| Structural readability | 20% | Semantic headings, question-based H2/H3, lists, tables, numbered steps |
| Authority & brand signals | 20% | Author byline, publication date, primary source citations, brand mentions |
| Technical accessibility | 20% | Server-side rendering (AI does NOT execute JS), fast loading, clean HTML |
| Multi-modal content | 15% | Text + images + data tables + charts (156% higher selection rate) |
Princeton GEO Research Findings
| Optimization | Citation improvement |
|---|---|
| Adding statistics with sources | +40% |
| Citing authoritative sources | +30% |
| Including expert quotes | +25% |
| Improving grammar and fluency | +20% |
| Adding specific technical terms | +15% |
Content Optimization for AI Citation
Do:
- Write self-contained paragraphs (134-167 words) that answer specific questions
- Include statistics with attribution ("According to [source], X is Y%")
- Add expert quotes and named attributions
- Use semantic HTML headings (H2 for questions, H3 for sub-answers)
- Include data in tables (AI extracts tabular data well)
- Provide clear definitions for technical terms
- Keep content factual and verifiable
Don't:
- Rely on visual elements alone (AI cannot see images)
- Use vague language ("many experts say", "studies show")
- Bury answers in long paragraphs without structure
- Use client-side rendering for important content
- Assume all AI platforms index the same way
Platform-Specific Optimization
Google AI Overviews
- Sources from Google's own web index (Googlebot)
- 92% of citations from top-10 ranking pages
- Traditional SEO is prerequisite
- Schema markup improves selection probability
- Blocking Google-Extended does NOT affect AI Overviews (uses Googlebot)
Google AI Mode (May 2025)
- Separate tab in Google Search
- Available in 180+ countries
- Zero organic blue links - AI citation is the ONLY visibility mechanism
- Content must be in Google's index to be cited
ChatGPT Web Search
- Sources from Bing web index (not Google)
- Also pulls from: Wikipedia, Reddit, Yelp, TripAdvisor, BBB
- GPTBot crawls for training data; ChatGPT-User browses in real-time
- Blocking GPTBot blocks training but NOT real-time browsing
- Only 11% domain overlap with Google AI Overviews
Perplexity
- Sources from its own web index + Bing
- Heavy Reddit sourcing, 40% more from high-authority sources
- Averages 21.87 citations per question (Qwairy study)
- Provides inline citations with page titles
- PerplexityBot crawls for indexing
- Respects robots.txt (blocks = no Perplexity visibility)
Bing Copilot
- Sources from Bing index exclusively
- Integrated into Bing search results
- Strong Enterprise usage (Microsoft 365 integration)
AI Crawler Management
robots.txt Directives
# Allow AI crawlers for visibility in AI search results
User-agent: GPTBot
Allow: /blog/
Allow: /docs/
Disallow: /proprietary/
Disallow: /internal/
User-agent: ChatGPT-User
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
# Block AI training but allow search
User-agent: Google-Extended
Disallow: / # Blocks Gemini training, NOT Google Search/AI Overviews
User-agent: Bytespider
Disallow: / # ByteDance training, usually safe to block
User-agent: CCBot
Disallow: / # Common Crawl, optionalDecision Framework
| Goal | GPTBot | ChatGPT-User | ClaudeBot | PerplexityBot | Google-Extended |
|---|---|---|---|---|---|
| Visible in ChatGPT search | Don't care | Allow | Don't care | Don't care | Don't care |
| Visible in Perplexity | Don't care | Don't care | Don't care | Allow | Don't care |
| Visible in Google AI Overviews | Don't care | Don't care | Don't care | Don't care | Don't care (uses Googlebot) |
| Block AI training | Block | N/A | Block | Block | Block |
| Maximum AI visibility | Allow all | Allow | Allow | Allow | Allow |
Adoption: ~3-5% of sites currently use AI-specific robots.txt rules (growing rapidly).
llms.txt Standard
Emerging specification (December 2025) for providing structured content guidance to AI crawlers.
Format
# Example Company
> Brief description of the company/site
## Docs
- [Getting Started](https://example.com/docs/getting-started): Quick start guide
- [API Reference](https://example.com/docs/api): Complete API documentation
## Blog
- [Latest Updates](https://example.com/blog): Company news and insights
## Contact
- Support: support@example.com
- Sales: sales@example.comLocation
- File at domain root:
https://example.com/llms.txt - Markdown format
- Curated entry point (not exhaustive sitemap)
- Highlights most important/authoritative content
- Include contact and authority information
Checking for llms.txt
curl -sL "https://domain.com/llms.txt"
# 200 = implemented, 404 = not implementedRSL 1.0 (Really Simple Licensing)
Machine-readable AI licensing standard (December 2025).
Purpose: Let content owners specify how AI systems may use their content.
Location: /.well-known/rsl.json
Backed by: Reddit, Yahoo, Medium, Quora, Cloudflare, Akamai, Creative Commons. Augments robots.txt with AI-specific granular permissions. Still emerging but gaining traction with major platforms.
Answer Engine Optimization (AEO)
Featured Snippet Formats
Paragraph snippet (most common):
- Question in H2/H3 heading
- Answer immediately after in a single paragraph
- 40-60 words (not too short, not too long)
- Direct answer first, then context
<h2>What is Core Web Vitals?</h2>
<p>Core Web Vitals are three performance metrics that Google uses as ranking
signals: Largest Contentful Paint (LCP) measures loading speed, Interaction to
Next Paint (INP) measures responsiveness, and Cumulative Layout Shift (CLS)
measures visual stability. Pages must meet all three thresholds to pass.</p>List snippet:
- 5-8 items optimal
- Each item self-contained
- Use
<ol>for ranked/ordered lists,<ul>for unordered - H2/H3 heading with "best", "top", "steps", "ways"
Table snippet:
- 3-5 columns
- Semantic HTML with
<thead>and<tbody> - Comparison or data-oriented content
- H2/H3 heading describing what the table compares
People Also Ask (PAA) Targeting
- PAA boxes are dynamic and auto-populated based on query context
- Research: Use AlsoAsked.com, Google's PAA expansion, AnswerThePublic
- Target: Create question-based H2/H3 headings matching PAA questions
- Answer: Provide concise 40-60 word answer directly after heading
- Expand: Follow with detailed explanation below
Voice Search Optimization
- Queries are conversational (7-10 words average)
- Local/time-sensitive bias ("near me", "open now")
- Optimize: FAQ format, concise answers, conversational language
- Schema: LocalBusiness for local queries, Speakable for news
- Page speed critical (voice results typically from fast pages)
Speakable Schema
{
"@context": "https://schema.org",
"@type": "Article",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".article-summary", ".key-findings"]
}
}- Currently Google News publishers only (English)
- Marks sections suitable for text-to-speech
- Max 30 seconds of audio when read aloud
- Use
cssSelector(preferred) orxpath
Zero-Click Strategy
Many searches now resolve without a click (AI Overviews, featured snippets, knowledge panels).
Adapt by:
- Optimize for brand visibility even without clicks
- Include brand name in snippet-optimized answers
- Track impressions alongside clicks in GSC
- Build brand recognition that drives direct/branded searches later
- Accept lower CTR on informational queries, focus conversion on transactional queries
AI Search Visibility Monitoring
Manual Spot-Checking
- Search your target queries in ChatGPT, Google (AI Overview), Perplexity
- Note which sources are cited
- Track whether your domain appears
- Document monthly for trend analysis
Metrics to Track
- AI citation rate: % of target queries where you appear in AI answers
- Source diversity: Which AI platforms cite you (Google AIO, ChatGPT, Perplexity)
- Citation position: Where in the AI answer your citation appears (higher = better)
- Brand mention frequency: How often your brand is named in AI responses
- Impression-to-click ratio: GSC impressions vs clicks (declining ratio = more zero-click)
Emerging Tools
- AI search monitoring tools are rapidly evolving
- Baseline tracking now, formal tools expected to mature in 2026
- Use manual tracking + GSC data as primary signals
link-building-offpage.md
Link Building & Off-Page Reference
Toxic Link Patterns
Definite Spam (Auto-Flag for Disavow)
| # | Pattern | Why toxic |
|---|---|---|
| 1 | 10K+ outbound links per page | Link farm, no editorial value |
| 2 | Domain not indexed in Google | Penalized or deindexed domain |
| 3 | Domain <30 days old with 100+ outbound links | Spam domain |
| 4 | Exact-match anchor from 5+ unrelated domains | Coordinated link scheme |
| 5 | Doorway pages (thin, keyword-stuffed) | Penalty-triggering content |
| 6 | Hacked sites (pharma/casino injections) | Malicious link injection |
| 7 | Known PBN (Private Blog Network) | Artificial link scheme |
| 8 | Footer/sidebar site-wide links from unrelated domains | Paid/manipulative links |
| 9 | Auto-generated/spun content | No editorial value |
| 10 | Previously penalized domains | Toxic association |
Likely Spam (Manual Review Required)
| # | Pattern | Action |
|---|---|---|
| 11 | >90% outbound link ratio | Review context |
| 12 | Language mismatch with your content | Usually irrelevant |
| 13 | Expired domain (recently re-registered) | Often repurposed for spam |
| 14 | Pages with 50+ outbound links | Diluted value, possibly link page |
| 15 | Zero organic traffic to linking page | No real audience |
| 16 | Reciprocal link patterns (A links B, B links A) | Excessive reciprocal = scheme |
| 17 | Web 2.0 properties with thin content | Created solely for links |
| 18 | Article directories (pre-Penguin era) | Low quality, often penalized |
| 19 | Low-quality guest posts (generic, off-topic) | Manipulative if pattern |
| 20 | Completely unrelated niche | No topical relevance |
Potentially Problematic (Monitor)
| # | Pattern | When to act |
|---|---|---|
| 21 | Social bookmarking at scale | If hundreds from same platform |
| 22 | Forum profile links (no posts) | If pattern across many forums |
| 23 | Press release networks | If anchor-text optimized |
| 24 | Coupon aggregators | If links are followed |
| 25 | Generic directories (not industry-specific) | If hundreds submitted |
| 26 | Hidden anchor text (same color as background) | Always problematic |
| 27 | Cloaked content (different content for bots) | Always problematic |
| 28 | Affiliate thin content sites | If link farm pattern |
| 29 | Blog comments without editorial context | If mass-submitted |
| 30 | Nofollow-only domains linking | Not toxic, but no value |
Anchor Text Distribution
Healthy Benchmarks by Industry
| Anchor type | SaaS | E-commerce | Local Service | Publisher |
|---|---|---|---|---|
| Branded ("Acme Inc") | 40-55% | 35-45% | 45-60% | 50-65% |
| URL/naked ("acme.com") | 15-20% | 15-25% | 10-15% | 10-20% |
| Generic ("click here", "learn more") | 10-15% | 10-15% | 15-20% | 10-15% |
| Exact-match keyword | 3-8% | 5-10% | 5-10% | 2-5% |
| Partial-match keyword | 10-15% | 10-20% | 5-10% | 5-10% |
| Natural/miscellaneous | 5-10% | 5-10% | 5-10% | 5-10% |
Red line: Exact-match keyword anchor >15% = Penguin algorithm penalty risk.
Analysis Process
- Export all backlinks with anchor text
- Categorize each anchor into types above
- Compare ratios against industry benchmarks
- Flag if exact-match exceeds 15%
- Check for patterns (same anchor from multiple domains = likely purchased)
Link Velocity Red Flags
| Pattern | Possible cause | Action |
|---|---|---|
| 10x normal new links in 1 week | Negative SEO attack or viral content | Check link quality; if spam, disavow |
| 50%+ links lost in 1 month | Penalty, site migration issue, or linking sites removed | Investigate source of loss |
| Zero new links for 3+ months | Content not attracting links | Refresh content strategy |
| All new links from same TLD | Coordinated building | Diversify sources |
| Sudden spike in exact-match anchors | Purchased links campaign | Stop and diversify |
Disavow File Format
# Disavow file for example.com
# Generated: 2026-04-01
# Review: Quarterly
# Spam domains (PBN network identified March 2026)
domain:spamsite1.com
domain:spamsite2.com
domain:linkfarm-network.com
# Individual toxic URLs
https://example-directory.com/paid-listing-page
https://hacked-site.com/injected-pharma-page
# Expired domain re-registrations
domain:expired-domain-spam.comDisavow Decision Framework
| Situation | Action |
|---|---|
| Manual action from Google | Disavow toxic links + submit reconsideration request |
| Negative SEO attack (sudden spam links) | Disavow immediately |
| Old low-quality links from years ago | Disavow if pattern is significant |
| Few low-quality links, no penalty | Monitor, do not disavow (Google usually ignores) |
| Competitor has similar low-quality links and ranks | Do NOT disavow - these links are not causing harm |
Important: Only submit disavow if you have evidence of penalty or significant toxic patterns. Over-disavowing can remove beneficial links.
Link Acquisition Strategies
1. Digital PR (Highest Value)
Process:
- Create a linkable asset (original research, data study, survey, tool, infographic)
- Identify 50-100 journalists/bloggers covering your topic
- Write personalized outreach (reference their recent work)
- Pitch the story angle, not just the link
- Follow up once after 3-5 business days
Success metrics: 5-15% response rate, 2-5% placement rate is good.
Linkable asset types by effectiveness:
- Original data/research studies (highest)
- Interactive tools and calculators
- Comprehensive industry reports
- Expert roundups with unique insights
- Visual content (infographics with unique data)
2. Resource Page Link Building
Process:
- Search
intitle:"resources" + [your topic]orinurl:resources + [your niche] - Find pages that curate links to useful resources
- Verify the page is actively maintained (check last update)
- Ensure your content genuinely adds value to their list
- Email the page owner with a specific suggestion for where your link fits
3. Broken Link Building
Process:
- Find resource pages in your niche (same as above)
- Check outbound links for 404s (browser extension or crawl tool)
- Create or identify your content that replaces the broken resource
- Email: "I noticed [broken link] on your [page]. I have a similar resource at [URL] that covers [topic]."
Response rate: Typically 5-10% (higher than cold outreach because you're solving a problem)
4. Guest Posting
Site vetting checklist:
- Has real organic traffic (not just domain authority)
- Publishes content relevant to your niche
- Has editorial standards (rejects low-quality submissions)
- Links are contextual within content (not author bio only)
- Not a "write for us" link farm (check if they accept everything)
5. Unlinked Brand Mentions
Process:
- Set up Google Alerts for your brand name, product names, key personnel
- When a mention appears without a link, email: "Thanks for mentioning [brand]. Would you consider adding a link to [URL] for your readers' convenience?"
- Focus on mentions in editorial content, not comments or forums
Success rate: 10-20% (highest of all strategies because they already know you)
Backlink Profile Health Score
Scoring Components
| Component | Weight | What to measure |
|---|---|---|
| Referring domain diversity | 20% | Unique domains linking (more = better) |
| Domain quality distribution | 20% | % of links from DR 40+ domains |
| Anchor text distribution | 15% | Alignment with industry benchmarks |
| Toxic link ratio | 20% | % of links matching toxic patterns |
| Link velocity trend | 10% | Steady growth vs spikes/drops |
| Follow/nofollow ratio | 5% | Natural mix (70-85% follow is typical) |
| Topical relevance | 10% | % of links from topically related sites |
Score Interpretation
| Score | Status | Action |
|---|---|---|
| 85-100 | Excellent | Maintain current strategy |
| 70-84 | Good | Address minor issues |
| 50-69 | Needs work | Prioritize toxic cleanup and diversification |
| 30-49 | Poor | Major cleanup needed, focus on quality acquisition |
| 0-29 | Critical | Likely penalized, full audit and disavow required |
Free Backlink Data Sources
| Source | Data quality | Coverage | Best for |
|---|---|---|---|
| Moz API (free tier) | Good | ~70% | DA/PA, spam score (2,500 rows/month) |
| Bing Webmaster | Moderate | ~15% | Competitor comparison (unlimited for verified) |
| Common Crawl | Basic | 25-40% | Domain-level PageRank, always free |
| Manual verification | Binary | N/A | Confirming specific links exist |
Key insight: Free sources combined capture 20-40% of raw backlink data but 60-70% of actionable intelligence (highest-authority links appear in free samples). For sites with <500 backlinks, free sources capture 50%+ of the meaningful profile.
Confidence Weighting for Multi-Source Analysis
| Source | Weight |
|---|---|
| DataForSEO (premium) | 1.00 |
| Verification crawler (binary) | 0.95 |
| Moz API | 0.85 |
| Bing Webmaster | 0.70 |
| Common Crawl | 0.50 |
Data sufficiency gate: Require 4+ of 7 scoring factors to produce a numeric health score. Otherwise report "INSUFFICIENT DATA" rather than misleading scores.
Competitor Backlink Gap Analysis
Process
- Identify top 3-5 ranking competitors for your target keywords
- Pull backlink profiles for each competitor
- Find domains that link to 2+ competitors but NOT to you (= gap)
- Prioritize gap domains by: relevance > authority > traffic
- Create content that earns links from gap domains
- Outreach with content that adds value to their audience
Gap Prioritization
| Priority | Criteria |
|---|---|
| High | Links to 3+ competitors, topically relevant, DR 40+ |
| Medium | Links to 2 competitors, or relevant with DR 20-40 |
| Low | Links to 1 competitor only, or low relevance |
local-seo-signals.md
Local SEO Signals Reference
Whitespark 2026 Local Ranking Factors
Factor Group Weights
| Factor group | Weight | Trend |
|---|---|---|
| GBP Signals | 32% | Stable |
| Review Signals | ~20% | Rising (was 16% in 2023) |
| On-Page Signals | 15-19% | Stable |
| Link Signals | ~10% | Declining |
| Citation Signals | ~8% | Declining for ranking, rising for AI |
| Behavioral Signals | ~5% | Stable |
| Personalization | ~5% | Rising |
| AI Search Signals | New | Rising rapidly |
Top 15 Local Pack Factors (Whitespark)
| Rank | Factor | Score |
|---|---|---|
| 1 | Primary GBP category | 193 |
| 2 | Keywords in GBP business title | 181 |
| 3 | Proximity to search point | 176 |
| 4 | Verified GBP status | 170 |
| 5 | Business open at time of search | 165 |
| 6 | High numerical Google ratings | 160 |
| 7 | Quantity of native Google reviews | 155 |
| 8 | Additional GBP categories (optimal: 4) | 148 |
| 9 | Review recency/velocity | 142 |
| 10 | Dedicated service pages | 138 |
| 11 | Quality/authority of inbound links | 132 |
| 12 | Keyword in review text | 128 |
| 13 | Proximity of address to centroid | 124 |
| 14 | Internal linking from domain | 118 |
| 15 | GBP landing page quality | 112 |
Proximity Data (Search Atlas ML Study)
- Proximity accounts for 55.2% of ranking variance in local pack
- For "near me" queries, proximity weight increases to ~65%
- For branded queries, proximity weight drops to ~30% (brand strength compensates)
Review Benchmarks
Volume & Velocity
- Magic 10 threshold: Significant ranking boost at 10 reviews (9 -> 10 = noticeable jump)
- 18-day rule: Rankings cliff if no new reviews for 3 weeks (velocity > volume)
- Monthly target: 2-4 new reviews/month minimum to maintain velocity signal
- Competitive threshold: Match or exceed top 3 competitors in review count
Quality Signals
- Average rating of 4.0+ expected (below 4.0 = conversion drop and potential ranking penalty)
- BrightLocal 2026: 74% only consider reviews from last 3 months
- BrightLocal 2026: 31% only use businesses with 4.5+ stars
- Reviews with photos weighted more heavily (Sterling Sky)
Review Platform Usage (BrightLocal 2026)
| Platform | Usage | Trend |
|---|---|---|
| 71% | Down from 83% in 2025 | |
| 37% | Rising | |
| TikTok | 29% | Rising |
| Apple Maps | 27% | Up from 14% |
| Yelp | 24% | Declining |
| 21% | Declining |
Review Management Rules
- Ask at peak satisfaction (post-service, positive interaction)
- Never incentivize reviews (violation of Google guidelines)
- FTC Consumer Review Rule (Oct 21, 2024): Penalties up to $53,088/violation for fake reviews, review gating, or suppressing negative reviews
- Review gating prohibited by both Google (fake engagement policy) and FTC
- Respond to ALL negative reviews within 24 hours
- Keep responses professional, address concerns, offer resolution
- Owner response rate target: 80%+
- Google removed 240M+ policy-violating reviews in 2024 (40% increase in enforcement)
- Review deletion rates up 600%+ (Jan-Jul 2025); 38% of deleted were 5-star
Fake Review Detection Signals
- Uniform timing patterns (reviews at same time of day/week)
- Limited reviewer history (single-review accounts)
- Geographic inconsistencies (reviewer location far from business)
- 5-star velocity spike (sudden burst of perfect scores)
- Identical or near-identical text across reviews
- Sudden volume spike after period of inactivity
Citation Source Tiers
Tier 1 - Universal (Must Have)
| Source | Priority | Notes |
|---|---|---|
| Google Business Profile | Critical | Foundation of local SEO |
| Apple Business Connect | High | 27% platform usage, rising |
| Bing Places | High | Powers ChatGPT local recommendations |
| Facebook Business | Medium | Declining but still signals authority |
| Yelp | Medium | Important for ChatGPT sourcing |
Tier 2 - Broad Directories
BBB, YellowPages, Manta, Superpages, Foursquare, Nextdoor, TripAdvisor (hospitality), Healthgrades (healthcare), Avvo (legal), HomeAdvisor (home services)
Tier 3 - Data Aggregators
| Aggregator | Coverage | Notes |
|---|---|---|
| Data Axle | Broadest | Feeds 70+ directories |
| Foursquare | Strong | Feeds Apple Maps, Uber, many apps |
| Neustar/TransUnion | Good | Feeds many directories |
Key: Fix aggregator data first. Incorrect aggregator data propagates errors to 70+ directories.
GBP Optimization Guide
Critical Fields (Direct Ranking Impact)
| Field | Optimization | Impact |
|---|---|---|
| Primary category | Most specific subtype available | Highest |
| Additional categories | 4 additional relevant categories | High |
| Business name | Exact real-world name (NO keyword stuffing) | High |
| Address | Complete, matches website NAP exactly | High |
| Phone | Local number (not toll-free) | High |
| Website URL | Link to most relevant page (homepage or location page) | High |
| Hours | Complete with special/holiday hours | High |
| Verified status | Must be verified | Required |
Important Fields
| Field | Optimization |
|---|---|
| Description | 250-750 chars, include services + location naturally |
| Services | All core services with descriptions |
| Products | Key items with prices |
| Photos | 10+: logo, cover, interior, exterior, team, products |
| Photo recency | New photos within 30 days |
| Attributes | Accessibility, payments, amenities, identity attributes |
| Service areas | Up to 20 cities/zips (for service area businesses) |
Supplementary Fields
| Field | Target |
|---|---|
| Google Posts | 1+ per week (update, offer, event) |
| Post recency | Within 7 days |
| Booking link | Direct booking URL |
| Social profiles | All active social accounts |
| Owner responses | 80%+ response rate to reviews |
| Q&A | Proactively seed 5-10 common questions |
Industry Weight Multipliers
| Field | Restaurant | Healthcare | Legal | Home Services | Real Estate |
|---|---|---|---|---|---|
| Menu | 2x | - | - | - | - |
| Photos | 1.5x | 1x | 0.5x | 1.5x | 2x |
| Booking | 1.5x | 1x | 1x | 1x | 1x |
| Services | 1x | 2x | 2x | 1x | 1x |
| Service areas | - | 1x | 1x | 2x | 1x |
| Hours | 1x | 1.5x | 1x | 1.5x | 1x |
| Products | 1x | 1x | 1x | 1x | 1.5x |
| Posts | 1x | 1x | 1x | 1x | 1.5x |
NAP Consistency Audit
NAP = Name, Address, Phone. Must match EXACTLY across:
- Website (HTML text, not just images)
- Schema markup (LocalBusiness)
- Google Business Profile
- All citation sources
- Social media profiles
Common Discrepancies
| Issue | Example | Fix |
|---|---|---|
| Suite/Unit variations | "Suite 200" vs "Ste 200" vs "#200" | Standardize to one format everywhere |
| Phone format | "(555) 123-4567" vs "555-123-4567" | Use consistent format |
| Business name variations | "Joe's Pizza" vs "Joe's Pizza LLC" | Use registered business name |
| Old address after move | Aggregators still show old address | Update aggregators first, then directories |
| Multiple phone numbers | Tracking numbers vs main line | Use main business line for NAP |
Audit Process
- Search your business name in Google (check knowledge panel)
- Check Tier 1 citations: GBP, Apple, Bing, Facebook, Yelp
- Check Tier 3 aggregators: Data Axle, Foursquare, Neustar
- Use a tool or manually verify top 20 citations match
- Fix aggregator data first (cascades to downstream directories)
- Allow 2-4 weeks for changes to propagate
Multi-Location Patterns
URL Structure
- Recommended:
domain.com/locations/city-name/ - Bruce Clay study: 50%+ traffic lift vs subdomain structure
- Each location gets its own crawlable, indexable page
Location Page Requirements
60-70% unique content (below this = doorway page risk)
- Local photos (not reused across locations)
- Location-specific testimonials/reviews
- Unique service descriptions for the market
- Local team member bios
- Driving directions from local landmarks
- Nearby competitor differentiation
Doorway Page Risk Detection
RicketyRoo method: If you can swap the city name and the content still makes sense, it is a doorway page.
Example: HVAC company lost 80% rankings + 63% traffic post-March 2024 Core Update due to doorway-style location pages.
GBP Platform Changes (2025-2026)
- Diversity Update (2025): Harder to rank in both map pack AND organic simultaneously (Sterling Sky)
- Do NOT link GBP to your strongest-performing organic page (suppresses organic rankings)
- Link GBP to the specific location landing page
- Each location should have its own dedicated GBP listing
- Google Verified badge (Oct 2025): Replaces deprecated Guaranteed/Screened badges
- GBP Q&A deprecated Dec 3, 2025 (replaced by Ask Maps Gemini AI)
- GBP messaging removed July 2025
- Bing Places overhauled (Oct 2025): Now powers ChatGPT, Copilot, Alexa - critical for AI visibility
- Apple Business Connect doubled to 27% usage (BrightLocal 2026)
- Curated Local Lists (Local Gems, Trending) now appear around position 4 (SOCi, Nov 2025)
AI Impact on Local SEO (2026)
User Behavior Shift
- 45% of users now use ChatGPT/AI for local recommendations (up from 6%)
- ChatGPT conversion: 15.9% vs Google organic: 1.76% (Seer Interactive)
- AI-driven local discovery growing fastest among 18-34 demographic
Where AI Sources Local Data
| Platform | Primary sources |
|---|---|
| ChatGPT | Bing web index, Yelp, TripAdvisor, BBB, Reddit |
| Google AI Overviews | Google's own index, GBP data, Maps |
| Perplexity | Reddit, review sites, local directories |
Key insight: ChatGPT does NOT pull from GBP directly. Bing Places and third-party reviews are the path to ChatGPT local visibility.
AI Visibility Factors (Whitespark 2026)
- 3 of top 5 AI visibility factors are citation-related
- Dedicated service pages = #1 local organic factor AND #2 AI visibility factor
- Review volume and recency matter for AI recommendations
- Structured data (LocalBusiness schema) improves AI entity recognition
- AI Overviews appear on up to 68% of local searches (Whitespark Q2 2025)
- AI-powered local packs show 1-2 businesses, 32% fewer results (Sterling Sky)
- Local pack ads grew to 22% of results in 12 months (Sterling Sky/Places Scout)
- Zero-click rate for local-intent searches: up to 78% on mobile (Similarweb)
- "Near me" searches leading to visit in 24h: 76% (Google confirmed)
- 46% of all Google searches seek local information
Voice Search & Assistant Data Sources
- 58% of voice searches are for local business info (BusinessDasher)
- Google Assistant: GBP data (transitioning to Gemini)
- Siri: Apple Business Connect + Yelp
- Alexa: Bing Places + Yelp + data aggregators
Geo-Grid Rank Tracking
Simulates searches from multiple GPS coordinates to visualize local ranking coverage.
| Grid size | Points | Radius | Best for |
|---|---|---|---|
| 3x3 | 9 | 2 km | Quick snapshot |
| 5x5 | 25 | 3 km | Urban audit |
| 7x7 (default) | 49 | 5 km | Standard analysis |
| 9x9 | 81 | 8 km | Suburban coverage |
| 13x13 | 169 | 15 km | Rural/metro area |
Share of Local Voice (SoLV): (top_3_count / total_grid_points) * 100
- 80-100%: Dominant
- 60-79%: Strong
- 40-59%: Moderate
- 20-39%: Weak
- 0-19%: Critical
schema-types-full.md
Schema Types Full Reference
Active Schema Types (2026)
Content Types
| Type | Rich result | Required properties | Recommended |
|---|---|---|---|
| Article | Article carousel | headline, datePublished, author, image | dateModified, publisher |
| BlogPosting | Article carousel | headline, datePublished, author | wordCount, articleSection |
| NewsArticle | Top stories | headline, datePublished, author, image | dateline |
| VideoObject | Video carousel | name, uploadDate, thumbnailUrl | duration, contentUrl, description |
| Podcast (PodcastEpisode) | Podcast carousel | name, datePublished, associatedMedia | episodeNumber |
| Book | Book info | name, author | isbn, bookFormat |
| Review | Review snippet | itemReviewed, reviewRating, author | datePublished |
Business & Organization
| Type | Rich result | Required properties | Recommended |
|---|---|---|---|
| Organization | Knowledge panel | name, url | logo, sameAs, contactPoint |
| LocalBusiness | Local pack | name, address | telephone, openingHoursSpecification, geo |
| ProfilePage | Author card | mainEntity (Person) | dateCreated, dateModified |
E-commerce
| Type | Rich result | Required properties | Recommended |
|---|---|---|---|
| Product | Shopping, price | name, offers (price + availability + priceCurrency) | brand, image, sku, gtin, review |
| ProductGroup | Variant selector | name, hasVariant, variesBy | productGroupID |
| Offer | Price display | price, priceCurrency, availability | priceValidUntil, seller |
| AggregateOffer | Price range | lowPrice, highPrice, priceCurrency | offerCount |
| MerchantReturnPolicy | Return info | applicableCountry, returnPolicyCategory | returnPolicyCountry (REQUIRED March 2025) |
Navigation & Structure
| Type | Rich result | Required properties |
|---|---|---|
| BreadcrumbList | Breadcrumb trail | itemListElement (ListItem with position, name, item) |
| ItemList | Carousel | itemListElement |
| SiteNavigationElement | Sitelinks | name, url |
| WebSite | Sitelinks search | name, url, potentialAction (SearchAction) |
Events
| Type | Rich result | Required properties |
|---|---|---|
| Event | Event listing | name, startDate, location |
| ConferenceEvent | Event listing | name, startDate, location (added Dec 2025) |
| PerformingArtsEvent | Event listing | name, startDate, location (added Dec 2025) |
Other Active Types
| Type | Rich result | Notes |
|---|---|---|
| SoftwareApplication | App info | operatingSystem, offers required |
| Recipe | Recipe card | Requires ingredients, instructions |
| Course | Course info | name, provider required |
| JobPosting | Job listing | title, datePosted, hiringOrganization, jobLocation |
| SpeakableSpecification | Voice search | cssSelector for speakable content, English-only (Google News) |
Deprecated / Restricted Types - NEVER Recommend
| Type | Status | Date | Replacement |
|---|---|---|---|
| HowTo | Removed | Sept 2023 | None (use Article) |
| FAQPage | Restricted | Aug 2023 | Only gov/healthcare get rich results. Still useful for AI citation. |
| SpecialAnnouncement | Retired | July 31, 2025 | None |
| CourseInfo | Deprecated | June 2025 | Use Course |
| EstimatedSalary | Deprecated | June 2025 | None |
| LearningVideo | Deprecated | June 2025 | Use VideoObject |
| ClaimReview | Deprecated | Late 2025 | None |
| VehicleListing | Deprecated | June 2025 | Use Product + Car |
| PracticeProblem | Deprecated | Late 2025 | None |
| Dataset | Deprecated | Late 2025 | None |
Recent Additions (2024-2026)
- ProfilePage (2025) - For author E-E-A-T signals, mainEntity with Person
- ProductGroup (2025) - E-commerce variant grouping with variesBy, hasVariant
- DiscussionForumPosting (2024) - Forum/community content structured data
- ConferenceEvent (Dec 2025) - Conference-specific events
- PerformingArtsEvent (Dec 2025) - Arts events
- Product Certification (April 2025) - Energy ratings, safety certifications on products
- LoyaltyProgram (June 2025) - Member pricing, loyalty card structured data
- Organization-level shipping/return (Nov 2025) - Set via Search Console without Merchant Center
Deprecated Business Types
- Attorney: Deprecated by Schema.org - use
LegalService+PersonwithhasCredential - VehicleListing: Rich results removed June 12, 2025 - use
Car+Offerinstead - Book Actions: Deprecated then reversed, still functional as of Feb 2026
JSON-LD Examples
Article / BlogPosting
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Optimize Core Web Vitals in 2026",
"description": "A practical guide to LCP, INP, and CLS optimization.",
"image": "https://example.com/images/cwv-guide.jpg",
"datePublished": "2026-03-15",
"dateModified": "2026-03-28",
"author": {
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/authors/jane-smith",
"sameAs": ["https://twitter.com/janesmith", "https://linkedin.com/in/janesmith"]
},
"publisher": {
"@type": "Organization",
"name": "Example Inc",
"logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" }
}
}Product with Offers
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Noise-Canceling Headphones",
"image": "https://example.com/headphones.jpg",
"description": "Premium wireless headphones with active noise cancellation.",
"brand": { "@type": "Brand", "name": "AudioTech" },
"sku": "AT-WNC-100",
"gtin13": "1234567890123",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "234"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/headphones",
"price": "299.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2026-12-31",
"seller": { "@type": "Organization", "name": "Example Store" },
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" },
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
"transitTime": { "@type": "QuantitativeValue", "minValue": 3, "maxValue": 5, "unitCode": "DAY" }
}
},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail"
}
}
}LocalBusiness
{
"@context": "https://schema.org",
"@type": "Dentist",
"@id": "https://example.com/locations/downtown#business",
"name": "Downtown Family Dental",
"image": "https://example.com/downtown-office.jpg",
"telephone": "+1-555-123-4567",
"url": "https://example.com/locations/downtown",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St, Suite 200",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97201",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 45.52345,
"longitude": -122.67890
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "156"
},
"priceRange": "$$",
"branchOf": { "@type": "Organization", "@id": "https://example.com/#org" }
}BreadcrumbList
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Products", "item": "https://example.com/products/" },
{ "@type": "ListItem", "position": 3, "name": "Headphones", "item": "https://example.com/products/headphones/" }
]
}FAQPage (Gov/Healthcare Only for Rich Results)
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What are the eligibility requirements?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Applicants must be 18 years or older and reside in the state."
}
}
]
}Note: FAQPage rich results restricted to government and healthcare authority sites since August 2023. However, the schema still provides value for AI/LLM citation visibility across non-Google platforms.
Industry-Specific Schema Patterns
Restaurant
- Type:
Restaurant(subtype of LocalBusiness) - Add:
servesCuisine,menu(URL),acceptsReservations - Include
hasMenuwithMenuSectionandMenuItemfor rich menu display
Healthcare
- Type:
MedicalClinic,Hospital, orDentist - Add:
medicalSpecialty, physicianPersonentities withhasCredential - Include NPI number in
sameAslinks
Legal
- Type:
LegalService(NOT the deprecatedAttorney) - Add:
PersonwithhasCredentialfor bar admissions - Include practice area pages with
areaServed
Real Estate
- Type:
RealEstateAgent - Include
RealEstateListingwithOfferfor property listings - Note:
VehicleListingdeprecated June 2025, useProduct+Carinstead
Validation Checklist
- All required properties present per type
- Content marked up is visible on the page (no hidden content)
- JSON-LD is syntactically valid (test with jsonlint.com)
-
@contextuseshttps://(NOThttp://) - All URLs are absolute (NOT relative paths)
- Test with Google Rich Results Test (search.google.com/test/rich-results)
- Test with Schema.org validator (validator.schema.org)
- No deprecated types used
- URLs use canonical form
- Prices include ISO 4217 currency codes
- Dates use ISO 8601 format (e.g.,
2026-03-15T08:00:00-07:00) -
@idused consistently for entity references across pages - No placeholder text in live schemas
technical-seo-deep.md
Technical SEO Deep Reference
Crawl Budget Optimization
Crawl budget = crawl rate limit (server capacity) x crawl demand (freshness/importance).
Signals That Increase Crawl Demand
- Frequent content updates (genuine changes, not cosmetic)
- High PageRank / many inbound links
- Fresh sitemap
<lastmod>dates (only when content actually changed) - URL submitted via Indexing API or URL Inspection tool
Signals That Waste Crawl Budget
- Faceted navigation generating thousands of parameterized URLs
- Session IDs or tracking parameters in URLs
- Infinite scroll without paginated URLs
- Calendar widgets generating endless date URLs
- Soft 404s (200 status but error content)
- Redirect chains (3+ hops)
- Duplicate content accessible at multiple URLs
Crawl Budget Audit Process
- Download crawl stats from GSC (Settings > Crawl Stats)
- Compare crawled URLs vs indexed URLs (Coverage report)
- Identify gap: URLs crawled but not indexed = waste
- Check server logs for Googlebot activity patterns
- Fix: consolidate parameters, add canonical tags, block low-value paths in robots.txt
Robots.txt Advanced Directives
# Standard structure
User-agent: Googlebot
Allow: /
Disallow: /admin/
Disallow: /search?
Disallow: /*?sessionid=
Disallow: /tag/* # if tag pages are thin
# AI crawlers (opt-in/opt-out)
User-agent: GPTBot
Allow: /blog/
Disallow: /proprietary/
User-agent: ClaudeBot
Allow: /
User-agent: Google-Extended
Disallow: / # Blocks Gemini training, NOT Google Search
# Always allow CSS/JS for rendering
User-agent: *
Allow: /static/
Allow: /_next/
Allow: /assets/
Sitemap: https://example.com/sitemap.xmlCommon Mistakes
Disallow: /on production (blocks entire site)- Blocking
/api/paths that serve rendered content - Using
noindexin robots.txt (not a valid directive, Google ignores it) - Forgetting trailing wildcards:
Disallow: /searchblocks/searchbut not/search?q=test- useDisallow: /search - Testing with wrong User-agent (Google only honors Googlebot-specific rules for Googlebot)
Rendering Strategy Implementations
Next.js SEO Setup
// app/layout.tsx - Global metadata
import type { Metadata } from 'next'
export const metadata: Metadata = {
metadataBase: new URL('https://example.com'),
title: { default: 'Site Name', template: '%s | Site Name' },
description: 'Site description',
openGraph: { type: 'website', locale: 'en_US', siteName: 'Site Name' },
robots: { index: true, follow: true },
alternates: { canonical: '/' },
}
// app/blog/[slug]/page.tsx - Dynamic metadata
export async function generateMetadata({ params }): Promise<Metadata> {
const post = await getPost(params.slug)
return {
title: post.title,
description: post.excerpt,
openGraph: { title: post.title, description: post.excerpt, images: [post.image] },
alternates: { canonical: `/blog/${params.slug}` },
}
}Nuxt SEO Setup
<!-- pages/blog/[slug].vue -->
<script setup>
const { data: post } = await useFetch(`/api/posts/${route.params.slug}`)
useSeoMeta({
title: post.value.title,
description: post.value.excerpt,
ogTitle: post.value.title,
ogDescription: post.value.excerpt,
ogImage: post.value.image,
})
useHead({
link: [{ rel: 'canonical', href: `https://example.com/blog/${route.params.slug}` }],
})
</script>Astro SEO Setup
---
// src/layouts/Base.astro
const { title, description, canonical, image } = Astro.props
---
<html>
<head>
<title>{title}</title>
<meta name="description" content={description} />
<link rel="canonical" href={canonical || Astro.url.href} />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
{image && <meta property="og:image" content={image} />}
</head>
<body><slot /></body>
</html>JavaScript SEO
Critical Rules
- Google renders JavaScript but with delays (seconds to weeks). Critical content in JS may be indexed late.
- Other search engines (Bing, Yandex) have limited JS rendering. SSR/SSG is safer for multi-engine visibility.
- AI crawlers do NOT execute JavaScript. Content only in client-side JS is invisible to ChatGPT, Perplexity, Claude.
- Canonical conflicts: If raw HTML differs from JS-injected canonical, Google may use EITHER. Keep them identical.
- noindex + JavaScript: If raw HTML has noindex but JS removes it, Google MAY still honor the raw HTML noindex.
- Structured data timing: Schema injected via JS faces delayed processing. Include in server-rendered HTML.
Debugging JS Rendering Issues
# Compare raw HTML vs rendered HTML
curl -sL "URL" > /tmp/raw.html
# Use Chrome: chrome://inspect -> Network conditions -> Googlebot UA
# Or use Google's URL Inspection tool "View Tested Page" -> compare HTML
# Check if content is in raw HTML
curl -sL "URL" | grep -c "target content phrase"
# If 0, content is JS-rendered onlyRedirect Audit Patterns
Chain Detection
# Follow redirect chain and show each hop
curl -sIL "URL" 2>&1 | grep -E "^(HTTP/|location:)" -i
# Expected: single 301 -> 200
# Problem: 301 -> 301 -> 301 -> 200 (chain)
# Problem: 301 -> 302 -> 200 (mixed, breaks PageRank transfer)Common Redirect Issues
| Issue | Impact | Fix |
|---|---|---|
| Chain (3+ hops) | PageRank loss (~15%/hop), crawl waste | Collapse to single 301 |
| Loop (A -> B -> A) | Page inaccessible, crawl trap | Fix destination |
| Mixed 301/302 | 302 does not pass full PageRank | Change to 301 if permanent |
| HTTP -> HTTPS -> www | Two-hop chain | Direct HTTP to final HTTPS+www |
| Redirect to soft 404 | Wastes crawl budget | 301 to real content or return 410 |
URL Parameter Handling
Faceted Navigation Strategy
| Parameter type | Example | Action |
|---|---|---|
| Sort order | ?sort=price-asc |
Canonical to base URL |
| Pagination | ?page=2 |
Self-canonical, NOT canonical to page 1 |
| Filter (low volume) | ?color=red |
Canonical to base URL or noindex |
| Filter (high volume) | ?brand=nike |
Allow indexing if search demand exists |
| Session/tracking | ?utm_source=email |
Canonical to clean URL |
| Search results | ?q=keyword |
noindex, follow |
Sitemap Index Pattern
For sites with 50,000+ URLs:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-pages.xml</loc>
<lastmod>2026-03-15</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-blog.xml</loc>
<lastmod>2026-03-28</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2026-04-01</lastmod>
</sitemap>
</sitemapindex>Rules:
- Max 50,000 URLs per child sitemap
- Max 50MB uncompressed per file
<lastmod>must be W3C datetime format- Only include canonical, indexable URLs (no noindex, no redirects, no 404s)
- Gzip compression recommended for large sitemaps
- Submit sitemap URL in robots.txt AND Google Search Console
Orphan Page Detection
Orphan pages have no internal links pointing to them. They rely solely on sitemap discovery.
# Extract all internal links from a page
curl -sL "URL" | grep -oP 'href="(/[^"]*)"' | sort -u
# Compare sitemap URLs vs internally linked URLs
# URLs in sitemap but not linked = potential orphansFix: Add internal links from relevant parent/sibling pages. If the page has no logical parent, consider whether it should exist.
IndexNow Protocol
Instant URL submission for Bing, Yandex, Naver, Seznam (NOT Google - Google only uses sitemaps and URL Inspection).
# Submit URL via IndexNow
curl -X POST "https://api.indexnow.org/indexnow" \
-H "Content-Type: application/json" \
-d '{"host":"example.com","key":"YOUR_KEY","urlList":["https://example.com/new-page"]}'- Generate key file at
https://example.com/YOUR_KEY.txtcontaining the key - Submit up to 10,000 URLs per request
- Supported by: Bing, Yandex, Naver, Seznam, Yep
- Useful for: new content, updated content, deleted content (pair with 410 status)
Tooling Updates (2025-2026)
- Lighthouse 13.0 (Oct 2025): Major audit restructuring with reorganized performance categories
- CrUX Vis replaced CrUX Dashboard (Nov 2025)
- LCP subparts added to CrUX (Feb 2025): TTFB + Resource Load Delay + Resource Load Time + Element Render Delay
- round_trip_time replaced effectiveConnectionType in CrUX (Feb 2025)
- Google Search Console 2025: AI-powered configuration, branded vs non-branded filter, hourly API data, custom annotations
- Content API for Shopping sunsets August 18, 2026 - migrate to Merchant API
Mobile-First Indexing
Since July 5, 2024, Google uses 100% mobile-first indexing. ALL sites crawled with mobile Googlebot exclusively. Desktop-only content is invisible to Google.
Checklist:
- Same content on mobile and desktop (no hidden content on mobile)
- Same structured data on mobile and desktop
- Same meta tags (title, description, robots) on mobile
- Responsive design or dynamic serving (not separate mobile URLs if possible)
- Touch targets >= 48x48px
- No horizontal scrolling
- Text readable without zooming (>=16px base font)
Frequently Asked Questions
What is absolute-seo?
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.
How do I install absolute-seo?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill absolute-seo in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support absolute-seo?
absolute-seo works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.
Is absolute-seo free?
Yes, absolute-seo is completely free and open source under the MIT license. Install it with a single command and start using it immediately.
What is the difference between absolute-seo and similar tools?
absolute-seo is an AI agent skill that teaches your coding agent specialized marketing knowledge. Unlike standalone tools, it integrates directly into claude-code, gemini-cli, openai-codex and other AI agents.
Can I use absolute-seo with Cursor or Windsurf?
absolute-seo works with any AI coding agent that supports the skills protocol, including Claude Code, Cursor, Windsurf, GitHub Copilot, Gemini CLI, and 40+ more.