ChatGPT创意写作AI 评分 · 待评分AI 辅助编辑·未发现明显提示词注入风险n8n.io

用 Bright Data MCP 与 OpenAI 搭建食谱推荐引擎

输入食谱搜索页 URL → Bright Data MCP 分页抓取 → GPT-4o-mini 结构化提取 → 循环处理单页 → 输出 JSON 文件与 Webhook 通知

有一点经验步骤流程提示词贴士
给谁
需要批量抓取并结构化食谱数据的内容创作者、营养师、食谱聚合平台开发者,或希望在 n8n 中结合 MCP 与 LLM 做数据提取的自动化工程师。
你会得到
将任意公开食谱搜索页自动转换为结构化 JSON(含标题、URL、分类、评分、份量、饮食选项等),支持分页遍历、单页循环抓取,并通过 Webhook 推送或本地文件保存结果。
你需要
n8n · 本地磁盘

硬约束

前置条件:自托管 n8n 实例(社区节点 MCP Client 仅支持 self-hosted);Bright Data 账号并创建 Web Unlocker zone;OpenAI 账号。在 n8n 中配置 Header Auth 凭证(Bearer Token 为 Bright Data Web Unlocker Token)与 OpenAI API 凭证。导入模板后,在「Set the Recipe Extract URL」节点修改 url、webhook_url、base_url 三个字段。

他们做了什么

作者 ranjancse 在 n8n 官方模板库发布了该工作流,结合 Bright Data 的 MCP(Model Context Protocol)客户端与 OpenAI GPT-4o-mini,实现从公开食谱搜索页自动抓取、分页遍历、单页结构化提取并输出标准 JSON 的完整流程。工作流包含 23 个节点,使用 LLM Chain 做两次结构化提取(分页链接 + 食谱详情),通过 Split In Batches 实现循环处理,并以 Webhook 和本地文件双通道输出结果。

效果如何

来源报告该模板可解决:公开 URL 的食谱数据自动提取、AI 驱动的结构化数据提取、可扩展的循环爬取与处理、实时通知与数据持久化。(author_report)模板页面显示 597 次浏览,状态为 published。

值得知道

1. 自托管限制:社区节点 n8n-nodes-mcp.mcpClient 仅支持 self-hosted n8n,云端托管实例无法直接安装。 2. 凭证要求:需 Bright Data Web Unlocker zone 的 Header Auth Token(Bearer 格式)与 OpenAI API key;来源未说明费用细节。 3. 硬编码路径:「Write the structured content to disk」节点默认使用 Windows 路径 `d:\Recipe-Structured-Data-...`,Linux/macOS 用户必须修改。 4. 等待节点:循环内包含 10 秒 Wait 节点,用于控制抓取频率,但大规模抓取时仍需关注 Bright Data 用量与速率限制。 5. 可替换模型:来源建议可将 GPT-4o-mini 替换为 Gemini 等其他模型,Schema 字段也可按需调整。 6. 存储可替换:来源建议可将本地磁盘替换为 S3、GCS、MongoDB、PostgreSQL、Google Sheets 等。 7. 本站未实测:reproduction=not_tested,搭建时建议先用单页测试验证凭证与 Schema 匹配性。

n8n 工作流模板

结构已检查 · 未实际运行

下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。

配置与测试清单

需要绑定的凭证

  • List all tools for Bright Data 节点:绑定mcpClientApi 凭证。
  • Bright Data MCP Client For Recipe Extract 节点:绑定mcpClientApi 凭证。
  • Bright Data MCP Client For Recipe Extract Within The Loop 节点:绑定mcpClientApi 凭证。
  • OpenAI Chat Model for Paginated Data Extract 节点:绑定OpenAI API 凭证。
  • OpenAI Chat Model for Structured Data Extract 节点:绑定OpenAI API 凭证。

需要替换的配置

  • 源模板来自 n8n 公开库 #4591(约 23 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
  • Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。

测试输入与预期结果

  • 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
  • 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。

模板处理说明

  • 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
  • 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。

模板获取日期: 2026-10-25

步骤

  1. 配置输入参数与凭证

    在 n8n 中导入模板后,打开「Set the Recipe Extract URL」节点(Edit Fields/Set),修改三个字段:url(目标食谱搜索页,如 https://realfood.tesco.com/search.html?search=tomato%20pasta&sortby=Rating)、base_url(搜索页根路径)、webhook_url(接收通知的端点)。同时确认已配置 Bright Data MCP Client 的 Header Auth 凭证(Value 为 Bearer + Web Unlocker Token)与 OpenAI API 凭证。

    搭建指导 · 本站建议版本。搭建助手启动词;指导用户完成凭证与输入配置

    请在 n8n 中完成以下配置:
    1. 导入模板后,定位「Set the Recipe Extract URL」节点,设置 url、base_url、webhook_url。
    2. 在 Credentials 中配置 mcpClientApi:选择 Header Auth,Value 填入 Bearer YOUR_BRIGHT_DATA_WEB_UNLOCKER_TOKEN。
    3. 配置 openAiApi 凭证。
    4. 确认节点「Write the structured content to disk」中的本地路径(如 d:\Recipe-Structured-Data-{{ $('Loop Over Items').item.json.page_number }}.json)在你的环境中可写入。
  2. Bright Data MCP 抓取搜索页并提取分页链接

    工作流触发后,「Bright Data MCP Client For Recipe Extract」节点使用 scrape_as_html 工具抓取搜索页 HTML。随后「Paginated Data Extract」LLM Chain 节点调用 GPT-4o-mini,结合「Structured Output Parser for Paginated Data」的 JSON Schema,从 HTML 中提取分页链接数组(含 page_number 与 link)。系统提示词为 "You are an expert data miner"。

    运行提示词 · 来源原文。Paginated Data Extract 节点的 text 字段(LLM Chain 的用户输入)

    =Extract the paginated data from the provided content. 
    
    Here's the content : {{ $json.result.content[0].text }}
    
    Append the link with the Base URL as {{ $('Set the Recipe Extract URL').item.json.base_url }}

    运行提示词 · 来源原文。Paginated Data Extract 节点的 messages.messageValues[0].message(系统提示)

    You are an expert data miner

    运行提示词 · 来源原文。Structured Output Parser for Paginated Data 节点的 jsonSchemaExample 字段

    [{
    	"page_number": "page number in int",
    	"link": "link to the web content"
    }]
  3. 转换输出并循环遍历分页链接

    「Code to output the array of paginated info」节点执行 `return $input.first().json.output`,将 LLM 解析结果转换为标准数组。随后「Loop Over Items」节点逐条输出每个分页链接,供下游循环处理。

    运行提示词 · 来源原文。Code to output the array of paginated info 节点的 jsCode 字段

    return $input.first().json.output
  4. 循环内单页抓取与等待

    每个分页链接进入「Wait」节点延迟 10 秒后,由「Bright Data MCP Client For Recipe Extract Within The Loop」节点再次调用 scrape_as_html,抓取单条食谱页面 HTML。该节点使用表达式 `{{ $json.link }}` 动态传入 URL。

    运行提示词 · 来源原文。Bright Data MCP Client For Recipe Extract Within The Loop 节点的 toolParameters 字段

    ={
       "url": "{{ $json.link }}"
    }
  5. GPT-4o-mini 结构化提取食谱数据

    「Structured Recipe Data Extract」LLM Chain 节点调用 GPT-4o-mini,系统提示同样为 "You are an expert data miner",用户输入为 "=Extract search data. Here's the content : Output the data in JSON"。输出由「Structured Output Parser for Recipe Data Extract」按完整 JSON Schema 解析为结构化字段:pageTitle、searchTerms、sortBy、numberOfResults、numberOfPages、numberOfFirstResult、numberOfLastResult,以及 recipes 数组(含 title、url、category、rating、serves、dietaryOptions、isHealthy)。

    运行提示词 · 来源原文。Structured Recipe Data Extract 节点的 text 字段(LLM Chain 的用户输入)

    =Extract search data. Here's the content : 
    Output the data in JSON

    运行提示词 · 来源原文。Structured Recipe Data Extract 节点的 messages.messageValues[0].message(系统提示)

    You are an expert data miner

    运行提示词 · 来源原文。Structured Output Parser for Recipe Data Extract 节点的 inputSchema 字段

    {
      "$schema": "http://json-schema.org/schema#",
      "title": "TescoRecipeSearchResults",
      "type": "object",
      "properties": {
        "pageTitle": { "type": "string" },
        "searchTerms": { "type": "string" },
        "sortBy": { "type": "string" },
        "numberOfResults": { "type": "integer" },
        "numberOfPages": { "type": "integer" },
        "numberOfFirstResult": { "type": "integer" },
        "numberOfLastResult": { "type": "integer" },
        "recipes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "title": { "type": "string" },
              "url": { "type": "string" },
              "category": { "type": "string" },
              "rating": { "type": "number" },
              "serves": { "type": "integer" },
              "dietaryOptions": {
                "type": "array",
                "items": { "type": "string" }
              },
              "isHealthy": { "type": "boolean" }
            },
            "required": [
              "title",
              "url",
              "category",
              "rating",
              "serves",
              "dietaryOptions"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "pageTitle",
        "searchTerms",
        "sortBy",
        "numberOfResults",
        "numberOfPages",
        "numberOfFirstResult",
        "numberOfLastResult",
        "recipes"
      ],
      "additionalProperties": false
    }
  6. Webhook 推送结构化结果

    「Webhook Notification for Data Extract Within the Loop」节点以 multipart/form-data 格式,将 `{{ $json.output.toJsonString() }}` 作为 recipe_content 字段,POST 到配置的 webhook_url。可用于接入 Slack、Discord 或内部 API。

  7. 保存 JSON 到本地磁盘

    「Create a binary data」节点将 JSON 输出转为 base64 二进制数据,随后「Write the structured content to disk」节点写入本地文件,文件名含页码变量:`=d:\Recipe-Structured-Data-{{ $('Loop Over Items').item.json.page_number }}.json`。请根据你的系统修改路径。

    运行提示词 · 来源原文。Create a binary data 节点的 functionCode 字段

    items[0].binary = {
      data: {
        data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')
      }
    };
    return items;

可复制提示词

搭建指导 · 本站建议版本。搭建助手启动词;指导用户完成凭证与输入配置

这一段是提示词,页面不会在这里插入广告。

请在 n8n 中完成以下配置:
1. 导入模板后,定位「Set the Recipe Extract URL」节点,设置 url、base_url、webhook_url。
2. 在 Credentials 中配置 mcpClientApi:选择 Header Auth,Value 填入 Bearer YOUR_BRIGHT_DATA_WEB_UNLOCKER_TOKEN。
3. 配置 openAiApi 凭证。
4. 确认节点「Write the structured content to disk」中的本地路径(如 d:\Recipe-Structured-Data-{{ $('Loop Over Items').item.json.page_number }}.json)在你的环境中可写入。

本模板仅适用于自托管 n8n(社区节点 MCP Client 限制)。修改 url/base_url/webhook_url 与本地磁盘路径后即可测试。

来源

Recipe recommendation engine with Bright Data MCP & OpenAI 4o mini · ranjancse · n8n.io · 2025-06-02

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例