Growth & marketing
Launch pack
Local SEO
Get found by customers nearby, in local search and on Google Maps.
- Google Business Profile
- Reviews
- LocalBusiness
Install
npx skills add webrenew/skills --skill launch-local-seo1 file · 157 lines · any agent that reads SKILL.md
Use it when
- The business serves customers in a city or service area
- Competitors show in the map pack and you do not
- You want more Google reviews, without breaking the rules
What your agent delivers
- One business identity, used by the site, the schema and every listing
- Service pages that match how customers search
- A plain checklist for the owner's Google Business Profile
Source files
Read every line before you install. Copy or download one file.
SKILL.md
157 lines
---
name: launch-local-seo
description: >
Get a small business found in local search and the Google map pack. Use this skill when a
site serves customers in a city or service area (trades, clinics, salons, restaurants, law,
real estate, home services) or when the user mentions local SEO, "near me" searches, ranking
on Google Maps, Google Business Profile, map pack, more Google reviews, service-area pages,
NAP consistency, citations, reviews, or LocalBusiness schema.
---
# Local SEO: Get Found by Customers Nearby
**RULE: One business identity, the same everywhere. Name, address, phone, hours and category
must match on the site, the schema, Google Business Profile and every directory.**
Local ranking depends on three things Google names itself: relevance, distance and
prominence. You cannot change distance. This skill makes relevance clear and builds
prominence with reviews and consistent listings.
## 1. Put the identity in one place in code
Create one source of truth and render the footer, contact page and schema from it. Hand-typed
copies drift, and drift costs rankings.
```ts
// lib/business.ts
export const business = {
name: "Harbor Plumbing", // exactly as on the storefront and GBP, no keywords
type: "Plumber", // most specific schema.org LocalBusiness subtype
url: "https://harborplumbing.com", // the canonical origin
phoneE164: "+18435550142", // schema telephone and every tel: link
phoneDisplay: "(843) 555-0142", // what people read on the page
email: "hello@harborplumbing.com",
address: { street: "12 King St", city: "Charleston", region: "SC", postalCode: "29401", country: "US" },
geo: { latitude: 32.7765, longitude: -79.9311 },
hours: [{ days: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], opens: "07:00", closes: "18:00" }],
areaServed: ["Charleston", "Mount Pleasant", "Summerville"],
sameAs: ["https://www.facebook.com/harborplumbing", "https://www.yelp.com/biz/harbor-plumbing-charleston"],
googleReviewUrl: "https://search.google.com/local/writereview?placeid=PLACE_ID",
} as const
```
A service-area business with no storefront hides its street address on Google Business
Profile. Then leave `street` out of the site and schema too, and lean on `areaServed`.
## 2. LocalBusiness structured data
Render JSON-LD once, in the root layout or on the home and contact pages.
```tsx
// components/local-business-jsonld.tsx
import { business } from "@/lib/business"
export function LocalBusinessJsonLd() {
const data = {
"@context": "https://schema.org",
"@type": business.type,
name: business.name,
url: business.url,
telephone: business.phoneE164,
Related skills
All skills- 03
Landing Page
Launch packlaunch-landing-page
One page, one offer, one action, so visitors become calls and leads.
One page, one offer, one action, so visitors become calls and leads.
- 01
Make each page clear to search engines. Give them a path to every link.
- 04
Know what to write next, with a calendar the owner can keep.
- 05
Know which posts bring leads, and fix the ones that slip.