概述
Google CSE 不再接受新注册,“搜索整个网络”功能将于 2027 年 1 月 1 日结束。仍在使用 CSE 的团队需要在该截止日期之前进行迁移。此工作流程审核您现有的 CSE 集成,将 CSE 参数映射到 Scavio API 字段,运行并行查询以验证结果奇偶性,并实现零停机时间切换。 API 格式足够接近,大多数 CSE 解析代码只需进行最少的更改即可工作。
触发器
一次性迁移,在安排迁移时手动触发。
计划
一度
工作流步骤
审核现有 CSE 使用情况
对代码库中的每个 CSE 查询进行编目:端点、参数、消耗的结果字段和每日调用量。
将 CSE 参数映射到 Scavio API
将 CSE cx、q、num、start、gl、lr 映射到 Scavio 查询、country_code 和分页字段。
并行测试查询
针对 CSE 和 Scavio 并行运行 50 个示例查询。比较结果重叠和字段覆盖范围。
更新响应解析
将 JSON 解析从 CSE items[] 格式调整为 Scavio Organic_results[] 格式。大多数字段直接映射。
切换流量并监控
将生产流量路由至 Scavio。将 CSE 作为后备措施保留 48 小时,然后停用。
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']}")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);使用的平台
包含知识图谱、PAA和AI概览的网页搜索