En 2026, el 31% de los usuarios de Internet de EE. UU. realizan al menos una consulta por día en ChatGPT. Cuando un cliente potencial pregunta "¿cuál es la mejor herramienta [su categoría]?", las marcas que nombra ChatGPT son la nueva tabla de clasificación. Este tutorial explica cómo crear un rastreador diario que consulta ChatGPT con mensajes de destino, extrae menciones de marca y registra los datos.
Requisitos previos
- Python 3.8+
- Una clave API de Scavio
- Una lista de mensajes relevantes para su marca (por ejemplo, 'mejor SERP API 2026')
- Opcional: una URL de webhook de Slack para alertas
Guia paso a paso
Paso 1: Definir los mensajes a monitorear
Seleccione entre 10 y 20 mensajes que capturen cómo los clientes potenciales describen su categoría.
PROMPTS = [
'what is the best SERP API in 2026',
'top alternatives to SerpAPI',
'best search API for AI agents',
'cheapest Google search API',
]Paso 2: Consulta ChatGPT vía Scavio
El punto final Ask_chatgpt de Scavio envuelve la interfaz de usuario de ChatGPT y devuelve la respuesta sin formato.
import requests, os
def ask_chatgpt(prompt):
r = requests.post('https://api.scavio.dev/api/v1/ask',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'platform': 'chatgpt', 'prompt': prompt})
return r.json()['answer']Paso 3: Extraer menciones de marca
Ejecute una expresión regular en el texto de la respuesta para contar las menciones de su marca y sus competidores.
import re
BRANDS = ['Scavio', 'SerpAPI', 'Serper', 'Tavily', 'Brave', 'Firecrawl']
def extract_mentions(text):
counts = {}
for brand in BRANDS:
counts[brand] = len(re.findall(rf'\b{brand}\b', text, re.IGNORECASE))
return countsPaso 4: Registrar resultados diarios
Ejecute el rastreador según una programación y añádalo a un CSV o base de datos.
import csv, datetime
def log(prompt, counts):
row = {'date': datetime.date.today().isoformat(), 'prompt': prompt, **counts}
with open('aeo_log.csv', 'a') as f:
writer = csv.DictWriter(f, fieldnames=row.keys())
writer.writerow(row)Paso 5: Enviar alertas de Slack sobre cambios
Encienda una alerta de Slack cuando se cite recientemente a un competidor o cuando su marca abandone.
import requests
def alert_slack(message, webhook_url):
requests.post(webhook_url, json={'text': message})Ejemplo en Python
import os, re, requests, csv, datetime
API_KEY = os.environ['SCAVIO_API_KEY']
PROMPTS = ['best SERP API 2026', 'top SerpAPI alternatives']
BRANDS = ['Scavio', 'SerpAPI', 'Serper', 'Tavily']
def ask_chatgpt(prompt):
r = requests.post('https://api.scavio.dev/api/v1/ask',
headers={'x-api-key': API_KEY},
json={'platform': 'chatgpt', 'prompt': prompt})
return r.json()['answer']
for prompt in PROMPTS:
answer = ask_chatgpt(prompt)
counts = {b: len(re.findall(rf'\b{b}\b', answer, re.I)) for b in BRANDS}
print(prompt, counts)Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const PROMPTS = ['best SERP API 2026', 'top SerpAPI alternatives'];
const BRANDS = ['Scavio', 'SerpAPI', 'Serper', 'Tavily'];
async function askChatGPT(prompt) {
const r = await fetch('https://api.scavio.dev/api/v1/ask', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'chatgpt', prompt })
});
return (await r.json()).answer;
}
for (const prompt of PROMPTS) {
const answer = await askChatGPT(prompt);
const counts = Object.fromEntries(BRANDS.map(b => [b, (answer.match(new RegExp(`\\b${b}\\b`, 'gi')) || []).length]));
console.log(prompt, counts);
}Salida esperada
For each prompt, the tracker prints a mention count per brand. Over time, you get a daily trend of how often ChatGPT names your brand vs competitors in answers to your category-defining prompts.