n8n + LLM 爬虫:在无代码工作流中捕获 AI 答案
Senior Web Scraping Engineer
关键要点:
- n8n通过一个HTTP请求节点与Scrapeless LLM聊天爬虫通信——无需编码,无需SDK。 一个节点POST到
https://api.scrapeless.com/api/v2/scraper/execute,带有x-api-token头和JSON主体,答案将作为数据发送到下一个节点读取。 - 请求体是
{ actor, input },没有其他内容。 设置主体为{"actor":"scraper.chatgpt","input":{"prompt":"…","country":"US","web_search":true}},节点返回{ status, task_id, task_result }——这是每个Scrapeless LLM演员使用的相同信封。 - 调度触发器将调用变为持续监控。 将
Schedule Trigger → HTTP Request → IF → Set/Sheet/DB连接在一起,n8n根据设置的时间间隔重新运行提示,将每个答案附加到表格或数据库中,而无需任何人打开终端。 - IF节点将空运行处理为数据,而非失败。 模型每个会话填充
task_result,因此本次运行的空答案是该查询没有答案——对此分支,记录没有要存储的内容,然后继续;下一个计划运行将捕获填充后的内容。 - MCP客户端节点是代理节点的替代方案。 当工作流是一个AI代理而非固定管道时,将n8n的MCP客户端节点指向Scrapeless MCP服务器,捕获将成为代理自主调用的工具。
- 免费开始。 新的Scrapeless账户包括免费试用积分——在app.scrapeless.com注册。
引言:答案引擎成为工作流输入
LLM答案引擎现在位于用户与开放网络之间,品牌关心的问题——谁被推荐,哪些来源被引用,什么价格显示——在任何页面被点击之前,都在ChatGPT内部得到解答。按照时间表读取这些表面是一个数据收集工作,而n8n已经是许多团队运行其定期数据工作的地方。
摩擦在于ChatGPT没有官方的答案API,并且从自动化工具驱动聊天界面意味着登录墙、流式响应和在答案呈现后客户端解析的字段。n8n的HTTP请求节点可以调用任何REST端点,但在渲染、住宅出口和解析发生在其他地方之前,它没有任何可以调用的内容。
Scrapeless LLM聊天爬虫就是那其他地方:一个POST将呈现的ChatGPT答案作为JSON返回,因此HTTP请求节点有一个干净的端点可以访问,工作流的其他部分可以读取结构化字段。此帖通过不涉及任何代码将n8n连接到该演员——一个调度触发器,一个HTTP请求节点,一个处理空运行的IF分支,以及一个存储节点——并展示了需要爬虫作为AI工具的工作流的代理节点路径。有关答案引擎爬虫本身的排名视图,最佳LLM爬虫将表面并排比较。
关于范围的说明:下面的请求合同是与实时的scraper.chatgpt演员进行验证的,每个n8n参数名称都是与当前n8n节点参考进行确认的。端到端工作流是根据这两个经过验证的部分进行描述的——此帖并未展示作为证明的截屏运行。
你可以用它做些什么
- 定期答案监控。 每小时或每早运行固定的提示集,将每个ChatGPT答案附加到表格中,因此答案漂移变成时间序列,而不是手动检查。
- 引用份额跟踪。 读取
task_result.search_result以获取ChatGPT咨询的来源,并在运行中统计域名,以查看模型在您的类别中持续引用了谁。 - 品牌提及警报。 根据答案文本是否提及您的产品进行分支,当提及出现或消失时,从IF节点引导到Slack或电子邮件节点。
- 在一个工作流中多引擎捕获。 复制HTTP请求节点并将演员字符串替换为
scraper.gemini或scraper.perplexity——信封是相同的,因此下游节点不会变。 - 无操作交接给非开发人员。 一旦工作流存在,团队成员可以在一个Set节点或一个表格中编辑提示列表,而不需要触及代码,捕获将继续运行。
- 代理工具调用。 通过MCP客户端节点暴露爬虫,以便n8n AI代理决定何时将查询答案引擎作为更大任务的一部分。
为什么选择Scrapeless LLM聊天爬虫用于n8n
Scrapeless LLM聊天爬虫是scraper.chatgpt演员,是通用爬虫API系列的一部分,它符合n8n,因为它是一个经过身份验证的POST,输入和输出都是JSON。对于一个无代码工作流,它带来了:
- 一个直接由 HTTP 请求节点调用的单一 REST 端点 — 不需要在 n8n 主机上安装 SDK,也不需要驱动浏览器。
- 服务器端渲染、住宅出口和防爬虫处理,以便节点收到完整的答案,而不是登录页面。
- 请求中的
country字段,将 JSON 主体内的出口市场固定 — 一个节点覆盖每个市场的捕获。 - 一个
{ status, task_id, task_result }信封在scraper.chatgpt、scraper.gemini和scraper.perplexity之间共享,因此一个可工作的节点可无变化地复制到其他引擎。 - 一个
x-api-token头作为唯一的认证 — 一个 n8n 凭证或头值,可以在调用 Scrapeless 的每个节点中重复使用。
在免费的计划中获取您的 API 密钥,访问 app.scrapeless.com。
前提条件
- 一个 n8n 实例(云或自托管),您可以在其中添加工作流
- 一个 Scrapeless 账户和 API 密钥 — 在 app.scrapeless.com 注册
- 提供用于粘贴到 HTTP 请求节点头中的 API 密钥(或存储为 n8n 凭证)
- 捕获行的目的地 — 一个 Set 节点、一个 Google Sheets 节点,或一个数据库节点如 Postgres
不需要语言运行时、代理或 CAPTCHA 解决器;请求是普通的 HTTP,重负载在 Scrapeless 端运行。
工作流概览
整个捕获由四个节点组成:
调度触发器 → HTTP 请求 → IF → Set / Google Sheets / Postgres
(间隔) (POST 角色) (是否为空?) (存储答案)
调度触发器以固定的间隔触发,HTTP 请求节点调用 scraper.chatgpt,IF 节点检查返回的答案是否被填充,存储节点写入行。IF 节点的空分支是记录并丢弃未回答的运行 — 不会再次发送。下面的每个节点仅命名当前 n8n 节点引用中存在的参数。
步骤 1 — 调度触发器
调度触发器以固定的节奏启动工作流,以便捕获在没有人按下播放的情况下进行。添加一个 调度触发器 节点(类型版本 1.3),并将其 触发规则 设置为 interval — 每小时、每几小时,或每天一次,这取决于您跟踪的答案移动的频率。对于答案引擎监控,通常每日或每日两次就足够了,因为几周的系列是信号,而不是逐分钟的变化。
触发器每次触发发出一个项目。如果您希望每次运行多个提示,可以跟随一个 Set 节点输出您的提示列表,或从表单中读取提示 — 每个提示都通过 HTTP 请求节点作为其自己的项目流动。
步骤 2 — HTTP 请求节点:调用角色
HTTP 请求节点是集成节点。它将 POST 请求发送到 Scrapeless 并返回解析后的答案到工作流。添加一个 HTTP 请求 节点(类型版本 4.4),并设置以下参数:
- 方法 →
POST - URL →
https://api.scrapeless.com/api/v2/scraper/execute - 发送头 → 打开。添加一个头部:名称
x-api-token,值为您的 Scrapeless API 密钥(或引用 n8n 凭证)。 - 发送主体 → 打开。
- 主体内容类型 →
JSON。 - 指定主体 → 使用 JSON,然后将角色调用粘贴到 JSON 字段中。
JSON 主体是整个合同 — 角色名称加上一个 input 对象:
json
{
"actor": "scraper.chatgpt",
"input": {
"prompt": "最佳跑鞋 2026",
"country": "美国",
"web_search": true
}
}
为了使提示动态,将静态字符串替换为读取传入项目的 n8n 表达式 — 例如,从提供该节点的 Set 节点或表单行中提取 prompt。country 锁定该运行的住宅出口,而 web_search 允许模型提取实时来源,从而提高答案解决的频率。每个字段位于 input 内;在主体的顶部级别发送 prompt 或 country 会被角色拒绝。
为节点的 超时 预留足够时间。渲染的答案可能会需要一段时间返回,因此短默认超时会在答案到达之前截断调用 — 留出余地。
该节点返回标准信封 { status, task_id, task_result },作为项目的 JSON。下游节点从 task_result.result_text 读取答案,从 task_result.search_result 读取来源。
在免费计划中获取您的 API 密钥: app.scrapeless.com
步骤 3 — IF 节点:根据空答案分支
IF节点决定是否有内容需要存储。ChatGPT的回答是按会话生成的,因此相同的提示在一次运行中可以返回完整的答案,而在下一次运行中则可能返回空的task_result——这并不是失败,而是本次运行对于该查询没有答案。在HTTP请求节点之后添加一个IF节点(版本2.3类型),并编写一个单一的Conditions规则,以测试答案字段是否为空——例如,检查表达式task_result.result_text是否为空。
- False分支(有答案) → 连接到第4步的存储节点。
- True分支(答案为空) → 记录本次运行未产生任何内容并停止。一个NoOp节点或一个写入“空运行”标记行的Set节点就足够了。
空分支不会再次调用该参与者。下一个计划的触发是获得填充答案的下一个机会,汇总返回答案的运行是整个模式。将空结果视为可空数据,而不是需要追逐的错误。
第4步 — 存储答案
存储节点将每个填充的答案转换为可以稍后查询的行。将IF节点的答案存在的分支连接到适合程序的任何目的地:
- Set节点 → 将项的形状调整到你保留的字段:提示、
task_result.result_text、来自task_result.search_result的源域、task_id和捕获时间戳。即使其他节点执行写入,这也作为一个最终形状步骤非常有用。 - Google Sheets节点 → 每次运行追加一行,用于可共享的、无数据库日志,非开发人员可以阅读和编辑。
- Postgres(或其他数据库)节点 → 当捕获用于数据仓库或仪表板时插入到表中。
在每一行中存储task_id和运行时间。答案长度、引用计数和命名源在每次运行中都有变化,因此该值是跨捕获的系列,而不是任何单一响应。
官方Scrapeless节点 — 以及为什么本指南使用HTTP请求
n8n有一个官方的Scrapeless社区节点(n8n-nodes-scrapeless)。安装它,使用Scrapeless凭证认证一次,它为三种界面提供了类型操作:Deep SerpApi(谷歌搜索和谷歌趋势)、通用抓取API(网络解锁器)和爬虫(抓取和爬行)。对于任何这些工作,该节点是更清晰的选择——无需手动构建URL或JSON主体。
LLM Chat Scraper参与者——scraper.chatgpt、scraper.gemini、scraper.perplexity和scraper.aimode——在当前节点发布中未作为操作公开,因此捕获答案引擎的响应是HTTP请求节点的情况:它直接到达/api/v2/scraper/execute,这正是上面步骤构建的内容。如果后来的节点发布添加LLM操作,Scrapeless凭证和工作流形状将继续存在——只有中间节点会更改。
代理节点替代方案:MCP客户端 + Scrapeless MCP服务器
当工作流是AI代理而不是固定管道时,n8n的MCP客户端节点替代手动构建的HTTP调用。MCP客户端节点连接到MCP服务器,并将该服务器的工具暴露给n8n AI代理,因此代理在需要时自己调用它们。将其指向Scrapeless MCP服务器,答案引擎捕获成为代理可以调用的工具之一——代理决定何时作为更大任务的一部分查询ChatGPT,而不是你将调用连接到固定分支。
这两条路径满足不同的需求。HTTP请求节点是用于确定性、定期抓取的正确工具——相同的提示、相同的节奏、可预测的行。MCP客户端节点是在代理应该动态选择是否以及查询什么时的正确工具。基础的Scrapeless界面是相同的;只有触发调用的人发生变化。
你将收到的内容
HTTP请求节点返回参与者的标准信封作为项目JSON。答案在task_result下,散文在result_text中,咨询的源在search_result中。下面的形状是scraper.chatgpt返回的内容;字段值是来自实时运行的示例(文本和源经过删减)。
json
// 架构是scraper.chatgpt返回的内容;字段值是来自实时运行的示例。
{
"status": "success",
"task_id": "…",
"task_result": {
"prompt": "2026年最佳跑鞋",
"model": "gpt-5-mini",
"result_text": "根据最近对主要品牌(ASICS、Nike、HOKA、Adidas、Brooks、Saucony)的测试,以下是2026年最佳跑鞋……",
"content_references": [],
"search_result": [
{ "title": "2026年最佳跑鞋 | 实验测试与排名", "url": "https://…", "snippet": "……", "attribution": "outdoorgearlab.com" }
],
"links": [],
"web_search": true
}
}
一些关于在n8n中阅读此内容的诚实备注:
- 每个字段都是可空的。
result_text可以为空,search_result可以在特定运行中为空数组——第 3 步的 IF 节点正是为这种情况而存在。对于读取这些字段的任何表达式,请防范缺失字段的情况。 search_result是引用表面。 每个条目包含title、url、snippet和attribution;在一个 Set 节点中解析 URL 的主机,并在运行之间计算引用份额。web_search反映请求。 它反映了在运行中是否启用了实时源拉取;为了更好地处理推荐提示,请在主体中保持其为true。- 输出在不同运行中有所不同。 对于相同的提示,答案长度和来源数量会变化,这就是为什么捕获时间戳和
task_id属于每一行存储的原因。
常见问题
问:我需要编写任何代码将 n8n 连接到 LLM Chat Scraper 吗?
不需要。集成是内置的 HTTP Request 节点,配置为 POST 方法,使用 /api/v2/scraper/execute URL、x-api-token 头和 JSON 主体。无需在 n8n 主机上安装 SDK,也无需编写功能节点。
问:我的 Scrapeless API 密钥在 n8n 中放在哪里?
放入 HTTP Request 节点的头中——启用 发送头,添加名为 x-api-token 的头,并将其值设置为你的密钥,或者引用一个 n8n 凭证,以便密钥不会存储在节点本身中。相同的头在工作流中的每次 Scrapeless 调用上都有效。
问:我如何在一次运行中发送多个提示?
在 Schedule Trigger 后使用一个 Set 节点,其输出为你的提示列表,或者从 Google 表格中读取提示。每个提示成为自己的条目,分别流经 HTTP Request 节点,因此一次运行捕获整个集合。
问:当回答为空时会发生什么?
ChatGPT 的回答是按会话进行的,因此空的 task_result 意味着在该运行中对此查询没有回答。IF 节点的空分支记录无操作并停止;下一个调度运行是获得填充回答的下一个机会。工作流不会重新发送相同的调用。
问:我可以从同一工作流中捕获 Gemini 和 Perplexity 吗?
可以。复制 HTTP Request 节点并将演员字符串更改为 scraper.gemini 或 scraper.perplexity。端点、头和 { status, task_id, task_result } 封装都是相同的,因此后续的 IF 和存储节点不变。
问:我应该在何时使用 MCP Client 节点而不是 HTTP Request 节点?
对于固定、定期捕获且提示可预测的情况,使用 HTTP Request 节点。当 n8n AI 代理应该自行决定是否以及查询什么时,使用指向 Scrapeless MCP 服务器的 MCP Client 节点——然后爬虫作为代理调用的工具。
问:我需要在 n8n 主机上运行代理或浏览器吗?
不需要。渲染、住宅出口和反机器人处理均在 Scrapeless 服务器端运行。n8n 主机仅发起出站的 HTTPS 请求;主体中的 country 字段选择出口市场。
问:收集 ChatGPT 的回答是合法吗?
返回的数据是 ChatGPT 向任何用户展示的公开可见答案。与任何爬取一样,合法性取决于管辖权和用途——在构建之前查看相关条款并咨询法律顾问,只收集公开的答案和来源数据,绝不收集个人数据。
结论:一个四节点的常驻捕获
将 n8n 连接到 Scrapeless LLM Chat Scraper 归结为一个 HTTP Request 节点:将 POST { actor, input } 发送到 /api/v2/scraper/execute,并带有 x-api-token 头,读取 task_result,在空运行上分支并存储该行。一个 Schedule Trigger 将其变为常驻监控,而 MCP Client 节点在工作流需要时将其变为代理工具。保持提示集的范围,将 country 针对每个市场进行固定处理,将每个字段视为可空的,并存储 task_id 加上时间戳,以便系列是信号。使用 Universal Scraping API 额度按计划运行固定提示集,答案引擎将成为工作流其他部分的干净输入。请求合同和字段名称已根据实时的 LLM Chat Scraper 演员进行了确认,节点参数与当前的 n8n 节点参考一致。
准备构建您的 AI 答案数据管道吗?
加入我们的社区以申请免费的计划,并与正在构建 AI 答案数据管道的开发者联系:Discord · Telegram。
在 app.scrapeless.com 注册以获取免费试用额度,并将上述四节点工作流指向你的程序跟踪的提示、引擎和市场。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



