El problema
Las clasificaciones de SEO locales varían según la ubicación: una empresa ocupa el puesto número 1 a una milla pero el puesto 15 a tres millas de distancia. La verificación manual de clasificación requiere mucho tiempo y no puede capturar la variación geográfica. Las agencias necesitan un seguimiento de clasificación automatizado basado en cuadrículas para los informes de los clientes.
La solucion de Scavio
El cron diario consulta a Google en busca de palabras clave objetivo con parámetros de ubicación en una cuadrícula de coordenadas. Registre la posición comercial para cada punto de la cuadrícula. Genere datos de mapas de calor que muestren la fortaleza de la clasificación en el área de servicio.
Antes
Antes de la automatización, una agencia verificaba manualmente las clasificaciones de Google Maps para cinco palabras clave de clientes de tres ubicaciones. Total: 15 controles manuales por día, en 30 minutos. La cobertura fue escasa y no se detectaron variaciones de clasificación entre los vecindarios.
Después
Después de la automatización, 25 puntos de la cuadrícula x 5 palabras clave = 125 consultas diarias por cliente a $0,625/día ($18,75/mes). Heatmap muestra la clasificación exacta de cada punto de la cuadrícula. La agencia descubrió un cliente clasificado en el puesto número 2 en el centro de la ciudad pero en el puesto 12 en los suburbios del oeste, lo que llevó a una estrategia de contenido local dirigida que mejoró la clasificación suburbana en 6 posiciones en 8 semanas.
Para quien es
Agencias de SEO locales y empresas con múltiples ubicaciones que necesitan un seguimiento de clasificación de Google Maps automatizado y con reconocimiento de la ubicación para análisis competitivos e informes de clientes.
Beneficios clave
- La cuadrícula de 25 puntos cubre automáticamente toda el área de servicio
- Las instantáneas diarias rastrean las tendencias de clasificación por vecindario
- Seguimiento de la posición de la competencia para las mismas consultas
- Visualización de mapas de calor para informes de clientes
- 125 consultas/día por cliente a $0.625
Ejemplo en Python
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def track_local_rank(keyword: str, business_name: str, lat: float, lon: float) -> dict:
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': keyword,
'location': f'{lat},{lon}'}, timeout=10).json()
# Find business position in local results
local = r.get('local_results', [])
position = None
for i, result in enumerate(local):
if business_name.lower() in result.get('title', '').lower():
position = i + 1
break
return {'keyword': keyword, 'lat': lat, 'lon': lon,
'position': position, 'total_local': len(local)}
# Grid of 5 points across service area
grid = [(40.7128, -74.0060), (40.7200, -74.0000),
(40.7050, -74.0100), (40.7180, -73.9900), (40.7100, -74.0200)]
for lat, lon in grid:
result = track_local_rank('plumber near me', 'Joes Plumbing', lat, lon)
pos = result['position'] or 'not found'
print(f'({lat},{lon}): position {pos}')Ejemplo en JavaScript
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function trackLocalRank(keyword, businessName, lat, lon) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ platform: 'google', query: keyword, location: `${lat},${lon}` })
}).then(r => r.json());
const local = r.local_results || [];
const pos = local.findIndex(l => (l.title || '').toLowerCase().includes(businessName.toLowerCase()));
return { keyword, lat, lon, position: pos >= 0 ? pos + 1 : null };
}
const grid = [[40.7128, -74.0060], [40.7200, -74.0000]];
for (const [lat, lon] of grid) {
const r = await trackLocalRank('plumber near me', 'Joes Plumbing', lat, lon);
console.log(`(${lat},${lon}): position ${r.position || 'not found'}`);
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA