antigravity-seo-kit 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/agent.md +96 -0
- package/.agent/skills/seo/SKILL.md +153 -0
- package/.agent/skills/seo/references/cwv-thresholds.md +108 -0
- package/.agent/skills/seo/references/eeat-framework.md +214 -0
- package/.agent/skills/seo/references/local-schema-types.md +230 -0
- package/.agent/skills/seo/references/local-seo-signals.md +218 -0
- package/.agent/skills/seo/references/maps-api-endpoints.md +160 -0
- package/.agent/skills/seo/references/maps-free-apis.md +176 -0
- package/.agent/skills/seo/references/maps-gbp-checklist.md +150 -0
- package/.agent/skills/seo/references/maps-geo-grid.md +154 -0
- package/.agent/skills/seo/references/quality-gates.md +155 -0
- package/.agent/skills/seo/references/schema-types.md +118 -0
- package/.agent/skills/seo/schema/templates.json +213 -0
- package/.agent/skills/seo/scripts/analyze_visual.py +217 -0
- package/.agent/skills/seo/scripts/capture_screenshot.py +181 -0
- package/.agent/skills/seo/scripts/fetch_page.py +196 -0
- package/.agent/skills/seo/scripts/parse_html.py +201 -0
- package/.agent/skills/seo-audit/SKILL.md +278 -0
- package/.agent/skills/seo-competitor-pages/SKILL.md +212 -0
- package/.agent/skills/seo-content/SKILL.md +230 -0
- package/.agent/skills/seo-dataforseo/SKILL.md +418 -0
- package/.agent/skills/seo-geo/SKILL.md +305 -0
- package/.agent/skills/seo-google/SKILL.md +405 -0
- package/.agent/skills/seo-google/assets/templates/cwv-audit-report.md +48 -0
- package/.agent/skills/seo-google/assets/templates/gsc-performance-report.md +44 -0
- package/.agent/skills/seo-google/assets/templates/indexation-status-report.md +43 -0
- package/.agent/skills/seo-google/references/auth-setup.md +154 -0
- package/.agent/skills/seo-google/references/ga4-data-api.md +184 -0
- package/.agent/skills/seo-google/references/indexing-api.md +107 -0
- package/.agent/skills/seo-google/references/keyword-planner-api.md +66 -0
- package/.agent/skills/seo-google/references/nlp-api.md +55 -0
- package/.agent/skills/seo-google/references/pagespeed-crux-api.md +204 -0
- package/.agent/skills/seo-google/references/rate-limits-quotas.md +75 -0
- package/.agent/skills/seo-google/references/search-console-api.md +156 -0
- package/.agent/skills/seo-google/references/supplementary-apis.md +99 -0
- package/.agent/skills/seo-google/references/youtube-api.md +49 -0
- package/.agent/skills/seo-google/scripts/crux_history.py +321 -0
- package/.agent/skills/seo-google/scripts/ga4_report.py +478 -0
- package/.agent/skills/seo-google/scripts/google_auth.py +795 -0
- package/.agent/skills/seo-google/scripts/google_report.py +2273 -0
- package/.agent/skills/seo-google/scripts/gsc_inspect.py +340 -0
- package/.agent/skills/seo-google/scripts/gsc_query.py +378 -0
- package/.agent/skills/seo-google/scripts/indexing_notify.py +313 -0
- package/.agent/skills/seo-google/scripts/keyword_planner.py +297 -0
- package/.agent/skills/seo-google/scripts/nlp_analyze.py +309 -0
- package/.agent/skills/seo-google/scripts/pagespeed_check.py +649 -0
- package/.agent/skills/seo-google/scripts/youtube_search.py +355 -0
- package/.agent/skills/seo-hreflang/SKILL.md +192 -0
- package/.agent/skills/seo-image-gen/SKILL.md +211 -0
- package/.agent/skills/seo-image-gen/references/cost-tracking.md +47 -0
- package/.agent/skills/seo-image-gen/references/gemini-models.md +200 -0
- package/.agent/skills/seo-image-gen/references/mcp-tools.md +115 -0
- package/.agent/skills/seo-image-gen/references/post-processing.md +192 -0
- package/.agent/skills/seo-image-gen/references/presets.md +69 -0
- package/.agent/skills/seo-image-gen/references/prompt-engineering.md +411 -0
- package/.agent/skills/seo-image-gen/references/seo-image-presets.md +137 -0
- package/.agent/skills/seo-image-gen/scripts/batch.py +97 -0
- package/.agent/skills/seo-image-gen/scripts/cost_tracker.py +191 -0
- package/.agent/skills/seo-image-gen/scripts/edit.py +141 -0
- package/.agent/skills/seo-image-gen/scripts/generate.py +149 -0
- package/.agent/skills/seo-image-gen/scripts/presets.py +153 -0
- package/.agent/skills/seo-image-gen/scripts/setup_mcp.py +151 -0
- package/.agent/skills/seo-image-gen/scripts/validate_setup.py +133 -0
- package/.agent/skills/seo-images/SKILL.md +176 -0
- package/.agent/skills/seo-local/SKILL.md +381 -0
- package/.agent/skills/seo-maps/SKILL.md +328 -0
- package/.agent/skills/seo-page/SKILL.md +86 -0
- package/.agent/skills/seo-plan/SKILL.md +118 -0
- package/.agent/skills/seo-plan/assets/agency.md +175 -0
- package/.agent/skills/seo-plan/assets/ecommerce.md +167 -0
- package/.agent/skills/seo-plan/assets/generic.md +144 -0
- package/.agent/skills/seo-plan/assets/local-service.md +160 -0
- package/.agent/skills/seo-plan/assets/publisher.md +153 -0
- package/.agent/skills/seo-plan/assets/saas.md +135 -0
- package/.agent/skills/seo-programmatic/SKILL.md +171 -0
- package/.agent/skills/seo-schema/SKILL.md +223 -0
- package/.agent/skills/seo-sitemap/SKILL.md +180 -0
- package/.agent/skills/seo-technical/SKILL.md +211 -0
- package/.agent/workflows/seo-audit.md +17 -0
- package/.agent/workflows/seo-competitor-pages.md +12 -0
- package/.agent/workflows/seo-content.md +14 -0
- package/.agent/workflows/seo-geo.md +12 -0
- package/.agent/workflows/seo-google.md +12 -0
- package/.agent/workflows/seo-hreflang.md +12 -0
- package/.agent/workflows/seo-images.md +13 -0
- package/.agent/workflows/seo-local.md +12 -0
- package/.agent/workflows/seo-maps.md +11 -0
- package/.agent/workflows/seo-page.md +13 -0
- package/.agent/workflows/seo-plan.md +13 -0
- package/.agent/workflows/seo-programmatic.md +12 -0
- package/.agent/workflows/seo-schema.md +11 -0
- package/.agent/workflows/seo-sitemap.md +9 -0
- package/.agent/workflows/seo-technical.md +18 -0
- package/LICENSE +88 -0
- package/README.md +122 -0
- package/bin/cli.js +117 -0
- package/docs/ARCHITECTURE.md +218 -0
- package/docs/COMMANDS.md +184 -0
- package/docs/INSTALLATION.md +100 -0
- package/docs/MCP-INTEGRATION.md +153 -0
- package/docs/TROUBLESHOOTING.md +151 -0
- package/docs/superpowers/plans/2026-03-13-github-audit-fixes.md +511 -0
- package/extensions/banana/README.md +95 -0
- package/extensions/banana/docs/BANANA-SETUP.md +86 -0
- package/extensions/banana/install.sh +170 -0
- package/extensions/banana/references/cost-tracking.md +47 -0
- package/extensions/banana/references/gemini-models.md +200 -0
- package/extensions/banana/references/mcp-tools.md +115 -0
- package/extensions/banana/references/post-processing.md +192 -0
- package/extensions/banana/references/presets.md +69 -0
- package/extensions/banana/references/prompt-engineering.md +411 -0
- package/extensions/banana/references/seo-image-presets.md +137 -0
- package/extensions/banana/scripts/batch.py +97 -0
- package/extensions/banana/scripts/cost_tracker.py +191 -0
- package/extensions/banana/scripts/edit.py +141 -0
- package/extensions/banana/scripts/generate.py +149 -0
- package/extensions/banana/scripts/presets.py +153 -0
- package/extensions/banana/scripts/setup_mcp.py +151 -0
- package/extensions/banana/scripts/validate_setup.py +133 -0
- package/extensions/banana/uninstall.sh +43 -0
- package/extensions/dataforseo/README.md +169 -0
- package/extensions/dataforseo/docs/DATAFORSEO-SETUP.md +74 -0
- package/extensions/dataforseo/field-config.json +280 -0
- package/extensions/dataforseo/install.ps1 +110 -0
- package/extensions/dataforseo/install.sh +161 -0
- package/extensions/dataforseo/uninstall.ps1 +35 -0
- package/extensions/dataforseo/uninstall.sh +39 -0
- package/lib/api.js +190 -0
- package/lib/fingerprint.js +68 -0
- package/lib/installer.js +486 -0
- package/lib/utils.js +254 -0
- package/package.json +40 -0
- package/pyproject.toml +11 -0
- package/requirements-google.txt +15 -0
- package/requirements.txt +11 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
<!-- Updated: 2026-03-23 -->
|
|
2
|
+
# Local Schema Types & Industry-Specific Patterns (March 2026)
|
|
3
|
+
|
|
4
|
+
Schema is NOT a direct ranking factor (Confirmed: John Mueller, Gary Illyes). It indirectly impacts visibility through rich results (43% CTR increase, Webstix case study), better entity understanding, and AI search features.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Google-Supported LocalBusiness Subtypes
|
|
9
|
+
|
|
10
|
+
### Food & Dining
|
|
11
|
+
|
|
12
|
+
| Schema Type | Use For |
|
|
13
|
+
|-------------|---------|
|
|
14
|
+
| `Restaurant` | Full-service restaurants |
|
|
15
|
+
| `CafeOrCoffeeShop` | Coffee shops, cafes |
|
|
16
|
+
| `BarOrPub` | Bars, pubs, taverns |
|
|
17
|
+
| `Bakery` | Bakeries |
|
|
18
|
+
| `FastFoodRestaurant` | Fast food, quick service |
|
|
19
|
+
| `IceCreamShop` | Ice cream, frozen yogurt |
|
|
20
|
+
| `FoodEstablishment` | Generic food (avoid if specific subtype exists) |
|
|
21
|
+
|
|
22
|
+
### Healthcare
|
|
23
|
+
|
|
24
|
+
| Schema Type | Use For |
|
|
25
|
+
|-------------|---------|
|
|
26
|
+
| `MedicalClinic` | Clinics, urgent care (eligible for rich results) |
|
|
27
|
+
| `Hospital` | Hospitals (eligible for rich results) |
|
|
28
|
+
| `Dentist` | Dental offices (eligible for rich results) |
|
|
29
|
+
| `Physician` | Individual doctor pages (use with Person) |
|
|
30
|
+
| `Optician` | Eye care, optical shops |
|
|
31
|
+
| `Pharmacy` | Pharmacies |
|
|
32
|
+
| `MedicalBusiness` | Generic medical (avoid if specific subtype exists) |
|
|
33
|
+
|
|
34
|
+
### Legal
|
|
35
|
+
|
|
36
|
+
| Schema Type | Use For | Notes |
|
|
37
|
+
|-------------|---------|-------|
|
|
38
|
+
| `LegalService` | Law firms, legal practices | **Correct type** |
|
|
39
|
+
| ~~`Attorney`~~ | ~~Individual attorneys~~ | **DEPRECATED by Schema.org. Use `LegalService` + `Person`** |
|
|
40
|
+
|
|
41
|
+
### Home Services
|
|
42
|
+
|
|
43
|
+
| Schema Type | Use For |
|
|
44
|
+
|-------------|---------|
|
|
45
|
+
| `Plumber` | Plumbing services |
|
|
46
|
+
| `Electrician` | Electrical services |
|
|
47
|
+
| `HVACBusiness` | Heating, ventilation, AC |
|
|
48
|
+
| `RoofingContractor` | Roofing |
|
|
49
|
+
| `GeneralContractor` | General contracting |
|
|
50
|
+
| `HousePainter` | Painting services |
|
|
51
|
+
| `Locksmith` | Locksmith services |
|
|
52
|
+
| `MovingCompany` | Moving services |
|
|
53
|
+
| `HomeAndConstructionBusiness` | Generic (avoid if specific subtype exists) |
|
|
54
|
+
|
|
55
|
+
### Real Estate
|
|
56
|
+
|
|
57
|
+
| Schema Type | Use For | Notes |
|
|
58
|
+
|-------------|---------|-------|
|
|
59
|
+
| `RealEstateAgent` | Both agents AND brokerages | No `RealEstateBrokerage` type exists |
|
|
60
|
+
|
|
61
|
+
### Automotive
|
|
62
|
+
|
|
63
|
+
| Schema Type | Use For |
|
|
64
|
+
|-------------|---------|
|
|
65
|
+
| `AutoDealer` | Sales departments |
|
|
66
|
+
| `AutoRepair` | Service departments |
|
|
67
|
+
| `AutoPartsStore` | Parts departments |
|
|
68
|
+
|
|
69
|
+
### Other Common Local Types
|
|
70
|
+
|
|
71
|
+
`AnimalShelter`, `BeautySalon`, `ChildCare`, `DaySpa`, `DryCleaningOrLaundry`, `EmergencyService`, `EmploymentAgency`, `EntertainmentBusiness`, `FinancialService`, `FireStation`, `FurnitureStore`, `GasStation`, `GolfCourse`, `GovernmentOffice`, `HealthClub`, `Hotel`, `InsuranceAgency`, `Library`, `LodgingBusiness`, `NightClub`, `PetStore`, `PoliceStation`, `PostOffice`, `RecyclingCenter`, `ShoppingCenter`, `SkiResort`, `SportsActivityLocation`, `Store`, `TouristInformationCenter`, `TravelAgency`, `VeterinaryCare`
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Required vs Recommended Properties
|
|
76
|
+
|
|
77
|
+
Per Google Developers documentation (updated December 10, 2025, Confirmed).
|
|
78
|
+
|
|
79
|
+
### Required (Minimum)
|
|
80
|
+
|
|
81
|
+
| Property | Type | Notes |
|
|
82
|
+
|----------|------|-------|
|
|
83
|
+
| `name` | Text | Business name, must match GBP exactly |
|
|
84
|
+
| `address` | PostalAddress | With streetAddress, addressLocality, addressRegion, postalCode |
|
|
85
|
+
|
|
86
|
+
### Recommended
|
|
87
|
+
|
|
88
|
+
| Property | Type | Notes |
|
|
89
|
+
|----------|------|-------|
|
|
90
|
+
| `aggregateRating` | AggregateRating | Rating summary with reviewCount |
|
|
91
|
+
| `geo` | GeoCoordinates | **Minimum 5 decimal places** (Confirmed, ~1.1m accuracy) |
|
|
92
|
+
| `openingHoursSpecification` | OpeningHoursSpecification | Standard, late-night, 24h, seasonal |
|
|
93
|
+
| `telephone` | Text | Must match GBP and page NAP |
|
|
94
|
+
| `url` | URL | Canonical URL for this location |
|
|
95
|
+
| `priceRange` | Text | Under 100 characters |
|
|
96
|
+
| `image` | URL | Business photo |
|
|
97
|
+
| `review` | Review | Individual reviews |
|
|
98
|
+
| `department` | LocalBusiness | For nested departments (auto dealers) |
|
|
99
|
+
| `menu` | URL or Menu | Restaurants only |
|
|
100
|
+
| `servesCuisine` | Text | Restaurants only |
|
|
101
|
+
|
|
102
|
+
### SAB-Specific
|
|
103
|
+
|
|
104
|
+
| Property | Type | Notes |
|
|
105
|
+
|----------|------|-------|
|
|
106
|
+
| `areaServed` | Place/GeoShape | NOT in Google's official recommended list but supported by Schema.org. Industry-recommended for SABs. Use named cities with `sameAs` links to Wikipedia/Wikidata. |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Industry-Specific Schema Patterns
|
|
111
|
+
|
|
112
|
+
### Restaurant
|
|
113
|
+
```
|
|
114
|
+
Restaurant (or specific subtype)
|
|
115
|
+
+ Menu > MenuSection > MenuItem (name, price, nutrition, suitableForDiet)
|
|
116
|
+
+ ReserveAction (booking capabilities)
|
|
117
|
+
+ OrderAction (takeout/delivery)
|
|
118
|
+
+ servesCuisine, acceptsReservations
|
|
119
|
+
```
|
|
120
|
+
Note: Google Food Ordering (GFO) direct checkout discontinued June 2024. "Order Online" button now redirects to third-party platforms.
|
|
121
|
+
|
|
122
|
+
### Healthcare
|
|
123
|
+
```
|
|
124
|
+
MedicalClinic (or Hospital, Dentist)
|
|
125
|
+
+ Physician pages: Person + medicalSpecialty + hospitalAffiliation + hasCredential
|
|
126
|
+
+ MedicalSpecialty (helps match "hip replacement surgery" to relevant pages)
|
|
127
|
+
+ sameAs: link to NPI Registry entry and medical board page
|
|
128
|
+
```
|
|
129
|
+
**HIPAA constraint**: Cannot confirm/deny reviewer is a patient in review responses. Fine precedent: $30,000 (Manasa Health Center, 2023).
|
|
130
|
+
|
|
131
|
+
### Legal
|
|
132
|
+
```
|
|
133
|
+
LegalService (NOT Attorney -- deprecated)
|
|
134
|
+
+ Person on attorney bio pages: jobTitle, worksFor, alumniOf, hasCredential (bar admissions)
|
|
135
|
+
+ makesOffer > Service (one per practice area)
|
|
136
|
+
+ Practitioner GBP: unique phone per attorney, not sole lawyer at firm
|
|
137
|
+
```
|
|
138
|
+
Note: Reviews follow practitioner listing when attorney changes firms.
|
|
139
|
+
|
|
140
|
+
### Home Services
|
|
141
|
+
```
|
|
142
|
+
Specific subtype (Plumber, Electrician, etc.)
|
|
143
|
+
+ areaServed: named cities with sameAs to Wikipedia/Wikidata
|
|
144
|
+
+ Service on individual service pages, linked via provider
|
|
145
|
+
+ hasOfferCatalog for service listings
|
|
146
|
+
```
|
|
147
|
+
**SAB note**: Service area in GBP does NOT currently impact rankings -- rankings based on verification address (Sterling Sky, March 2025).
|
|
148
|
+
|
|
149
|
+
### Real Estate
|
|
150
|
+
```
|
|
151
|
+
RealEstateAgent (for both agent and brokerage)
|
|
152
|
+
+ Person on agent pages: memberOf (brokerage), credentials
|
|
153
|
+
+ RealEstateListing + SingleFamilyResidence/Apartment + Offer (pricing)
|
|
154
|
+
+ Event for open houses with organizing agent
|
|
155
|
+
```
|
|
156
|
+
Note: No `RealEstateBrokerage` type exists on Schema.org.
|
|
157
|
+
|
|
158
|
+
### Automotive
|
|
159
|
+
```
|
|
160
|
+
AutoDealer (sales)
|
|
161
|
+
+ Car/Vehicle: VIN, mileage, fuelType, vehicleTransmission
|
|
162
|
+
+ Offer: price, priceCurrency, availability
|
|
163
|
+
+ Separate GBP: AutoRepair (service), AutoPartsStore (parts)
|
|
164
|
+
```
|
|
165
|
+
**VehicleListing deprecated June 12, 2025** (Confirmed). Use Car + Offer instead. Feed-based Vehicle Listings via Google Merchant Center still functional.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Industry-Specific Citation Sources
|
|
170
|
+
|
|
171
|
+
### Restaurant
|
|
172
|
+
Yelp, TripAdvisor (1B+ reviews), OpenTable (DA + bookings), DoorDash, UberEats, Grubhub, Foursquare (powers Apple Maps, Uber)
|
|
173
|
+
|
|
174
|
+
### Healthcare
|
|
175
|
+
Healthgrades (50% of Americans who see a doctor visit), Zocdoc (booking + lead gen), WebMD physician directory (high DA), Vitals, Doximity (80% of US physicians), NPI Registry (entity verification source of truth), state medical board directories
|
|
176
|
+
|
|
177
|
+
### Legal
|
|
178
|
+
FindLaw (DA~91, dofollow), Martindale-Hubbell (DA~84, peer review since 1868), Avvo (1-10 ratings, auto-created from bar data), Justia (DA~70, free profiles), Super Lawyers (top 5%, selection-based), state bar directories (entity verification)
|
|
179
|
+
|
|
180
|
+
Note: Internet Brands (KKR) owns Avvo + Martindale + Lawyers.com + Nolo. Thomson Reuters owns FindLaw + Super Lawyers + LawInfo.
|
|
181
|
+
|
|
182
|
+
### Home Services
|
|
183
|
+
Thumbtack ($400M revenue 2024, integrations with ChatGPT/Alexa/Zillow), BBB, Nextdoor, Yelp. **Declining**: Angi (revenue -30% from 2022 peak), Porch (pivoted to insurance), Houzz (pivoted to SaaS)
|
|
184
|
+
|
|
185
|
+
### Real Estate
|
|
186
|
+
Zillow (44% of all RE search traffic, integrated into ChatGPT Oct 2025), Homes.com (#2, overtook Realtor.com, 100M monthly visitors), Realtor.com, Redfin (acquired by Rocket Companies Mar 2025), local MLS sites
|
|
187
|
+
|
|
188
|
+
### Automotive
|
|
189
|
+
Cars.com, AutoTrader, CarGurus, DealerRater (reviews syndicate to Cars.com + OEM sites, supports salesperson ratings), Edmunds, Kelley Blue Book (pricing authority), OEM manufacturer dealer locators (entity verification)
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Multi-Location Schema Pattern
|
|
194
|
+
|
|
195
|
+
```json
|
|
196
|
+
// Homepage: Organization with branchOf references
|
|
197
|
+
{
|
|
198
|
+
"@context": "https://schema.org",
|
|
199
|
+
"@type": "Organization",
|
|
200
|
+
"@id": "https://example.com/#org",
|
|
201
|
+
"name": "Brand Name",
|
|
202
|
+
"url": "https://example.com"
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Each location page: individual LocalBusiness
|
|
206
|
+
{
|
|
207
|
+
"@context": "https://schema.org",
|
|
208
|
+
"@type": "Dentist",
|
|
209
|
+
"@id": "https://example.com/locations/downtown/#location",
|
|
210
|
+
"name": "Brand Name - Downtown",
|
|
211
|
+
"branchOf": { "@id": "https://example.com/#org" },
|
|
212
|
+
"address": { ... },
|
|
213
|
+
"geo": { "latitude": "40.71234", "longitude": "-74.00567" },
|
|
214
|
+
"telephone": "+1-555-123-4567",
|
|
215
|
+
"openingHoursSpecification": [ ... ]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Use `@id` for unique identifiers per location. Subdirectory structure recommended: `domain.com/locations/city-name/` (subdirectory consolidates link equity better than subdomain, Bruce Clay study: 50%+ traffic lift).
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Deprecated/Invalid Local Schema
|
|
224
|
+
|
|
225
|
+
| Type | Status | Date | Use Instead |
|
|
226
|
+
|------|--------|------|-------------|
|
|
227
|
+
| `Attorney` | Deprecated by Schema.org | -- | `LegalService` + `Person` |
|
|
228
|
+
| `VehicleListing` | Rich results removed | June 12, 2025 | `Car` + `Offer` |
|
|
229
|
+
| `HowTo` | Rich results removed | September 2023 | None |
|
|
230
|
+
| `SpecialAnnouncement` | Deprecated | July 31, 2025 | None |
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
<!-- Updated: 2026-03-23 -->
|
|
2
|
+
# Local SEO Ranking Signals & Benchmarks (March 2026)
|
|
3
|
+
|
|
4
|
+
## Source Key
|
|
5
|
+
|
|
6
|
+
- **Confirmed**: Google official documentation or employee statements
|
|
7
|
+
- **Study**: Data-driven industry research from recognized firms
|
|
8
|
+
- **Consensus**: Practitioner agreement without controlled testing
|
|
9
|
+
- **Caution**: Single-source or unverified claims
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Whitespark 2026 Local Search Ranking Factors
|
|
14
|
+
|
|
15
|
+
Published November 6, 2025. 47 experts surveyed across 187 factors. (Study)
|
|
16
|
+
|
|
17
|
+
### Local Pack/Maps Factor Groups
|
|
18
|
+
|
|
19
|
+
| Factor Group | Weight | Trend |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| GBP Signals | **32%** | Stable (top group) |
|
|
22
|
+
| Review Signals | **~20%** | Up from ~16% in 2023 |
|
|
23
|
+
| On-Page Signals | ~15-19% | Slight decline |
|
|
24
|
+
| Link Signals | Declining | Continued multi-year drop |
|
|
25
|
+
| Behavioral/Engagement | Rising | Clicks, calls, direction requests |
|
|
26
|
+
| Citation Signals | Lower for Pack | But 3 of top 5 AI visibility factors are citation-related |
|
|
27
|
+
| Social Signals | New entry | First time measured |
|
|
28
|
+
| AI Search Signals | New category | Added for the first time |
|
|
29
|
+
|
|
30
|
+
### Top 15 Individual Local Pack Factors
|
|
31
|
+
|
|
32
|
+
1. Primary GBP category (score: 193)
|
|
33
|
+
2. Keywords in GBP business title (score: 181)
|
|
34
|
+
3. Proximity of address to search point (score: 176)
|
|
35
|
+
4. Verified GBP
|
|
36
|
+
5. Business open at time of search (Sterling Sky controlled study)
|
|
37
|
+
6. High numerical Google ratings
|
|
38
|
+
7. Quantity of native Google reviews
|
|
39
|
+
8. Additional GBP categories
|
|
40
|
+
9. Review recency/velocity
|
|
41
|
+
10. Dedicated service pages
|
|
42
|
+
11. Domain authority
|
|
43
|
+
12. NAP consistency
|
|
44
|
+
13. Spam listing removal
|
|
45
|
+
14. Quality backlinks
|
|
46
|
+
15. Review sentiment
|
|
47
|
+
|
|
48
|
+
### Top Negative Factors
|
|
49
|
+
|
|
50
|
+
1. Incorrect primary category (score: 176) -- single worst mistake
|
|
51
|
+
2. Duplicate profiles at same address (score: 142)
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Search Atlas ML Study (August 2025)
|
|
56
|
+
|
|
57
|
+
XGBoost regression model, explains 92-93% of variance. (Study)
|
|
58
|
+
|
|
59
|
+
| Factor | Variance Explained |
|
|
60
|
+
|--------|-------------------|
|
|
61
|
+
| Proximity | **55.2%** |
|
|
62
|
+
| Review Count | **19.2%** |
|
|
63
|
+
| Domain Power | 5.9% |
|
|
64
|
+
| Semantic Relevance in Reviews | 5.3% |
|
|
65
|
+
| All others | <5% each |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Review Benchmarks
|
|
70
|
+
|
|
71
|
+
### Sterling Sky Findings (2025, Study)
|
|
72
|
+
|
|
73
|
+
- **Magic 10 threshold**: Significant ranking boost at 10 reviews. 9-to-10 = noticeable increase. 10-to-11 = no similar bump.
|
|
74
|
+
- **18-Day Rule**: Rankings "fall off a cliff" if no new reviews for 3 weeks. Velocity > volume.
|
|
75
|
+
|
|
76
|
+
### BrightLocal LCRS 2026 (February 2026, Study)
|
|
77
|
+
|
|
78
|
+
| Metric | Value |
|
|
79
|
+
|--------|-------|
|
|
80
|
+
| Only care about reviews in last 3 months | 74% |
|
|
81
|
+
| "Always" read reviews | 41% (up from 29% in 2025) |
|
|
82
|
+
| Only use 4.5+ stars | 31% (up from 17% in 2025) |
|
|
83
|
+
| Only use 4+ stars | 68% (up from 55% in 2025) |
|
|
84
|
+
| Consumers use average review sites | 6 platforms |
|
|
85
|
+
|
|
86
|
+
### Review Platform Usage (BrightLocal 2026)
|
|
87
|
+
|
|
88
|
+
| Platform | Usage | Trend |
|
|
89
|
+
|----------|-------|-------|
|
|
90
|
+
| Google | 71% | Down from 83% in 2025 |
|
|
91
|
+
| Instagram | 37% | Rising |
|
|
92
|
+
| TikTok | 29% | Rising |
|
|
93
|
+
| Apple Maps | 27% | Up from 14% in 2025 |
|
|
94
|
+
|
|
95
|
+
### Enforcement
|
|
96
|
+
|
|
97
|
+
- Google blocked/removed **240M+ policy-violating reviews** in 2024 (Confirmed, 40% increase over 2023)
|
|
98
|
+
- Review deletion rates up **600%+** Jan-Jul 2025; 38% of deleted were 5-star (Study, GMBapi.com)
|
|
99
|
+
- FTC Consumer Review Rule effective Oct 21, 2024: penalties up to **$53,088/violation** (Confirmed, US law)
|
|
100
|
+
- **Review gating prohibited** by both Google (fake engagement policy) and FTC (Confirmed)
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Citation Source Tiers
|
|
105
|
+
|
|
106
|
+
### Tier 1 (Universal, All Industries)
|
|
107
|
+
|
|
108
|
+
| Source | Why It Matters |
|
|
109
|
+
|--------|---------------|
|
|
110
|
+
| Google Business Profile | Primary local signal source |
|
|
111
|
+
| Apple Business Connect | Usage nearly doubled, from 14% to 27% (BrightLocal 2026). 1B+ iPhone users |
|
|
112
|
+
| Bing Places | Overhauled Oct 2025. Powers ChatGPT, Copilot, Alexa. 900M queries/day |
|
|
113
|
+
| Facebook | Social + citation signal |
|
|
114
|
+
| Yelp | Still ranks on page 1 for many local queries |
|
|
115
|
+
|
|
116
|
+
### Tier 2 (Broad Directories)
|
|
117
|
+
|
|
118
|
+
BBB, YellowPages, Manta, Superpages, Foursquare, Nextdoor
|
|
119
|
+
|
|
120
|
+
### Tier 3 (Data Aggregators)
|
|
121
|
+
|
|
122
|
+
| Aggregator | Partnerships |
|
|
123
|
+
|-----------|-------------|
|
|
124
|
+
| Data Axle (formerly Infogroup) | Google, Bing, Apple |
|
|
125
|
+
| Foursquare | Merged with Factual. Powers Uber, Nextdoor, Yahoo, ChatGPT. 500M+ devices |
|
|
126
|
+
| Neustar/TransUnion Digital | 80+ platform partnerships including Bing, Apple |
|
|
127
|
+
|
|
128
|
+
### Industry-specific directories: see `local-schema-types.md`
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## GBP Feature Status (March 2026)
|
|
133
|
+
|
|
134
|
+
### Deprecated/Removed
|
|
135
|
+
|
|
136
|
+
| Feature | Date | Replacement |
|
|
137
|
+
|---------|------|------------|
|
|
138
|
+
| Q&A section | Dec 3, 2025 | Ask Maps (Gemini AI) |
|
|
139
|
+
| GBP Messaging/Chat | Removed | None |
|
|
140
|
+
| Call History/Tracking | Jul 31, 2024 | None |
|
|
141
|
+
| GBP-hosted websites | Discontinued | Redirect to social/website |
|
|
142
|
+
| School reviews/ratings | Apr 30, 2025 | None |
|
|
143
|
+
|
|
144
|
+
### Active Features
|
|
145
|
+
|
|
146
|
+
Posts (with scheduling), Services menu, Attributes (including identity: Women-led, Eco-friendly), Photos/Video, Local Lists (Local Gems, Trending, Top List), AI-generated "Suggest Description", Google Verified badge (replaced Guaranteed/Screened Oct 2025)
|
|
147
|
+
|
|
148
|
+
### Key GBP Insights
|
|
149
|
+
|
|
150
|
+
- **Posts**: No direct ranking impact (WebFX empirical testing). Can trigger Post Justifications. (Study)
|
|
151
|
+
- **Photos**: "Likely a ranking benefit adding some vs none, but not continued benefit adding more" (WebFX). Geotagging has NO impact. 45% more direction requests with photos. (Study/Confirmed mix)
|
|
152
|
+
- **Attributes**: Identity attributes have minor, targeted impact for attribute-specific searches only (WebFX/Sterling Sky). General attributes are filter/informational, NOT direct ranking factors. (Study)
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Algorithm Updates Affecting Local (2025-2026)
|
|
157
|
+
|
|
158
|
+
| Update | Date | Impact | Source |
|
|
159
|
+
|--------|------|--------|--------|
|
|
160
|
+
| March 2025 Core | Mar 13-27 | Emphasized E-E-A-T, penalized thin/AI content | Confirmed |
|
|
161
|
+
| June 2025 Core | Jun-Jul 17 | General quality focus | Confirmed |
|
|
162
|
+
| August 2025 Spam | Aug 26-Sep 22 | Targeted keyword stuffing, fake reviews, PBNs. Local Pack often stable | Confirmed |
|
|
163
|
+
| December 2025 Core | Dec 11-29 | Enhanced E-E-A-T, behavioral signal weighting | Confirmed |
|
|
164
|
+
| February 2026 Discover Core | Feb 5-27 | Discover-only; favored local expertise | Confirmed |
|
|
165
|
+
| "Diversity Update" | 2025 | Harder to rank in both map pack AND organic simultaneously | Study (Sterling Sky) |
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Voice Search & Assistants
|
|
170
|
+
|
|
171
|
+
- 58% of voice searches are for local business information (Study, BusinessDasher)
|
|
172
|
+
- Voice queries typically 4-7 words, phrased as complete questions (Consensus)
|
|
173
|
+
- 80%+ of Google Assistant voice answers come from top 3 search results (Study)
|
|
174
|
+
|
|
175
|
+
| Voice Assistant | Primary Data Source |
|
|
176
|
+
|-----------------|-------------------|
|
|
177
|
+
| Google Assistant | GBP (transitioning to Gemini) |
|
|
178
|
+
| Siri (Apple) | Apple Business Connect + Yelp |
|
|
179
|
+
| Alexa (Amazon) | Bing Places + Yelp + aggregators |
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## AI Search Impact on Local
|
|
184
|
+
|
|
185
|
+
| Metric | Value | Source |
|
|
186
|
+
|--------|-------|--------|
|
|
187
|
+
| ChatGPT/AI for local recommendations | 45% of users (up from 6%) | BrightLocal LCRS 2026 |
|
|
188
|
+
| ChatGPT conversion rate | 15.9% | Seer Interactive |
|
|
189
|
+
| Google organic conversion rate | 1.76% | Seer Interactive |
|
|
190
|
+
| AI Overviews on local searches | Up to 68% | Whitespark Q2 2025 |
|
|
191
|
+
| AI Overview CTR reduction for pos 1 | -58% | Ahrefs, Feb 2026 |
|
|
192
|
+
| Brand cited in AIO = organic CTR boost | +35% | Seer Interactive |
|
|
193
|
+
| ChatGPT traffic vs Google for local | ~2% | Sterling Sky, Feb 2026 |
|
|
194
|
+
| Top 5 AI visibility factors: 3 are citation-related | -- | Whitespark 2026 |
|
|
195
|
+
|
|
196
|
+
**ChatGPT sources**: Bing web index (primary), Yelp, TripAdvisor, BBB, Reddit. Does NOT access GBP directly. (Study, Search Engine Land)
|
|
197
|
+
|
|
198
|
+
**Perplexity sources**: Authority-first. 40% more from high-authority sites. Averages 21.87 citations per question. (Study, Qwairy)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Local Pack Structure
|
|
203
|
+
|
|
204
|
+
- Standard: **3 results** (universal)
|
|
205
|
+
- New: Curated Local Lists (Local Gems, Trending) around position 4 (SOCi, Nov 2025)
|
|
206
|
+
- AI-powered local packs (mobile US): Only 1-2 businesses, 32% fewer businesses shown (Sterling Sky)
|
|
207
|
+
- Local pack ads grew from ~1% to **22%** of tracked mobile keywords in 12 months (Sterling Sky/Places Scout)
|
|
208
|
+
- Zero-click rate for local-intent searches: up to **78%** on mobile (Similarweb)
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Proximity & Search Behavior
|
|
213
|
+
|
|
214
|
+
- 46% of all Google searches seek local information (Study)
|
|
215
|
+
- 76% of mobile "near me" searches lead to visit within 24 hours (Confirmed, Google)
|
|
216
|
+
- 900% increase in "near me" searches over two years (Confirmed/Study, Google)
|
|
217
|
+
- Proximity varies: urban 1-2 miles, rural 5-10+ miles, specialty/niche = wider (Consensus)
|
|
218
|
+
- Google uses dynamic weighting per query: "emergency plumber near me" = proximity-dominant; "best plastic surgeon" = prominence-dominant (Consensus)
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<!-- Updated: 2026-03-23 -->
|
|
2
|
+
# DataForSEO Maps & Business Data API Endpoints
|
|
3
|
+
|
|
4
|
+
## Source Key
|
|
5
|
+
|
|
6
|
+
- **Docs**: docs.dataforseo.com (official API documentation)
|
|
7
|
+
- **Pricing**: dataforseo.com/pricing (official pricing pages)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Authentication & Limits
|
|
12
|
+
|
|
13
|
+
- HTTP Basic Auth (login:password)
|
|
14
|
+
- Rate limit: **2,000 API calls/minute** across all endpoints
|
|
15
|
+
- Each POST supports up to **100 tasks** in a single request
|
|
16
|
+
- Minimum deposit: $50. $1 free trial credit. Credits never expire.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Google Maps SERP API (Geo-Grid Backbone)
|
|
21
|
+
|
|
22
|
+
**Endpoint:** `POST https://api.dataforseo.com/v3/serp/google/maps/live/advanced`
|
|
23
|
+
**Pricing source:** https://dataforseo.com/pricing/serp-api
|
|
24
|
+
|
|
25
|
+
### Request Parameters
|
|
26
|
+
|
|
27
|
+
| Parameter | Required | Description |
|
|
28
|
+
|-----------|----------|-------------|
|
|
29
|
+
| `keyword` | Yes | Search query (e.g., "dentist") |
|
|
30
|
+
| `location_name` | No | Named location (e.g., "Austin,Texas,United States") |
|
|
31
|
+
| `location_code` | No | DataForSEO location code (e.g., 1026339 for Austin) |
|
|
32
|
+
| `location_coordinate` | No | `"latitude,longitude,zoom"` (max 7 decimals, zoom 3z-21z) |
|
|
33
|
+
| `language_code` | No | Default: "en" |
|
|
34
|
+
| `device` | No | "desktop" or "mobile" |
|
|
35
|
+
| `depth` | No | Number of results to return |
|
|
36
|
+
|
|
37
|
+
**Critical for geo-grid:** Use `location_coordinate` to simulate searches from specific GPS points. Format: `"40.7128,-74.0060,15z"`.
|
|
38
|
+
|
|
39
|
+
### Response Fields (per business item)
|
|
40
|
+
|
|
41
|
+
`cid`, `place_id`, `feature_id`, `title`, `domain`, `url`, `category`, `additional_categories`, `address`, `phone` (via `contact_info` array), `rating.value`, `rating.votes_count`, `rating.rating_distribution` (1-5 star breakdown), `price_level`, `attributes` (grouped: accessibility, payments, children), `work_time` (per-day timetable + `current_status`), `popular_times` (hourly by day), `latitude`, `longitude`, `local_business_links` (booking, menu, order URLs)
|
|
42
|
+
|
|
43
|
+
### Pricing
|
|
44
|
+
|
|
45
|
+
| Method | Cost per task | Turnaround |
|
|
46
|
+
|--------|--------------|------------|
|
|
47
|
+
| Standard | $0.0006 (100 desktop / 20 mobile results) | Up to 5 min |
|
|
48
|
+
| Priority | $0.0012 | Up to 1 min |
|
|
49
|
+
| **Live** | **$0.002** | Up to 6 sec |
|
|
50
|
+
|
|
51
|
+
Search operators in keyword multiply cost by 5x.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Google My Business Info API (Single Business Deep-Dive)
|
|
56
|
+
|
|
57
|
+
**Endpoint:** `POST https://api.dataforseo.com/v3/business_data/google/my_business_info/live`
|
|
58
|
+
**Pricing source:** https://dataforseo.com/pricing/business-data
|
|
59
|
+
|
|
60
|
+
### Input Options
|
|
61
|
+
|
|
62
|
+
- `keyword`: Business name + location (e.g., "Starbucks Austin TX")
|
|
63
|
+
- `"cid:XXXX"`: Direct CID lookup
|
|
64
|
+
- `"place_id:XXXX"`: Direct Place ID lookup
|
|
65
|
+
|
|
66
|
+
### Response Fields
|
|
67
|
+
|
|
68
|
+
Full profile: `title`, `description`, `category`, `additional_categories`, `category_ids`, `attributes` (available + unavailable, grouped by type), `contact_info` (phone array), `domain`, `url`, `work_hours` (per-day with open/close times), `popular_times`, `cid`, `place_id`, `rating` (with distribution), `address_info` (full breakdown), `latitude`/`longitude`, `photos_count`, `main_image`
|
|
69
|
+
|
|
70
|
+
**Cost:** $0.0015 per profile (standard queue)
|
|
71
|
+
|
|
72
|
+
**Use case:** Deep-dive on the TARGET business. Maps SERP for competitor discovery.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Google Reviews API (Sentiment & Velocity)
|
|
77
|
+
|
|
78
|
+
**Endpoint:** `POST https://api.dataforseo.com/v3/business_data/google/reviews/task_post`
|
|
79
|
+
**Pricing source:** https://dataforseo.com/pricing/business-data
|
|
80
|
+
|
|
81
|
+
### Parameters
|
|
82
|
+
|
|
83
|
+
| Parameter | Description |
|
|
84
|
+
|-----------|-------------|
|
|
85
|
+
| `keyword` | Business name + location (or CID/place_id) |
|
|
86
|
+
| `depth` | Number of reviews to retrieve |
|
|
87
|
+
| `sort_by` | `"highest_rating"`, `"lowest_rating"`, `"most_relevant"`, `"newest"` |
|
|
88
|
+
|
|
89
|
+
### Response Fields (per review)
|
|
90
|
+
|
|
91
|
+
`review_text`, `original_review_text`, `time_ago`, `timestamp`, `rating.value`, `review_id`, `profile_name`, `profile_url`, `profile_image_url`, `owner_answer` (text + timestamp), `review_images`
|
|
92
|
+
|
|
93
|
+
### Pricing
|
|
94
|
+
|
|
95
|
+
| Method | Input Type | Cost |
|
|
96
|
+
|--------|-----------|------|
|
|
97
|
+
| Standard (per 10 reviews) | keyword | $0.003 |
|
|
98
|
+
| Extended (per 20 reviews) | keyword | $0.003 |
|
|
99
|
+
| Extended (per 20 reviews) | place_id/CID | **$0.00075** |
|
|
100
|
+
|
|
101
|
+
**Optimization:** Always use `place_id` or `cid` input (4x cheaper than keyword).
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Google Q&A API
|
|
106
|
+
|
|
107
|
+
**Endpoint:** `POST https://api.dataforseo.com/v3/business_data/google/questions_and_answers/live`
|
|
108
|
+
|
|
109
|
+
Returns questions, answers, upvotes, dates, answer sources. Live and standard methods available.
|
|
110
|
+
|
|
111
|
+
**Use case:** Identify unanswered questions, FAQ gap analysis.
|
|
112
|
+
|
|
113
|
+
**Note:** Google deprecated GBP Q&A in Dec 2025 (replaced by Ask Maps Gemini AI). This endpoint returns historical data.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Business Listings Search (Pre-Indexed Database)
|
|
118
|
+
|
|
119
|
+
**Endpoint:** `POST https://api.dataforseo.com/v3/business_data/business_listings/search/live`
|
|
120
|
+
|
|
121
|
+
Queries DataForSEO's pre-indexed database (not live Google). Faster for bulk category-based queries. Up to 700+ results per query.
|
|
122
|
+
|
|
123
|
+
**Categories Aggregation:** `/v3/business_data/business_listings/categories_aggregation/live` provides category taxonomy.
|
|
124
|
+
|
|
125
|
+
**MCP tool name:** `business_data_business_listings_search`
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Cross-Platform Review APIs
|
|
130
|
+
|
|
131
|
+
### Tripadvisor
|
|
132
|
+
|
|
133
|
+
- Search: `/v3/business_data/tripadvisor/search/task_post`
|
|
134
|
+
- Reviews: `/v3/business_data/tripadvisor/reviews/task_post`
|
|
135
|
+
- Billed per 30 reviews. Standard method only.
|
|
136
|
+
|
|
137
|
+
### Trustpilot
|
|
138
|
+
|
|
139
|
+
- Search: `/v3/business_data/trustpilot/search/task_post`
|
|
140
|
+
- Reviews: `/v3/business_data/trustpilot/reviews/task_post`
|
|
141
|
+
- ~$0.00075/task. Standard method only.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Cost Estimation Table
|
|
146
|
+
|
|
147
|
+
| Operation | API Calls | Est. Cost (Live) |
|
|
148
|
+
|-----------|-----------|-----------------|
|
|
149
|
+
| 7x7 geo-grid, 1 keyword | 49 | $0.098 |
|
|
150
|
+
| 7x7 geo-grid, 3 keywords | 147 | $0.294 |
|
|
151
|
+
| 3x3 geo-grid, 1 keyword | 9 | $0.018 |
|
|
152
|
+
| Target business profile | 1 | $0.0015 |
|
|
153
|
+
| 100 reviews (via place_id) | 5 | $0.00375 |
|
|
154
|
+
| 20 competitor profiles | 20 | $0.03 |
|
|
155
|
+
| GBP posts audit | 1 | ~$0.002 |
|
|
156
|
+
| Q&A retrieval | 1 | ~$0.002 |
|
|
157
|
+
| **Full audit (1-keyword grid)** | **~73** | **~$0.13** |
|
|
158
|
+
| **Full audit (3-keyword grid)** | **~171** | **~$0.33** |
|
|
159
|
+
|
|
160
|
+
**Formula:** `grid_size^2 x keywords x $0.002` (live) or `x $0.0006` (standard)
|