Skip to content
Marketing
Skill

/seo-local

Local SEO audit for brick-and-mortar, service-area, and multi-location businesses. Covers Google Business Profile signals on the website, NAP consistency across page and schema, local-pack rank tracking, citation samples on Tier-1 directories, and reviews on Google / Yelp /

From plugin
seo-skills
14432 skills1 MCP
Install
$ npx -y skills add seranking/seo-skills --skill seo-local --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/seo-local

Context preview

The summary Claude sees to decide when to auto-load this skill.

Local SEO audit for brick-and-mortar, service-area, and multi-location businesses. Covers Google Business Profile signals on the website, NAP consistency across page and schema, local-pack rank tracking, citation samples on Tier-1 directories, and reviews on Google / Yelp /

SKILL.md

seo-local.SKILL.md
name: seo-local
description: Local SEO audit for brick-and-mortar, service-area, and multi-location businesses. Covers Google Business Profile signals on the website, NAP consistency across page and schema, local-pack rank tracking, citation samples on Tier-1 directories, and reviews on Google / Yelp / Trustpilot. Distinct from `seo-page` (URL-level keywords, no local layer) and from `seo-schema` (which generates LocalBusiness markup — this skill defers to it). Use when the user asks "local SEO", "GBP", "Google Business Profile", "NAP", "local pack", "citations", "near me", "service area", or "multi-location SEO".

> Example output: [examples/seo-local-sweetgreen-com-20260514/LOCAL-SEO-REPORT.md](../../examples/seo-local-sweetgreen-com-20260514/LOCAL-SEO-REPORT.md)

Local SEO

Score a local business's website against the signals that drive local-pack and "near me" visibility — GBP integration on the page, NAP consistency, on-page local intent, citation footprint on Tier-1 directories, review-platform presence, and local-pack rank for the business's primary keywords. Deliverable is one prioritised fix list, anchored in observable signals.

> Adapted from [`AgriciDaniel/claude-seo`](https://github.com/AgriciDaniel/claude-seo)'s `seo-local` skill (MIT). Concept and dimension structure mirror the upstream; backend rewired to SE Ranking + Firecrawl + Google APIs. DataForSEO Maps geo-grid and Business Listings checks from the upstream are dropped (no equivalent backend) — see "Limitations" in the deliverable.

Prerequisites

  • SE Ranking MCP server connected (used for local-pack rank, on-page audit data, domain context).
  • Claude's `WebFetch` tool available (used for sense-check fallback when Firecrawl is unavailable).
  • User provides: (a) a target domain or homepage URL, (b) at least one primary local keyword (e.g. `"dentist Brooklyn"`, `"plumber near me"`), (c) target country and ideally city/region for local-pack scoping. Optional: GBP listing URL, Yelp/Trustpilot URLs for review scraping.

Process

1. **Validate target & preflight.** See `skills/seo-firecrawl/references/preflight.md` for the canonical 3-stage preflight (credit balance, Firecrawl availability, Google APIs). Skill-specific notes:

  • Normalise the target (strip protocol from domain; confirm homepage is fetchable). Confirm at least one local keyword was provided — if none, infer from `<title>` + `<h1>` of the homepage; if still ambiguous, ask the user before continuing.
  • Estimated SE Ranking cost for this skill: ~15–25 credits (1 audit re-check + 3–5 SERP queries + 1 domain overview).
  • Firecrawl: optional with WebFetch fallback, ~6–9 Firecrawl credits if available (hard cap 12). When available, steps 4 (GBP-on-page audit), 5 (NAP extraction), and 7 (review scraping) run on the homepage + 5 sample pages + provided review URLs. Without Firecrawl those steps degrade to WebFetch-only — schema/JSON-LD detection and `tel:` / address element extraction become best-effort prose inspection. Pass `--no-firecrawl` to force WebFetch-only.
  • Google APIs: tier 1 (GSC) unlocks step 8b (GSC local query performance) after the local-pack rank step; tier 2 (GA4) additionally unlocks step 8c (GA4 organic-by-landing-page enrichment). See `skills/seo-google/references/cross-skill-integration.md` for the full enrichment contract.

2. **Business-type detection**

  • Read homepage + `/contact` + footer prose (WebFetch markdown is enough for this).
  • Classify as one of:
  • **Brick-and-Mortar** — visible street address, "Visit us at", embedded Maps iframe.
  • **Service Area Business (SAB)** — no street address, "serving {region}", "we come to you", `areaServed` in schema without `address.streetAddress`.
  • **Hybrid** — both signals present (e.g. showroom + service area).
  • This determines which checks apply downstream. SAB skips embedded-map and physical-address consistency. Record in `LOCAL-SEO-REPORT.md` "Snapshot".

3. **Industry-vertical detection**

  • From URL patterns (`/menu`, `/practice-areas`, `/listings`, `/inventory`), `<title>`, page prose, infer one of: Restaurant / Healthcare / Legal / Home Services / Real Estate / Automotive / Generic.
  • This routes citation-source recommendations and schema-subtype recommendations later — load `references/local-citation-sources.md` for the vertical's Tier-1 directories.

4. **GBP signals on the page** `mcp__firecrawl-mcp__firecrawl_scrape` (with `formats: ["rawHtml"]`)

  • Scrape homepage + `/contact` (or whichever page has the most local intent).
  • From `rawHtml` extract:
  • Embedded Google Maps iframe (`<iframe src="https://www.google.com/maps/embed?...">`) — record place ID if present.
  • Reviews widget / GBP rich snippet markup.
  • `aggregateRating` JSON-LD block (presence is the strongest signal that the site wants stars in SERPs).
  • Business hours visibility on page (open-at-search-time correlates with rank — Whitespark's #5 factor).
  • Click-to-call: count of `<a href="tel:...">` elements.
  • GBP profile link: any `<a href>` to `https://g.page/...` or `https://maps.app.goo.gl/...` or `https://www.google.com/maps/place/...`.
  • **If Firecrawl unavailable:** WebFetch markdown can detect a `tel:` link in some renderings but loses iframes and JSON-LD. Mark Maps embed / aggregateRating / GBP profile-link detection as `(skipped — Firecrawl required)`.

5. **NAP consistency** `mcp__firecrawl-mcp__firecrawl_scrape` on homepage + 5 sample pages

  • Sample pages: homepage, `/contact`, `/about`, plus 2 service or location pages (pick from sitemap or top traffic pages).
  • For each, extract:
  • **Visible NAP from rendered prose.** Address pattern (street + city + region + postal), phone (`tel:` href + display format), business name (logo alt, footer, schema `name`).
  • **NAP from JSON-LD.** Parse every `<script type="application/ld+json">` block. Pull `name`, `address.streetAddress`, `address.addressLocality`, `addr
Read more
Ships withseo-skills

Production-ready Claude Agent Skills for SEO, powered by the SE Ranking remote MCP.

Get the whole plugin

Other skills on seo-skills.