使用n8n实现AI文章工作流
我平时会在自己的网站上写一些文章。有些文章是固定的套路——给定一个标题,让 AI 生成一篇结构化内容,再存进数据库。手动重复这套流程很无聊,于是想把它自动化。
之前工作的时候我负责过基于开源任务调度框架(DolphinScheduler)的二次开发,对节点和工作流的概念不陌生。第一次用 n8n 的感觉是:它把各个社交平台、SaaS、AI 平台的 API 都封装成了节点,大部分胶水代码都不需要写了,一个工作流里就能串起「调 AI、解析结果、写数据库」整条链路。这篇记录我搭的「AI 文章生成工作流」:输入一个标题,自动生成文章并存入 Supabase。
工作流总览
整个工作流由六个节点组成:
- 对话触发(Chat Trigger)——接收你输入的标题
- AI Agent——按固定 prompt 生成文章内容
- AI 模型——执行实际的生成
- 输出格式化——用 JSON Schema 约束 AI 的输出结构
- Code——从结果里提取 JSON
- Supabase——把文章写入数据库
分步搭建
打开 n8n 官网,注册登录,创建一个新的工作流:

先添加一个对话触发节点。工作流从它开始,运行时要求输入一条消息——这条消息就是文章标题:

后面接一个 AI Agent 节点:

双击 AI Agent 节点打开配置。文章生成的 prompt 基本是固定的,所以 Source for Prompt (User Message) 选 Define below,把生成指令写进 Prompt 栏。prompt 里要用到「标题」这个参数,它来自上一个节点——这里有个小技巧:先点击 execute previous node 执行一次上一个节点,让当前节点能拿到上游的数据:

执行完之后,上游节点的参数就能在表达式里引用了。比如把 chatInput(触发节点收到的标题)拖进 prompt:

然后是 AI 模型节点,选择要用的模型并配置 API key:


为了让 AI 输出 JSON 格式的结果、方便后续解析,开启输出格式化选项,然后点击 output parse 创建一个格式化节点:


格式化节点里,Schema Type 选 Define using JSON Schema,定义输出结构。Schema 要和目标数据表的结构对齐,比如 posts 表存标题和正文,schema 就写成:
{
"type": "object",
"properties": {
"title": { "type": "string", "description": "文章标题" },
"content": { "type": "string", "description": "文章正文,markdown 格式" }
},
"required": ["title", "content"]
}

再创建一个 Code 节点,把 AI 输出的 JSON 数据提取出来,直接透传:


最后是数据落库。n8n 的 Supabase 节点可以直接操作表:如果 JSON 的字段名和表结构一致,可以自动映射,基本不用手写字段对应:


运行
工作流搭完,在对话框里输入一条消息(这里作为文章标题),工作流依次跑完各个节点,把生成的文章插进数据库:


踩过的坑
- JSON Schema 和表结构必须对齐。字段名不一致时 Supabase 节点的自动映射会失效,需要手动调整。所以定义 schema 之前,先想清楚目标表有哪些列。
- API key 别写死在节点里。用 n8n 的凭据管理(Credentials)保存,换 key 的时候只改一处。
- prompt 固定,但参数要动态。标题这类每次变化的内容从上游节点取,而不是写死在 prompt 里,否则每次生成的都是一样的文章。
下一步
现在这个工作流是手动触发。再往前一步,可以换成定时触发(Schedule Trigger)跑「每日摘要」之类的任务,配合 R2 图床和站内发布流程,组成一套半自动的内容管道——生成的内容先进草稿,人工审核后再发布。