Rastrear tu marca en seis motores de respuesta de IA con un solo canal.
Lead Scraping Automation Engineer
Puntos clave:
- Seis motores de respuesta de IA, un solo pipeline. ChatGPT, Grok, Gemini, Perplexity, Copilot y el Resumen de IA de Google responden a preguntas de compra con citas — y los seis se pueden capturar a través de un solo endpoint, un
x-api-tokeny un sobre{ status, task_id, task_result }. - Las plataformas solo difieren a nivel de campo. Cada motor almacena sus citas bajo una clave diferente (
content_references,web_search_results,citations,web_results,source); un mapa de campo de seis líneas las normaliza en un solo flujo de citas. - La proporción de citas es la métrica de salida. Agrupa las citas normalizadas por dominio por prompt y plataforma, y el conteo a lo largo del tiempo es la visibilidad de respuesta de IA de tu marca.
- Tres etapas, tres scripts cortos. Captura las respuestas, normaliza las citas, informa los conteos — cada etapa es un archivo Python ejecutable que puedes programar.
- Fija las variables que se mueven. País, modo de razonamiento de Grok y el conjunto de prompts permanecen fijos por serie; las respuestas varían de ejecución a ejecución, y esa variación es la señal que graficas.
- Gratis para comenzar. Nuevas cuentas de Scrapeless incluyen créditos de prueba gratuitos — regístrate en app.scrapeless.com.
Pipeline a simple vista
Un comprador pregunta a un asistente de IA qué herramienta elegir, y el asistente nombra a alguien — respaldado por una breve lista de fuentes citadas. Si ese alguien eres tú varía según la plataforma: el motor que te cita puede no ser el motor que usan tus compradores. Hacer seguimiento de una plataforma te dice sobre esa plataforma; la imagen de visibilidad es la de las seis juntas.
El pipeline a continuación produce esa imagen de principio a fin:
- Captura — ejecuta un prompt fijo contra los seis motores a través de sus actores de Scrapeless; almacena las respuestas sin procesar como JSONL.
- Normaliza — mapea el campo de citas de cada plataforma en un único flujo
{platform, prompt, domain, url, title}. - Informa — cuenta las citas por dominio por plataforma y verifica dónde aparece tu propio dominio.
La Etapa 1 es la única que toca la red. Las Etapas 2 y 3 son transformaciones puras, por lo que volver a ejecutar el análisis es gratis. Para el contexto conceptual sobre por qué las citas de respuestas de IA se convirtieron en una métrica de visibilidad, el artículo sobre GEO y visibilidad de marca-AI cubre la disciplina; esta guía construye el instrumento.
Requisitos previos
- Una cuenta de Scrapeless y una clave de API — regístrate en app.scrapeless.com.
- Python 3.10+ con
requests. - Un prompt fijo que tus compradores podrían preguntar (el ejemplo trabajado usa uno; las ejecuciones de producción utilizan un conjunto).
Almacena tu clave en el entorno para que nunca quede en el código:
bash
export SCRAPELESS_API_KEY=tu_token_de_api_aquí
Etapa 1 — Captura las respuestas
Una función cubre los seis motores, porque los actores comparten un endpoint y un sobre. Las diferencias por motor se limitan al mapa de entrada — Grok requiere un modo de razonamiento, Perplexity quiere la bandera web_search, Copilot toma su propio modo:
| Plataforma | Actor | Entrada extra | Citas se encuentran en |
|---|---|---|---|
| ChatGPT | scraper.chatgpt |
— | content_references[] |
| Grok | scraper.grok |
modo (requerido) |
web_search_results[] + x_search_results[] |
| Gemini | scraper.gemini |
— | citations[] |
| Perplexity | scraper.perplexity |
web_search: true |
web_results[] |
| Copilot | scraper.copilot |
modo: "smart" |
citations[] |
| Resumen de IA de Google | scraper.overview |
— | source[] |
python
# capture.py — ejecuta un prompt a través de seis motores de respuesta de IA, almacena respuestas sin procesar
import json
import os
import time
import requests
ENDPOINT = "https://api.scrapeless.com/api/v2/scraper/execute"
HEADERS = {
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
}
PROMPT = "¿Cuál es la mejor API de scraping web para sitios pesados en JavaScript?"
COUNTRY = "US"
ENGINES = {
"chatgpt": {"actor": "scraper.chatgpt", "extra": {}},
"grok": {"actor": "scraper.grok", "extra": {"mode": "MODEL_MODE_FAST"}},
"gemini": {"actor": "scraper.gemini", "extra": {}},
"perplexity": {"actor": "scraper.perplexity", "extra": {"web_search": True}},
"copilot": {"actor": "scraper.copilot", "extra": {"mode": "smart"}},
"google-ai-overview": {"actor": "scraper.overview", "extra": {}},
}
with open("answers.jsonl", "w", encoding="utf-8") as out:
for platform, spec in ENGINES.items():
payload = {
"actor": spec["actor"],
"input": {"prompt": PROMPT, "country": COUNTRY, **spec["extra"]},
}
resp = requests.post(ENDPOINT, headers=HEADERS, json=payload, timeout=300)
resp.raise_for_status()
data = resp.json()
out.write(json.dumps({
Here is the translation of the text to Spanish:
```json
"plataforma": plataforma,
"indicador": INDICADOR,
"país": PAÍS,
"capturado_en": int(time.time()),
"estado": data.get("estado"),
"id_tarea": data.get("id_tarea"),
"resultado_tarea": data.get("resultado_tarea"),
}) + "\n")
print(f"{plataforma}: {data.get('estado')}")
Cada línea de answers.jsonl es la captura completa de una plataforma — respuesta, citas y metadatos de ejecución — agrupados por id_tarea para el rastro de auditoría.
Obtén tu clave API en el plan gratuito: app.scrapeless.com
Etapa 2 — Normalizar las citas
El mapeo de campos es el truco: cada plataforma nombra su arreglo de citas de manera diferente y da forma a las entradas de manera diferente, pero cada entrada lleva una URL. Seis mapeos convierten seis esquemas en un flujo:
python
# normalize.py — answers.jsonl -> citations.jsonl (una fila por fuente citada)
import json
from urllib.parse import urlparse
# plataforma -> lista de pares (campo_array, clave_url) dentro de resultado_tarea
CAMPOS_CITACION = {
"chatgpt": [("content_references", "url")],
"grok": [("web_search_results", "url"), ("x_search_results", "url")],
"gemini": [("citaciones", "url")],
"perplexidad": [("web_results", "url")],
"copilot": [("citaciones", "url")],
"google-ai-overview": [("source", "url")],
}
with open("answers.jsonl", encoding="utf-8") as inp, \
open("citations.jsonl", "w", encoding="utf-8") as out:
for line in inp:
row = json.loads(line)
resultado = row.get("resultado_tarea") or {}
for campo, clave_url in CAMPOS_CITACION[row["plataforma"]]:
for entrada in resultado.get(campo) or []:
url = entrada.get(clave_url) or ""
if not url.startswith("http"):
continue
out.write(json.dumps({
"plataforma": row["plataforma"],
"indicador": row["indicador"],
"país": row["país"],
"capturado_en": row["capturado_en"],
"panel": campo,
"dominio": urlparse(url).netloc.removeprefix("www."),
"url": url,
"título": entrada.get("title") or entrada.get("name") or "",
}) + "\n")
print(sum(1 for _ in open("citations.jsonl", encoding="utf-8")), "citas normalizadas")
Grok contribuye con dos paneles — páginas de la web abierta y publicaciones de X — y el campo panel los mantiene distinguibles a lo largo del proceso.
Etapa 3 — Reportar la cuota de cita
Con un flujo de citas, el informe es un grupo por. Por plataforma: qué dominios acredita el motor y si el tuyo está entre ellos:
python
# report.py — citations.jsonl -> tabla de cuota de cita por plataforma
import json
import os
from collections import Counter, defaultdict
MARCA = os.environ.get("BRAND_DOMAIN", "scrapeless.com")
por_plataforma = defaultdict(Counter)
with open("citations.jsonl", encoding="utf-8") as inp:
for line in inp:
row = json.loads(line)
por_plataforma[row["plataforma"]][row["dominio"]] += 1
for plataforma, conteos in por_plataforma.items():
total = sum(conteos.values())
impactos_marca = conteos.get(MARCA, 0)
print(f"\n{plataforma} — {total} citas · {MARCA}: {impactos_marca}")
for dominio, n in conteos.most_common(5):
marcador = " ←" si dominio == MARCA else ""
print(f" {n:>3} {dominio}{marcador}")
Ejecutado en un horario, esta tabla se convierte en una serie temporal: por plataforma, por indicativo, por mercado — el recuento de respuestas que te citan y quién es citado en su lugar. Esa serie es el entregable sobre el que informa un programa GEO.
Programación y escalado de la serie
- Mantén las variables. Mismos indicadores, mismo
país, mismo modo Grok cada ejecución — una serie solo es legible cuando el proceso es constante. Captura diariamente o semanalmente; las respuestas de IA cambian en ambas escalas de tiempo. - Escala por multiplicación, no nuevo código. Más indicadores es un bucle alrededor de la Etapa 1; más mercados es un segundo
PAÍS; ambos multiplican los recuentos de ejecución, así que presupuestar en consecuencia — los actores facturan basados en uso, con los niveles actuales en la página de precios. - Mantén las capturas en bruto.
answers.jsonles la evidencia detrás de cada número en el informe; las elecciones de normalización cambian, las respuestas en bruto no. - Espera paneles vacíos. Algunos indicadores no generan citas en algunos motores (el panel X de Grok es particularmente dependiente del indicador). Un arreglo vacío es un dato, no un fallo.
Los actores viven en la [API de raspado universal](https://www.scrapeless.com/es/product/universal-scraping-api?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=track-brand-ai-answer-engines); la [guía de los mejores raspadores LLM](https://www.scrapeless.com/es/blog/best-llm-scrapers-2026?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=track-brand-ai-answer-engines) clasifica la categoría si estás comparando herramientas.
---
## Preguntas Frecuentes
**P: ¿Es legal capturar respuestas de IA de esta manera?**
Los actores capturan contenido de respuestas renderizadas públicamente. Las reglas varían según la jurisdicción y los términos de cada plataforma; revisa los ToS relevantes y consulta a un abogado para tu caso de uso. Nunca recojas datos personales protegidos por el GDPR o CCPA.
**P: ¿Por qué un aviso en el ejemplo en lugar de un conjunto?**
Claridad. Las ejecuciones de producción repiten un conjunto de avisos alrededor de la Etapa 1; todo lo que sigue ya maneja múltiples avisos porque cada fila lleva su `avisar`.
**P: ¿Cuántas ejecuciones hacen una serie utilizable?**
Capturas únicas de una superficie no determinística demuestran poco. Capturas diarias durante dos a tres semanas dan suficientes puntos para separar la tendencia del ruido en la mayoría de los conjuntos de avisos.
**P: ¿Qué pasa con la pestaña del Modo AI de Google?**
Tiene su propio actor (`scraper.aimode`) bajo el mismo sobre; añade una séptima entrada al mapa del motor. La [guía de visión general de AI](https://www.scrapeless.com/es/blog/google-ai-overview-scraper-api-2026?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=track-brand-ai-answer-engines) cubre en profundidad las superficies de respuestas de Google.
**P: ¿Necesito un proxy?**
No. La salida residencial y el geo-enrutamiento están integrados en los actores; la entrada `country` es toda la configuración.
**P: ¿Puede esto funcionar sin un agente de IA o SDK?**
Sí; las tres etapas son simplemente Python sobre HTTP. Cualquier programador (cron, CI, un ejecutor de flujo de trabajo) puede impulsarlas.
---
## Conclusión: un sobre, seis motores, un número
El pipeline se reduce a tres archivos: captura respuestas a través de seis actores que comparten un punto final y un sobre, normaliza seis esquemas de citación con un mapa de campo de seis líneas y cuenta dominios. La salida es el número que faltaba al trabajo de visibilidad de la era de la IA: con qué frecuencia cada motor de respuestas te cita, rastreado a lo largo del tiempo, por mercado. Programa esto y el gráfico se dibuja solo.
## ¿Listo para construir tu pipeline de datos de respuestas de IA?
Únete a nuestra comunidad para reclamar un plan gratuito y conectarte con desarrolladores que construyen pipelines de respuestas de IA: [Discord](https://discord.gg/VU2vtbq7Q2) · [Telegram](https://t.me/scrapeless).
Regístrate en [app.scrapeless.com](https://app.scrapeless.com/passport/login/?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=track-brand-ai-answer-engines) para créditos de prueba gratuitos y apunta el pipeline a los avisos, motores y mercados a los que responde tu marca.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.



