Aperçu
Google CSE est fermé aux nouvelles inscriptions et la fonctionnalité « rechercher sur tout le web » prend fin le 1er janvier 2027. Les équipes encore sur CSE doivent migrer avant cette échéance. Ce workflow audite votre intégration CSE existante, mappe les paramètres CSE vers les champs de l'API Scavio, exécute des requêtes parallèles pour vérifier la parité des résultats et bascule avec une interruption de service nulle. Le format de l'API est suffisamment proche pour que la plupart du code d'analyse CSE fonctionne avec des modifications minimes.
Déclencheur
Migration unique, déclenchée manuellement lorsque la migration est planifiée.
Planification
Unique
Étapes du workflow
Auditer l'utilisation existante de CSE
Cataloguez chaque requête CSE dans votre base de code : endpoints, paramètres, champs de résultats consommés et volume d'appels quotidien.
Mapper les paramètres CSE vers l'API Scavio
Mapper les paramètres CSE cx, q, num, start, gl, lr vers les champs Scavio query, country_code et pagination.
Requêtes de test parallèles
Exécutez 50 requêtes échantillons en parallèle contre CSE et Scavio. Comparez le chevauchement des résultats et la couverture des champs.
Mettre à jour l'analyse des réponses
Ajustez l'analyse JSON du format CSE items[] au format Scavio organic_results[]. La plupart des champs se mappent directement.
Basculer le trafic et surveiller
Dirigez le trafic de production vers Scavio. Gardez CSE comme solution de repli pendant 48 heures, puis décommissionnez.
Implémentation 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']}")Implémentation 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);Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA