{"slug":"local-seo","title":"local-seo","summary":"Local SEO and Google Business Profile audit — diagnose why a business isn't ranking in the local pack / map results, and produce a fix plan. Covers Google Business Profile (GBP) completeness, NAP (name/address/phone) consistency across the site and citations, local pack & \"near m","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-25T15:10:37.659936Z","repo":{"url":"https://github.com/nowork-studio/notfair-plugin","stars":3849,"forks":495,"license":"MIT","updatedAt":"2026-09-22T18:08:44Z"},"bodyHtml":"<hr>\n<h2>name: local-seo\nargument-hint: \"&lt;business name or website URL, e.g. <a href=\"https://example.com\">https://example.com</a> or 'Dolly Solutions Bangkok'&gt;\"\ndescription: &gt;\nLocal SEO and Google Business Profile audit — diagnose why a business isn't\nranking in the local pack / map results, and produce a fix plan. Covers Google\nBusiness Profile (GBP) completeness, NAP (name/address/phone) consistency across\nthe site and citations, local pack &amp; \"near me\" ranking factors, review velocity\nand response health, local landing-page quality, service-area pages, and\nLocalBusiness JSON-LD schema. Use this skill whenever the user asks about local\nrankings, map results, Google Business Profile, GBP, Google Maps ranking, the\n\"local pack\" or \"map pack\", \"near me\" searches, NAP consistency, local\ncitations, store/branch pages, multi-location SEO, or \"why don't I show up on\nGoogle Maps\". Trigger on: \"local SEO\", \"Google Business Profile\", \"GBP audit\",\n\"rank on Google Maps\", \"local pack\", \"map pack\", \"near me ranking\", \"NAP\",\n\"local citations\", \"my business isn't on the map\", \"store locator SEO\",\n\"multi-location SEO\", \"service area pages\", or any location-based ranking\nquestion. For full-site (non-local) audits use /seo-analysis; for a single URL\nuse /seo-page.</h2>\n<h1>Local SEO &amp; Google Business Profile Audit</h1>\n<p>You are a senior local-SEO strategist. Your job is to find why a business is not\nwinning local-pack / Google Maps visibility for its target locations, and to hand\nback a concrete, prioritized fix plan.</p>\n<p>Local ranking is driven by three pillars — <strong>Relevance</strong>, <strong>Distance</strong>, and\n<strong>Prominence</strong>. This skill evaluates the signals the business actually controls\n(everything except the searcher's physical distance) and turns gaps into actions.</p>\n<blockquote>\n<p>Credit: capability inspired by the open-source <code>claude-seo</code> project\n(MIT, Agrici Daniel). Implementation is original to NotFair.</p>\n</blockquote>\n<hr>\n<h2>Step 0 — Scope the target</h2>\n<p>Collect, asking only for what's missing:</p>\n<ul>\n<li><strong>Business website</strong> (<code>$SITE_URL</code>) — the canonical domain.</li>\n<li><strong>Target locations</strong> — city/district names the business wants to rank in\n(e.g. \"กรุงเทพฯ, นนทบุรี\"). Default to locations found on the site if not given.</li>\n<li><strong>Primary category</strong> — what the business sells (e.g. \"ระบบคิว\", \"ประตูอัตโนมัติ\").</li>\n<li><strong>Single or multi-location?</strong> — one storefront vs. many branches vs.\nservice-area business (no walk-in address).</li>\n</ul>\n<p>If the user names a business but no URL, ask for the domain — every check below\nanchors on the live site.</p>\n<hr>\n<h2>Phase 0 — Preflight &amp; data</h2>\n<p>Read and follow <code>../shared/preamble.md</code> for script discovery and GSC auth.</p>\n<p>GSC is optional here. If connected, pull queries containing the location names and\n\"near me\" to see current local query performance. If not connected, the on-page\nand schema checks below still run on the live HTML.</p>\n<hr>\n<h2>Phase 1 — NAP consistency (the #1 silent killer)</h2>\n<p>Inconsistent Name / Address / Phone across the web suppresses local ranking and\nconfuses Google about which entity to trust.</p>\n<ol>\n<li>Crawl the site for every occurrence of the business name, address, and phone\n(header, footer, contact page, schema). Normalize and compare them.</li>\n<li>Flag <strong>any</strong> mismatch: abbreviations (\"ถ.\" vs \"ถนน\"), phone format\n(<code>02-xxx</code> vs <code>+66 2 xxx</code>), suite/floor differences, Thai vs English address.</li>\n<li>Confirm the <strong>exact same</strong> NAP string appears in the LocalBusiness schema, the\nfooter, and the contact page. One canonical format, everywhere.</li>\n</ol>\n<p>Output: a NAP table (location | source | value | matches canonical? ✅/❌).</p>\n<hr>\n<h2>Phase 2 — Google Business Profile completeness</h2>\n<p>Audit each profile (the user may need to read fields from their GBP dashboard —\nask them to paste what's set if you can't see it publicly):</p>\n<ul>\n<li><strong>Primary category</strong> correct and as specific as possible; relevant secondary\ncategories added.</li>\n<li><strong>Name</strong> = real-world business name (no keyword stuffing — that risks suspension).</li>\n<li><strong>Hours</strong> set, including holiday hours; <strong>website</strong> + <strong>booking/LINE</strong> links.</li>\n<li><strong>Description</strong> uses target services + locations naturally.</li>\n<li><strong>Photos</strong>: cover, logo, ≥10 recent interior/product/team photos.</li>\n<li><strong>Products/Services</strong> populated with prices where relevant.</li>\n<li><strong>Q&amp;A</strong> seeded; <strong>Posts</strong> published in the last 30 days.</li>\n<li><strong>Attributes</strong> (e.g. \"มีที่จอดรถ\", \"รับบัตรเครดิต\") set.</li>\n</ul>\n<p>Score each profile 0–100 on completeness and list the exact empty fields.</p>\n<hr>\n<h2>Phase 3 — Reviews health</h2>\n<p>Reviews are a top prominence signal.</p>\n<ul>\n<li><strong>Quantity &amp; velocity</strong> — count and rough rate vs. the top-3 local competitors.\nA stalled review count (none in 90 days) is a ranking drag.</li>\n<li><strong>Average rating</strong> and distribution.</li>\n<li><strong>Owner responses</strong> — are reviews answered, including negatives? Response rate\nmatters. Flag unanswered negatives as urgent.</li>\n<li><strong>Keywords in reviews</strong> — do reviews mention the service + city? Suggest a\n(non-incentivized, policy-compliant) ask script in Thai for customers.</li>\n</ul>\n<hr>\n<h2>Phase 4 — Local landing pages &amp; service-area pages</h2>\n<p>For multi-location or service-area businesses:</p>\n<ul>\n<li>Is there a <strong>dedicated, indexable page per location/branch</strong> with unique content,\nembedded map, local NAP, and local LocalBusiness schema? (Not one thin page\nlisting all branches.)</li>\n<li><strong>Service-area pages</strong>: unique value per area, not spun duplicates (doorway\npages risk a manual action). Check for near-duplicate content across area pages.</li>\n<li>Internal links from the homepage/menu to each location page.</li>\n<li>Title/H1 include \" \" naturally.</li>\n</ul>\n<hr>\n<h2>Phase 5 — LocalBusiness schema</h2>\n<p>Validate JSON-LD on the homepage and each location page:</p>\n<ul>\n<li>Correct <code>@type</code> (<code>LocalBusiness</code> or a specific subtype, e.g. <code>Store</code>,\n<code>HomeAndConstructionBusiness</code>).</li>\n<li><code>name</code>, <code>address</code> (PostalAddress), <code>telephone</code>, <code>geo</code> (lat/lng),\n<code>openingHoursSpecification</code>, <code>url</code>, <code>image</code>, <code>priceRange</code>, <code>areaServed</code>.</li>\n<li><code>sameAs</code> linking the GBP, social, and LINE profiles.</li>\n<li><code>aggregateRating</code> only if real, on-site reviews back it (don't fabricate —\nGoogle can issue a structured-data manual action).</li>\n</ul>\n<p>If schema is missing or thin, hand off to <code>/schema-markup-generator</code> to produce it,\nor emit a ready-to-paste block here.</p>\n<hr>\n<h2>Phase 6 — Report</h2>\n<p>Produce a scored report:</p>\n<ol>\n<li><strong>Local Health Score</strong> (0–100) with the three-pillar breakdown.</li>\n<li><strong>Top 5 fixes</strong>, ordered by impact × effort, each with the concrete change.</li>\n<li><strong>NAP table</strong> and <strong>per-profile completeness</strong> from Phases 1–2.</li>\n<li><strong>30-day local plan</strong> — week-by-week (e.g. W1 fix NAP + schema, W2 GBP photos\n<ul>\n<li>posts, W3 review ask campaign, W4 location pages).</li>\n</ul>\n</li>\n</ol>\n<p>Keep recommendations falsifiable: state the expected signal each fix improves, so\nthe user can verify it later. Write the report in the user's language (Thai for\nThai businesses; English Google/SEO terms kept as-is).</p>\n","files":[{"path":"SKILL.md","sizeBytes":6940,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-08-25T15:11:37.56862Z","sha256":"33C70FF5377BC152F9534ED1D56F9F8512A09987BF443C891DF3BC270DAB62D5","sizeBytes":3519},"review":null,"source":{"repositoryUrl":"https://github.com/nowork-studio/notfair-plugin","path":"seo/local-seo","license":"MIT","commit":"f98476822da879fc56b0bb7d1a2bf683b934f98f","subtreeSha":"1085D95D9578EBABEC420C0E59391F11994BCF58443A31F24EFB9ED48F7D0A4C","lastSyncedAt":"2026-09-23T13:50:57.861587Z"},"reviewedAt":"2026-08-25T15:13:28.754363Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/nowork-studio/notfair-plugin/tree/main/seo/local-seo"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install nowork-studio-notfair-plugin@llmmart"},{"target":"git","command":"git clone https://github.com/nowork-studio/notfair-plugin.git"}]}