No puedes consultar directamente y barato a ChatGPT, Perplexity y Gemini por 'mejor [tu categoría]' a escala y, aunque pudieras, se contradicen a lo bestia. Una prueba en Reddit pasó los mismos 50 prompts de 'mejor herramienta' por los tres y descubrió que nombraban la misma marca solo el 21% de las veces. Así que mide las entradas en lugar de las salidas. Estos asistentes fundamentan sus respuestas en la SERP en vivo y en hilos de comunidad de alta señal (Reddit sobre todo). Si rastreas qué fuentes posicionan y son citadas para tus consultas que dan dinero, obtienes un proxy repetible y barato de tu visibilidad en las recomendaciones de IA. Esta es la auditoría de recomendación de IA de 4 señales de Scavio: presencia orgánica en la SERP, cobertura en People-Also-Ask, coincidencia de entidad en el knowledge graph y cuota de menciones en Reddit.
Requisitos previos
- Una API key de Scavio (50 créditos gratis al registrarte)
- Python 3.9+ o Node 18+
- Una lista de 10-20 consultas de 'mejor [categoría]' y 'a quién contrato para X' que tus compradores hacen de verdad
Guia paso a paso
Paso 1: Enumera las consultas que una IA desplegaría
Los asistentes expanden una pregunta en muchas subconsultas. Escribe la consulta principal ('best serp api') más las derivadas que generaría un modelo: 'cheapest serp api', 'serp api for rag', 'serpapi alternative'. Estas son las que vas a puntuar.
queries = [
"best serp api for ai agents",
"cheapest web search api 2026",
"serpapi alternative",
"serp api for rag pipeline",
]Paso 2: Saca la SERP completa de cada consulta (2 créditos cada una)
Pon light_request:false para que una llamada devuelva organic_results, related_questions (People Also Ask), knowledge_graph y related_searches. Esos bloques son el conjunto de fuentes del que beben los asistentes de IA.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
def serp(q):
return requests.post("https://api.scavio.dev/api/v2/google",
headers=H, json={"query": q, "light_request": False}).json()Paso 3: Puntúa las 4 señales de tu marca
Para cada consulta, comprueba: (1) si tu dominio aparece en organic_results, (2) si sales en alguna respuesta de related_questions, (3) si el knowledge_graph te nombra, (4) si te mencionan en los hilos de Reddit que posicionan. Las señales 1-3 vienen de la llamada a la SERP; la señal 4 viene de una búsqueda en Reddit.
def score_brand(q, brand, domain):
s = serp(q)
organic = any(domain in r.get("link", "") for r in s.get("organic_results", []))
paa = any(brand.lower() in (x.get("question","") + x.get("answer","")).lower()
for x in s.get("related_questions", []))
kg = brand.lower() in str(s.get("knowledge_graph", {})).lower()
return {"query": q, "organic": organic, "paa": paa, "knowledge_graph": kg}Paso 4: Añade la señal de citas de Reddit
Los asistentes se apoyan en Reddit para las respuestas de 'mejor herramienta'. Busca en Reddit la misma consulta y comprueba si nombran tu marca en los mejores hilos. La presencia en Reddit es un indicador adelantado de las citas en respuestas de IA para ese mismo tema.
def reddit_mention(q, brand):
r = requests.post("https://api.scavio.dev/api/v1/reddit/search",
headers=H, json={"query": q, "sort": "top"}).json()
return sum(brand.lower() in p.get("title","").lower() for p in r.get("posts", []))Paso 5: Resúmelo en una puntuación de visibilidad semanal
Ejecuta la auditoría de forma programada y guarda los cuatro booleanos por consulta. Tu puntuación es la proporción de consultas en las que cumples cada señal. Sigue la variación semana a semana; un aumento de la cuota en Reddit y en orgánico precede al aumento de menciones en respuestas de IA.
rows = [ {**score_brand(q, "Scavio", "scavio.dev"),
"reddit": reddit_mention(q, "Scavio")} for q in queries ]
hit = lambda k: round(100 * sum(bool(r[k]) for r in rows) / len(rows))
print("organic %:", hit("organic"), " PAA %:", hit("paa"),
" KG %:", hit("knowledge_graph"), " reddit hits:", sum(r["reddit"] for r in rows))Ejemplo en Python
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
def audit(query, brand, domain):
s = requests.post("https://api.scavio.dev/api/v2/google",
headers=H, json={"query": query, "light_request": False}).json()
r = requests.post("https://api.scavio.dev/api/v1/reddit/search",
headers=H, json={"query": query, "sort": "top"}).json()
return {
"query": query,
"organic": any(domain in x.get("link","") for x in s.get("organic_results", [])),
"knowledge_graph": brand.lower() in str(s.get("knowledge_graph", {})).lower(),
"reddit_hits": sum(brand.lower() in p.get("title","").lower() for p in r.get("posts", [])),
}
print(audit("best serp api for ai agents", "Scavio", "scavio.dev"))Ejemplo en JavaScript
import { Scavio } from "scavio";
const client = new Scavio({ apiKey: process.env.SCAVIO_API_KEY });
async function audit(query, brand, domain) {
const s = await client.google.search({ query, light_request: false });
const r = await client.reddit.search({ query, sort: "top" });
return {
query,
organic: (s.organic_results || []).some(x => (x.link || "").includes(domain)),
knowledgeGraph: JSON.stringify(s.knowledge_graph || {}).toLowerCase().includes(brand.toLowerCase()),
redditHits: (r.posts || []).filter(p => (p.title || "").toLowerCase().includes(brand.toLowerCase())).length,
};
}
console.log(await audit("best serp api for ai agents", "Scavio", "scavio.dev"));Salida esperada
{'query': 'best serp api for ai agents', 'organic': True, 'knowledge_graph': False, 'reddit_hits': 2}