Aperçu
Les agents IA qui ne recherchent que sur Google manquent les prix des produits, les tendances vidéo, l'opinion de la communauté et le buzz social. Ce workflow connecte votre agent aux 6 plateformes Scavio via une seule clé API. L'agent décide quelle plateforme interroger en fonction de la question de l'utilisateur, récupère les données en direct et synthétise une réponse multi-plateforme. Une clé API, un compte de facturation, six sources de données.
Déclencheur
Piloté par événements, à chaque requête utilisateur adressée à l'agent.
Planification
Piloté par événements
Étapes du workflow
Classer la requête utilisateur
Déterminer quelles plateformes sont pertinentes. Les questions sur les produits ciblent Amazon et Walmart. Les questions d'opinion ciblent Reddit. Les questions de tendances ciblent TikTok et YouTube.
Aiguiller vers la bonne plateforme
Appeler l'API de recherche Scavio avec le paramètre de plateforme approprié. Utiliser le point de terminaison TikTok pour les requêtes TikTok.
Récupérer les données en direct
Exécuter la recherche et extraire les résultats structurés : prix, notes, vues, votes positifs ou mesures d'engagement.
Synthétiser une réponse multi-plateforme
Combiner les données de plusieurs plateformes en une réponse cohérente avec des citations et des points de données.
Mettre en cache pour l'efficacité des coûts
Mettre en cache les résultats pendant 1 heure pour éviter les appels API redondants sur des requêtes similaires répétées.
Implémentation Python
import requests, os, json
from datetime import datetime, timedelta
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
TH = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
CACHE = {}
CACHE_TTL = timedelta(hours=1)
PLATFORM_RULES = {
"price": ["amazon", "walmart"],
"review": ["amazon", "reddit"],
"trend": ["tiktok", "youtube"],
"how to": ["youtube", "google"],
"opinion": ["reddit"],
"buy": ["amazon", "walmart", "google-shopping"],
}
def classify_query(query: str) -> list:
q = query.lower()
platforms = set()
for keyword, plats in PLATFORM_RULES.items():
if keyword in q:
platforms.update(plats)
return list(platforms) if platforms else ["google"]
def search_platform(query: str, platform: str) -> dict:
cache_key = f"{platform}:{query}"
if cache_key in CACHE and CACHE[cache_key]["expires"] > datetime.now():
return CACHE[cache_key]["data"]
if platform == "tiktok":
resp = requests.post(
"https://api.scavio.dev/api/v1/tiktok/search",
headers=TH,
json={"query": query},
timeout=15,
)
else:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": query, "platform": platform},
timeout=15,
)
data = resp.json()
CACHE[cache_key] = {"data": data, "expires": datetime.now() + CACHE_TTL}
return data
def agent_search(query: str) -> dict:
platforms = classify_query(query)
results = {}
for p in platforms:
results[p] = search_platform(query, p)
return {"query": query, "platforms": platforms, "results": results}
answer = agent_search("best wireless earbuds price and reviews")
for p, data in answer["results"].items():
count = len(data.get("organic_results", data.get("results", [])))
print(f"{p}: {count} results")Implémentation JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const TH = {'Authorization': 'Bearer '+process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const CACHE = new Map();
const CACHE_TTL = 3600000; // 1 hour
const PLATFORM_RULES = {price:['amazon','walmart'], review:['amazon','reddit'], trend:['tiktok','youtube'], 'how to':['youtube','google'], opinion:['reddit'], buy:['amazon','walmart','google-shopping']};
function classifyQuery(query) {
const q = query.toLowerCase();
const platforms = new Set();
for (const [kw, plats] of Object.entries(PLATFORM_RULES)) {
if (q.includes(kw)) plats.forEach(p=>platforms.add(p));
}
return platforms.size ? [...platforms] : ['google'];
}
async function searchPlatform(query, platform) {
const key = platform+':'+query;
const cached = CACHE.get(key);
if (cached && cached.expires > Date.now()) return cached.data;
let r;
if (platform === 'tiktok') {
r = await fetch('https://api.scavio.dev/api/v1/tiktok/search', {method:'POST', headers:TH, body:JSON.stringify({query})});
} else {
r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query, platform})});
}
const data = await r.json();
CACHE.set(key, {data, expires:Date.now()+CACHE_TTL});
return data;
}
async function agentSearch(query) {
const platforms = classifyQuery(query);
const results = {};
for (const p of platforms) results[p] = await searchPlatform(query, p);
return {query, platforms, results};
}
const answer = await agentSearch('best wireless earbuds price and reviews');
for (const [p, data] of Object.entries(answer.results)) {
const count = (data.organic_results || data.results || []).length;
console.log(p+': '+count+' results');
}Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA
Amazon
Recherche de produits avec prix, notes et avis
YouTube
Recherche de vidéos avec transcriptions et métadonnées
Walmart
Recherche de produits avec données de prix et d'exécution
Communauté, publications et commentaires imbriqués de n'importe quel subreddit
TikTok
Découverte de vidéos tendance, créateurs et produits