🎯 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

Como Monitorar as Recomendações do Amazon Rufus ao Longo do Tempo

Michael Lee
Michael Lee

Expert Network Defense Engineer

17-Jun-2026

Principais Conclusões:

  • As recomendações do Amazon Rufus são dados de produto estruturados, não uma transcrição de chat. Uma chamada ao ator scraper.amazon com type: rufus retorna um array de products, onde cada entrada carrega um ASIN, título, preço, classificação e o rótulo da seção sob a qual Rufus agrupou.
  • A participação nas recomendações é a métrica produzida por esse pipeline. Acompanhar quais ASINs Rufus apresenta para um conjunto fixo de consultas ao longo do tempo transforma uma prateleira conversacional em um sinal de visibilidade mensurável — o equivalente ao compartilhamento de voz do Rufus.
  • Rufus divide suas escolhas em seções rotuladas. A resposta agrupa produtos em content_blocks como "Principais Seleções – Melhor ANC" e "Ótimas Seleções de Valor", de modo que cada produto tem tanto uma classificação geral quanto o título da seção que o enquadra.
  • related_questions amplia o conjunto de consultas iniciais por conta própria. Cada captura retorna as perguntas de acompanhamento que Rufus sugere para a consulta, e essas alimentam diretamente a lista de prompts da próxima execução.
  • Cada campo pode ser nulo e a resposta é gerada por sessão. Uma consulta pode não retornar uma resposta do Rufus para uma dada região, e um slot de produto pode chegar sem uma contagem de bought — portanto, o pipeline armazena instantâneas por execução e lê a série, nunca uma única chamada.
  • O pipeline reduz-se a instantâneas apenas para anexação mais um diff. Cada execução escreve um registro JSONL com chave por consulta e horário da captura; o diff das gravações consecutivas relata quais ASINs entraram ou saíram entre as execuções.
  • Livre para começar. Novas contas Scrapeless incluem créditos de teste gratuito — inscreva-se em app.scrapeless.com.

Introdução: a prateleira de compras se movia para o assistente

O Amazon Rufus responde a perguntas de compras com uma lista classificada de produtos. Um comprador pergunta quais são os melhores fones de ouvido com cancelamento de ruído, e Rufus retorna escolhas agrupadas — "Principais Seleções", "Melhor para Usuários da Apple", "Ótimas Seleções de Valor" — cada uma com um preço, uma classificação e um link de compra, dentro do assistente e antes que qualquer página de resultados de busca carregue. Para uma marca, a pergunta não é mais onde um produto se classifica na grade de resultados; é se Rufus menciona o produto, em qual seção e em qual classificação.

Essa prateleira é difícil de monitorar ao longo do tempo. Rufus gera sua resposta por sessão, as escolhas mudam por consulta e por região, e os cartões de produto se resolvem dentro de uma superfície conversacional que combate a automação. Ler a olho uma vez não diz nada; o sinal é como o conjunto de recomendações se move semana após semana.

Este guia constrói um pipeline de monitoramento em cima da API de Rastreamento Scrapeless: um conjunto fixo de consultas entra, o ator scraper.amazon retorna as recomendações do Rufus como produtos estruturados, e o pipeline extrai ASIN, classificação e seção, mapeia cada ASIN a uma marca, armazena uma instantânea por execução e diferencia as instantâneas para relatar a participação nas recomendações. Isso se combina naturalmente com visibilidade de marca nas Visões Gerais do Google AI, que rastreia a mesma consulta de recomendação no lado da busca.


Pipeline em um relance

Todo o sistema tem seis etapas, de ponta a ponta:

  1. Definir um conjunto de consultas — uma lista fixa de perguntas sobre compras, expandida pelas related_questions que cada captura retorna.
  2. Capturar por consulta — POST cada consulta ao ator scraper.amazon com type: rufus; uma região não suportada não retorna resposta do Rufus, que o pipeline grava e ignora.
  3. Extrair produtos — percorrer content_blocks, puxando o ASIN de cada produto, classificação geral e rótulo da seção.
  4. Mapear ASIN → marca — resolver uma marca a partir do título do produto com uma pequena heurística, para que a participação possa ser agregada acima do nível do ASIN.
  5. Armazenar uma instantânea por execução — anexar um registro JSONL por consulta com chave por consulta e horário da captura; nunca sobrescrever.
  6. Diferença ao longo do tempo — comparar instantâneas consecutivas para relatar participação nas recomendações e quais ASINs entraram ou saíram.

As Etapas 1 a 4 são executadas em cada consulta em cada ciclo; as Etapas 5 a 6 transformam essas capturas em uma série temporal. As seções abaixo constroem cada etapa em ordem.


Pré-requisitos

  • Python 3.10 ou mais recente (o código abaixo usa apenas a biblioteca padrão mais requests)
  • Uma conta Scrapeless e chave da API — inscreva-se em app.scrapeless.com
  • A chave exportada como SCRAPELESS_API_KEY
  • Familiaridade básica com o terminal e JSON

Etapa 1 — Definir o conjunto de consultas

Um programa de monitoramento é tão bom quanto seu conjunto de consultas. Comece com as perguntas sobre compra que importam para a categoria que você acompanha — formule-as da maneira que um comprador pergunta ao Rufus, com uma intenção de compra clara.

python Copy
SEED_QUERIES = [
"melhores fones de ouvido com cancelamento de ruído",
"melhores fones de ouvido sem fio para viagens",
"melhores fones de ouvido over-ear de orçamento",
```python
MARCAS_CONHECIDAS = ("Sony", "Bose", "Apple", "Sennheiser", "Beats", "JBL", "Anker")


def marca_do_titulo(titulo: str) -> str | None:
    if not titulo:
        return None
    titulo_minusculo = titulo.lower()
    for marca in MARCAS_CONHECIDAS:
        if marca.lower() in titulo_minusculo:
            return marca
    return titulo.split()[0]  # fallback: palavra inicial do título

Mantenha a lista MARCAS_CONHECIDAS restrita à categoria que você monitora; o fallback lida com a cauda longa sem uma tabela de pesquisa.

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


Etapa 4 — Armazenar um instantâneo por execução

O pipeline é apenas de adição: cada captura grava um registro JSONL indexado pela consulta e pelo horário da captura, e nada é sobrescrito. Isso te dá o histórico completo para comparar, e significa que uma execução ruim ou vazia nunca destrói uma boa anterior.

python Copy
import json
import time


def adicionar_instantaneo(caminho: str, consulta: str, linhas: list[dict]) -> dict:
    registro = {"consulta": consulta, "capturado_em": int(time.time()), "produtos": linhas}
    with open(caminho, "a", encoding="utf-8") as manuseio:
        manuseio.write(json.dumps(registro, ensure_ascii=False) + "\n")
    return registro

Usar um epoch inteiro para capturado_em mantém cada registro autodescritivo e ordenável sem um índice separado. Para carregar o histórico de uma consulta específica, leia o arquivo linha por linha e filtre pela chave consulta — uma passagem fornece cada instantâneo na ordem de captura.


Etapa 5 — Diferença e relato de participação na recomendação

Duas funções de leitura transformam o histórico do instantâneo em métricas. A participação na recomendação conta com que frequência cada marca aparece em uma execução e normaliza para uma porcentagem; a diferença compara os conjuntos ASIN de duas execuções para mostrar movimentação.

python Copy
from collections import Counter


def participacao_na_recomendacao(linhas: list[dict]) -> dict[str, float]:
    contagens = Counter(linha["marca"] for linha in linhas if linha.get("marca"))
    total = sum(contagens.values())
    if not total:
        return {}
    return {marca: round(100 * n / total, 1) for marca, n in contagens.most_common()}


def diferenca_execucoes(linhas_prev: list[dict], linhas_atual: list[dict]) -> dict[str, list[str]]:
    prev = {linha["asin"] for linha in linhas_prev}
    curr = {linha["asin"] for linha in linhas_atual}
    return {
        "entrada": sorted(curr - prev),
        "removida": sorted(prev - curr),
    }

Execute participacao_na_recomendacao por consulta para ver quais marcas dominam a prateleira da conversa para aquela pergunta, ou em todo o conjunto de consultas para uma visão ampla da categoria. Execute diferenca_execucoes entre os dois instantâneos mais recentes de uma consulta para captar a semana em que uma marca entrou nas escolhas ou saiu delas — o momento que vale a pena alertar.


Agendamento e escalabilidade

O loop de captura une as etapas: para cada consulta, capture, extraia, crie o instantâneo e registre um resultado vazio como um salto. Execute isso em um cronograma — diário ou semanal — e o arquivo JSONL se torna a série temporal.

python Copy
if __name__ == "__main__":
    caminho_instantaneo = "instantaneos_rufus.jsonl"
    for consulta in CONSULTAS_SEMENTE:
        resultado = capturar_rufus(consulta)
        linhas = extrair_produtos(resultado)
        if not linhas:
            print(f"{consulta}: sem resposta do Rufus para esta consulta/região")
            continue
        adicionar_instantaneo(caminho_instantaneo, consulta, linhas)
        participacao = participacao_na_recomendacao(linhas)
        lideres = ", ".join(f"{b} {pct}%" for b, pct in list(participacao.items())[:3])
        print(f"{consulta}: {len(linhas)} produtos — {lideres}")

Algumas limitações práticas ao escalar o conjunto de consultas:

  • Mantenha a concorrência modesta — um punhado de consultas em andamento ao mesmo tempo é suficiente; uma execução de monitoramento é estável, não um surto.
  • Fixe a região por execução para que a série permaneça comparável; uma consulta que não retorna resposta do Rufus em uma região é registrada como um salto, não misturada nos números de outra região.
  • Defina o conjunto de consultas ao que você atua. Cada consulta é uma chamada faturável, portanto monitore as perguntas que impulsionam decisões e deixe perguntas_relacionadas sugerir as próximas a adicionar. Planeje a cadência de acordo com os preços da Scrapeless.

O Que Você Recebe

Cada captura gera a lista plana de produtos mais os content_blocks agrupados por seção; o pipeline reduz ambos a linhas de instantâneo e uma tabela de participação. A forma abaixo é o que o ator retorna, reduzido a uma seção.

json Copy
// O esquema é o que scraper.amazon (tipo: rufus) retorna; os valores dos campos são uma amostra ilustrativa de uma execução ao vivo (seções e produtos reduzidos).
{
  "metadata": { "type": "rufus", "rawUrl": "https://…" },
  "result": {
    "user_query": "melhores fones de ouvido com cancelamento de ruído",
    "content_blocks": [
      {
        "type": "product_section",
        "category": "Top Picks – Melhor ANC",
json Copy
"produtos": [
          {
            "asin": "B0GN4CFF6H",
            "título": "Fones de Ouvido Sem Fio com Cancelamento de Ruído Sony WH-1000XM6/B",
            "preço": "$398,00",
            "preço_original": "$428,00",
            "classificação": "4.5",
            "avaliações": "238",
            "entrega": "Entrega GRÁTIS sex, 19 de jun",
            "url": "https://…"
          }
        ]
      }
    ],
    "produtos": [
      { "asin": "B0GN4CFF6H", "título": "Fones de Ouvido Sem Fio…", "categoria": "Principais Seleções – Melhor ANC" }
    ],
    "perguntas_relacionadas": ["Compare Sony XM6 vs Bose QC Ultra 2", "Algum desses está em promoção?"]
  }
}

Após as etapas 3–5, um registro de instantâneo e sua tabela de compartilhamento parecem assim:

json Copy
// Saída do pipeline — amostra indicativa (schema real, valores ASIN/marca/classificação ilustrativos): uma linha de instantâneo somente para adição e contagem de participação na recomendação.
{
  "instantâneo": {
    "consulta": "melhores fones de ouvido com cancelamento de ruído",
    "capturado_em": 1781716376,
    "produtos": [
      { "asin": "B0GN4CFF6H", "classificação": 1, "seção": "Principais Seleções – Melhor ANC", "marca": "Sony" },
      { "asin": "B0FDKR293G", "classificação": 2, "seção": "Principais Seleções – Melhor ANC", "marca": "Bose" },
      { "asin": "B0GSS4SGZR", "classificação": 3, "seção": "Melhor para Usuários da Apple", "marca": "Apple" }
    ]
  },
  "participação_na_recomendação": { "Sony": 33.3, "Bose": 33.3, "Apple": 33.3 }
}

Algumas observações honestas ao executar:

  • A resposta é por sessão. A mesma consulta retorna um conjunto de recomendações diferente e diferentes perguntas_relacionadas de uma execução para outra. Armazene capturado_em em cada registro; a série ao longo do tempo é o sinal, não qualquer captura única.
  • Seções definem a classificação. A seção de um produto (content_blocks[].category) explica por que ele classificou onde classificou — "Melhor para Usuários da Apple" é uma prateleira diferente de "Ótimas Seleções de Valor". Leve a seção, não apenas a posição.
  • Os campos são anuláveis. comprado, preço_original, e entrega aparecem em alguns produtos e não em outros; um slot meio resolvido pode chegar sem um título ou asin. Leia cada um com .get() e pule a linha em vez de armazenar em branco.
  • A região decide se há uma resposta. Uma loja não suportada retorna uma falha regional em vez de produtos. Prenda a região que você monitora e registre as falhas como pulos.

Tratando isso de forma responsável

Este pipeline lê apenas as recomendações de produtos públicas que Rufus mostra a qualquer comprador — ASINs, títulos, preços, classificações e os rótulos das seções. Mantenha-se nessa superfície pública: não colete dados pessoais e conteúdo restrito a contas, respeite os termos de serviço da Amazon e as diretrizes para robôs, e armazene apenas os campos de produtos que o programa de monitoramento precisa. A participação na recomendação é uma métrica de visibilidade da marca construída a partir de listagens públicas, nada mais.


Conclusão: uma prateleira conversacional como uma série temporal

Monitorar o Amazon Rufus se resume a um loop: capturar cada consulta contra o ator scraper.amazon com type: rufus, extrair ASIN mais classificação e seção de content_blocks, mapear cada ASIN para uma marca, adicionar um instantâneo por execução e comparar os instantâneos para participação na recomendação. Prenda a região, trate cada campo como anulável, registre uma resposta ausente como um salto e permita que perguntas_relacionadas aumentem o conjunto de consultas. A mesma forma de monitoramento se aplica às outras superfícies de resposta — emparelhar Rufus com raspagem das Visões da IA do Google dá um programa em ambos assistentes de compras e pesquisa. O ator, o endpoint e os nomes dos campos aqui são confirmados contra a referência ao vivo da Scrapeless Scraping API.


Pronto para construir seu pipeline de monitoramento de recomendações de IA?

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

Inscreva-se em app.scrapeless.com para créditos de teste gratuito e aponta o conjunto de consultas acima para as categorias e regiões do Rufus que seu programa de visibilidade de marca rastreia.


FAQ

P: Monitorar as recomendações do Amazon Rufus é legal?
Os dados capturados são as recomendações de produtos publicamente visíveis que Rufus mostra a qualquer comprador. Como em qualquer raspagem, a legalidade depende da jurisdição e do uso — revise os termos relevantes e consulte um advogado antes de construir sobre isso, e colete apenas dados de produtos públicos, nunca dados pessoais ou restritos a contas.

P: Por que uma consulta não retorna nenhuma resposta do Rufus?
Duas causas. A consulta pode não ser suficientemente transacional — formule-a como uma pergunta de compra com uma clara intenção de produto. Ou a região que você segmentou não tem superfície Rufus, caso em que o ator reporta uma falha de região para essa loja; fixe uma região suportada e registre a falta como uma omissão.

Q: Preciso de um proxy ou um navegador?
Não. A renderização, o manuseio de região e a análise ocorrem no lado do servidor. Você envia um POST com um cabeçalho x-api-token e recebe um JSON em resposta; o ator retorna o conjunto de recomendações já estruturado.

Q: Como obtenho a classificação e a seção em que um produto apareceu?
Percorra result.content_blocks: cada bloco product_section traz um título category e seu próprio array de products. Contar os produtos à medida que você achata os blocos fornece a classificação geral, e a category do bloco dá a seção — ambas valem a pena serem armazenadas por instantâneo.

Q: O que é quota de recomendação?
É a porcentagem de slots recomendados que uma marca ocupa em uma consulta ou conjunto de consultas, agregado a partir dos produtos capturados. Monitorado ao longo do tempo, mostra se uma marca está ganhando ou perdendo presença na prateleira Rufus — o equivalente de compra-conversacional à quota de voz.

Q: Por que armazenar instantâneas em vez de uma única visão atual?
O Rufus gera sua resposta por sessão, então qualquer captura é um ponto no tempo. Instantâneas apenas para adição, indexadas por consulta e horário de captura, fornecem o histórico para diferenciar, assim você pode relatar quais ASINs entraram ou saíram entre execuções, em vez de adivinhar a partir de uma única resposta.

Q: Quantas consultas posso monitorar de uma só vez?
Mantenha a concorrência modesta — um punhado de consultas em andamento é suficiente para uma execução de monitoramento constante. Limite o conjunto às perguntas nas quais você age e deixe related_questions sugerir as próximas a serem adicionadas, para que cada chamada faturável ganhe seu lugar.

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