Volver al blog

Rastrear tu marca en seis motores de respuesta de IA con un solo canal.

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

10-Jun-2026

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-token y 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:

  1. Captura — ejecuta un prompt fijo contra los seis motores a través de sus actores de Scrapeless; almacena las respuestas sin procesar como JSONL.
  2. Normaliza — mapea el campo de citas de cada plataforma en un único flujo {platform, prompt, domain, url, title}.
  3. 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 Copy
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 Copy
# 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 Copy
# 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 Copy
# 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.jsonl es 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.
Copy
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.

Artículos más populares

Catalogar