Skip to content
Development
Skill

/seo-local

Use when optimizing local SEO — Google Business Profile, NAP consistency, Local Pack ranking, location pages.

From plugin
fusengine-claude-plugins
34200 skills40 agents34 commands

Claude Code

$ npx -y skills add fusengine/claude-plugins --skill seo-local --agent claude-code

SKILL.md

seo-local.SKILL.md
name: seo-local
description: Use when optimizing local SEO — Google Business Profile, NAP consistency, Local Pack ranking, location pages.
user-invocable: false
related-skills: seo, seo-schema, seo-content

<objective> Covers local SEO end to end: Google Business Profile audit (categories, hours, photos, posts, services — treated as a 2026 entity anchor that AI engines cross-reference, ~42% of local AI citations originate from listings), character-for-character NAP consistency across the site/GBP/directories, review analysis (volume/recency/response rate/sentiment), Local Pack ranking mapping, location-page quality gates (warning at 30+ pages, hard stop at 50+, each page must be genuinely unique — not template fill-in), and the LocalBusiness JSON-LD template (specific `@type` subtype, `geo` coordinates, `areaServed` as GeoCircle, `sameAs`, `aggregateRating`). </objective>

Local SEO

Workflow

1. Audit Google Business Profile (categories, hours, photos, posts, services) 2. Check NAP consistency across web (citations: Yelp, Bing, Apple Maps, industry directories) 3. Analyze reviews (volume, recency, response rate, sentiment) 4. Map ranking in Local Pack for target keywords + geo 5. Optimize location pages (one per service area, LocalBusiness schema)

NAP Consistency

Must be **character-for-character identical** on the site, GBP, and every directory:

[Business Name]
[Street Number] [Street], [Suite]
[City], [Region] [Postal Code]
[+CC Phone]
  • Abbreviations must match too: `Route` ≠ `Rte`, `Suite` ≠ `Ste`. One variation fractures the entity.

GBP as an Entity Signal (2026)

  • GBP is no longer just a local directory — AI engines cross-reference it as an **entity anchor**. ~42% of local AI citations originate from listings.
  • A **complete** profile = ~2.7x more likely to rank in the Local Pack. Fill categories, hours, photos, posts, services.
  • **Service areas = named cities / postal codes only (max ~20)**. Country- or state-wide service areas are no longer allowed (Google change, June 2025).

Quality Gates

  • **Warning** at 30+ location pages
  • **Hard stop** at 50+ location pages (manual audit required)
  • Each location page must have **unique content** (not template fill-in)

LocalBusiness Schema (GEO-priority)

AI engines (ChatGPT, Perplexity, Gemini) parse LocalBusiness JSON-LD to answer "best [service] near me". Precise `geo` + `areaServed` = better entity resolution in local AI Overviews.

{
  "@context": "https://schema.org",
  "@type": "[SpecificType]",
  "name": "[Business Name]",
  "address": { "@type": "PostalAddress", "streetAddress": "[Street]",
    "addressLocality": "[City]", "addressRegion": "[Region]",
    "postalCode": "[Postal Code]", "addressCountry": "[CC]" },
  "geo": { "@type": "GeoCoordinates", "latitude": "[lat]", "longitude": "[lng]" },
  "areaServed": { "@type": "GeoCircle",
    "geoMidpoint": { "@type": "GeoCoordinates", "latitude": "[lat]", "longitude": "[lng]" },
    "geoRadius": "[meters]" },
  "sameAs": ["[GBP URL]", "[directory URL]", "[social URL]"],
  "openingHoursSpecification": [{ "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday"], "opens": "[HH:MM]", "closes": "[HH:MM]" }],
  "aggregateRating": { "@type": "AggregateRating",
    "ratingValue": "[x.x]", "reviewCount": "[n]" }
}
  • `@type`: use the **specific** subtype (`Plumber`, `Dentist`, `Restaurant`…), not generic `LocalBusiness` — better category matching.
  • `geo` (GeoCoordinates): disambiguates the entity; coordinates must match the GBP pin and Apple Maps.
  • `areaServed` as `GeoCircle` (geoMidpoint + geoRadius): drives "near me" matching for LLMs.
  • `sameAs` array (GBP + directories + socials): confirms existence across authoritative sources.
  • LLMs **do cite local businesses** when schema + GBP + reviews are solid.

References

  • `seo-schema` — LocalBusiness JSON-LD (`templates/json-ld/localbusiness.json`)
  • `seo-entity` — declare the business entity via sameAs (Wikidata, GBP)
  • `skills/seo/10-local-seo/` (gbp, nap-citations, reviews, local-pack, landing-pages, local-backlinks)
Read more
@fusengine
Ships withfusengine-claude-plugins

A plugin ecosystem that turns Claude Code into a supervised, multi-agent development environment.

34200 skills40 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
34
Star history of fusengine/agents on GitHub, a chart by star-history.com

Other skills on fusengine-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about seo-local.

Which coding agents can use seo-local?
seo-local installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.