Resumen
Google CSE es closed to nuevo signups y el 'search entire web' caracteristica ends January 1, 2027. Teams aun on CSE necesita to migrate antes de ese deadline. Este flujo de trabajo audits your existing CSE integracion, maps CSE parametros to Scavio API campos, ejecuta parallel consultas to verify resultado parity, y switches sobre con zero downtime. El API formato es close suficiente ese mas CSE analisis code funciona con minimal cambios.
Desencadenador
One-time migration, activado manualmente cuando migration es programado.
Programación
One-time
Pasos del flujo de trabajo
Audit Existing CSE Usage
Catalog cada CSE consulta in your codebase: endpoints, parametros, resultado campos consumed, y diario call volume.
Mapear CSE Parameters to Scavio API
Mapear CSE cx, q, num, iniciar, gl, lr to Scavio consulta, country_code, y paginacion campos.
Parallel Test Consultas
Ejecutar 50 sample consultas contra ambos CSE y Scavio in parallel. Comparar resultado overlap y campo cobertura.
Actualizar Respuesta Parsing
Adjust JSON analisis de CSE elementos[] formato to Scavio organic_results[] formato. Most campos mapear directamente.
Switch Trafico y Monitorear
Route produccion trafico to Scavio. Keep CSE as un fallback for 48 horas, entonces decommission.
Implementacion en Python
import requests, os, json
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
# Map a CSE query to Scavio format
def cse_to_scavio(cse_params: dict) -> dict:
return {
"query": cse_params.get("q", ""),
"country_code": cse_params.get("gl", "us"),
}
# Run a Scavio search with the mapped params
def search_scavio(params: dict) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json=params,
timeout=15,
)
resp.raise_for_status()
return resp.json()
# Migrate a batch of CSE queries
def migration_test(cse_queries: list) -> list:
results = []
for cse_q in cse_queries:
scavio_params = cse_to_scavio(cse_q)
data = search_scavio(scavio_params)
organic = data.get("organic_results", [])
results.append({
"query": cse_q["q"],
"scavio_count": len(organic),
"has_knowledge_graph": "knowledge_graph" in data,
"has_ai_overview": "ai_overview" in data,
"top_result": organic[0].get("title", "") if organic else "N/A",
})
return results
test_queries = [
{"q": "best crm software 2026", "gl": "us"},
{"q": "kubernetes monitoring tools", "gl": "us"},
{"q": "react server components guide", "gl": "us"},
]
report = migration_test(test_queries)
for r in report:
print(f"{r['query']}: {r['scavio_count']} results, KG={r['has_knowledge_graph']}, AIO={r['has_ai_overview']}")Implementacion en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
function cseToScavio(cseParams) {
return {query: cseParams.q || '', country_code: cseParams.gl || 'us'};
}
async function searchScavio(params) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify(params)});
return r.json();
}
async function migrationTest(cseQueries) {
const results = [];
for (const cse of cseQueries) {
const params = cseToScavio(cse);
const data = await searchScavio(params);
const organic = data.organic_results || [];
results.push({query:cse.q, scavioCount:organic.length, hasKg:'knowledge_graph' in data, hasAio:'ai_overview' in data, topResult:organic[0]?.title || 'N/A'});
}
return results;
}
const testQueries = [
{q:'best crm software 2026', gl:'us'},
{q:'kubernetes monitoring tools', gl:'us'},
{q:'react server components guide', gl:'us'},
];
const report = await migrationTest(testQueries);
for (const r of report) console.log(r.query+': '+r.scavioCount+' results, KG='+r.hasKg+', AIO='+r.hasAio);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA