Files
our-claude-skills/custom-skills/18-seo-local-audit/desktop/SKILL.md
Andrew Yim a3ff965b87 Add SEO skills 19-28, 31-32 with full Python implementations
12 new skills: Keyword Strategy, SERP Analysis, Position Tracking,
Link Building, Content Strategy, E-Commerce SEO, KPI Framework,
International SEO, AI Visibility, Knowledge Graph, Competitor Intel,
and Crawl Budget. ~20K lines of Python across 25 domain scripts.
Updated skill 11 pipeline table and repo CLAUDE.md.
Enhanced skill 18 local SEO workflow from jamie.clinic audit.

Note: Skill 26 hreflang_validator.py pending (content filter block).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:05:59 +09:00

8.3 KiB

name, description
name description
seo-local-audit Local business SEO auditor for Korean-market businesses. Covers business identity extraction, NAP consistency, Google Business Profile, Naver Smart Place, Kakao Map, local citations, and LocalBusiness schema validation. Triggers: local SEO, NAP audit, Google Business Profile, GBP optimization, local citations, 네이버 스마트플레이스, 카카오맵, 로컬 SEO.

SEO Local Audit

Purpose

Audit local business SEO for Korean-market businesses: business identity extraction, NAP consistency, GBP optimization, Naver Smart Place, Kakao Map, local citations, and LocalBusiness schema markup.

Core Capabilities

  1. Business Identity - Extract official names, address, phone from website schema/content
  2. NAP Consistency - Cross-platform verification against canonical NAP
  3. GBP Optimization - Layered discovery + profile completeness audit
  4. Naver Smart Place - Layered discovery + listing completeness audit
  5. Kakao Map - Presence verification + NAP check
  6. Citation Audit - Korean-first directory presence
  7. Schema Validation - LocalBusiness JSON-LD markup

MCP Tool Usage

mcp__firecrawl__scrape: Extract NAP and schema from website
mcp__perplexity__search: Find citations, GBP, Naver Place listings
mcp__notion__create-page: Save audit findings

Workflow

Step 0: Business Identity (MANDATORY FIRST STEP)

Before any audit, establish the official business identity.

Sources (in priority order):

  1. Website schema markup (JSON-LD Organization, Hospital, LocalBusiness) — name field is authoritative
  2. Contact page / About page
  3. Footer (address, phone, social links)
  4. User-provided information

Data to collect:

Field Example
Official name (Korean) 제이미성형외과의원
Official name (English) Jamie Plastic Surgery Clinic
Brand/display name Jamie Clinic
Website URL https://www.jamie.clinic
Address (Korean) 서울특별시 강남구 ...
Phone 02-XXX-XXXX
Known GBP URL (if available)
Known Naver Place URL (if available)
Known Kakao Map URL (if available)

Look for these URL patterns in sameAs, footer links, or embedded iframes:

  • GBP: maps.app.goo.gl/*, google.com/maps/place/*, g.page/*
  • Naver Place: naver.me/*, map.naver.com/*/place/*, m.place.naver.com/*
  • Kakao Map: place.map.kakao.com/*, kko.to/*

Step 1: Website NAP Extraction

Scrape header, footer, contact page, about page. Cross-reference with schema markup. Establish the canonical NAP baseline.

Step 2: GBP Verification & Audit

Layered discovery (try in order, stop when found):

  1. Use provided GBP URL (from Step 0 or user input)
  2. Check website for GBP link (footer, contact, schema sameAs, embedded Google Maps iframe)
  3. Search: "[Korean Name]" "[City/District]" Google Maps
  4. Search: "[English Name]" Google Maps [City]
  5. Search: "[exact phone number]" site:google.com/maps

Important: Google Maps is JS-rendered — scraping tools cannot extract business data. Use search for discovery, verify via search result snippets.

If found — audit checklist (score /10):

  • Business name matches canonical NAP
  • Address is complete and accurate
  • Phone number matches
  • Business hours are current
  • Primary + secondary categories appropriate
  • Business description complete
  • 10+ photos uploaded
  • Posts are recent (within 7 days)
  • Reviews are responded to
  • Q&A section is active

If NOT found: Report as "not discoverable via web search" (distinct from "does not exist").

Step 3: Naver Smart Place Verification & Audit

Layered discovery (try in order, stop when found):

  1. Use provided Naver Place URL (from Step 0 or user input)
  2. Check website for Naver Place link (footer, contact, schema sameAs)
  3. Search: "[Korean Name]" site:map.naver.com
  4. Search: "[Korean Name]" 네이버 지도 [district]
  5. Search: "[Korean Name]" 네이버 스마트플레이스
  6. Search: "[exact phone number]" site:map.naver.com

Important: Naver Map is JS-rendered — scraping tools cannot extract data. Use search for discovery, verify via snippets.

If found — audit checklist (score /10):

  • Business name matches canonical NAP
  • Address is complete and accurate
  • Phone number matches
  • Business hours are current
  • Place is "claimed" (owner-managed / 업주 등록)
  • Keywords/tags are set
  • Booking/reservation link present
  • Recent blog reviews linked
  • Photos uploaded and current
  • Menu/service/price information present

If NOT found: Report as "not discoverable via web search" (not "does not exist" or "not registered").

Step 4: Kakao Map Verification

Discovery:

  1. Use provided Kakao Map URL (from Step 0)
  2. Check website for Kakao Map link (place.map.kakao.com/*, kko.to/*)
  3. Search: "[Korean Name]" site:place.map.kakao.com
  4. Search: "[Korean Name]" 카카오맵 [district]

If found: Verify NAP consistency against canonical NAP.

Step 5: Citation Discovery

Korean market platform priorities:

Platform Priority Market
Google Business Profile Critical Global
Naver Smart Place (네이버 스마트플레이스) Critical Korea
Kakao Map (카카오맵) High Korea
Industry-specific directories High Varies
Apple Maps Medium Global
Bing Places Low Global

Korean medical/cosmetic industry directories:

  • 강남언니 (Gangnam Unni)
  • 바비톡 (Babitalk)
  • 성예사 (Sungyesa)
  • 굿닥 (Goodoc)
  • 똑닥 (Ddocdoc)
  • 모두닥 (Modoodoc)
  • 하이닥 (HiDoc)

Step 6: NAP Consistency Report

Cross-reference all sources against canonical NAP.

Common inconsistency points:

  • Building/landmark names — authoritative source is the business registration certificate (사업자등록증)
  • Phone format variations (02-XXX-XXXX vs +82-2-XXX-XXXX)
  • Address format (road-name vs lot-number / 도로명 vs 지번)
  • Korean vs English name spelling variations
  • Suite/floor number omissions

Step 7: LocalBusiness Schema Validation

Validate JSON-LD completeness: @type, name, address, telephone, openingHours, geo (GeoCoordinates), sameAs (GBP, Naver, Kakao, social), url, image.

Scoring

Component Weight Max Score
Business Identity completeness 5% /10
NAP Consistency 20% /10
GBP Optimization 20% /10
Naver Smart Place 20% /10
Kakao Map presence 10% /10
Citations (directories) 10% /10
LocalBusiness Schema 15% /10

Overall Local SEO Score = weighted average, normalized to /100.

Output Format

## Local SEO Audit: [Business]

### Business Identity
| Field | Value |
|-------|-------|
| Korean Name | ... |
| English Name | ... |
| Address | ... |
| Phone | ... |

### NAP Consistency: X/10
| Source | Name | Address | Phone | Status |
|--------|------|---------|-------|--------|
| Website | OK/Issue | OK/Issue | OK/Issue | Match/Mismatch |
| GBP | OK/Issue | OK/Issue | OK/Issue | Match/Mismatch |
| Naver Place | OK/Issue | OK/Issue | OK/Issue | Match/Mismatch |
| Kakao Map | OK/Issue | OK/Issue | OK/Issue | Match/Mismatch |

### GBP Score: X/10
[Checklist results]

### Naver Smart Place: X/10
[Checklist results]

### Kakao Map: X/10
[Status + NAP check]

### Citations: X/10
| Platform | Found | NAP Match |
|----------|-------|-----------|
| ... | | |

### LocalBusiness Schema: X/10
- Present: Yes/No
- Valid: Yes/No
- Missing fields: [list]

### Overall Score: XX/100 (Grade)
### Priority Actions
1. [Recommendations]

Notes

  • GBP and Naver Map are JS-rendered — scraping tools cannot extract listing data. Always use search for discovery.
  • "Not discoverable via web search" != "does not exist." Always use this precise language.
  • For Korean businesses, Naver Smart Place is as important as GBP (often more so for domestic traffic).

Notion Output (Required)

All audit reports MUST be saved to OurDigital SEO Audit Log:

  • Database ID: 2c8581e5-8a1e-8035-880b-e38cefc2f3ef
  • Properties: Issue (title), Site (url), Category (Local SEO), Priority, Found Date, Audit ID
  • Language: Korean with English technical terms
  • Audit ID Format: LOCAL-YYYYMMDD-NNN