plugins/seo/skills/seo-local/SKILL.md
Use when optimizing local SEO. Covers Google Business Profile, NAP consistency, citations, reviews acquisition, Local Pack ranking, location pages, LocalBusiness schema.
npx skillsauth add fusengine/agents seo-localInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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]
Route ≠ Rte, Suite ≠ Ste. One variation fractures the entity.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.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)testing
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.