使用 n8n、Bright Data 和 OpenAI 自动化新闻简报

学习如何利用 n8n、Bright Data 和 OpenAI,自动化一个智能新闻简报。通过爬取数据、生成内容并发送个性化邮件。
3 分钟阅读
在 n8n 上整合 Forms、Bright Data 和 GPT-4o mini

想象一下,如果你能创建一个完全自动化的新闻简报。只需少量编码和一些 API 凭据,你就可以实现这一点。n8nBright DataOpenAI 为我们提供了实现这一目标的能力。

今天,我们将带你了解流程,向你展示它真的有多简单!

开始前的准备

我们将从 访问这个工作流程 开始(你可以免费试用)。点击文章顶部附近的“Use workflow”按钮。当出现提示时,务必运行一个自托管的 n8n 实例。

使用 n8n 工作流程

自托管 n8n

sudo snap install docker

启动 docker,并让 n8n 运行起来。

sudo docker volume create n8n_data
sudo docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

安装社区节点

接下来,是时候安装几个社区节点了。进入 “Settings”,点击 “Community nodes”。

安装社区节点

在 “npm” 输入框中输入 Bright Data 节点:

n8n-nodes-brightdata

然后,同样操作安装 Document Generator。

n8n-nodes-document-generator
添加 Document Generator

安装这些节点后,使用 ctrl+c 结束你的 Docker 进程。

然后重新启动它:

sudo docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

你可以在这里查看安装社区节点的完整文档。

获取你的 API 密钥

Bright Data

如果你还没有账号,需要先注册网络解锁器。这款工具提供了丰富的爬取功能,比如 绕过 CAPTCHA 和代理集成。在他们的 playground 里,你可以获取到 API 密钥。

获取 Bright Data API 密钥

拿到这个密钥后,务必妥善保存。

OpenAI

在 OpenAI 的控制台,你可以在API Keys 标签页查看或创建新的密钥。

OpenAI API 密钥

同样,把这些密钥也保存好。

SMTP

至于 SMTP,本教程中使用的是 Elastic Email。在它的免费套餐下,你只能发送邮件给自己,但对于本教程,这样已经足够了。

注意:我在创建 SMTP 连接时遇到了一个错误,关闭 SSL 后问题解决。

关闭 SSL

不管你使用哪个 SMTP 客户端(Elastic Email 或其他),你都需要保存你的用户名、密码和连接信息。对于 Elastic Email,可以在这里查看。

获取 SMTP 凭据

调整工作流程

使用网络解锁器获取网站内容

在工作流程中右击 Bright Data 图标并选择 “Open”。点击铅笔图标来编辑设置。

编辑 Bright Data

把你的 Web Unlocker API 密钥添加到 “Token” 一栏中。

添加 Web Unlocker API 密钥

接下来,调整你的 schema 以确保一切顺利。在设置底部,将格式(Format)设置为 “JSON”。下面的示例中,url 是 https://www.mediamarkt.de/,你可以替换为自己想要爬取的 URL。将 zone 名称替换为你自己的 Web Unlocker zone 名称。

将格式设为 JSON

提取 HTML

现在,确保你的 HTML 提取设置正确。将 “Source Data” 设置为 “JSON”。提取值应与下图所示一致:Key:title,CSS Selector:title,Return Value:Text。如果你爬取其他网站,可以相应调整这些字段,但如果页面没有 bodytitle,通常就不值得爬了。

HTML 属性

在关闭之前,往下滚动并匹配其他字段:Key:body,CSS Selector:body,Return Value:Text

更多 HTML 属性

将数据传递给 ChatGPT

ChatGPT 将帮我们解析数据。有了 LLM 的能力,我们甚至不需要自己写解析器。你可以在这里更多了解如何使用 AI 模型进行网页爬取。这里的流程很简单:我们把网页内容给 ChatGPT,然后它输出一个干净的商品列表。

现在,是时候配置你的 ChatGPT 连接了。打开名为 “Generate List of Deals by Category” 的节点设置,把你的 OpenAI API 密钥添加进去,就像此前添加 Bright Data API 密钥那样。然后确保以下字段正确:Resource:Text,Operation:Message a Model。如果你想使用其他模型,可以自由更换,这里使用的是 GPT-4o mini。

OpenAI 设置

在页面底部进一步查看,确保其余字段也正确。

OpenAI 设置(下半部分)

从 ChatGPT 中提取结果

现在,打开名为 “Extract items from results” 的节点设置,确保 “Fields to Split Out” 的值为 message.content.results

ChatGPT 提取设置

生成 HTML 文档

现在,我们来生成 HTML 文档。这里的内容是实际邮件的原始 HTML。如果你运行一次工作流程测试,就可以将输入值拖到模板中。把 “Template String” 设置为 Expression

编写 HTML 结构

如果你需要,可以从下面复制我的 HTML 模板。下面的 HTML 不是必需的,仅作参考。你完全可以以自己的方式去排版,只要把正确的数据插入进去即可。

<h1>{{ $json.name }}</h1>

<p>{{ $json.description }}</p>

<a href={{ $('Generate List of Deals by Category').item.json.message.content.results[0].link }}>
    {{ $('Generate List of Deals by Category').item.json.message.content.results[0].link }}
</a>

<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[1].name }}</h2>
<ul>
    <li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[1].description }}</p></li>
    <li>{{ $('Generate List of Deals by Category').item.json.message.content.results[1].price }}</li>
    <li>
        <a href={{ $('Generate List of Deals by Category').item.json.message.content.results[1].link }}>
            {{ $('Generate List of Deals by Category').item.json.message.content.results[1].link }}
        </a>
    </li>
</ul>

<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[2].name }}</h2>
<ul>
    <li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[2].description }}</p></li>
    <li>{{ $('Generate List of Deals by Category').item.json.message.content.results[2].price }}</li>
    <li>
        <a href={{ $('Generate List of Deals by Category').item.json.message.content.results[2].link }}>
            {{ $('Generate List of Deals by Category').item.json.message.content.results[2].link }}
        </a>
    </li>
</ul>

<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[3].name }}</h2>
<ul>
    <li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[3].description }}</p></li>
    <li>{{ $('Generate List of Deals by Category').item.json.message.content.results[3].price }}</li>
    <li>
        <a href={{ $('Generate List of Deals by Category').item.json.message.content.results[3].link }}>
            {{ $('Generate List of Deals by Category').item.json.message.content.results[3].link }}
        </a>
    </li>
</ul>

<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[4].name }}</h2>
<ul>
    <li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[4].description }}</p></li>
    <li>{{ $('Generate List of Deals by Category').item.json.message.content.results[4].price }}</li>
    <li>
        <a href={{ $('Generate List of Deals by Category').item.json.message.content.results[4].link }}>
            {{ $('Generate List of Deals by Category').item.json.message.content.results[4].link }}</a></li>
</ul>

<h2>{{ $('Generate List of Deals by Category').item.json.message.content.results[5].name }}</h2>
<ul>
    <li><p>{{ $('Generate List of Deals by Category').item.json.message.content.results[5].description }}</p></li>
    <li>{{ $('Generate List of Deals by Category').item.json.message.content.results[5].price }}</li>
    <li>
        <a href={{ $('Generate List of Deals by Category').item.json.message.content.results[5].link }}>
            {{ $('Generate List of Deals by Category').item.json.message.content.results[5].link }}
        </a>
    </li>
</ul>

通过邮件通知用户

现在,是时候连接到 SMTP 服务器了。如果你还没有添加 API 密钥,请点击铅笔图标来编辑连接信息。将 “From Email” 修改为你希望的发件邮箱地址。“Subject” 可根据需要任意填写,确保 “Email Format” 保持为 HTML

邮件设置

接下来,添加你的 SMTP 凭据,需要包括用户名、密码、主机和端口。

SMTP 凭据

告知用户流程成功完成

最后,让我们创建一个告知用户流程结束的页面。把 “Completion Message” 和 “Completion Title” 改成你想要显示的文字。其他的选项保持默认即可,我们只需要告诉用户流程已完成。

完成任务设置

收到的邮件效果

一切配置好后,点击 “Test Workflow” 看看效果。你应该能看到如下弹窗。选择一个分类,然后输入要接收特价信息的电子邮箱。

输入表单

点击 “Get Deals”。提交完信息后,弹窗会变成下面这样。

表单提交完成

最后,检查你的收件箱。如果一时没看到邮件,可以看看垃圾邮件文件夹。许多现代邮箱系统会把这类批量发送的邮件标记为垃圾邮件。找到邮件后,打开就能看到自动生成的特价信息!

Deals 邮件示例

结论

借助 n8n、Bright Data 和 OpenAI,你已经能够构建一个智能且数据驱动的新闻简报自动化流程。通过使用 Web Unlocker 获取数据、ChatGPT 生成内容、SMTP 发送邮件,你可以以最小的付出来提供个性化的特价推荐。

但这不必止步于此。Bright Data 还提供了一系列数据解决方案,帮助你进一步强化自动化流程:

  • 住宅代理 – 通过真实设备的 IP 获取实时网页数据。
  • 抓取浏览器 – 内置 CAPTCHA 绕过和代理轮换的自动化爬取。
  • 网页抓取工具 API – 轻松提取结构化数据,无需手动解析。
  • 数据集 – 访问历史定价数据,进一步优化优惠推荐。

让你的邮件营销自动化更进一步。立即注册免费试用,开始打造更智能、更高效的工作流程吧!

支持支付宝等多种支付方式