🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

通过一个管道在六个AI答案引擎中跟踪您的品牌

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

10-Jun-2026

关键要点:

  • 六个AI问答引擎,一个管道。 ChatGPT、Grok、Gemini、Perplexity、Copilot和Google的AI概述都以引用的方式回答购买问题——而且通过一个端点、一个x-api-token和一个{ status, task_id, task_result }封包可以捕获到这六个引擎。
  • 平台之间的差异仅在于字段层面。 每个引擎在不同的键下存储其引用(content_referencesweb_search_resultscitationsweb_resultssource);一个六行的字段映射将它们归一化为一个引用流。
  • 引用的份额是输出指标。 根据每个提示和平台的域对归一化引用进行分组,随着时间的推移,其数量就是您品牌的AI回答可见性。
  • 三个阶段,三个简短脚本。 捕获答案,归一化引用,报告计数——每个阶段都是一个可运行的Python文件,您可以按计划运行。
  • 锁定可变变量。 每个系列中国家、Grok的推理模式和提示集保持不变;答案在每次运行中变化,这种变化就是您所图表化的信号。
  • 免费开始。 新的Scrapeless账户包括免费试用积分——请在app.scrapeless.com注册。

管道一览

买家询问AI助手选择哪个工具,助手会指出某个选项——并附上简短的引用来源列表。这个选项是否是您取决于平台:引用您的引擎可能不是买家使用的引擎。跟踪一个平台可以告诉您那个平台的情况,而可见性图景则是六个平台并排呈现。

下面的管道生成了这个全景图:

  1. 捕获 — 对所有六个引擎运行固定提示,通过其Scrapeless参与者;将原始答案以JSONL格式存储。
  2. 归一化 — 将每个平台的引用字段映射为一个统一的{platform, prompt, domain, url, title}流。
  3. 报告 — 按平台逐域计数引用,并检查您自己的域出现在哪里。

第1阶段是唯一接触网络的阶段。第2和第3阶段是纯粹的转换,因此重新运行分析是免费的。关于为什么AI回答引用成为可见性指标的概念背景,GEO和品牌-AI可见性部分涵盖了这门学科;本指南则构建了这一工具。


前提条件

  • 一个Scrapeless账户和API密钥 — 请在app.scrapeless.com注册。
  • Python 3.10+ 和 requests库。
  • 一个买家可能实际会问的固定提示(示例使用了一个;生产运行使用了一组)。

将您的密钥存储在环境变量中,以确保它不会出现在代码中:

bash Copy
export SCRAPELESS_API_KEY=your_api_token_here

第1阶段 — 捕获答案

一个函数覆盖所有六个引擎,因为参与者共享一个端点和一个封包。每个引擎之间的差异仅限于输入映射——Grok需要一个推理mode,Perplexity想要web_search标志,Copilot使用自己的mode

平台 参与者 额外输入 引用存储于
ChatGPT scraper.chatgpt content_references[]
Grok scraper.grok mode(必需) web_search_results[] + x_search_results[]
Gemini scraper.gemini citations[]
Perplexity scraper.perplexity web_search: true web_results[]
Copilot scraper.copilot mode: "smart" citations[]
Google AI Overview scraper.overview source[]
python Copy
# capture.py — 在六个AI问答引擎上运行一个提示,存储原始答案
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 = "对于JavaScript密集型网站,最佳的网页抓取API是什么?"
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({
json Copy
"平台": platform,
            "提示": PROMPT,
            "国家": COUNTRY,
            "捕获时间": int(time.time()),
            "状态": data.get("status"),
            "任务ID": data.get("task_id"),
            "任务结果": data.get("task_result"),
        }) + "\n")
        print(f"{platform}: {data.get('status')}")

每行的answers.jsonl是一个平台的完整捕获——答案、引用和运行元数据——通过task_id进行审计追踪。

在免费计划中获取您的API密钥:app.scrapeless.com


第二阶段 — 规范引用

字段映射是整个技巧:每个平台对其引用数组的命名不同,条目的格式也不同,但每个条目都携带一个URL。六个映射将六种模式整合成一个流:

python Copy
# normalize.py — answers.jsonl -> citations.jsonl (每个引用来源一行)
import json
from urllib.parse import urlparse

# 平台 -> task_result内的(array_field, url_key)对列表
CITATION_FIELDS = {
    "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("task_result") or {}
        for field, url_key in CITATION_FIELDS[row["platform"]]:
            for entry in result.get(field) or []:
                url = entry.get(url_key) or ""
                if not url.startswith("http"):
                    continue
                out.write(json.dumps({
                    "平台": row["platform"],
                    "提示": row["prompt"],
                    "国家": row["country"],
                    "捕获时间": row["captured_at"],
                    "面板": field,
                    "域名": urlparse(url).netloc.removeprefix("www."),
                    "URL": url,
                    "标题": entry.get("title") or entry.get("name") or "",
                }) + "\n")

print(sum(1 for _ in open("citations.jsonl", encoding="utf-8")), "引用规范化完成")

Grok贡献了两个面板——开放网页和X帖子——并且panel字段使它们在下游可区分。


第三阶段 — 报告引用份额

通过一个引用流,报告是一个按组分类的过程:每个平台:引擎信用哪些域名,以及您的域名是否在其中:

python Copy
# report.py — citations.jsonl -> 每个平台的引用份额表
import json
import os
from collections import Counter, defaultdict

品牌 = os.environ.get("BRAND_DOMAIN", "scrapeless.com")

per_platform = defaultdict(Counter)
with open("citations.jsonl", encoding="utf-8") as inp:
    for line in inp:
        row = json.loads(line)
        per_platform[row["platform"]][row["domain"]] += 1

for platform, counts in per_platform.items():
    total = sum(counts.values())
    brand_hits = counts.get(品牌, 0)
    print(f"\n{platform} — {total} 篇引用 · {品牌}: {brand_hits}")
    for domain, n in counts.most_common(5):
        marker = " ←" if domain == 品牌 else ""
        print(f"  {n:>3}  {domain}{marker}")

定期运行,这个表格变成了时间序列:每个平台、每个提示、每个市场——引用您的答案数量,以及谁被引用而不是您。这个序列是GEO程序报告的交付内容。


调度和扩展系列

  • 保持变量不变。 每次运行相同的提示、相同的国家、相同的Grok模式——只有当过程保持不变时,系列才是可读的。每天或每周捕获;AI答案在这两个时间尺度上移动。
  • 通过乘法而非新代码扩展。 更多的提示是第1阶段的一个循环;更多市场是第二个COUNTRY;这两者都会增加运行次数,所以请相应地进行预算——演员按使用量收费,当前的定价在定价页面上。
  • 保留原始捕获。 answers.jsonl是报告中每个数字背后的证据;规范化选择会变化,原始答案不会变化。
  • 期待空面板。 某些提示在某些引擎上不会产生引用(特别是Grok的X面板依赖于提示)。空数组是一个数据点,而不是失败。

演员们生活在通用抓取API一线;最佳LLM抓取器指南对类别进行了排名,如果你在比较工具的话。


常见问题

问:通过这种方式捕捉AI答案是否合法?

演员捕捉公开呈现的答案内容。规则因管辖区和每个平台的条款而异——查看相关的服务条款,并为你的用例咨询顾问。切勿收集受GDPR或CCPA保护的个人数据。

问:为什么示例中只有一个提示而不是一组?

为了清晰。在第一阶段,生产运行围绕一个提示集循环;下游的每一行都处理多个提示,因为每一行都包含其prompt

问:多少次运行算作可用的系列?

单次抓取非确定性表面证明不多。每天抓取两到三周提供足够的数据点,以便在大多数提示集上将趋势与噪声分开。

问:谷歌的AI模式标签怎么回事?

它在同一个信封下有自己的演员(scraper.aimode)——将在引擎映射中添加第七个条目。AI概述指南深入介绍了谷歌的答案表面。

问:我需要代理吗?

不需要。住宅出口和地理路由已内置于演员中;country输入就是整个配置。

问:可以在没有AI代理或SDK的情况下运行吗?

可以——这三个阶段是通过HTTP的普通Python。任何调度程序(cron、CI、工作流运行器)都可以驱动它们。


结论:一个信封,六个引擎,一个数字

管道简化为三个文件:通过六个共享端点和信封的演员捕捉答案,使用六行字段映射规范化六个引用模式,并计算域名。输出是AI时代可见性工作缺失的数字——每个答案引擎在多长时间内给你信誉,按市场跟踪。安排好它,图表就会自动绘制。

准备构建你的AI答案数据管道?

加入我们的社区,申请一个免费计划,并与正在构建AI答案管道的开发者联系:Discord · Telegram

app.scrapeless.com注册以获取免费试用积分,并将管道指向你的品牌答案的提示、引擎和市场。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录