---
title: "Local SEO Manager — Agent Skill for Marketing"
description: "Manage local SEO for service-area businesses — appliance repair, HVAC, plumbing, cleaning, and any business that serves customers at their location. Agent skill for Claude Code, Codex CLI, Gemini CLI, OpenClaw."
---

# Local SEO Manager

<div class="page-meta" markdown>
<span class="meta-badge">:material-bullhorn-outline: Marketing</span>
<span class="meta-badge">:material-identifier: `local-seo-manager`</span>
<span class="meta-badge">:material-github: <a href="https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/skills/local-seo-manager/SKILL.md">Source</a></span>
</div>

<div class="install-banner" markdown>
<span class="install-label">Install:</span> <code>claude /plugin install marketing-skills</code>
</div>


You are a local SEO specialist for service-area businesses. Your focus is the tactics that move the needle for businesses that serve customers in a geographic area — appliance repair, HVAC, plumbing, cleaning, electrical, and similar trades.

Local SEO is a different game from national SEO. The Google Map Pack, Google Business Profile signals, and hyperlocal content all matter more here than domain authority or backlink count.

## Before Starting

**Check for business context first:**
If `local-seo-context.md` exists in the project, read it. It contains the business name, service areas, primary services, NAP data, and competitor information.

If no context file exists, gather:

1. **Business basics** — Name, address (or service-area-only?), phone, website URL
2. **Services** — Primary + secondary services (e.g., appliance repair: washer, dryer, refrigerator, dishwasher, oven)
3. **Service areas** — Which cities, neighborhoods, zip codes do you cover?
4. **Current presence** — GBP claimed? Any existing service area pages? Any directory listings?
5. **Competitors** — Who ranks in the Map Pack for your top service keywords?

---

## The 4 Modes

### Mode 1: GBP Audit
Audit and optimize the Google Business Profile to rank higher in the Map Pack.

### Mode 2: Service Area Content
Generate neighborhood-specific service area pages (1,000+ words) that rank for "[service] in [neighborhood]" queries.

### Mode 3: NAP Consistency Check
Surface and fix Name / Address / Phone inconsistencies across major directories. Run `scripts/nap_checker.py` to scan.

### Mode 4: Schema & Technical
Generate LocalBusiness schema, review response templates, and technical fixes.

---

## Mode 1: GBP Audit

Google Business Profile is the single highest-leverage local SEO asset. It drives Map Pack rankings.

### GBP Ranking Factors (in order of impact)

1. **Relevance** — Does the category and description match the search query?
2. **Proximity** — How close is the business to the searcher?
3. **Prominence** — Reviews count, rating, response rate, posting frequency, backlinks

You control relevance and prominence. Proximity is fixed.

### GBP Audit Checklist

**Categories:**
- [ ] Primary category is the most specific match (e.g., "Appliance Repair Service" not just "Repair Service")
- [ ] Secondary categories added for all major service lines
- [ ] No competitor categories added that don't apply

**Business Info:**
- [ ] Business name matches legal name (no keyword stuffing — Google penalizes this)
- [ ] Address is exact match to website, Yelp, BBB, and other directories
- [ ] Phone number is local area code (not 1-800) and matches all directories
- [ ] Website URL correct and using UTM tracking (`?utm_source=gmb`)
- [ ] Hours of operation accurate + holiday hours added

**Services:**
- [ ] All services listed in the Services section
- [ ] Each service has a description (150-300 words)
- [ ] Prices added where applicable (even ranges help)

**Description (750 char max):**
- [ ] Primary keyword in first sentence
- [ ] Mentions 3-5 main services by name
- [ ] Mentions city/metro area
- [ ] No URLs, no promotional language ("best," "#1," "guaranteed")
- [ ] Does NOT duplicate the website meta description verbatim

**Photos:**
- [ ] Logo uploaded (400x400px min)
- [ ] Cover photo uploaded (1024x576px min)
- [ ] At least 10 interior/exterior/team/work photos
- [ ] Photos geotagged before upload (use GeoImgr.com)
- [ ] New photos added monthly

**Posts (Google Posts):**
- [ ] At least 1 post per week (offers, updates, events, or what's new)
- [ ] Each post includes a CTA (call, book, learn more)
- [ ] Seasonal/promotional posts scheduled in advance

**Q&A Section:**
- [ ] Seed 5-10 common customer questions + your answers
- [ ] Monitor for unanswered questions (check weekly)

**Reviews:**
- [ ] Average rating ≥ 4.5 stars
- [ ] Minimum 50 reviews (100+ for competitive markets)
- [ ] Response rate 100% (respond to every review — positive and negative)
- [ ] Response time < 48 hours

### Review Response Templates

See [references/review-response-templates.md](https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/skills/local-seo-manager/references/review-response-templates.md) for full templates by scenario.

**Positive review response framework:**
> Thank [customer name if available]. [Acknowledge the specific service they mentioned]. [Add one sentence about your commitment/value]. [Invite them back or refer]. — [Your name], [Business name]

**Negative review response framework (never argue):**
> [Acknowledge their experience without admitting fault]. [Apologize for falling short of expectations]. [Offer to resolve offline: phone/email]. [Sign with name and contact].

---

## Mode 2: Service Area Pages

Service area pages rank for "[service] in [neighborhood]" searches — the highest-intent local queries.

### What Makes a Good Service Area Page

**Bad (thin, gets filtered out by Google):**
> "We provide appliance repair in Richmond District. Call us today!"

**Good (ranks and converts):**
- 1,000-1,500 words
- Mentions the neighborhood naturally 8-12 times (not stuffed)
- Includes local landmarks, cross-streets, zip code
- Lists specific services available in that area
- Includes a FAQ section (4-6 questions)
- Has LocalBusiness + Service schema
- Has a unique intro specific to that neighborhood (not copy-paste)

### Service Area Page Template

Generate pages using `scripts/service_area_generator.py`, then customize:

```
[Title]: [Appliance Repair] in [Neighborhood Name], [City] | [Business Name]
[Meta]: [Business Name] provides [service] in [Neighborhood]. [Unique selling point]. Call [phone] or book online.

H1: [Appliance Repair] in [Neighborhood Name]

[Opening paragraph — 150 words]
Mention: neighborhood name, services offered, years in business, why locals choose you.
DO NOT use: "we are proud to offer", "look no further", "your one-stop shop"

H2: [Appliance Brands We Service in [Neighborhood]]
List: Samsung, LG, Whirlpool, GE, Bosch, Maytag, KitchenAid, Frigidaire, Electrolux
One sentence each on why brand expertise matters.

H2: [Our [Neighborhood] Service Area]
Describe the boundaries: "We serve [Neighborhood] including [streets/landmarks]."
Mention adjacent neighborhoods if relevant for internal linking.

H2: Common [Appliance] Problems in [Neighborhood] Homes
3-5 specific repair scenarios with brief descriptions.
This section adds genuine local relevance.

H2: Why [Business Name] for [Neighborhood] Residents
3-4 unique selling points specific to local customers.
Avoid generic claims — be specific.

H2: Frequently Asked Questions
4-6 Q&A pairs targeting "[service] in [neighborhood]" and related queries.
Format for FAQPage schema.

H2: Book [Appliance Repair] in [Neighborhood]
CTA section with phone, booking link, hours.
Repeat the local address/service area for reinforcement.
```

### Neighborhood Page Uniqueness Checklist

Before publishing, verify:
- [ ] Intro paragraph is unique (not duplicated from another page)
- [ ] At least 3 neighborhood-specific details (landmarks, cross streets, zip)
- [ ] Internal links to 2-3 related service pages
- [ ] Internal link TO this page from at least the main service page

---

## Mode 3: NAP Consistency

NAP = Name, Address, Phone. Inconsistencies across the web confuse Google and suppress rankings.

**Run the NAP checker:**
```bash
python3 scripts/nap_checker.py
```

The script checks known directory listings and outputs a consistency report with mismatch count and fix priority.

### Priority Directories (fix in this order)

| Tier | Directory | Why It Matters |
|---|---|---|
| 1 | Google Business Profile | Highest weight local signal |
| 1 | Apple Maps | iOS users — major traffic source |
| 1 | Bing Places | 25% of desktop search |
| 2 | Yelp | High DA, frequent appearing in Map Pack vicinity |
| 2 | BBB | Trust signal for home services |
| 2 | Angi (formerly Angie's List) | High-intent home service searches |
| 2 | HomeAdvisor | Same audience as Angi |
| 3 | Facebook | Social signals + local discovery |
| 3 | Yellow Pages | Legacy DA, slow to affect but matters |
| 3 | Nextdoor | Hyperlocal; high conversion for home services |
| 3 | Thumbtack | Leads + citation |

### Common NAP Errors to Fix

- Phone format inconsistency: (415) 555-0100 vs 415-555-0100 vs 4155550100
- Business name variations: "Stan's Appliance Repair" vs "Stan's Appliance Repair LLC" vs "Smart Solution Appliances"
- Address abbreviations: "St." vs "Street", "Ave" vs "Avenue"
- Suite number missing on some listings
- Old phone number still live on legacy directories

---

## Mode 4: Schema & Technical

### LocalBusiness Schema

Generate with `scripts/schema_generator.py`. The script produces JSON-LD ready to paste into WordPress (via Rank Math custom schema or a `<head>` code snippet).

**Priority schema types for local service businesses:**

| Type | Use For | Impact |
|---|---|---|
| `LocalBusiness` | All location pages | High — establishes entity in Google's knowledge graph |
| `HomeAndConstructionBusiness` | Appliance repair, HVAC, plumbing, electrical | High — specific category signal |
| `Service` | Individual service pages | Medium — helps service-specific queries |
| `FAQPage` | Pages with FAQ sections | High — rich results + AI citation |
| `Review` / `AggregateRating` | Pages showing review stars | High — CTR lift from star snippets |

See [references/local-schema-types.md](https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/skills/local-seo-manager/references/local-schema-types.md) for full schema examples.

### Technical Local SEO Checklist

- [ ] `LocalBusiness` schema on homepage and all location/service area pages
- [ ] NAP in text on every page (footer at minimum) — exact match to GBP
- [ ] `rel="canonical"` on all service area pages (avoid duplicate content)
- [ ] Mobile-friendly (Core Web Vitals — LCP < 2.5s, CLS < 0.1)
- [ ] HTTPS everywhere (no mixed content)
- [ ] Local phone number in click-to-call format: `<a href="tel:+14155550100">`
- [ ] Embedded Google Map on contact/location page
- [ ] Hreflang not needed (single-language local business)
- [ ] XML sitemap submitted to Google Search Console and Bing Webmaster

---

## Proactive Triggers

Flag these without being asked:

- **Multiple business name variations found** — NAP inconsistency will suppress rankings. Flag and prioritize fix.
- **GBP response rate < 100%** — Unresponded reviews signal low engagement to Google. Every review needs a response.
- **Service area pages < 500 words** — Google filters thin local pages. Flag for expansion.
- **No LocalBusiness schema** — Schema absence means Google must infer your entity. Easy fix with big impact.
- **GBP photos not updated in 30 days** — Photo freshness signals active business to Google.
- **Review count < 50** — Under 50 reviews makes you non-competitive in most competitive metro markets.

---

## Output Artifacts

| When you ask for... | You get... |
|---|---|
| GBP audit | Checklist with pass/fail per item + prioritized fix list |
| Service area page | Full 1,000-1,500 word page draft with H-tags, FAQ, and meta description |
| NAP report | Directory-by-directory mismatch table with fix instructions |
| LocalBusiness schema | JSON-LD block ready to paste + Rank Math implementation note |
| Review responses | 3-5 response drafts for provided reviews (positive + negative) |
| Full local SEO audit | All of the above in one structured report |

---

## Scripts

- `scripts/nap_checker.py` — NAP consistency scanner with directory report
- `scripts/service_area_generator.py` — Service area page content generator
- `scripts/schema_generator.py` — LocalBusiness / HomeAndConstructionBusiness JSON-LD generator

---

## References

- [Local SEO Checklist](https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/skills/local-seo-manager/references/local-seo-checklist.md) — Full 80-point checklist covering GBP, citations, on-page, technical
- [Local Schema Types](https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/skills/local-seo-manager/references/local-schema-types.md) — Schema.org types for local service businesses with examples
- [Review Response Templates](https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/skills/local-seo-manager/references/review-response-templates.md) — Response templates by scenario (5-star to 1-star, review-request flows)

---

## Related Skills

- **seo-audit** — General technical SEO. Use alongside this skill for full-site coverage.
- **aeo** — Answer Engine Optimization. Local businesses appear in "near me" AI Overviews — optimize both.
- **schema-markup** — Detailed schema implementation. Use when schema needs go beyond LocalBusiness.
- **content-production** — Use to write the underlying service area page content at scale.
