/seo-local
Use when optimizing local SEO — Google Business Profile, NAP consistency, Local Pack ranking, location pages.
$ npx -y skills add fusengine/agents --skill seo-local --agent claude-codeHow 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.
- 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.
Use when optimizing local SEO — Google Business Profile, NAP consistency, Local Pack ranking, location pages.
SKILL.md
seo-local.SKILL.mdname: 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
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)
A plugin ecosystem that turns Claude Code into a supervised, multi-agent development environment.
Repo: fusengine/agents
Other skills on fusengine-agents.
- /agent-creator
Use when creating expert agents. Generates agent.md with frontmatter, hooks, required sections, and skill references.
Open skill - /apex-methodology
Use when starting ANY development task -- feature, bug fix, refactor, hotfix (triggers: implement, create, build, fix, add feature, refactor, develop).
Open skill - /brainstorming
Use when creating a feature/component or adding functionality. Fires BEFORE APEX Analyze to refine requirements via structured questioning.
Open skill - /challenge
Use before a root-cause, done/verified claim, irreversible action, or 2nd-time fix reaches the owner (APEX or plain conversation); also fires at every eLicit/Verify gate. Not for code correctness (use sniper).
Open skill - /code-quality
Use when validating code quality after modifications -- SOLID compliance, DRY duplication, linter errors, architecture violations. Do NOT use for functional verification (run verification FIRST, then code-quality).
Open skill - /elicitation
Use when an expert agent self-reviews and self-corrects code after the Execute phase, before sniper validation (BMAD-METHOD elicitation techniques).
Open skill

