理论讲得再多,不如亲手实践一次。本章将手把手带你构建一个简单、实用且有趣的自动化工作流:**每日英语学习助手**。
**我们的目标是**:让 n8n 在每天早晨 9 点,自动从“金山词霸”获取一句精美的每日英语,然后将它提取出来,方便我们后续发送到钉钉、飞书或者其他地方。
通过这个案例,你将学会:
* 如何使用 `Cron` 节点创建定时任务。
* 如何使用 `HTTP Request` 节点从互联网 API 获取数据。
* 如何使用 `Set` 节点对获取到的数据进行提取和重组。
* 如何调试和激活一个完整的工作流。
准备好了吗?让我们开始吧!
—
### 2.1 需求分析与节点选择
1. **定时执行**:我们需要一个能在每天固定时间自动运行的触发器。`Cron` 节点是完美的选择。
2. **获取数据**:我们需要从一个公开的 API 地址获取每日一句的内容。“金山词霸每日一句”有一个公开的 API:`http://open.iciba.com/dsapi/`。`HTTP Request` 节点可以帮助我们访问这个地址。
3. **提取数据**:API 返回的是一堆复杂的 JSON 数据,我们只想要其中的英文句子、中文翻译和配图。`Set` 节点可以帮我们从原始数据中提取出需要的部分,并组合成我们想要的格式。
4. **占位/注释**:为了让工作流更清晰,我们可以用一个 `NoOp` (No Operation) 节点作为流程结束的标志。它什么也不做,但能起到注释和锚点的作用。
—
### 2.2 循序渐进:搭建你的工作流
#### **步骤一:设置 `Cron` 触发器**
1. 在画布上,默认会有一个 `Start` 节点。点击它,在右侧的节点搜索框中找到 `Cron` 节点并替换它。
2. **参数配置**:
* `Mode`: 选择 `Every Day`。
* `Hour`: 设置为 `9`。
现在,你的工作流就有了一个明确的起点:每天上午 9 点准时启动。
#### **步骤二:添加 `HTTP Request` 节点获取数据**
1. 点击 `Cron` 节点右侧的 `+` 号,在弹出的节点搜索框中输入 `HTTP Request` 并选择它。
2. **参数配置**:
* `URL`: 填入金山词霸的 API 地址 `http://open.iciba.com/dsapi/`。
* 其他参数保持默认即可。
3. **执行与测试**:点击该节点右上角的“播放”按钮(▶️ Execute Node)。n8n 会立刻向该 URL 发送一个请求。执行成功后,切换到右侧的 `Output` 视图,你会看到 API 返回的 JSON 数据,类似这样:
“`json
{
“sid”: “3270”,
“tts”: “http://news.iciba.com/admin/tts/2024-05-21-day.mp3”,
“content”: “The secret of success is constancy to purpose.”,
“note”: “成功的秘诀在于对目标的忠诚。”,
“love”: “2201”,
“translation”: “词霸小编:成功始于目标,并因对目标的坚持而实现。”,
“picture”: “http://cdn.iciba.com/news/word/2024-05-21.jpg”,
“picture2”: “http://cdn.iciba.com/news/word/big_2024-05-21b.jpg”,
“caption”: “词霸每日一句”,
“dateline”: “2024-05-21”,
// … 其他字段
}
“`
太棒了!我们已经成功从互联网上获取到了原始数据。
#### **步骤三:使用 `Set` 节点进行数据魔法**
现在,我们需要从上面那一大堆数据中,只提取出我们关心的三个字段:`content` (英文内容), `note` (中文翻译), 和 `picture2` (高清配图)。
1. 点击 `HTTP Request` 节点右侧的 `+` 号,添加一个 `Set` 节点。
2. **参数配置**:
* `Keep Only Set`: 勾选此项。这意味着此节点的输出将**只包含**我们下面设置的字段,其他所有上游数据都将被丢弃。这对于保持数据流的干净整洁非常有用。
* 点击 `Add Value`,添加三个值:
* **Name 1**: `english`
* **Value 1**: 点击右侧的“表达式编辑”按钮,n8n 会智能地为你展示上一个节点(`HTTP Request`)的输出数据结构。依次点开 `Input Data` -> `JSON` -> `content`。你会看到表达式框里自动填入了 `{{ $json.content }}`。这就是从上游节点的 JSON 输出中,引用 `content` 字段的值。
* **Name 2**: `chinese`
* **Value 2**: 同样的方法,填入表达式 `{{ $json.note }}`。
* **Name 3**: `image`
* **Value 3**: 填入表达式 `{{ $json.picture2 }}`。
3. **执行与测试**:再次点击 `Set` 节点右上角的“播放”按钮。切换到 `Output` 视图,你会看到输出结果变得非常干净、结构化:
“`json
{
“english”: “The secret of success is constancy to purpose.”,
“chinese”: “成功的秘诀在于对目标的忠诚。”,
“image”: “http://cdn.iciba.com/news/word/big_2024-05-21b.jpg”
}
“`
完美!我们像施展魔法一样,从原始数据中萃取出了精华。
#### **步骤四:添加 `NoOp` 节点作为结束**
点击 `Set` 节点右侧的 `+` 号,添加一个 `NoOp` 节点。它不需要任何配置。这只是一个好习惯,它明确地告诉任何查看此工作流的人:“到此为止,主要的数据处理已经完成。”
—
### 2.3 调试与激活
现在,你的画布上应该有四个顺序连接的节点:`Cron` -> `HTTP Request` -> `Set` -> `NoOp`。
1. **保存工作流**:点击屏幕右上角的 `Save` 按钮,给你的工作流起一个有意义的名字,比如“每日英语学习助手”。
2. **激活工作流**:在屏幕的右上角,有一个 `Active` 的开关,点击它,将其从灰色变为绿色。
**恭喜你!** 你的第一个自动化工作流已经正式上线运行了。
从现在开始,n8n 会像一个忠实的助手,在每天上午 9 点为你自动获取并整理好一句精美的英语。在后续的章节中,你将学习如何将这些数据发送到钉钉、企业微信,或者生成一张精美的早安卡片。
### 2.4 本章小结
在本章中,你经历了从 0 到 1 构建一个完整工作流的全过程。你不再是一个旁观者,而是一个真正的“自动化玩家”。
你掌握了:
– 如何用 `Cron` 设定一个**起点**。
– 如何用 `HTTP Request` 完成一次**数据输入**。
– 如何用 `Set` 和表达式完成一次**数据处理**。
– 如何**保存和激活**一个工作流,让它真正为你工作。
这只是一个开始。你已经推开了自动化世界的大门,一个充满无限可能的新世界正在等待你去探索。

















暂无评论内容