Local seo playbook
Skill SkillMedev/local-service-business-engine/skills/local-seo-playbook
For local service owners: win the map pack, the reviews, and every quote you send.
npx -y skills add SkillMedev/local-service-business-engine --skill local-seo-playbookAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Ranks a local service business in the Google map pack and local organic results by working the three local ranking factors - relevance, distance, and prominence - through service-page structure, honest city pages, citation consistency, and review velocity. Use when an owner asks "how do I rank in the map pack", "why does my competitor outrank me locally", "do I need a page for every service", or "should I make pages for every city near me". Do NOT use for hands-on Google Business Profile settings - use google-business-profile-optimizer instead. Do NOT use for general non-local website SEO - use seo-optimizer instead.
SKILL.md
9.2 KB, as published. Nobody here has run it
Local SEO Playbook
Local ranking is not general SEO with a city name bolted on: Google ranks the map pack on three factors - relevance, distance, and prominence - and only two of them can be moved. The costly mistake this skill prevents is spending months on tactics that move none of the three (blogging into the void, doorway city pages) while the top competitor compounds reviews and citations. Before starting, run local-unit-economics: for Summit Plumbing (4 techs, $450 average ticket, $75,000 a month, roughly $119 CAC on paid leads), every organic customer displaces a paid one, which is the budget case for the hours this playbook takes.
The three factors and what actually moves each
- Relevance - how well the business matches the search. Moved by: the GBP primary category and services (owned by google-business-profile-optimizer), and the website's service and location pages built below.
- Distance - how far the business is from the searcher. Not movable by optimization; it is why rankings differ across town and why chasing rank in a distant suburb has a hard ceiling. Spend nothing trying to beat it.
- Prominence - how well-known the business is. Moved by: review count, rating, and velocity (owned by review-engine), citation consistency, and links from real local sources.
Every tactic below maps to relevance or prominence. If a proposed tactic maps to neither, cut it.
Operating procedure
Step 1: Fix the GBP foundation first
The profile is the strongest relevance and prominence surface. Complete the full checklist in google-business-profile-optimizer before touching the website - a wrong primary category caps everything below.
Step 2: Baseline the rankings honestly
Record where the business ranks for its five money queries ("water heater repair [city]", "emergency plumber [city]") from an incognito search set to the target city - never from the owner's logged-in phone at the shop, where distance flatters the result. Note who holds the three map-pack spots and their review counts. This baseline is what every later change is judged against, at 90-day intervals; local movement is slow and re-checking weekly just produces noise.
Step 3: Build one service page per service
One page per distinct service, not one "Services" page listing everything. Summit builds: drain cleaning, water heater repair and replacement, sewer line repair, leak detection, emergency plumbing. Each page needs: the service and city in the title tag and H1, 500+ words a customer would actually read (what happens on the visit, honest from-pricing, how long it takes), photos from real jobs, two or three reviews mentioning that service, and a click-to-call button above the fold. A page per service ranks because relevance is judged per query, and "water heater repair" deserves a better answer than one paragraph on a catch-all page.
Step 4: Add city pages only where the rule permits
The city-page rule: build a page for a nearby city only if it contains substantial content unique to that city - jobs completed there with photos, reviews from residents there, genuinely local detail. Ten template pages with the city name swapped are doorway pages; Google demotes them and they convert nobody. Summit serves six suburbs but has real job history in three, so it builds three city pages and adds the rest only as job photos accumulate.
Step 5: Make citations consistent
Citations are mentions of Name, Address, Phone on directories (the majors: Yelp, Facebook, Apple Maps, Bing Places, BBB, plus the trade's own - Angi, HomeAdvisor for trades; Healthgrades, Zocdoc for clinics). The value is consistency, not volume: every listing character-identical to the GBP NAP. An old listing with a previous phone number is a live leak - fix existing wrong citations before adding new ones. Twenty accurate citations beat two hundred sloppy ones; past the majors and the trade directories, returns diminish fast.
Step 6: Keep review velocity at target
Review velocity is a direct prominence input: a profile adding 12 reviews a month (Summit's target from review-engine, set against a competitor adding 10) outsignals a bigger but stale profile. This playbook does not run the review system - review-engine does - but rankings will not hold without it, so treat its velocity target as a dependency of this one.
Step 7: Earn a handful of real local links
Five links from real local sources - the neighborhood association, a sponsored little-league page, the complementary trades exchanged through local-referral-engine partnerships, a local news mention - beat five hundred directory spam links. One or two per quarter is a fine pace.
Step 8: Re-measure at 90 days and diagnose
Re-run the Step 2 baseline. If velocity has been at target for 90 days and citations are clean but the map pack has not moved, the gap is usually relevance (category or service pages) or distance (the searcher cluster is simply closer to competitors - a ceiling, not a failure).
Inputs to elicit
Collect: the five money queries (default: top three services plus "emergency [trade]" and the trade name alone, each with the city), current website pages, the cities genuinely served and where job history exists, and the list of existing directory listings. If the owner does not know their rankings, gather the baseline together rather than accepting a recalled guess - and label any unverified competitor numbers as estimates.
Concrete thresholds
- Service pages: one per distinct service, 500+ words of genuinely useful content; below that it is a stub that will not rank.
- City pages: only with unique local proof (real jobs, real local reviews); zero template-swap pages.
- Citations: character-identical NAP on the majors plus trade directories; fix wrong ones before adding new ones.
- Review velocity: at or above the review-engine target (Summit: 12 a month) - cited from that skill, never re-derived here.
- Measurement: judge changes at 90-day intervals; local movement inside two weeks is usually noise.
Worked artifact: Summit Plumbing site structure
summitplumbing.com/
/ Home: metro + top 3 services + reviews
/drain-cleaning/ "Drain Cleaning in [Metro] - from $189"
/water-heater-repair/ "Water Heater Repair & Replacement in [Metro]"
/sewer-line-repair/
/leak-detection/
/emergency-plumbing/ 24/7 framing, click-to-call above the fold
/oak-hill-plumber/ City page: 11 jobs photographed in Oak Hill,
4 reviews from Oak Hill residents
/ridgefield-plumber/ City page: real Ridgefield job history
/brookside-plumber/ City page: real Brookside job history
(Fairview, Lakemont, Cedar Falls: no pages yet - no unique proof yet)
Bad contrast: a single /services/ page plus six pages titled "Plumber in [City X]" generated from one template. Thinner relevance on every service query, plus doorway-page risk on the city set.
Deliverable
A prioritized 90-day plan: the ranking baseline table (five queries, current position, map-pack holders and their review counts), the service-page and city-page build list with titles, the citation fix list, the velocity dependency stated with its target, and the 90-day re-measure date.
Do NOT
- Do not build template city pages for every suburb - doorway pages get demoted and convert nobody.
- Do not stuff city names into every sentence; one clear title, H1, and natural mentions are enough. Copy that reads like a robot converts like one.
- Do not buy citation-blast packages that create hundreds of junk listings; inconsistent NAP at scale is negative prominence.
- Do not judge changes weekly; local rankings move slowly and reacting to noise causes thrash.
- Do not blog about national topics for a local business; a "10 plumbing trends" post moves neither relevance nor prominence for map-pack queries.
Quality bar
- Every recommended tactic names which factor it moves (relevance or prominence); anything mapped to neither is cut.
- The baseline is from a location-honest search, dated, with the money queries listed.
- Every city page in the plan cites its unique local proof.
- The plan states the review-velocity dependency with the identical number from review-engine.
Escalation and routing
Route hands-on profile settings to google-business-profile-optimizer, review generation and velocity to review-engine, partnership link sources to local-referral-engine, and general non-local website SEO (technical audits, national keywords) to seo-optimizer. If organic calls rise, re-run local-unit-economics to decide which paid channel to cut first.
Gives 0 of the 12 instructions most seo skills give
Counted across 454 of the 460 authors here whose files we hold, read 2026-08-06
- implement structured data using JSON-LDin 30 of 454, across 26 files
- write unique meta descriptions under 160 charactersin 27 of 454, across 20 files
- verify one H1 exists per pagein 24 of 454, across 15 files
- maintain a single h1 per pagein 24 of 454, across 15 files
- use JSON-LD format for all schema markupin 23 of 454, across 15 files
- use descriptive anchor text for internal linksin 21 of 454, across 16 files
- add descriptive alt text to imagesin 19 of 454, across 15 files
- read product marketing context before auditingin 19 of 454, across 10 files
- write unique title tags under 60 charactersin 19 of 454, across 14 files
- add unique title and meta description per pagein 19 of 454, across 17 files
- Reference the sitemap in robots.txtin 19 of 454, across 18 files
- verify core web vitals meet thresholdsin 17 of 454, across 9 files
Said here and by no other author read
- complete business profile setup before website work
- record baseline local rankings for five money queries
- measure local rankings at 90-day intervals
- create city pages only with substantial unique local content
- make citations character-identical across all directories
- fix incorrect citations before adding new ones
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.