Reemplace Brave Search en un agente OpenClaw intercambiando la llamada HTTP desde el punto final de la API de Brave Search al punto final de la API de Scavio. La migración requiere cambiar la URL, cambiar del encabezado de clave Brave API al encabezado Scavio x-api-key y actualizar el analizador de respuestas para manejar la estructura JSON de Scavio. El intercambio demora menos de 10 minutos y le brinda a su agente acceso a Google, Amazon, YouTube, Reddit y Walmart a través del mismo punto final, mientras que Brave Search solo devuelve resultados web.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Un agente de OpenClaw existente que utiliza Brave Search
Guia paso a paso
Paso 1: Identificar llamadas de Brave Search
Encuentre y documente todas las llamadas a la API de Brave Search en su código de agente que necesitan migración.
import os, requests
# BEFORE: Brave Search API call
# resp = requests.get('https://api.search.brave.com/res/v1/web/search',
# headers={'X-Subscription-Token': os.environ['BRAVE_API_KEY']},
# params={'q': query})
# results = resp.json().get('web', {}).get('results', [])
# AFTER: Scavio API call
API_KEY = os.environ['SCAVIO_API_KEY']
def search(query: str, platform: str = 'google') -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': platform, 'query': query}, timeout=15)
return resp.json().get('organic_results', [])
results = search('test query')
print(f'Results: {len(results)}')Paso 2: Asignar campos de respuesta
Asigne los campos de respuesta de Brave Search a los campos de respuesta de Scavio para el analizador de su agente.
def brave_to_scavio(brave_result: dict) -> dict:
"""Map a Brave result to Scavio format for reference."""
# Brave fields -> Scavio fields:
# brave.title -> scavio.title (same)
# brave.url -> scavio.link
# brave.description -> scavio.snippet
# brave.age -> not directly available
# brave.extra_snippets -> not available
return {
'title': brave_result.get('title', ''),
'link': brave_result.get('url', ''),
'snippet': brave_result.get('description', ''),
}
def parse_scavio_results(results: list) -> list:
"""Parse Scavio results into agent-friendly format."""
parsed = []
for r in results:
parsed.append({
'title': r.get('title', ''),
'url': r.get('link', ''),
'snippet': r.get('snippet', ''),
'source': r.get('source', ''),
})
return parsed
results = search('best python frameworks 2026')
parsed = parse_scavio_results(results)
for p in parsed[:3]:
print(f"{p['title'][:50]}: {p['snippet'][:60]}")Paso 3: Actualizar la definición de la herramienta del agente
Reemplace la definición de la herramienta de búsqueda Brave en su agente con la herramienta de búsqueda Scavio.
class ScavioSearchTool:
"""Drop-in replacement for Brave Search tool in OpenClaw agents."""
def __init__(self):
self.api_key = os.environ['SCAVIO_API_KEY']
self.base_url = 'https://api.scavio.dev/api/v1/search'
def search(self, query: str, platform: str = 'google') -> list:
resp = requests.post(self.base_url,
headers={'x-api-key': self.api_key},
json={'platform': platform, 'query': query}, timeout=15)
resp.raise_for_status()
results = resp.json().get('organic_results', [])
return [{
'title': r.get('title', ''),
'url': r.get('link', ''),
'snippet': r.get('snippet', ''),
} for r in results[:10]]
def search_multi(self, query: str, platforms: list = None) -> dict:
platforms = platforms or ['google']
all_results = {}
for p in platforms:
all_results[p] = self.search(query, p)
return all_results
tool = ScavioSearchTool()
results = tool.search('test query')
print(f'Results: {len(results)}')Paso 4: Agregar capacidad multiplataforma
Amplíe el agente con una búsqueda específica de la plataforma que Brave no admitía.
def agent_search(query: str, intent: str = 'general') -> list:
"""Route search to the best platform based on query intent."""
tool = ScavioSearchTool()
platform_map = {
'general': 'google',
'product': 'amazon',
'video': 'youtube',
'community': 'reddit',
'shopping': 'walmart',
}
platform = platform_map.get(intent, 'google')
results = tool.search(query, platform)
return results
# Agent can now route queries:
for intent, query in [
('general', 'best CRM 2026'),
('product', 'wireless earbuds under 100'),
('community', 'best IDE for Python'),
]:
results = agent_search(query, intent)
print(f'[{intent}] {query}: {len(results)} results')Paso 5: Migración de prueba
Verifique que el agente migrado produzca resultados equivalentes o mejores que Brave Search.
def test_migration():
tool = ScavioSearchTool()
test_queries = [
'Python web frameworks comparison',
'how to deploy docker containers',
'best database for small projects',
]
for query in test_queries:
results = tool.search(query)
print(f'Query: {query}')
print(f' Results: {len(results)}')
if results:
print(f' Top: {results[0]["title"][:50]}')
print(f' URL: {results[0]["url"][:60]}')
print()
# Test multi-platform (not possible with Brave)
multi = tool.search_multi('best laptop 2026', ['google', 'amazon'])
for p, r in multi.items():
print(f'{p}: {len(r)} results')
print('\nMigration test passed')
test_migration()Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
# Drop-in Brave Search replacement:
def search(query, platform='google'):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': platform, 'query': query}).json()
return [{'title': r['title'], 'url': r.get('link', ''), 'snippet': r.get('snippet', '')}
for r in data.get('organic_results', [])[:5]]
print(search('test query'))Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
// Drop-in Brave Search replacement:
async function search(query, platform = 'google') {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({platform, query})
});
return ((await r.json()).organic_results || []).slice(0, 5)
.map(r => ({title: r.title, url: r.link, snippet: r.snippet}));
}
search('test query').then(console.log);Salida esperada
A fully migrated OpenClaw agent using Scavio instead of Brave Search, with multi-platform search capability and identical result parsing.