local-landing-pages
About local-landing-pages
local-landing-pages is a skill for local SEO practitioners planning location pages and locally relevant content. It emphasizes distinct value for each page rather than swapping city names, and covers page structure, internal links, scale, and structured data.
Key features
- 01Plan physical-location and service-area pages
- 02Design service-and-location pages
- 03Structure page content and local details
- 04Build internal links between location pages
- 05Plan content at scale and structured data
Use cases
- 01Plan distinct pages for multiple service areas
- 02Improve local content on existing location pages
- 03Design page-linking structure for a multi-location site
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ garrettjsmith/ localseoskills --skill local-landing-pagesAfter installing, type/local-landing-pagesin Claude Code to confirm it loaded.
Details
From the project READMELocal Landing Pages & Content
You are an expert in creating location-specific pages and locally-relevant content that ranks in local search. Your goal is to build pages with genuine local value — not thin doorway pages with swapped city names.
Core Principle: Unique Value Per Page
Google's doorway page penalty targets pages that swap city names with identical content, exist only to funnel to a single location, and provide no unique value. Every page must earn its existence.
Page Types
Type 1: Physical Location Pages
For businesses with a storefront at that address.
- URL:
/locations/buffalo-ny/ - Full NAP, embedded map, location-specific hours
- Driving directions, parking, team members at that location
- LocalBusiness schema with unique
@id - Unique photos and reviews from that location
Type 2: Service-Area Pages
For cities/areas served without a storefront there.
- URL:
/service-area/orchard-park-ny/or/plumbing/orchard-park-ny/ - Service + area in title, H1, meta
- Content about serving that specific area with local context
- CTA with click-to-call phone number
- Service schema with
areaServed
Type 3: Service × Location Pages
Highest intent — intersection of specific service and location.
- URL:
/emergency-plumbing/buffalo-ny/ - Service details specific to that area
- Local regulations, pricing, case studies
- FAQ specific to service + location
Page Template
Title: [Primary Service] in [City, ST] | [Brand Name]
Meta: [Service benefit] in [City]. [Differentiator]. [CTA]. Call [phone].
H1: [Primary Service] in [City/Area]
Page Structure
- Hero: Service + location, primary CTA, trust signals
- Service overview: What you do in this area (2-3 paragraphs)
- Why choose us: Differentiators for local customers
- Service details: Specific offerings with descriptions
- Local context: Area-specific information (see uniqueness strategies)
- Social proof: Reviews from customers in this area
- FAQ: Location-specific questions
- CTA: Phone, form, or scheduling
Uniqueness Strategies
These separate ranking pages from penalty-worthy doorway pages:
Local context: Neighborhoods served, local building types, climate-specific needs, local regulations/permits, distance from your location.
Local social proof: Reviews from that area, case studies with location details, before/after photos from local jobs.
Local data: Service statistics, common area-specific problems, pricing ranges, response times.
Local partnerships: Relationships with local businesses, community involvement, organization memberships.
Local Content Strategy
Beyond location pages, locally-relevant content builds topical authority and creates internal linking opportunities.
Content Types
- Service education: "How much does [service] cost in [city]?" / "How to choose a [provider] in [area]"
- Local guides: Neighborhood guides relevant to your service area
- Case studies: Before/after with location details, problem → solution
- FAQ / knowledge base: Questions customers actually ask, local variations
- Community content: Local events, sponsorship recaps, local partnerships
Content Planning
- Core service keywords + location modifiers
- "People also ask" for local variations
- Google Autocomplete for
[service] + [city]queries - GBP Q&A and reviews for real customer questions
- Competitor content gaps
Cadence
2-4 pieces/month. Mix of education, case studies, and local guides. Align with seasonal demand. Repurpose into GBP posts, social, email.
Quality Standards
- 800-1500 words standard, 1500-2500 for guides
- Original local insights, not rewritten generic content
- Author byline, updated date visible
- Internal links to service and location pages
Internal Linking Architecture
Hub and Spoke
/services/plumbing/ (hub)
├── /plumbing/buffalo-ny/ (spoke)
├── /plumbing/orchard-park/ (spoke)
├── /plumbing/hamburg-ny/ (spoke)
Every location page links to main service page. Location pages link to nearby locations ("Also serving..."). Service pages link to location pages. Homepage links to priority locations. All within 3 clicks.
Breadcrumbs: Home > Services > Plumbing > Buffalo, NY with BreadcrumbList schema.
Scale Considerations
5-20 pages: Hand-craft each. Full unique content. 20-100: Template + required unique sections. 300+ unique words per page minimum. 100+: Programmatic approach. Need reliable per-page data source. Question: is there genuine search demand?
Quality Check
- Would this help a real person in this area?
- Is there unique content beyond city name swap?
- Does search demand exist?
- Would you show this to Google's webspam team?
Schema for Location Pages
Physical Location
{
"@context": "https://schema.org",
"@type": "Plumber",
"@id": "https://example.com/locations/buffalo-ny/#business",
"name": "Smith Plumbing - Buffalo",
"address": { ... },
"geo": { "latitude": "42.8864", "longitude": "-78.8784" },
"areaServed": { "@type": "City", "name": "Buffalo, NY" }
}
Service-Area Page
{
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "Emergency Plumbing",
"provider": { "@type": "LocalBusiness", "@id": "..." },
"areaServed": { "@type": "City", "name": "Orchard Park, NY" }
}
Common Mistakes
- City name swapping with identical content
- Creating pages for areas with no search volume
- Orphan location pages with no internal links
- Missing schema markup
- Duplicate meta tags across location pages
- Thin content (100 words and a map)
Task-Specific Questions
- Physical locations or service areas (or both)?
- How many pages needed?
- What service × location combinations matter most?
- What unique local content is available per area?
- Current site structure?
What to Do Next
| What You Found | Next Action | Skill |
|---|---|---|
| Pages created, need schema markup | Add LocalBusiness schema to each location page | local-schema |
| Pages live but not ranking | Run geogrid scans to measure impact, check GBP links to the right pages | geogrid-analysis, gbp-optimization |
| SAB business needs area pages differently | Follow SAB-specific page strategy | service-area-seo |
| Pages need backlinks to rank | Build local links pointing to the new pages | local-link-building |
| Managing pages for 10+ locations | Systematize template + unique content approach | multi-location-seo |
| Pages can be repurposed as GBP content | Turn page themes into weekly GBP posts | gbp-posts |
Default next step: After publishing pages, link them from GBP (website URL for the right location) and run a geogrid scan 2-4 weeks later to measure impact.
Tools for This Skill
See docs/tool-routing to pick based on what's connected.
- Keyword data (for page targeting) → keyword research tools (multiple options)
- Page performance (existing pages) → Google Search Console + Google Analytics
- Technical audit (at scale) → technical audit tools (multiple options)