El problema
Precio de las herramientas de seguimiento de clasificación por palabra clave al mes. Con más de 4000 palabras clave, la factura supera los 200 dólares al mes y las comprobaciones en tiempo real son innecesarias cuando las clasificaciones solo cambian a diario. Los equipos pagan de más por resultados instantáneos que revisan a la mañana siguiente de todos modos.
La solucion de Scavio
Ponga en cola todos los pares de ubicación-palabra clave en un trabajo por lotes que se ejecuta durante la noche a través de cron. Scavio devuelve datos de clasificación estructurados a 0,005 dólares por consulta, por lo que 4.000 palabras clave cuestan 20 dólares por noche. Los resultados llegan a una base de datos o una hoja antes de que llegue el equipo.
Antes
Pagar más de $200 al mes por una GUI de seguimiento de clasificación que verifica las palabras clave en tiempo real, pero nadie mira los datos hasta la mañana.
Después
Un trabajo cron comprueba 4.000 palabras clave durante la noche por 20 dólares. Los resultados están en el tablero antes de las 8 a.m. El costo mensual se redujo de $200+ a $20.
Para quien es
Equipos y agencias de SEO que rastrean miles de palabras clave y desean reducir los costos de seguimiento de clasificación entre un 80 y un 90 %.
Beneficios clave
- 4.000 palabras clave comprobadas durante la noche por 20 dólares
- Sin impuesto GUI ni precio por asiento
- Resultados listos antes del stand-up de la mañana
- Escala linealmente: 10.000 palabras clave = 50 USD/noche
Ejemplo en Python
import requests, json, time, os
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
KEYWORDS = json.load(open("keywords.json")) # [{"kw": "...", "loc": "us"}, ...]
def check_rank(keyword: str, country: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
json={"query": keyword, "country_code": country},
timeout=15,
)
resp.raise_for_status()
data = resp.json()
return {
"keyword": keyword,
"country": country,
"date": str(date.today()),
"organic": [
{"position": r["position"], "url": r.get("link", ""), "title": r.get("title", "")}
for r in data.get("organic_results", [])[:10]
],
}
results = []
for item in KEYWORDS:
results.append(check_rank(item["kw"], item["loc"]))
time.sleep(0.2)
with open(f"ranks_{date.today()}.json", "w") as f:
json.dump(results, f, indent=2)
print(f"Checked {len(results)} keywords")Ejemplo en JavaScript
const fs = require('fs');
const KEYWORDS = JSON.parse(fs.readFileSync('keywords.json','utf8'));
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function checkRank(kw, cc) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:kw, country_code:cc})});
const d = await r.json();
return {keyword:kw, country:cc, date:new Date().toISOString().slice(0,10), organic:(d.organic_results||[]).slice(0,10).map(r=>({position:r.position,url:r.link,title:r.title}))};
}
(async()=>{const results=[];for(const k of KEYWORDS){results.push(await checkRank(k.kw,k.loc));await new Promise(r=>setTimeout(r,200));}fs.writeFileSync('ranks.json',JSON.stringify(results,null,2));console.log(results.length+' keywords checked');})();Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA