seo-local

Installation

$npx skills add YogeshKu7877/claude-seo-skills --skill seo-local

Summary

This skill enables an agent to conduct a comprehensive local SEO audit by fetching a business website, extracting NAP data, validating schema markup, checking GBP integration, identifying citation opportunities, and assessing mobile optimization. Invoke when a user asks for local SEO audits, GBP optimization, or needs to diagnose local ranking issues.

SKILL.MD

Local SEO Audit

Performs a comprehensive local SEO audit from live URL fetching. No MCP required.

Inputs

  • business: Business name, URL, or location string.
    • If URL: fetch the homepage directly.
    • If business name + location (e.g., "Acme Plumbing Austin TX"): note that live lookup is not possible; analyze any URL the user provides separately.
    • Best input: homepage URL (e.g., https://acme-plumbing.com).

Execution

Step 1: Fetch and Extract Business Info

Fetch homepage with WebFetch. Also fetch /contact and /about if linked from homepage. Extract from HTML:

  • Business name (from <title>, H1, or schema)
  • Address (street, city, state, zip, country)
  • Phone number(s)
  • Email address(es)
  • Schema markup (look for <script type="application/ld+json"> blocks)

Step 2: NAP Consistency Check

NAP = Name, Address, Phone. Consistency across the site is a local ranking factor. Check: homepage, footer, contact page, about page, schema markup. For each location of NAP found, record exact text and flag discrepancies:

  • Different phone formats ((512) 555-1234 vs 512-555-1234) — NOTE (not critical)
  • Different address formats (abbreviated vs full state) — NOTE
  • Completely different address or phone — CRITICAL flag

Step 3: Local Schema Audit

Check for these schema types in JSON-LD blocks:

  • LocalBusiness (or subtype: Plumber, Restaurant, MedicalBusiness, etc.)
  • Required properties: name, address (as PostalAddress), telephone
  • Recommended: geo (as GeoCoordinates), openingHours, url, image, priceRange
  • PostalAddress requires: streetAddress, addressLocality, addressRegion, postalCode

For any missing required/recommended properties, generate corrected JSON-LD at the end of output. Detect business type from schema type or page content to select appropriate LocalBusiness subtype.

Step 4: Google Business Profile Signals

Check for presence of:

  • Google Maps embed (maps.google.com or google.com/maps iframe)
  • GBP link (business.google.com/ or Google Maps URL with place ID)
  • Reviews integration (review schema, review widget, or link to Google reviews)
  • Service area mentions (city names, county, "serving [city]" in body text)
  • Operating hours on website

Step 5: Local Content Signals

  • City/region in <title> tag: check if geo-modifier present (e.g., "Plumber in Austin")
  • City/region in H1: check if location keyword present
  • Location pages (if multi-location): look for /[city]/ URL pattern or location listing pages
  • Local testimonials: customer names with locations, Google review embeds
  • Proximity/location keywords in body: "near me", "in [city]", "serving [area]"

Step 6: Citation Opportunities

Based on detected business type, list relevant citation directories:

General (all business types):

  • Google Business Profile, Yelp, BBB (Better Business Bureau), Yellow Pages, Apple Maps, Bing Places, Foursquare

Industry-specific (detect from schema type, title, or content):

  • Restaurants: TripAdvisor, OpenTable, Zomato
  • Healthcare: Healthgrades, ZocDoc, WebMD, Vitals
  • Legal: Avvo, FindLaw, Justia, Lawyers.com
  • Home Services: HomeAdvisor, Angi, Thumbtack, Houzz
  • Real Estate: Zillow, Realtor.com, Trulia

Check if any citation platforms are already linked from the site.

Step 7: Review Signals

  • Review schema (@type: Review or AggregateRating in JSON-LD)
  • Review platform links (Google, Yelp, Trustpilot, industry-specific)
  • Aggregate review score displayed on site
  • Review request CTA (e.g., "Leave us a review" button/link)

Step 8: Mobile Optimization

Local searches are 60%+ mobile — check:

  • <meta name="viewport" content="width=device-width"> present
  • Click-to-call links: <a href="tel:+1..."> for phone numbers (not just plain text)
  • Google Maps embed responsive (not fixed width)
  • Tap targets for key CTAs (subjective — note if CTA buttons exist)

Local SEO Score Calculation (0-100)

FactorMax Points
NAP consistent across all pages20
LocalBusiness schema present and valid20
GBP signals (Maps embed + GBP link)15
Local content signals (title + H1 + body)15
Citation platform presence (3+ found)10
Review signals10
Mobile: click-to-call + viewport10

Output Format

## Local SEO Audit: [business name / URL]

**Local SEO Score: [N]/100**

### NAP Consistency Status

| Location | Name | Address | Phone | Match? |
|----------|------|---------|-------|--------|

### Local Schema

**Status:** [Present / Missing / Incomplete]
[If issues: show corrected JSON-LD block]

### GBP Integration Checklist

- [x] Google Maps embed
- [ ] GBP link
- [x] Operating hours
- [ ] Review integration
- [x] Service area mentions

### Local Content Assessment

| Signal | Status | Detail |
|--------|--------|--------|
| City in title | PASS/FAIL | [title content] |
| City in H1 | PASS/FAIL | [H1 content] |
| Location pages | N/A / Found | |

### Citation Opportunities

| Platform | Category | Status |
|----------|----------|--------|
| Google Business Profile | General | [Linked / Not detected] |
| Yelp | General | [Linked / Not detected] |

### Priority Actions

[Critical/High/Medium/Low action items]

## Data Sources

- Live fetch: [URL] via WebFetch
- Schema: extracted from page JSON-LD