🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Acompanhe sua marca em seis motores de resposta de IA com um único pipeline.

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

10-Jun-2026

Principais Conclusões:

  • Seis motores de resposta de IA, um pipeline. ChatGPT, Grok, Gemini, Perplexity, Copilot e a Visão Geral de IA do Google respondem a perguntas de compra com citações — e todos seis podem ser capturados através de um único endpoint, um x-api-token e um envelope { status, task_id, task_result }.
  • As plataformas diferem apenas no nível dos campos. Cada motor armazena suas citações sob uma chave diferente (content_references, web_search_results, citations, web_results, source); um mapa de campos de seis linhas as normaliza em um único fluxo de citações.
  • A participação nas citações é a métrica de saída. Agrupe as citações normalizadas por domínio por prompt e plataforma, e a contagem ao longo do tempo é a visibilidade da resposta de IA da sua marca.
  • Três etapas, três scripts curtos. Capture as respostas, normalize as citações, relate as contagens — cada etapa é um arquivo Python executável que você pode agendar.
  • Fixe as variáveis que se movem. O país, o modo de raciocínio do Grok e o conjunto de prompts permanecem fixos por série; as respostas variam de execução para execução, e essa variação é o sinal que você traça.
  • Início gratuito. Novas contas Scrapeless incluem créditos de avaliação gratuitos — inscreva-se em app.scrapeless.com.

Pipeline em um relance

Um comprador pergunta a um assistente de IA qual ferramenta escolher, e o assistente nomeia alguém — respaldado por uma lista curta de fontes citadas. Se esse alguém é você, varia por plataforma: o motor que cita você pode não ser o mesmo que seus compradores usam. Acompanhar uma plataforma informa sobre essa plataforma; a imagem da visibilidade é das seis lado a lado.

O pipeline abaixo produz essa imagem do início ao fim:

  1. Capturar — execute um prompt fixo contra os seis motores através de seus atores Scrapeless; armazene as respostas brutas como JSONL.
  2. Normalizar — mapeie o campo de citação de cada plataforma em um único fluxo unificado {platform, prompt, domain, url, title}.
  3. Relatar — conte citações por domínio por plataforma e verifique onde seu próprio domínio aparece.

A Etapa 1 é a única etapa que toca a rede. As Etapas 2 e 3 são transformações puras, portanto a reexecução da análise é gratuita. Para o contexto conceitual de por que as citações da IA se tornaram uma métrica de visibilidade, o artigo sobre GEO e visibilidade de marca-IA cobre a disciplina; este guia constrói o instrumento.


Pré-requisitos

  • Uma conta Scrapeless e uma chave da API — inscreva-se em app.scrapeless.com.
  • Python 3.10+ com requests.
  • Um prompt fixo que seus compradores possam realmente perguntar (o exemplo trabalhado usa um; execuções de produção usam um conjunto).

Armazene sua chave no ambiente para que ela nunca apareça no código:

bash Copy
export SCRAPELESS_API_KEY=your_api_token_here

Etapa 1 — Capture as respostas

Uma função cobre todos os seis motores, porque os atores compartilham um endpoint e um envelope. As diferenças por motor estão confinadas ao mapa de entrada — Grok exige um modo de raciocínio, Perplexity quer a flag web_search, Copilot aceita seu próprio modo:

Plataforma Ator Entrada extra As citações estão em
ChatGPT scraper.chatgpt content_references[]
Grok scraper.grok modo (obrigatório) web_search_results[] + x_search_results[]
Gemini scraper.gemini citations[]
Perplexity scraper.perplexity web_search: true web_results[]
Copilot scraper.copilot modo: "smart" citations[]
Visão Geral de IA do Google scraper.overview source[]
python Copy
# capture.py — execute um prompt em seis motores de resposta de IA, armazene as respostas brutas
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 = "Qual é a melhor API de web scraping para sites pesados em JavaScript?"
PAÍS = "US"

MOTORES = {
    "chatgpt": {"ator": "scraper.chatgpt", "extra": {}},
    "grok": {"ator": "scraper.grok", "extra": {"modo": "MODEL_MODE_FAST"}},
    "gemini": {"ator": "scraper.gemini", "extra": {}},
    "perplexity": {"ator": "scraper.perplexity", "extra": {"web_search": True}},
    "copilot": {"ator": "scraper.copilot", "extra": {"modo": "smart"}},
    "google-ai-overview": {"ator": "scraper.overview", "extra": {}},
}

with open("answers.jsonl", "w", encoding="utf-8") as out:
    for plataforma, especificação em MOTORES.items():
        payload = {
            "ator": especificação["ator"],
            "entrada": {"prompt": PROMPT, "country": PAÍS, **especificação["extra"]},
        }
        resp = requests.post(ENDPOINT, headers=HEADERS, json=payload, timeout=300)
        resp.raise_for_status()
        data = resp.json()
        out.write(json.dumps({...}))

"plataforma": plataforma,
"prompt": PROMPT,
"país": PAÍS,
"capturado_em": int(time.time()),
"status": dados.get("status"),
"task_id": dados.get("task_id"),
"resultado_da_tarefa": dados.get("task_result"),
}) + "\n")
print(f"{plataforma}: {dados.get('status')}")

Cada linha de answers.jsonl é uma captura completa de uma plataforma — resposta, citações e metadados da execução — indexada pelo task_id para a trilha de auditoria.

Obtenha sua chave de API no plano gratuito: app.scrapeless.com


Estágio 2 — Normalizar as citações

O mapeamento de campos é o grande truque: cada plataforma nomeia seu array de citações de forma diferente e molda as entradas de maneira distinta, mas cada entrada carrega uma URL. Seis mapeamentos transformam seis esquemas em um fluxo:

python Copy
# normalize.py — answers.jsonl -> citations.jsonl (uma linha por fonte citada)
import json
from urllib.parse import urlparse

# plataforma -> lista de pares (array_field, url_key) dentro do resultado_da_tarefa
CAMPOS_DE_CITACAO = {
    "chatgpt": [("content_references", "url")],
    "grok": [("web_search_results", "url"), ("x_search_results", "url")],
    "gemini": [("citations", "url")],
    "perplexity": [("web_results", "url")],
    "copilot": [("citations", "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)
        result = row.get("resultado_da_tarefa") or {}
        for field, url_key in CAMPOS_DE_CITACAO[row["plataforma"]]:
            for entry in result.get(field) or []:
                url = entry.get(url_key) or ""
                if not url.startswith("http"):
                    continue
                out.write(json.dumps({
                    "plataforma": row["plataforma"],
                    "prompt": row["prompt"],
                    "país": row["país"],
                    "capturado_em": row["capturado_em"],
                    "painel": field,
                    "domínio": urlparse(url).netloc.removeprefix("www."),
                    "url": url,
                    "título": entry.get("title") or entry.get("name") or "",
                }) + "\n")

print(sum(1 for _ in open("citations.jsonl", encoding="utf-8")), "citações normalizadas")

Grok contribui com dois painéis — páginas da web abertas e postagens X — e o campo painel os mantém distinguíveis a jusante.


Estágio 3 — Relatar a participação de citações

Com um fluxo de citações, o relatório é um agrupamento. Por plataforma: quais domínios o motor credita e se o seu está entre eles:

python Copy
# report.py — citations.jsonl -> tabela de participação de citação 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["domínio"]] += 1

for plataforma, contagens in por_plataforma.items():
    total = sum(contagens.values())
    acertos_marca = contagens.get(MARCA, 0)
    print(f"\n{plataforma} — {total} citações · {MARCA}: {acertos_marca}")
    for domínio, n in contagens.most_common(5):
        marcador = " ←" if domínio == MARCA else ""
        print(f"  {n:>3}  {domínio}{marcador}")

Executado em um cronograma, esta tabela se torna uma série temporal: por plataforma, por prompt, por mercado — a contagem de respostas que o citam e quem é citado em vez disso. Essa série é o resultado que um programa GEO relata.


Agendando e escalando a série

  • Mantenha as variáveis. Mesmos prompts, mesmo país, mesmo modo Grok em cada execução — uma série só é legível quando o processo é constante. Capture diariamente ou semanalmente; as respostas da IA mudam em ambas as escalas de tempo.
  • Escale por multiplicação, não por novo código. Mais prompts é um loop em torno do Estágio 1; mais mercados é um segundo PAÍS; ambos multiplicam a contagem de execuções, então orce adequadamente — os atores cobram com base no uso, com os níveis atuais na página de preços.
  • Mantenha as capturas brutas. answers.jsonl é a evidência por trás de cada número no relatório; escolhas de normalização mudam, respostas brutas não.
  • Espere painéis vazios. Alguns prompts não geram citações em alguns motores (o painel X do Grok, em particular, é dependente do prompt). Um array vazio é um ponto de dado, não uma falha.
    Os atores vivem na linha da API Universal Scraping; o guia dos melhores scrapers LLM classifica a categoria se você estiver comparando ferramentas.

FAQ

Q: É legal capturar respostas da IA dessa forma?

Os atores capturam conteúdo de respostas renderizadas publicamente. As regras variam de acordo com a jurisdição e os termos de cada plataforma — revise os ToS relevantes e consulte um advogado para seu caso de uso. Nunca colete dados pessoais protegidos sob o GDPR ou CCPA.

Q: Por que um prompt no exemplo em vez de um conjunto?

Clareza. As execuções de produção fazem um loop em um conjunto de prompts ao redor da Fase 1; tudo a montante já lida com múltiplos prompts, pois cada linha carrega seu prompt.

Q: Quantas execuções fazem uma série utilizável?

Capturas únicas de uma superfície não determinística provam pouco. Capturas diárias por duas a três semanas fornecem pontos suficientes para separar tendências do ruído na maioria dos conjuntos de prompts.

Q: E sobre a aba Modo IA do Google?

Ela tem seu próprio ator (scraper.aimode) sob o mesmo envelope — adicione uma sétima entrada ao mapa do mecanismo. O guia de Visão Geral da IA cobre as superfícies de respostas do Google em profundidade.

Q: Preciso de um proxy?

Não. O acesso residencial e o geo-roting estão integrados aos atores; a entrada country é toda a configuração.

Q: Isso pode funcionar sem um agente de IA ou SDK?

Sim — as três fases são Python simples sobre HTTP. Qualquer agendador (cron, CI, um executor de fluxo de trabalho) pode pilotá-las.


Conclusão: um envelope, seis motores, um número

O pipeline se reduz a três arquivos: capture respostas através de seis atores que compartilham um endpoint e um envelope, normalize seis esquemas de citação com um mapa de campo de seis linhas e conte domínios. A saída é o número que o trabalho de visibilidade da era da IA estava faltando — com que frequência cada motor de resposta credita você, rastreado ao longo do tempo, por mercado. Agende e o gráfico se desenha sozinho.

Pronto para Construir Seu Pipeline de Dados de Respostas de IA?

Junte-se à nossa comunidade para reivindicar um plano gratuito e conectar-se com desenvolvedores construindo pipelines de respostas de IA: Discord · Telegram.

Inscreva-se em app.scrapeless.com para créditos de teste gratuitos, e aponte o pipeline para os prompts, motores e mercados às quais sua marca responde.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo