如何监测品牌在人工智能回答引擎中的情感反应
Scraping and Proxy Management Expert
TL;DR:
- 品牌情感在AI回答中是与引用份额不同的信号。 被引用说明了某个来源被使用;情感则告诉你在买家实际阅读的答案中你的品牌是如何被描述的——这两者可能不一致。
- 一个提示,所有引擎,一个封装。 Scrapeless LLM 参与者(
scraper.chatgpt、scraper.copilot、scraper.perplexity、scraper.gemini等)共享一个端点和一个{ status, task_id, task_result }结构,因此单个捕获循环覆盖所有这些引擎。 - 情感是从答案文本中计算的,而不是引用。 在
result_text中查找品牌名称,阅读每个提及周围的词汇,并评估周围的上下文——不需要模型密钥来实现透明的词汇基线。 - 图片因引擎而异。 在一次实时捕获中,提问“Scrapeless 是一个好的网页抓取工具吗?”,同一品牌在两个引擎上显示为积极,在第三个引擎上显示为中立,而在第四个引擎上显示为消极——这种分歧是单引擎检查所无法捕捉到的。
- 按计划运行。 捕获、检测、评分并存储每次运行的
task_id和时间戳;数周的系列数据为品牌认知趋势。 - 免费开始。 新的 Scrapeless 账户包括免费试用积分——请在 app.scrapeless.com 注册。
管道概览
当买家询问AI助手关于你的产品时,助手会决定两件事:是否提到你,以及如何提到你。“X 是最可靠的选项”和“X 功能强大但昂贵且难以学习”都是提及;只有一个对你有帮助。引用跟踪计数的是第一个维度。这个管道衡量的是第二个维度。
构建由三个阶段组成,基于 Universal Scraping API:
- 捕获 — 在所有AI回答引擎中运行固定的品牌意图提示,通过它们的 Scrapeless 参与者;存储每个原始答案。
- 检测 — 在答案文本中找到品牌的每个提及,并提取周围的上下文窗口。
- 评分 — 评分每个提及上下文的情感,并汇总为每个引擎的一个数字。
输出是每个引擎的情感评分,你可以随时间绘制图表,连同生成它的原始提及一起。有关引用份额伴随指标——引擎所使用的来源——请参见 AI 概览抓取工具指南。
你可以用它做什么
- 在负面框架传播之前捕获它。 如果一个引擎开始用“昂贵”或“难以学习”等词汇描述你的品牌,你会在它出现在失去交易之前就看到评分。
- 比较各引擎间的认知。 买家的助手可能不是最喜欢你的那个;并排的评分可以告诉你该关注的地方。
- 将情感与内容变化关联。 在发布比较页面或文档重写之前和之后进行捕获,并观察框架是否有所变化。
- 将“提及”和“良好提及”分开。 高提及数但情感评分平坦是一个不同问题,与提及数低的情况有所不同——并且需要不同的解决办法。
- 填充仪表板。 每个引擎的评分和提及行直接落入数据库或图表中。
为什么选择 Scrapeless LLM 参与者
每个AI助手都是一个在身份验证和 反自动化防御 后面的JavaScript应用程序;自己捕获答案意味着每个平台都需要渲染、登录和代理轮换。Scrapeless LLM 参与者在服务器端运行该表面并将答案作为字段返回。对于一个专门的情感管道,它们提供:
- 跨每个引擎共享的
{ status, task_id, task_result }JSON封装,因此一个捕获循环和一个解析器覆盖整个集合。 result_text以markdown格式——品牌描述的确切文本,随时准备扫描提及。- 195多个国家的住宅出口,因此一个固定的
country捕获到该市场真实用户将阅读的答案。 - 无需运行或保持登录的浏览器——一个 HTTP端点,一个
x-api-token头。
演员线的定价基于使用量,注册时提供免费试用积分 — 当前的定价档次在 定价 页面上。您可以在 app.scrapeless.com 的免费计划中获取您的 API 密钥。
先决条件
- 一个 Scrapeless 帐户和 API 密钥(免费计划包含试用积分) — app.scrapeless.com。
- 在您的环境中设置密钥:
bash
export SCRAPELESS_API_KEY="your_api_token_here"
- 安装有
requests的 Python 3。情感分析步骤仅使用标准库,因此不需要管理任何模型密钥作为基线。
阶段 1 — 捕获答案
一个循环覆盖每个引擎,因为演员共享一个端点和一个信封。每个引擎的差异在输入映射中 — Grok 需要一个推理 mode,Perplexity 需要 web_search,Copilot 使用自己的 mode。答案文本在 ChatGPT、Copilot、Perplexity、Gemini 和 AI 模式中位于 result_text。
python
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"],
}
BRAND = "Scrapeless"
PROMPT = "Scrapeless 是一个好的网页抓取工具吗,它的优缺点是什么?"
COUNTRY = "US"
ENGINES = {
"chatgpt": {"actor": "scraper.chatgpt", "extra": {}},
"copilot": {"actor": "scraper.copilot", "extra": {"mode": "smart"}},
"perplexity": {"actor": "scraper.perplexity", "extra": {"web_search": True}},
"gemini": {"actor": "scraper.gemini", "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"]}}
data = requests.post(ENDPOINT, headers=HEADERS, json=payload, timeout=300).json()
result = data.get("task_result") or {}
out.write(json.dumps({
"platform": platform,
"brand": BRAND,
"prompt": PROMPT,
"captured_at": int(time.time()),
"status": data.get("status"),
"task_id": data.get("task_id"),
"result_text": result.get("result_text") or "",
}) + "\n")
print(f"{platform}: {data.get('status')} ({len(result.get('result_text') or '')} chars)")
answers.jsonl 的每一行都是一个引擎的答案,由 task_id 作为审计追踪键。
在免费计划中获取您的 API 密钥: app.scrapeless.com
阶段 2 和 3 — 检测提及和评分情感
在每个答案中找到品牌,读取每个提及周围的文本窗口,并根据一个小的正负词典对该上下文进行评分。词典基线是透明的,不需要模型密钥;如果你想要细微差别,可以稍后切换为基于模型的评分器。
python
# score.py — answers.jsonl -> per-engine sentiment
import json
import re
POSITIVE = {"最好", "伟大", "强大", "可靠", "简单", "快速", "健壮", "优秀",
"强", "好", "有效", "可扩展", "灵活", "推荐", "领先",
"顶级", "高效", "实惠"}
NEGATIVE = {"昂贵", "慢", "困难", "有限", "弱", "差", "缺乏", "不可靠",
"复杂", "成本高", "缺点", "弱点", "缺陷", "不利", "问题", "困难", "缺陷"}
WINDOW = 120 # 每个提及两侧的上下文字符数
rows = []
for line in open("answers.jsonl", encoding="utf-8"):
record = json.loads(line)
brand = record["brand"].lower()
text = (record.get("result_text") or "").lower()
hits = [m.start() for m in re.finditer(re.escape(brand), text)]
pos = neg = 0
for i in hits:
context = text[max(0, i - WINDOW): i + WINDOW]
words = set(re.findall(r"[a-z]+", context))
pos += len(words & POSITIVE)
neg += len(words & NEGATIVE)
total = pos + neg
sentiment = (pos - neg) / total if total else 0.0
label = "积极" if sentiment > 0.15 else "消极" if sentiment < -0.15 else "中立"
rows.append({"platform": record["platform"], "mentions": len(hits),
"pos_signals": pos, "neg_signals": neg,
"sentiment": round(sentiment, 3), "label": label})
print(f"{record['platform']:11} mentions={len(hits):3} sentiment={sentiment:+.3f} ({label})")
json.dump(rows, open("sentiment.json", "w"), indent=2)
单次实时捕获Scrapeless提示生成了一个单引擎隐藏的分歧:
| 引擎 | 提及次数 | 情感 | 读取 |
|---|---|---|---|
| ChatGPT | 18 | +0.52 | 正面 |
| Copilot | 38 | −0.02 | 中立 |
| Perplexity | 40 | +0.39 | 正面 |
| Gemini | 19 | −0.60 | 负面 |
提及次数和情感是独立变化的:Copilot的38次提及保持中立,而Gemini的19次较小提及则大幅偏向负面。计算引用将会错过这两个事实。由于每个引擎生成的答案都是新的,因此确切数字在每次运行中会发生变化——引擎之间的正面/中立/负面分裂是持久信号,而不是单一数字。
调度和扩展系列
按计划运行 capture.py 然后运行 score.py — 每天或每周 — 并将每次运行的行附加到一个以 captured_at 和 task_id 为键的存储中。从实时运行中得到的几点说明:
- 答案在每次运行中会变化,因此单次捕获是一个样本,而不是判决。系列中的趋势是信号。
- 固定
country以使得得分反映你关心的市场,并在不同运行中保持可比性。 - 将词汇表视为基线。 它是透明且快速的;为更细致的读取(讽刺、条件赞美)用模型对同样的上下文窗口进行评分,并将词汇表作为交叉检查。
- 保留原始提及。 当得分变化时,存储的上下文窗口能告诉你哪些短语推动了它。
结论:衡量AI如何描述你
引用跟踪告诉你助手使用了你的页面;情感跟踪告诉你阅读答案的买家是否留下了好印象。Scrapeless LLM参与者使得第二个可测量化:一个捕获循环,答案文本作为一个字段,结合透明的评分机制,将“AI引擎如何谈论我们?”转化为一个可图表化的数字。
准备构建你的AI答案数据管道吗?
加入我们的社区,领取免费的计划,并与构建AI答案管道的开发者联系:Discord · Telegram。
在 app.scrapeless.com 注册获取免费试用积分,并将管道指向你需要监测的品牌、提示和市场。
常见问题
问:品牌情感与引用份额有什么不同?
答:引用份额计算你的域名是否作为来源被使用;情感读取你的品牌在答案文本中的描述。一个品牌可能会被频繁提及,但描述平淡;或者描述热情但几乎不被提及——这两个指标回答不同的问题。
问:我需要模型API密钥用于情感步骤吗?
答:不需要。基线评分器使用透明的正/负词汇表通过上下文窗口运行,因此仅依赖标准库。基于模型的评分器是可选升级,而非必要条件。
问:为什么同一品牌在每个引擎上的得分不同?
答:每个引擎从其自身的来源和措辞合成答案,因此与你的品牌相关的词语有所不同。这种差异正是管道所呈现的——你的买家使用的助手可能会以不同于你假设的方式框定你。
问:抓取AI答案合法吗?
答:参与者读取公开可用的答案内容。与任何抓取一样,使用应限于公开数据,尊重各个平台的条款,避免个人数据,如用例不明确,请咨询律师。
问:我可以跟踪多个品牌吗?
答:可以。使用竞争中立的提示运行相同的捕获,并针对相同答案对多个品牌字符串进行评分,以便在你自己的记录中并排比较框架。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



