agentsclimarketplace

Seo geo audit

Skill jgoullet/seo-geo-audit/skills/seo-geo-audit

SEO-GEO Skill System for Claude Code & Claude.ai — 5 connected skills: Collector → Auditor (/90) → Implementer → Monitor. Technical SEO, Core Web Vitals, E-E-A-T, Entity SEO, AI visibility (ChatGPT, Perplexity, Claude), competitive analysis. English by default.

Install
npx -y skills add jgoullet/seo-geo-audit --skill seo-geo-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Performs an expert SEO audit (Local or General) + full GEO analysis: Technical SEO, Core Web Vitals, E-E-A-T, Entity SEO, GEO (AI visibility), UX-Conversion, and competitive analysis with scores /90 and a prioritized action plan. Use this skill for: SEO audit, local/national SEO, Google Business Profile, keyword gap, backlinks, link building, domain authority, cannibalization, featured snippets, Knowledge Panel, Wikidata, AI optimization (ChatGPT, Perplexity, AI Overviews), technical audit, content audit, organic CTR, Core Web Vitals, E-E-A-T. Also triggers for: "why does my competitor outrank me", "improve my SEO", "audit my site", "compare my site to X", "local SEO", "e-commerce SEO", "SaaS SEO", "visibility audit", "my site doesn't rank well", "my site doesn't appear on Google", "optimize for AI search engines", "audite mon site", "améliorer mon référencement", "SEO local".

SKILL.md

36.5 KB, as published. Nobody here has run it

Skill: Expert SEO Audit (Local or General) + GEO & Competitive Analysis

All responses, analyses and reports are produced in English by default. Switch to the user's language if they explicitly request it (e.g., French, German, Spanish).


Overview

This skill offers two audit modes depending on the nature of the business:

ModeFor whom?Blocks activated
🏘️ LocalLocal business, artisan, restaurant, doctor, local agency, freelancer...Technical SEO + Core Web Vitals + Local SEO + E-E-A-T + Entity SEO + GEO + UX-Conversion + Competitors
🌐 GeneralE-commerce, SaaS, blog, media, national/international brand, B2B, B2C...Technical SEO + Core Web Vitals + Content & Authority + E-E-A-T + Entity SEO + GEO + UX-Conversion + Competitors

Produces a final expert report with scores, scoring grids, comparison table and prioritized action plan with estimated ROI.


Step 0: Information gathering

Pipeline integration (if running as part of the SEO system)

Check for these files in the project folder seo-project-[domain]/:

  1. site-data.json (from seo-collector) — If present, load it and use the technical data directly. Skip manual questions 1, 11-13 (URL, GSC, GA4, CMS are already known). Still ask questions 2-10 if not answered in the file.

  2. client-profile.md (from seo-shared-context) — If present, load it for mode, competitors, objectives, and audience context. Skip any question already answered there.

  3. Neither file exists — Run as standalone: ask all questions below.

Ahrefs MCP data (if available in site-data.json)

When site-data.json contains Ahrefs data (mcp_integrations.ahrefs: true), use real metrics throughout the audit:

Audit sectionWithout AhrefsWith Ahrefs MCP
Step 2B.2 Authority & Link BuildingEstimate referring domains via web searchReal DR, backlink count, referring domains, anchor profile
Step 2B.3 Organic RankingsManual keyword search (5-10 queries)Real keyword positions + volumes for 50+ keywords
Step 3.2 Authority & TrustEstimate press mentionsReal brand mention data
Step 5.5 Platform OptimizationEstimate domain authority metricsReal Ahrefs DR + rank
Step 5.6 AI Visibility TestManual searches on each AI platformBrand Radar: real citation data across AI agents
Step 7 Competitive AnalysisIdentify competitors via web_searchPre-identified organic competitors with common keyword counts

When Ahrefs data is present, always note Source: Ahrefs MCP (real data) in the report. When estimated, note Source: web search (estimate).

Manual information gathering (standalone mode)

Ask the user:

ESSENTIAL INFORMATION
─────────────────────
1. URL of the site to audit
2. Mode: Local 🏘️ or General 🌐?
   (If not specified → analyze and suggest the appropriate mode)

3. [If Local] City / target geographic area
4. [If Local] Industry (restaurant, plumber, doctor...)
5. [If General] Main topic and target audience (B2B / B2C)
6. [If General] Site type (e-commerce, blog, SaaS, institutional...)
7. [If General] International presence / multilingual?

COMPETITORS & OBJECTIVES
────────────────────────
8. Competitor URLs to compare (1 to 3, otherwise identify automatically)
9. Primary objective (traffic, leads, sales, brand awareness...)
10. Time horizon (short-term urgency / medium-long term strategy)

ACCESS & TECHNICAL CONTEXT
───────────────────────────
11. Google Search Console available? (key data sharing possible)
12. Google Analytics / GA4 available?
13. CMS used? (WordPress, Shopify, Webflow, Wix, custom...)
14. Known Google penalty history? (manual or algorithmic)
15. Available budget/resources (solo, internal team, agency)

Note: If Analytics/GSC data is not shared, all metrics will be estimates based on observable signals. Clearly state this in the report.


Step 1: Technical SEO Audit

Use web_search and web_fetch to analyze:

⚠️ Token budget: Always use text_content_token_limit on web_fetch calls. Use 4000 for primary pages, 3000 for competitor/secondary pages, 1000 for robots.txt. See seo-collector/SKILL.md for the full budget table.

1.1 On-Page & Structure

CriterionVerificationPoints
<title> tagPrimary keyword present, 50-60 characters, unique/2
Meta descriptionCompelling, 140-160 characters, with call to action/2
H1Unique, relevant, contains primary keyword/1
H2/H3Logical hierarchy, semantic coverage/1
URLsClean, readable, < 100 characters, no unnecessary parameters/1
Image ALT tagsDescriptive and present on all key images/1
Internal linkingCoherent, max depth 3 clicks from homepage/2

On-Page subtotal: /10

1.2 Technical & Crawlability

CriterionVerificationPoints
HTTPSActive, valid certificate, no mixed content/1
Mobile responsiveAdaptive design, no hidden content on mobile/1
XML SitemapPresent (/sitemap.xml), submitted to GSC, up to date/1
Robots.txtNot blocking important pages (/robots.txt)/1
404 errorsNone on main pages, clean 301 redirects/1
RedirectsNo redirect chains (max 1 hop), no loops/1
Canonicalsrel="canonical" tags correctly implemented/1
DuplicationNo internal duplicate content/1
PaginationCorrectly managed (canonical or GSC signal)/1
HreflangPresent and correct if multilingual site/1

Technical subtotal: /10

⚠️ CRITICAL LIMITATION — Schema Markup detection via web_fetch

web_fetch and curl cannot detect JSON-LD structured data injected via JavaScript. Many CMS platforms (WordPress + Yoast, RankMath, AIOSEO; Shopify; Webflow) inject schema client-side — it is invisible in static HTML.

❌ Concluding "no schema detected" based on web_fetch alone = false audit conclusion.

Reliable methods to audit schema:

  1. Google Rich Results Testhttps://search.google.com/test/rich-results (renders JavaScript)
  2. Schema.org Validatorhttps://validator.schema.org (renders JavaScript)
  3. Screaming Frog (if provided by client — renders JavaScript)

Always mention in the report which method was used for schema detection, and flag uncertainty if only web_fetch was available.

1.3 Core Web Vitals (critical block — direct ranking impact)

Search for PageSpeed Insights data (web_search: "PageSpeed Insights [URL]"):

MetricGoodNeeds improvementPoorPoints
LCP (Largest Contentful Paint) — loading speed: time for the biggest visible element to appear< 2.5s2.5–4s> 4s/2
CLS (Cumulative Layout Shift) — visual stability: do elements jump around during loading?< 0.10.1–0.25> 0.25/2
INP (Interaction to Next Paint) — responsiveness: delay between user action and visual feedback< 200ms200–500ms> 500ms/2
FCP (First Contentful Paint) — time until first content appears< 1.8s1.8–3s> 3s/1
TTFB (Time to First Byte) — server response time< 800ms800ms–1.8s> 1.8s/1
Mobile vs DesktopConsistent scoresModerate gapGap > 20pts/2

Scoring grid: Good = full points, Needs improvement = half points, Poor = 0 points

Core Web Vitals subtotal: /10

Overall Technical SEO Score: /30


Step 2A: Local SEO Audit 🏘️ (Local mode only)

2A.1 Google Business Profile (GBP)

Search "[business name] [city]" on Google and analyze the listing:

CriterionVerificationPoints
Claimed listingOwnership verified by business/2
Primary categoryPrecise and matching the business/2
Secondary categories2-5 relevant categories filled in/1
PhotosRecent (< 6 months), varied (interior, team, products)/2
Reviews — quantity> 20 reviews (local pack) / > 50 (very good)/2
Reviews — rating≥ 4.5/5 (excellent) / 4.0–4.4 (good) / < 4.0 (needs work)/2
Review responses100% of negative reviews responded to, positives ideally too/2
GBP PostsPublished at least 1×/week/1
AttributesHours, accessibility, payment methods, services filled in/2
Q&AQuestions/answers present/1
Products/ServicesSection complete with descriptions and prices if applicable/1
Phone numberCorrect and clickable/1

GBP subtotal: /19 → normalized to /20

2A.2 Citations & NAP Consistency

CriterionVerificationPoints
NAP consistencyName, Address, Phone identical across all platforms/4
Local directoriesPresence on top 3 directories for the industry (Yelp, TripAdvisor, Healthgrades...)/3
Industry directoriesListed on key industry-specific platforms/2
Social mediaFacebook/Instagram active with consistent address/2
WebsiteAddress in footer, complete Contact page/2
Schema LocalBusinessImplemented with all key properties/3
Review structured dataSchema AggregateRating present/2
BreadcrumbSchema BreadcrumbList if multi-page site/1
Open GraphCorrect OG tags for social sharing/1

Citations & NAP subtotal: /20

2A.3 Local Keywords & Rankings

Search: "[business type] [city]", "[business type] near me", "best [business type] [city]":

CriterionVerificationPoints
Local Pack (3 Maps listings)Presence in the top 3 listings/4
Organic position P1-3On primary keyword [business type] [city]/4
Organic position P4-10Presence on first page/2
Local long tailPresence on variants and neighborhoods/2
Google SuggestBrand appears in autocomplete suggestions/2
Local Featured SnippetPosition 0 captured/2
Reviews in SERPsStar rich snippets visible/2
FAQ in SERPsFAQ schema triggers a rich result/2

Local Keywords subtotal: /20

Local SEO Score: /60 → scaled to /20 in summary


Step 2B: Content & Authority SEO Audit 🌐 (General mode only)

2B.1 Content Strategy

CriterionVerificationPoints
Topical AuthorityComplete and coherent topic coverage/3
Pillar pagesLong articles (2000+ words), well-structured, comprehensive/2
Long tailQuestions, comparisons, guides, "how to..." content/2
FreshnessRecent update dates, regularly refreshed content/2
CannibalizationNo internal competition on the same keywords/2
ReadabilityScore adapted to audience, short paragraphs, lists/2
Semantic fieldRelevant named entities and co-occurrences present/2
Multimedia contentImages, videos, infographics, podcasts integrated/2
No thin contentNo pages < 300 words without added value/3

Content subtotal: /20

2B.2 Authority & Link Building

CriterionVerificationPoints
Referring domainsEstimated count (web search)/3
Source qualityPress, recognized partners, universities, government/4
Anchor diversityNatural profile (brand, generic, exact match balanced)/2
Recent inbound linksRegular acquisition (activity signal)/2
Toxic linksNo apparent spam links/2
Wikipedia/Wikidata presenceMentions or dedicated page/2
Press mentions (unlinked)Brand mentions without link (authority signal)/3
Outbound linksTo recognized and relevant sources/2

Link Building subtotal: /20

2B.3 Organic Rankings & Keyword Gap

Search for the 5-10 primary keywords in the industry:

CriterionVerificationPoints
Top 3 positionsOn ≥ 2 strategic keywords/4
Top 10 positionsOn ≥ 5 industry keywords/3
Featured Snippets≥ 1 position 0 captured/3
Keyword gapCompetitor keywords not covered identified/3
Organic CTRAttractive and differentiating Title/Meta/3
SeasonalityContent adapted to search peaks/2
Branded queriesSite dominates on its own name/2

Rankings subtotal: /20

Content & Authority SEO Score: /60 → scaled to /20 in summary


Step 3: E-E-A-T Audit (common to both modes)

E-E-A-T = Experience, Expertise, Authoritativeness, Trustworthiness — fundamental criterion from Google's Quality Rater Guidelines, particularly critical for YMYL sites (health, finance, legal...).

3.1 Experience & Expertise

CriterionVerificationPoints
Author pagesComplete bio with photo, credentials, professional network links/3
Proof of experienceCase studies, client testimonials, portfolio, before/after/3
Expert contentSource citations, data-backed claims, referenced studies/2
Content creation dateSite age and domain expertise longevity/2

Experience & Expertise subtotal: /10

3.2 Authority & Trust

CriterionVerificationPoints
"About" pageHistory, team, values, certifications/2
Press mentionsAppearances in recognized media (verify via search)/2
Certifications & labelsBadges, quality labels, professional memberships/2
Privacy policyPresent, up to date, GDPR/CCPA compliant/1
Legal noticeComplete and accessible/1
Terms of servicePresent if commercial site/1
HTTPSBasic trust signal (already counted in Technical)/0
Third-party verified reviewsTrustpilot, Google Reviews, verified platforms/3
Complete contact infoPhysical address, phone, visible email/2
YMYL signalsFor sensitive sectors: disclaimers, "consult a professional" mentions/3
Active social mediaPresence and communication consistency/3

Authority & Trust subtotal: /20

E-E-A-T Score: /30 → scaled to /10 in summary


Step 4: Entity SEO (common to both modes)

Entity SEO measures how well the entity (brand, business, person) is recognized by Google and LLMs, independent of keywords. It is the foundation of GEO.

4.1 Entity existence in the Knowledge Graph

CriterionVerificationPoints
Google Knowledge PanelSide panel present on brand search/4
WikidataQ identifier present, consistent data/3
WikipediaDedicated page or mention in relevant articles/3
Google Maps (if local)Entity correctly linked to Maps listing/2

Knowledge Graph subtotal: /12 → normalized to /10

4.2 Entity Consistency

CriterionVerificationPoints
Entity nameIdentical across all channels (site, social, GBP, Wikidata...)/3
Schema Organization / LocalBusinessPresent with sameAs pointing to all official profiles/3
Canonical entity URLsLinkedIn, Twitter/X, Facebook, YouTube profiles consistent/2
Geographic anchoringConsistent address everywhere (if local)/2

Entity Consistency subtotal: /10

Entity SEO Score: /20 → scaled to /10 in summary


Step 5: GEO Audit (common to both modes)

GEO (Generative Engine Optimization) measures a site's ability to be cited, summarized or recommended by generative AI: Google AI Overviews, ChatGPT Search, Perplexity, Gemini, Copilot, Claude...

Core principle: AI engines don't "rank" pages — they cite sources. Being cited = the new "being #1". (Source: Princeton/KDD 2024, arXiv:2311.09735)


5.1 AI Bot Accessibility (critical prerequisite)

A site blocking AI crawlers in its robots.txt is invisible to all AI engines. Verify via web_fetch: "[URL]/robots.txt".

AI BotUser-agent to allowPlatformPoints
GooglebotGooglebotGoogle AI Overview/2
GPTBotGPTBotChatGPT (OpenAI)/2
ChatGPT-UserChatGPT-UserChatGPT with browsing/1
PerplexityBotPerplexityBotPerplexity AI/2
ClaudeBotClaudeBotClaude (Anthropic)/1
anthropic-aianthropic-aiClaude (Anthropic)/1
BingbotBingbotCopilot / Bing/1

⚠️ Important note: Claude uses Brave Search (not Google or Bing). To be cited by Claude, a site must be indexed by Brave Search AND allow ClaudeBot/anthropic-ai.

Bot Accessibility subtotal: /10


5.2 Content Optimization — The 9 GEO Methods (Princeton/KDD 2024)

These methods are from peer-reviewed academic research validated on Perplexity.ai (10,000+ queries tested). Percentages indicate the average visibility boost in AI responses.

MethodBoostHow to evaluatePoints
1. Cite sources+40%Content cites studies, reports, recognized institutions/3
2. Add statistics+37%Verifiable data with dated sources/3
3. Add expert quotes+30%Quotes attributed to named experts/2
4. Authoritative tone+25%Affirmative, expert language, no vague formulations/2
5. Accessible content+20%Complex concepts explained simply/2
6. Technical terminology+18%Relevant industry jargon used correctly/2
7. Varied vocabulary+15%No repetitions, synonyms, lexical richness/1
8. Optimized fluency+15-30%Well-written text, logical transitions, short paragraphs/2
9. ❌ Keyword stuffing-10%Absence of keyword over-optimization/3

🏆 Best combination: Fluency + Statistics = maximum boost per the Princeton study.

GEO Methods subtotal: /20


5.3 Content Structure for LLMs

CriterionVerificationPoints
"Answer-first" formatDirect answer in the first paragraph/3
Paragraph length< 3-4 sentences per block/2
Structured FAQsQuestions/answers in explicit Q&A format/3
Clear definitionsServices/products defined at the beginning of sections/2
Lists and tablesVisually structured data/2
Interrogative headingsH2/H3 phrased as questions ("How...", "Why...")/2
Unique contentReal added value, not paraphrased from others/3
Public PDFsAccessible PDF documents (favored by Perplexity)/1
FreshnessContent updated within the last 30 days (×3.2 ChatGPT citations)/2

LLM Structure subtotal: /20


5.4 Structured Data for AI

CriterionVerificationPoints
Schema FAQPage (JSON-LD)Present on pages with FAQ — +40% AI visibility/3
Schema LocalBusiness[Local mode] Complete with all key properties/3
Schema Article + dateModified[General mode] On all articles, with update date/2
Schema Product / Offer[E-commerce] On product pages/2
Schema Organization + sameAsLinks to all official profiles/2
Schema BreadcrumbListStructured breadcrumb trail/1
Schema Review / AggregateRatingStructured customer reviews/2
Schema HowTo[If relevant] Step-by-step guides/2
Open Graph & Twitter CardCorrect social metadata/1
JSON-LD formatGoogle-recommended format (vs Microdata)/2

Structured Data subtotal: /20


5.5 Platform-Specific Optimization

Evaluate signals specific to each generative engine:

🤖 ChatGPT (OpenAI)

Index: Bing-based + web browsing. #1 factor: Domain Authority

SignalTarget valuePresent?
Referring domains> 350K = 8.4 average citations✅/❌/🟡
Content freshness< 30 days = ×3.2 citations✅/❌/🟡
Branded domain+11.1 pts vs third-party domains✅/❌
"Content-Answer Fit"Content matches ChatGPT response style✅/❌
Wikipedia/Reddit presencePreferred sources (7.8% + 1.8% of citations)✅/❌

🔍 Perplexity AI

3-layer RAG architecture. #1 factor: Semantic relevance

SignalTarget valuePresent?
PerplexityBot allowedrobots.txt not blocking✅/❌
Schema FAQPageFAQ pages cited more often✅/❌
Public PDFsPrioritized for citation✅/❌
Topical authorityComplete subject coverage✅/❌
Publication speedNew content evaluated quickly✅/❌

🌐 Google AI Overview (SGE)

5-step pipeline. #1 factor: E-E-A-T + Knowledge Graph

SignalTarget valuePresent?
Strong E-E-A-TExpertise + Authority + Trust✅/❌
Knowledge GraphEntity in Google's knowledge graph✅/❌
Authoritative citations+132% visibility with trusted references✅/❌
Authoritative tone+89% visibility✅/❌
Topic clustersCoherent internal linking by subject✅/❌

🖥️ Microsoft Copilot / Bing

Bing index. #1 factor: Bing indexation

SignalTarget valuePresent?
Indexed by BingVerify bing.com/search?q=site:[domain]✅/❌
Bingbot allowedrobots.txt not blocking✅/❌
LinkedIn/GitHub presenceBoost in Microsoft ecosystem✅/❌
Page speed< 2 seconds✅/❌

🤖 Claude (Anthropic)

Index: Brave Search (≠ Google/Bing). Crawl/citation ratio: 38,065:1 — very selective

SignalTarget valuePresent?
Indexed by Brave SearchVerify search.brave.com/search?q=site:[domain]✅/❌
ClaudeBot + anthropic-ai allowedrobots.txt not blocking✅/❌
Factual densityContent rich in verifiable data✅/❌
Structural clarityInformation easily extractable✅/❌

Platform Optimization subtotal: /10 (qualitative global assessment)


5.6 AI Visibility Test

Perform the following searches and note if the site is cited:

[Local mode]

  • "best [business type] in [city]" → Google AI Overview present? Site cited?
  • "[business type] [city] reviews" → Perplexity / ChatGPT Search → Site mentioned?
  • "[business name]" → ChatGPT + Brave Search → Information correct?

[General mode]

  • Key informational queries in the industry → AI Overview → Site cited?
  • "best [product/service] for [use case]" → Perplexity → Site recommended?
  • Long-tail industry questions → ChatGPT → Site mentioned as source?
Test resultPoints
Cited in Google AI Overview/4
Cited in Perplexity/3
Cited in ChatGPT Search/3
Indexed and cited via Brave/Claude/2
Entity information correct in AI engines/3
No AI bot blocked/5

AI Visibility Test subtotal: /20

GEO Score: /100 → scaled to /20 in summary


Step 6: UX & Conversion Audit (common to both modes)

Traffic without conversion doesn't produce business results. This audit detects friction points that drive visitors away.

6.1 User Experience

CriterionVerificationPoints
NavigationClear menu, max 7 items at first level/2
Internal searchPresent and functional (if site > 20 pages)/1
Visual hierarchyCTAs visible above the fold/2
Mobile-first designTouch-optimized interface, buttons ≥ 44px/2
ReadabilitySufficient contrast, font ≥ 16px on mobile/1
Perceived speedProgressive loading, no white screen/1
Accessibility (basic)Form labels, alt text, visible focus/1

UX subtotal: /10

6.2 Trust Signals & Conversion

CriterionVerificationPoints
Visible trust signalsCertifications, guarantees, payment security, GDPR/CCPA/2
Testimonials/ReviewsVisible on key pages (home, service, product)/2
Primary CTAClear, compelling, above-the-fold on all key pages/2
Contact formSimple, max 5 fields for first contact/1
Phone numberVisible at top of page, clickable on mobile/1
SERP → Landing coherenceSearch intent satisfied upon arrival/2

Conversion subtotal: /10

6.3 Analytics & Tracking Maturity

If site-data.json contains analytics_tracking data (from the collector's Step 5.5), use it directly. Otherwise, check the HTML source manually.

CriterionVerificationPoints
GA4 or equivalent installedModern analytics tool detected and active/2
Tag Manager (GTM)Container present — enables flexible event tracking/1
Conversion events configuredE-commerce events (add_to_cart, purchase) or form/CTA tracking detected/3
Consent management (CMP)Cookie banner / GDPR-CCPA compliant consent tool present/1
Heatmap / Session recordingHotjar, Clarity, or equivalent installed (UX insight capability)/1
No legacy analyticsUniversal Analytics (UA) migrated to GA4/1
dataLayer structuredGTM dataLayer initialized with meaningful data/1

Analytics & Tracking subtotal: /10

Maturity assessment (from collector data or manual check):

  • 🔴 No analytics (0-2 pts): No GA4, no tracking — flying blind
  • 🟡 Basic (3-5 pts): GA4 present but minimal event tracking
  • 🟢 Intermediate (6-8 pts): GA4 + GTM + conversion events + consent
  • 🟢🟢 Advanced (9-10 pts): Full stack with CDP/product analytics + heatmaps

Why this matters for SEO: Google's ranking signals increasingly rely on user engagement metrics (dwell time, scroll depth, click satisfaction). Without proper tracking, you can't measure whether your SEO improvements are actually driving conversions — and you can't prove ROI to stakeholders.

UX & Conversion Score: /30 → scaled to /10 in summary


Step 7: Competitive Analysis

For each competitor (identify automatically if not provided via web_search: "[business type] [city/industry] competitor site"), reproduce steps 1 to 6 in a lighter version.

Comparison Table — Local Mode 🏘️

CriterionMy SiteCompetitor 1Competitor 2Competitor 3
Technical SEO Score /10
Core Web Vitals /10
Local SEO Score /20
E-E-A-T Score /10
Entity SEO Score /10
GEO Score /20
UX & Conversion Score /10
OVERALL SCORE /90
Complete GBP listing✅/❌
Average review rating
Number of reviews
In Local Pack✅/❌
Knowledge Panel✅/❌
Schema LocalBusiness✅/❌
FAQ present✅/❌
Cited by AI engines✅/❌
Mobile speed (LCP)
Analytics maturity
Publishing frequency
CriterionMy SiteCompetitor 1Competitor 2Competitor 3
Technical SEO Score /10
Core Web Vitals /10
Content & Authority Score /20
E-E-A-T Score /10
Entity SEO Score /10
GEO Score /20
UX & Conversion Score /10
OVERALL SCORE /90
Referring domains (estimated)
Indexed pages (site:)
Featured Snippets captured
Knowledge Panel✅/❌
Structured schema✅/❌
FAQ / AI-friendly content✅/❌
Keyword gap identified
Mobile speed (LCP)
Analytics maturity
Publishing frequency

Qualitative Competitive Analysis

For each competitor, identify:

  1. What they do better (3 points max)
  2. Their exploitable weaknesses (3 points max)
  3. Identified content strategy (dominant content type)
  4. Estimated share of voice (% of strategic keywords in top 10)

Step 8: Final Expert Report

Generate a structured report. The title and introduction clearly indicate the mode used (🏘️ Local or 🌐 General).

Report structure

════════════════════════════════════════════
SEO + GEO EXPERT AUDIT — [SITE NAME]
Mode: [Local 🏘️ / General 🌐] | Date: [MM/DD/YYYY]
════════════════════════════════════════════

1. EXECUTIVE SUMMARY
   ────────────────
   → Overall score: [X]/90
   → Ranking vs competitors: [1st / 2nd / 3rd / 4th]
   → Priority level: [URGENT / MODERATE / GOOD — optimization only]
   → Top 3 strengths
   → Top 3 critical weaknesses
   → Estimated additional traffic potential (if actions are taken)

2. SCORE DASHBOARD
   ────────────────
   | Dimension | Score | /max | Level |
   |---|---|---|---|
   | Technical SEO | | /10 | 🔴/🟡/🟢 |
   | Core Web Vitals | | /10 | 🔴/🟡/🟢 |
   | Local SEO OR Content & Authority | | /20 | 🔴/🟡/🟢 |
   | E-E-A-T | | /10 | 🔴/🟡/🟢 |
   | Entity SEO | | /10 | 🔴/🟡/🟢 |
   | GEO | | /20 | 🔴/🟡/🟢 |
   | UX & Conversion | | /10 | 🔴/🟡/🟢 |
   | **TOTAL** | | **/90** | |
   
   Legend: 🔴 < 50% | 🟡 50-75% | 🟢 > 75%

3. DETAILED RESULTS BY DIMENSION
   For each dimension:
   - Score obtained + justification
   - Strengths identified
   - Weaknesses identified
   - Source data cited

4. COMPETITIVE ANALYSIS
   - Complete comparison table (adapted to mode)
   - Site positioning in the market
   - What competitors do better → opportunities
   - Exploitable differentiators
   - Keyword gap: top 10 priority keywords to target

5. PRIORITIZED ACTION PLAN WITH ESTIMATED ROI
   
   🟢 QUICK WINS (< 1 week — fast impact)
   For each action:
   - Precise description
   - Estimated effort (hours)
   - Potential impact (traffic / leads / positions)
   - Estimated ROI (e.g., "+15-25% clicks in 2-4 weeks")
   - Required resources (solo / developer / writer)
   
   🟡 MEDIUM TERM (1-3 months)
   [Same format]
   
   🔴 LONG TERM (3-6 months)
   [Same format]

6. TRACKING METRICS TO IMPLEMENT
   Recommended KPIs:
   - Impressions & clicks (GSC — weekly)
   - Average positions on 10 target keywords
   - Organic traffic (GA4 — monthly)
   - [Local] GBP rating and review count
   - [Local] Calls and directions from GBP
   - [General] Referring domains (monthly)
   - AI citations (monthly test)
   
   Alerts to configure:
   - Google Alerts on brand name
   - Google Alerts on main competitors
   - Search Console: coverage and performance alerts

7. GLOSSARY (for non-technical clients)
   Define the technical terms used in the report.

8. CONCLUSION & NEXT STEPS
   - 3-sentence synthesis
   - Re-audit recommendation in 3 months
   - Monthly KPI tracking proposal

Delivery format

  • Default: full report in Markdown in the conversation
  • On request: generate a professional .docx via the docx skill
  • Always offer an export at the end of the report
  • Always offer follow-up: "Would you like me to monitor these indicators in 3 months?"

Step 9: Pipeline output (for the Implementer skill)

This step runs automatically after the report is generated. It produces a structured JSON file that the seo-implementer skill can consume directly to generate fix files.

Save the following file to seo-project-[domain]/audit-actions.json:

{
  "metadata": {
    "audit_date": "[ISO 8601]",
    "domain": "[domain]",
    "mode": "local|general",
    "overall_score": 0,
    "overall_max": 90
  },
  "scores": {
    "technical_seo": { "score": 0, "max": 10 },
    "core_web_vitals": { "score": 0, "max": 10 },
    "local_or_content": { "score": 0, "max": 20, "type": "local|content_authority" },
    "eeat": { "score": 0, "max": 10 },
    "entity_seo": { "score": 0, "max": 10 },
    "geo": { "score": 0, "max": 20 },
    "ux_conversion": { "score": 0, "max": 10 }
  },
  "fixes_needed": {
    "meta_tags": [
      {
        "url": "https://example.com/page",
        "issue": "title_too_short|meta_missing|h1_missing|h1_duplicate",
        "current_value": "[current title/meta/h1 or null]",
        "suggested_value": "[recommended title/meta/h1]",
        "priority": "high|medium|low"
      }
    ],
    "schema_markup": [
      {
        "url": "https://example.com/",
        "missing_type": "Organization|LocalBusiness|FAQPage|Product|BreadcrumbList|Article",
        "properties_needed": ["name", "url", "sameAs", "..."],
        "priority": "high|medium|low"
      }
    ],
    "robots_txt": {
      "needs_update": true,
      "blocked_bots": ["PerplexityBot"],
      "recommended_additions": ["Allow: /\nUser-agent: PerplexityBot"],
      "priority": "high"
    },
    "redirects": [
      {
        "from": "/old-path",
        "to": "/new-path",
        "type": "301",
        "reason": "404_error|chain_redirect|duplicate"
      }
    ],
    "content": [
      {
        "url": "https://example.com/page",
        "issue": "thin_content|outdated|no_faq|no_answer_first",
        "recommendation": "[specific content recommendation]",
        "priority": "high|medium|low"
      }
    ],
    "technical": [
      {
        "issue": "missing_sitemap|missing_canonical|mixed_content|slow_lcp|hreflang_error",
        "details": "[specific details]",
        "fix": "[specific fix instruction]",
        "priority": "high|medium|low"
      }
    ]
  },
  "action_plan": {
    "quick_wins": [
      {
        "action": "[description]",
        "effort_hours": 0,
        "impact": "[traffic/leads/positions impact]",
        "roi_estimate": "[e.g. +15-25% clicks in 2-4 weeks]"
      }
    ],
    "medium_term": ["..."],
    "long_term": ["..."]
  }
}

Also save the human-readable report to seo-project-[domain]/audit-report.md.

Pattern 2 applied: The audit produces two outputs — a human-readable report (Markdown) and a machine-readable action file (JSON). The Implementer reads the JSON to generate fix files automatically. The Monitor reads both to compare against future crawls.


Best practices & important notes

Data reliability

  • Always cite sources of data found (URL + date of consultation)
  • If data is inaccessible (private site, no API), clearly indicate with 🔍 "Estimate based on [method]"
  • Scores are estimates based on observable signals, not official Google data
  • Without GSC/GA4 access, specify the uncertainty in the report

Industry adaptation

IndustrySpecific priorities
Restaurant / HotelGBP +++, reviews, photos, structured menu
Health / MedicalE-E-A-T +++, YMYL, disclaimers
Finance / LegalE-E-A-T +++, YMYL, expert authors
E-commerceProduct schema, Core Web Vitals, faceted navigation
SaaS / B2BTopical Authority, industry backlinks, case studies
Artisan / SMBGBP, NAP, local citations

Edge case handling

  • Inaccessible site (server error, maintenance): note, retry after 5 min, continue with available data
  • Unknown competitor: identify via web_search: "[business type] [city/industry]" top 3 organic results
  • Multilingual site: audit the primary language, note hreflang issues separately
  • Site under construction: clearly indicate and audit what is accessible

Ethics & transparency

  • Never fabricate metrics or rankings
  • Systematically indicate the margin of uncertainty for estimates
  • Remind that recommendations are best practices, not guaranteed results

Reference: Content writing recommendations

When the audit leads to editorial recommendations (page rewriting, text optimization, content creation), read the file ai-writing-detection.md to:

  • Avoid typical AI writing markers in examples provided to the client (em dash, "leverage", "robust", "in today's digital age"...)
  • Ensure that optimized content examples look natural and human
  • Identify these same patterns as unedited AI content signal during client content audit — a negative E-E-A-T factor

Read this file only when the audit includes an editorial component, not systematically.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.