Resumen
Este flujo de trabajo refreshes el precios y caracteristica datos on programmatic comparacion paginas cada Monday by pulling live SERP datos for cada competidor mentioned on el paginas. Comparacion paginas go stale fast porque competidor precios cambios frequently. Este pipeline asegura cada comparacion pagina muestra actual precios, actualizado caracteristica listas, y fresh metadata so search engines see consistentemente accurate contenido.
Desencadenador
Cron programar (cada Monday at 6:00 AM UTC)
Programación
Ejecuta cada Monday at 6:00 AM UTC
Pasos del flujo de trabajo
Cargar comparacion pagina inventory
Leer el lista of comparacion paginas y el competidores referenced on cada pagina.
Search for actual competidor datos
Consulta Scavio Google for cada competidor to encontrar actual precios, caracteristicas, y positioning.
Extraer precios de resultados de busqueda
Analizar precios informacion de organic fragmentos, knowledge panels, y fragmentos destacados.
Actualizar comparacion pagina datos files
Escribir el refreshed precios y caracteristica datos back to el comparacion pagina datos almacenar.
Log actualizacion resumen
Record cual paginas fueron actualizado, que precios changed, y marcar cualquier competidores con missing datos.
Implementacion en Python
import requests
import json
from pathlib import Path
from datetime import datetime
API_KEY = "your_scavio_api_key"
COMPARISON_PAGES = [
{
"slug": "scavio-vs-serpapi",
"competitors": [
{"name": "SerpAPI", "query": "SerpAPI pricing 2026"},
{"name": "Scavio", "query": "Scavio search API pricing 2026"},
],
},
{
"slug": "scavio-vs-dataforseo",
"competitors": [
{"name": "DataForSEO", "query": "DataForSEO pricing 2026"},
{"name": "Scavio", "query": "Scavio API pricing plans"},
],
},
]
def search_competitor(query: str) -> dict:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": query},
timeout=15,
)
res.raise_for_status()
data = res.json()
snippets = [r.get("snippet", "") for r in data.get("organic", [])[:5]]
kg = data.get("knowledge_graph") or {}
return {
"query": query,
"top_snippets": snippets,
"knowledge_graph": kg.get("description", ""),
"fetched_at": datetime.utcnow().isoformat(),
}
def run():
date = datetime.utcnow().strftime("%Y-%m-%d")
updates = []
for page in COMPARISON_PAGES:
page_data = {"slug": page["slug"], "competitors": []}
for comp in page["competitors"]:
result = search_competitor(comp["query"])
page_data["competitors"].append({
"name": comp["name"],
"serp_data": result,
})
updates.append(page_data)
output = {"date": date, "pages_refreshed": len(COMPARISON_PAGES), "updates": updates}
Path(f"comparison_refresh_{date}.json").write_text(json.dumps(output, indent=2))
print(f"Comparison page refresh {date}: {len(COMPARISON_PAGES)} pages updated")
for u in updates:
print(f" {u['slug']}: {len(u['competitors'])} competitors refreshed")
if __name__ == "__main__":
run()Implementacion en JavaScript
const API_KEY = "your_scavio_api_key";
const PAGES = [
{ slug: "scavio-vs-serpapi", competitors: [{ name: "SerpAPI", query: "SerpAPI pricing 2026" }, { name: "Scavio", query: "Scavio API pricing 2026" }] },
{ slug: "scavio-vs-dataforseo", competitors: [{ name: "DataForSEO", query: "DataForSEO pricing 2026" }] },
];
async function searchCompetitor(query) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
return { snippets: (data.organic ?? []).slice(0, 5).map((r) => r.snippet ?? ""), kg: data.knowledge_graph?.description ?? "" };
}
for (const page of PAGES) {
const results = [];
for (const comp of page.competitors) results.push(await searchCompetitor(comp.query));
console.log(`${page.slug}: ${page.competitors.length} competitors refreshed`);
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA