n8n 自动化工作流¶
一句话说明:n8n 是一个开源的可视化工作流自动化平台,支持 400+ 应用集成和原生 AI 能力,可以自托管部署,让你用拖拽的方式把各种工具串联起来自动干活。
1. 什么是 n8n¶
白话解释:n8n(读作 "n-eight-n",意思是 "nodemation" = node + automation)就像 iOS 的快捷指令(Shortcuts),但比它强大 100 倍。
举个例子: - 快捷指令能做的:收到短信 → 自动回复 - n8n 能做的:每天早上 8 点 → 自动从 GEO 数据库下载数据 → 用 Python 跑分析 → 调用 AI 生成报告 → 发邮件给导师 → 同时备份到 Google Drive
核心卖点: - 开源免费:GitHub 186,000+ Stars(截至 2026 年 5 月),社区活跃 - 自托管:数据完全在自己手里,不怕隐私泄露(对比 Zapier 数据在别人服务器上) - 可视化编辑器:拖拽节点(Node),连线就能搭工作流,不需要写代码 - 也能写代码:内置 Code 节点,支持 JavaScript/Python,灵活度拉满 - 原生 AI 能力:内置 LangChain 节点,可以直接调 OpenAI/Ollama/向量数据库构建 AI Agent - 400+ 集成:Gmail、Slack、GitHub、MySQL、HTTP Request……几乎什么都能连
最新版本:n8n v2.19.2(2026-05-01 发布),采用 Fair-code 许可证(Sustainable Use License)。
2. 核心概念(5 个关键词搞懂 n8n)¶
2.1 Workflow(工作流)¶
- 一个 Workflow 就是一张"流程图",由多个 Node 通过连线组成
- 可以手动执行,也可以设置自动触发
- 每个 Workflow 有唯一 ID,可以导出为 JSON 文件分享给别人
2.2 Node(节点)¶
- Trigger Node(触发节点):流程的起点,比如"每天 8 点"、"收到 Webhook"、"新邮件到达"
- Action Node(动作节点):具体干活的节点,比如"发 HTTP 请求"、"写数据库"、"发邮件"
- AI Node(AI 节点):调用大模型的节点,比如 OpenAI、Anthropic、Ollama 等
2.3 Trigger(触发器)¶
常用触发器类型: | 触发器 | 说明 | 场景举例 | |--------|------|----------| | Schedule Trigger | 定时触发(Cron 表达式) | 每天 8 点跑分析 | | Webhook | 接收外部 HTTP 请求触发 | 别的系统推送数据过来 | | Manual Trigger | 手动点击触发 | 调试的时候用 | | Email Trigger (IMAP) | 收到邮件触发 | 收到导师邮件自动处理 | | RSS Feed Trigger | RSS 更新触发 | 监控 PubMed 新论文 | | Chat Trigger | 对话消息触发 | 构建聊天机器人 |
2.4 Credential(凭证)¶
- 连接第三方服务需要的认证信息(API Key、OAuth Token 等)
- 在 n8n 中集中管理,加密存储
- 一次配置,所有用到这个服务的节点都能共享
2.5 Expression(表达式)¶
// 引用上一个节点的输出数据
{{ $json.name }} // 当前节点输入数据的 name 字段
{{ $('HTTP Request').item.json.title }} // 引用指定节点的 title 字段
{{ $now.toISO() }} // 当前时间(ISO 格式)
{{ $json.score > 0.8 ? '高分' : '低分' }} // 三元表达式做条件判断
3. 安装部署¶
3.1 Docker 一行命令(推荐,最快上手)¶
# 创建持久化数据目录
docker volume create n8n_data
# 一行命令启动 n8n(访问 http://localhost:5678)
docker run -it --rm \
--name n8n \
-p 5678:5678 \ # 映射端口,浏览器访问用
-v n8n_data:/home/node/.n8n \ # 数据持久化,重启不丢数据
docker.n8n.io/n8nio/n8n # 官方 Docker 镜像
启动后浏览器打开 http://localhost:5678,注册账号即可使用。
3.2 Docker Compose(生产环境推荐)¶
# docker-compose.yml
version: '3.8'
services:
n8n:
image: docker.n8n.io/n8nio/n8n # 官方镜像
restart: always # 自动重启
ports:
- "5678:5678" # 端口映射
environment:
- N8N_BASIC_AUTH_ACTIVE=true # 开启基础认证
- N8N_BASIC_AUTH_USER=admin # 用户名
- N8N_BASIC_AUTH_PASSWORD=your_pwd # 密码(改成自己的)
- GENERIC_TIMEZONE=Asia/Shanghai # 时区设为中国
- N8N_DEFAULT_LOCALE=zh # 界面语言中文
volumes:
- n8n_data:/home/node/.n8n # 持久化数据
volumes:
n8n_data: # 声明数据卷
3.3 npx 本地运行(快速试用,不需要 Docker)¶
提示:npx 方式适合试用,生产环境强烈建议用 Docker,数据更安全、升级更方便。
4. 实操教程(从 Hello World 到完整工作流)¶
4.1 Hello World 工作流¶
目标:手动触发 → 输出一句话
- 打开 n8n 编辑器,点击右上角 "+ New Workflow"
- 点画布中的 "+" 按钮,搜索添加 "Manual Trigger" 节点
- 再添加一个 "Edit Fields (Set)" 节点,配置:
- 字段名:
message - 值:
Hello n8n! 我的第一个工作流 - 将两个节点连线
- 点击 "Test Workflow" → 查看输出
4.2 定时触发 + HTTP 请求¶
目标:每天早上 8 点自动获取天气信息
Schedule Trigger 配置: - Trigger Interval: Every Day - Hour: 8 - Minute: 0 - Timezone: Asia/Shanghai
HTTP Request 配置: - Method: GET - URL: https://api.openweathermap.org/data/2.5/weather?q=Beijing&appid=YOUR_KEY&lang=zh_cn
4.3 AI 节点调用大模型¶
目标:输入文本 → AI 总结 → 输出结果
OpenAI 节点配置: - Resource: Conversation - Operation: Send Message - Model: gpt-4o-mini - Message: 请用中文总结以下内容:{{ $json.text }}
前提:需要先在 Credentials 中配置 OpenAI API Key。
4.4 数据处理 + 输出到文件/邮件¶
目标:获取数据 → 过滤 → 转换 → 写文件 + 发邮件
Code 节点(JavaScript)示例:
// 对输入数据做处理,提取关键字段
const items = $input.all(); // 获取所有输入项
const results = items.map(item => ({ // 遍历处理
json: {
gene: item.json.gene_symbol, // 提取基因名
pvalue: item.json.p_value, // 提取 p 值
significant: item.json.p_value < 0.05 ? '是' : '否' // 判断是否显著
}
}));
return results; // 返回处理后的数据
Convert to File 节点: - Operation: Convert to CSV - File Name: analysis_result.csv
Send Email 节点: - To: your@email.com - Subject: [自动报告] 分析结果 {{ $now.format('yyyy-MM-dd') }} - Attachments: 引用上一步生成的 CSV 文件
5. n8n + AI(构建 AI 工作流)¶
n8n 从 v1.19 开始原生集成 LangChain,可以直接在工作流中构建 AI Agent。
5.1 支持的 AI 模型节点¶
| 节点名称 | 说明 |
|---|---|
| OpenAI | GPT-4o / GPT-4o-mini / DALL-E / Whisper / TTS |
| Anthropic | Claude 系列模型 |
| Google Gemini | Gemini Pro / Flash |
| Ollama | 本地部署的开源模型(Llama、Qwen 等) |
| Mistral AI | Mistral 系列 |
| Perplexity | 联网搜索 + AI 回答 |
| MCP Client | 连接 MCP 服务器,使用外部工具 |
5.2 调用 OpenAI 构建摘要工作流¶
OpenAI 节点 Prompt 示例:
你是一名生物信息学研究助手。请用中文总结以下论文摘要,提取:
1. 研究目的
2. 方法
3. 主要发现
4. 与宏基因组/肠道菌群的关联度(高/中/低/无)
论文内容:{{ $json.content }}
5.3 调用 Ollama(本地 LLM,免费无限用)¶
在 n8n 中配置 Ollama Credential: - Base URL: http://localhost:11434(Ollama 默认端口)
然后就可以在 AI 节点中选择 Ollama 作为模型提供商,完全本地运行,无需 API Key。
5.4 向量数据库 + RAG 工作流¶
n8n 支持接入向量数据库(如 Pinecone、Qdrant、Supabase Vector),可以构建 RAG(检索增强生成)工作流:
[Chat Trigger] → [Vector Store Retriever] → [AI Agent] → [Chat Response]
用户提问 从向量库检索相关文档 AI 结合文档回答 返回答案
这在生信场景中可以用来构建"论文知识库问答系统"——把读过的论文嵌入向量库,随时用自然语言查询。
6. 生信自动化场景¶
6.1 场景一:定时下载 GEO 数据 → 分析 → 生成报告 → 邮件通知¶
[Schedule Trigger] 每周一早上 8 点
↓
[HTTP Request] 从 NCBI GEO API 下载 GSE 数据
↓
[Execute Command] 运行 R/Python 分析脚本
↓
[Code] 解析分析结果,提取关键指标
↓
[OpenAI] AI 生成分析报告摘要
↓
[Convert to File] 将结果导出为 CSV + PDF
↓
[Send Email] 发送给导师/团队,附带报告附件
HTTP Request 节点获取 GEO 数据:
URL: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi
Parameters:
db = gds
term = "gut microbiome" AND "type 2 diabetes"
retmax = 10
sort = date
retmode = json
Execute Command 节点运行分析:
# 激活 conda 环境并运行分析脚本
source activate bioinfo && python /home/user/scripts/analyze_geo.py --input {{ $json.filename }}
6.2 场景二:论文监控 → AI 摘要 → 推送通知¶
[RSS Feed Trigger] 监控 PubMed RSS(关键词:gut microbiome T2D)
↓
[Filter] 过滤:标题/摘要包含 metagenome 或 16S
↓
[OpenAI] 用 GPT 生成中文摘要 + 相关性评分
↓
[If] 相关性 > 7 分?
↓ Yes ↓ No
[Send Email] [No Operation]
发送"高相关论文提醒" 忽略
PubMed RSS 地址构造:
6.3 更多生信自动化思路¶
| 场景 | 工作流设计 |
|---|---|
| 序列批量注释 | 上传 FASTA → Execute Command 运行 BLAST → 解析结果 → 写入数据库 |
| 样本质控监控 | 监控文件夹新文件 → 运行 FastQC → 解析报告 → 质量不达标发告警 |
| 差异基因可视化 | 定时读取 DESeq2 结果 → Code 节点生成 JSON → QuickChart 画火山图 |
| 团队协作 | GitHub PR 触发 → 运行 CI/CD → 通知 Slack → 更新项目看板 |
7. n8n vs Zapier vs Make vs Dify 对比¶
| 对比维度 | n8n | Zapier | Make | Dify |
|---|---|---|---|---|
| 定位 | 通用工作流自动化 | 通用工作流自动化 | 通用工作流自动化 | AI 应用开发平台 |
| 开源 | 是(Fair-code) | 否 | 否 | 是(Apache 2.0) |
| 自托管 | 支持 | 不支持 | 不支持 | 支持 |
| 价格 | 自托管免费,Cloud 有免费额度 | 免费版 100 任务/月,付费 $29.99+/月 | 免费版 1000 Ops/月,付费 $10.59+/月 | 自托管免费,Cloud 有免费额度 |
| 集成数量 | 400+ | 7000+ | 2000+ | 50+(主要是 AI 相关) |
| AI 能力 | 原生 LangChain 集成 | AI 插件 | AI 模块 | 核心就是 AI |
| 代码支持 | JS/Python Code 节点 | 有限 | 有限 | Python 代码块 |
| 学习曲线 | 中等 | 低 | 中等 | 中等 |
| 数据隐私 | 完全自控 | 数据在 Zapier 服务器 | 数据在 Make 服务器 | 自托管可自控 |
| 适合人群 | 开发者、技术团队 | 非技术用户 | 介于两者之间 | AI 应用开发者 |
| 生信适用性 | 高(可执行命令行) | 低(无法跑本地脚本) | 低 | 中(侧重 AI) |
选择建议: - 想跑本地脚本(R/Python/Bash)+ 自动化:选 n8n(有 Execute Command 节点) - 只想连 SaaS 工具、不写代码:选 Zapier - 专门做 AI 聊天机器人/RAG 应用:选 Dify - 生信自动化:强烈推荐 n8n,因为它能执行本地命令,其他平台做不到
8. 常见报错与解决¶
报错 1:Error: connect ECONNREFUSED 127.0.0.1:5678¶
原因:n8n 服务没启动,或端口被占用
解决:
1. 检查 n8n 是否在运行:docker ps | grep n8n
2. 检查端口占用:lsof -i :5678
3. 换个端口:docker run -p 5679:5678 docker.n8n.io/n8nio/n8n
报错 2:ERROR: The credential is not valid¶
原因:API Key 过期、填错、或者权限不够
解决:
1. 进入 Credentials 页面,重新编辑对应凭证
2. 点"Test"按钮验证是否能连通
3. 检查 API Key 的权限范围是否足够
报错 3:ERROR: 429 Too Many Requests¶
原因:调用外部 API 太频繁,触发速率限制
解决:
1. 在 HTTP Request 节点开启 "Batching",设置间隔时间
2. 使用 "Wait" 节点在请求之间加延迟
3. 在 Settings 中减小 Retry on Fail 的频率
报错 4:ERROR: Workflow could not be activated¶
原因:工作流缺少 Trigger 节点,或 Trigger 配置有误
解决:
1. 确保工作流至少有一个 Trigger 节点
2. 检查 Trigger 的配置是否完整(比如 Webhook URL 是否正确)
3. 查看 n8n 日志:docker logs n8n
报错 5:SQLITE_BUSY: database is locked¶
原因:SQLite 并发写入冲突(默认数据库是 SQLite)
解决:
1. 生产环境建议换成 PostgreSQL:
环境变量添加:
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=your_pg_host
DB_POSTGRESDB_DATABASE=n8n
2. 临时方案:减少并发工作流数量
报错 6:Error: spawn ENOENT(Execute Command 节点)¶
原因:Docker 容器中找不到你调用的命令(如 python、R)
解决:
1. 使用自定义 Dockerfile 安装所需工具:
FROM docker.n8n.io/n8nio/n8n
USER root
RUN apk add --no-cache python3 py3-pip
USER node
2. 或者通过 SSH 节点远程执行命令(连接宿主机或分析服务器)
9. 速查表¶
9.1 常用节点速查¶
| 类别 | 节点名称 | 功能 | 常用场景 |
|---|---|---|---|
| 触发 | Schedule Trigger | 定时触发 | 每天/每周定时任务 |
| 触发 | Webhook | 接收 HTTP 请求 | 接收外部系统通知 |
| 触发 | RSS Feed Trigger | RSS 更新触发 | 监控论文/新闻 |
| 触发 | Chat Trigger | 对话触发 | 构建聊天机器人 |
| 网络 | HTTP Request | 发送 HTTP 请求 | 调 API、下载数据 |
| 数据 | Edit Fields (Set) | 设置/修改字段 | 数据格式转换 |
| 数据 | Code | 写 JS/Python 代码 | 复杂数据处理 |
| 数据 | Filter | 条件过滤 | 筛选符合条件的数据 |
| 数据 | Merge | 合并多路数据 | 多数据源汇总 |
| 数据 | Split Out | 拆分数组 | 把数组拆成单条处理 |
| 数据 | Aggregate | 聚合数据 | 求和、计数、去重 |
| 逻辑 | If | 条件分支 | 根据条件走不同路径 |
| 逻辑 | Switch | 多路分支 | 类似 switch-case |
| 逻辑 | Loop Over Items | 循环处理 | 批量处理列表数据 |
| 逻辑 | Wait | 等待/延迟 | 限速、等待回调 |
| 文件 | Convert to File | 转为文件 | 生成 CSV/JSON/Excel |
| 文件 | Extract From File | 解析文件 | 读取 CSV/JSON/Excel |
| 文件 | Read/Write Files | 本地文件读写 | 读写服务器上的文件 |
| 通知 | Send Email | 发送邮件 | 通知、报告推送 |
| 执行 | Execute Command | 执行系统命令 | 跑 Python/R/Bash 脚本 |
| 执行 | SSH | 远程执行命令 | 连接分析服务器 |
| AI | OpenAI | 调用 GPT 系列 | 文本生成、摘要、翻译 |
| AI | Anthropic | 调用 Claude | 长文分析 |
| AI | Ollama | 调用本地模型 | 免费无限调用 |
| AI | AI Transform | AI 数据转换 | 用自然语言描述转换逻辑 |
| AI | MCP Client | 连接 MCP 服务 | 扩展 AI Agent 工具 |
9.2 常用 Expression 速查¶
// === 数据引用 ===
{{ $json.fieldName }} // 当前项的字段
{{ $('NodeName').item.json.field }} // 指定节点的字段
{{ $input.all() }} // 所有输入项
{{ $input.first().json.field }} // 第一条数据的字段
// === 时间相关 ===
{{ $now }} // 当前时间(Luxon DateTime)
{{ $now.toFormat('yyyy-MM-dd') }} // 格式化:2026-05-03
{{ $now.minus({ days: 7 }).toISO() }} // 7 天前的 ISO 时间
// === 字符串操作 ===
{{ $json.name.toUpperCase() }} // 转大写
{{ $json.text.slice(0, 100) }} // 截取前 100 字符
{{ $json.email.includes('@') }} // 是否包含 @
// === 条件判断 ===
{{ $json.score > 0.05 ? '不显著' : '显著' }} // 三元表达式
{{ $json.list?.length ?? 0 }} // 空值安全取长度
// === 环境变量 ===
{{ $env.MY_API_KEY }} // 读取环境变量
{{ $vars.threshold }} // 读取工作流变量
9.3 Docker 常用命令速查¶
# 启动
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
# 停止/启动/重启
docker stop n8n
docker start n8n
docker restart n8n
# 查看日志
docker logs -f n8n
# 升级到最新版
docker pull docker.n8n.io/n8nio/n8n # 拉取最新镜像
docker stop n8n # 停止旧容器
docker rm n8n # 删除旧容器
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n # 启动新容器
# 备份数据
docker cp n8n:/home/node/.n8n ./n8n_backup
# 导出所有工作流(通过 API)
curl http://localhost:5678/api/v1/workflows -H "X-N8N-API-KEY: your_api_key"
10. 延伸资源¶
| 资源 | 说明 |
|---|---|
| n8n 官方文档 | 最权威的参考,所有节点都有详细说明 |
| n8n 社区论坛 | 提问和看别人的解决方案 |
| n8n 工作流模板 | 官方模板库,可以直接导入使用 |
| n8n GitHub | 源码、Issue、Release Notes |
| n8n AI 文档 | AI Agent 构建专题文档 |
| n8n 博客教程 | 官方博客教程,有很多实战案例 |
写给面试的你:面试中如果被问到"你怎么提高生信分析效率",可以回答"我用 n8n 搭建了自动化工作流,定时从 GEO 下载数据、运行分析脚本、AI 生成报告、邮件通知团队,把原来手动 2 小时的工作缩短到全自动 5 分钟"——这是加分项,说明你有工程化思维。