Install
openclaw skills install @asale-ai/seo-localLocal SEO analysis covering Google Business Profile optimization, NAP consistency, citation health, review signals, local schema markup, location page quality, multi-location SEO, and industry-specific recommendations. Detects business type (brick-and-mortar, SAB, hybrid) and industry vertical. Use when user says "local SEO", "Google Business Profile", "GBP", "map pack", "local pack", "citations", "NAP consistency", "service area", or "multi-location".
openclaw skills install @asale-ai/seo-local| Metric | Value | Source |
|---|---|---|
| GBP signals share of local pack weight | 32% | Whitespark 2026 |
| Proximity share of ranking variance | 55.2% | Search Atlas ML study |
| Review signals share (up from 16%) | ~20% | Whitespark 2026 |
| Google searches seeking local info | 46% | Industry data |
| Mobile "near me" searches leading to visit in 24h | 76% | Google confirmed |
| ChatGPT/AI usage for local recommendations | 45% (up from 6%) | BrightLocal LCRS 2026 |
| ChatGPT local conversion rate | 15.9% | Seer Interactive |
| Google organic local conversion rate | 1.76% | Seer Interactive |
| Local pack ads growth (Jan 2025 to Jan 2026) | 1% to 22% | Sterling Sky |
Detect from page signals before analysis. This determines which checks apply.
areaServed in schema without address.streetAddressImpact on checks: SABs skip embedded map verification and physical address consistency. Brick-and-mortar gets full NAP + map checks.
Detect from page signals and GBP category patterns. Routes to industry-specific checks from ../seo/references/local-schema-types.md.
| Vertical | Detection Signals |
|---|---|
| Restaurant | /menu, menu items, reservations, cuisine types, food ordering, "dine-in", "takeout" |
| Healthcare | insurance accepted, patients, appointments, NPI, medical terms, "Dr.", HIPAA notice |
| Legal | attorney, lawyer, practice areas, bar admission, case results, "free consultation" |
| Home Services | service area, emergency service, "free estimate", licensed/insured/bonded, "24/7" |
| Real Estate | listings, MLS, properties for sale/rent, agent bio, brokerage, "open house" |
| Automotive | inventory, VIN, test drive, dealership, service department, "new/used/certified" |
If no vertical detected, use generic LocalBusiness analysis path.
Primary category is the single most important local pack factor (Whitespark #1, score: 193). Incorrect primary category is the #1 negative factor (score: 176).
Check for:
Scoring guide:
Review velocity matters more than total count. The 18-day rule (Sterling Sky): rankings cliff if no new reviews for 3 weeks.
Check for:
aggregateRating in schema (ratingValue, reviewCount, bestRating)Industry-specific:
Scoring guide:
Dedicated service pages = #1 local organic factor AND #2 AI visibility factor (Whitespark 2026).
Check for:
tel: link) and contact form above the foldMulti-location specific:
domain.com/locations/city-name/ (subdirectories consolidate link equity better, Bruce Clay: 50%+ traffic lift)@idScoring guide:
Citations declining for traditional pack rankings but 3 of top 5 AI visibility factors are citation-related (Whitespark 2026). Google's July 2025 documentation update removed "directories" from prominence definition.
Check for:
site:yelp.com "Business Name"site:bbb.org "Business Name"../seo/references/local-schema-types.md for per-vertical citation sourcesScoring guide:
Schema is NOT a direct ranking factor (John Mueller confirmed). But enables rich results (43% CTR increase, Webstix case study) and helps AI systems parse business information.
Check for:
name, address with PostalAddress sub-propertiesgeo (minimum 5 decimal places, Confirmed), openingHoursSpecification, telephone, url, priceRange (<100 chars), image, aggregateRating../seo/references/local-schema-types.md:
Restaurant not generic LocalBusinessLegalService not deprecated AttorneyAutoDealer not deprecated VehicleListingMedicalClinic/Hospital/Dentist not generic MedicalBusinessareaServed with named cities (recommended, not in Google's official list but Schema.org supported)@id, linked via branchOf to Organization on homepage../seo/references/local-schema-types.md):
Scoring guide:
Links declining for local pack but remain ~26% of local organic ranking (Whitespark 2026, #2 factor group). "Best of" list placements = #1 AI visibility citation factor.
Check for:
Scoring guide:
Do not duplicate seo-geo analysis. Provide local-specific AI context and recommend /seo geo <url> for full analysis.
Key local AI facts:
Recommendation: Run /seo geo <url> for comprehensive AI search visibility analysis including citability scoring, llms.txt check, and brand mention audit.
Load on-demand as needed:
../seo/references/local-seo-signals.md: Ranking factors, review benchmarks, citation tiers, GBP feature status, algorithm updates../seo/references/local-schema-types.md: LocalBusiness subtypes by industry, schema patterns, citation sources per verticalGenerate LOCAL-SEO-ANALYSIS-{domain}.md with:
geo coordinates with 5+ decimal precisiontel: link for click-to-callIf DataForSEO MCP tools are available, use business_data_business_listings_search for live GBP/business-listing data extraction and citation auditing across directories, and serp_organic_live_advanced for real-time local pack positions.
| Scenario | Action |
|---|---|
| URL unreachable (DNS failure, connection refused) | Report the error clearly. Do not guess site content. Suggest the user verify the URL and try again. |
| No local signals detected on page | Report that no local business indicators were found. Suggest the user confirm this is a local business and provide the GBP listing URL if available. |
| NAP not found in page HTML | Check schema and meta tags. If still absent, flag as Critical issue. Recommend adding visible NAP to footer and contact page. |
| Industry vertical unclear | Present the top two detected verticals with supporting signals. Ask the user to confirm before applying industry-specific recommendations. |
| Multi-location with 50+ location pages | Apply the quality gates from seo orchestrator: WARNING at 30+ pages (enforce 60%+ unique), HARD STOP at 50+ pages (require user justification before continuing). |
For prompt-guided local optimization, use /seo flow local <url>, FLOW's 11 local-stage prompts cover GBP optimization, meta descriptions, title tags, and structured local audit workflows.
# Retired Google Business Profile features still referenced on the site
seogeo gbp-lint https://example.com --json
seogeo gbp-lint page.html --file --json
# LocalBusiness JSON-LD
seogeo schema-generate local-business --name "Example Dental" \
--url https://example.com --business-type Dentist \
--street "42 Oak Ave" --city Denver --region CO --postal-code 80202 \
--country US --telephone "+1-303-555-0142" \
--latitude 39.7392 --longitude -104.9903 \
--hours "Mo-Th 08:00-17:00" --hours "Fr 08:00-13:00"
# Validate what is already on the page
seogeo schema-validate https://example.com --json
gbp-lint finds two specific things and exits non-zero on either:
*.business.site URLs (Medium). These are legacy GBP-hosted sites.
Verify whether the URL still resolves before advising a change.The lint deliberately does not flag generic "Message us" or "Chat" CTAs — those are normal. It only matches phrasings that name Google Business.