n8n + Ollama:使用100% AI实现自动化 locale
n8n 是最能与 Zapier 或 Make 抗衡的无代码自动化工具,其决定性优势在于可以自托管。配合 Ollama,您就能搭建一套完整的处理流程,数据始终不会离开您的机器——翻译邮件、总结文章、分类销售线索,全程无需调用外部 API。这份 n8n + Ollama 自动化指南详细介绍安装方法、原生 Ollama 节点,以及三个可直接复制的具体工作流。
#为何将n8n与Ollama结合使用?
n8n 是一个可视化编排工具:您无需编写代码,只需连接节点(触发器、HTTP、数据库、LLM 等),工作流就会由 cron 定时任务、Webhook 或邮箱触发,在后台运行。所有面向大众的竞品(Zapier、Make、Power Automate)都按使用量收费,并要求您的数据经过它们的服务器。
Ollama 则通过 http://localhost:11434 提供本地 LLM,并配有兼容的 HTTP API。自 2023 年底起,n8n 内置了原生 Ollama 节点(兼容 OpenAI 的节点也同样可用)。因此,用于总结客户 PDF 文档或分类人力资源邮件的工作流不会让任何一个字节离开您的基础设施。
#先决条件
在你的机器上执行操作的智能体:具备智能体能力的 Cline、MCP、n8n + Ollama、本地自动化。
- 在线空间,终身可用
- PDF + 文件
- 终身更新
- Ollama 已安装
- 守护进程在端口 11434 上运行。请使用 curl http://localhost:11434 检查。如果您从零开始,请先按照本站的 Ollama 安装指南操作。
- 一个已下载的模型
- 使用 ollama pull qwen3.5:9b 可获得多用途能力;如果想要更轻量,则使用 qwen3.5:4b。对于分类工作流,granite4.2:8b 表现稳定,而且 tokens 消耗非常节省。
- Docker + Docker Compose
- n8n 通过 Docker 几秒钟即可部署。Windows/macOS 使用 Docker Desktop,Linux 使用 Docker Engine。
- 空闲内存 8 GB
- n8n 占用约 500 MB,Ollama 加载模型至显存(9B Q4 需约 6.6 GB)。若希望同时运行多个工作流,请预留充足资源。
- 使用无代码工具也需要一点耐心
- n8n 采用可视化操作,但并非无所不能:理解 JSON 和 {{ $json.field }} 这类表达式仍然很有帮助。
#1. 通过Docker自行部署n8n
官方且最简单的方法是使用 n8n 团队维护的 Docker 镜像。创建一个专用文件夹和一个 docker-compose.yml 文件:
extra_hosts 这一项是关键:从 n8n 容器中调用 Ollama 应通过 http://host.docker.internal:11434 而非 localhost(后者会指向容器自身)。仅在 Linux 系统上,此技巧需要 host-gateway 指令支持。
打开 http://localhost:5678。首次访问时,n8n 会要求您创建一个所有者账户——该账户保留在本地,没有强制性的遥测数据收集。登录后,您会进入空白画布。
#2. 在 n8n 中配置 Ollama 节点
n8n 提供两种调用 Ollama 的方式:专用节点 "Ollama Chat Model"(集成在 n8n 的 LangChain 分支中),以及通用 HTTP 调用。对于智能体和调用链,专用节点的实现更简洁;HTTP 调用则提供更多控制。两种方式都能正常工作。
- 01添加一个 Ollama 节点在画布上输入“/”并搜索“Ollama”。选择“Ollama Chat Model”(位于 AI > Language Models 下)。
- 02创建凭证在 Credential 字段中点击 "Create new"。Base URL:http://host.docker.internal:11434(从 Docker 容器内访问时),或 http://localhost:11434(n8n 原生运行时)。无需 API key——因为服务在本地运行。
- 03测试连接n8n 会自动检测并列出可用模型。如果列表为空,请通过 docker exec n8n curl http://host.docker.internal:11434/api/tags 从主机执行检查。
- 04选择模型在 Model 下拉菜单中选择 qwen3.5:9b(或您已下载的模型)。将 Temperature 保持为默认值 0.7;对于确定性任务(分类、提取),将其降至 0.2。
#3. 第一个工作流:为 RSS 订阅源生成摘要
典型场景:您关注15个科技博客,希望每天获得一份法语摘要,而无需通读全部内容。n8n 获取新文章,Ollama 进行摘要,结果通过电子邮件发送或保存为 Markdown 文件。
- 01触发器:Schedule Trigger将其设为每天早上 7 点运行。在 Cron expression 模式下,表达式为:0 7 * * *。
- 02获取 RSS 订阅源:RSS Feed Trigger 或 RSS Read订阅源 URL(例如:https://blog.lemondeinformatique.fr/feed/)。启用“Return only new items”,以免再次总结旧条目。
- 03按需分批处理:Split In Batches如果数据流返回 10 篇文章,请限制为 5 篇,以免让 Ollama 负载过高。Batch size:1,以便逐篇处理。
- 04调用 Ollama使用 Ollama Chat Model 节点,设置上述系统提示词,并将文章作为用户消息。
- 01汇总摘要:使用 Merge 或 Code将每篇文章的输出逐条合并为一封邮件正文。一个JavaScript代码节点(Code Node)使用items.map(i => `**${i.json.title}**\n${i.json.response}`).join('\n\n')即可实现。
- 02发送:Send Email 或写入文件使用 Email(SMTP)节点发送到您的邮箱,或使用 Write Binary File 节点写入 /home/node/.n8n/daily-digest.md(该文件持久化保存在 Docker 数据卷中)。
#4. 工作流:翻译收到的电子邮件
典型场景:您收到英文、德文和西班牙文的供应商邮件,希望用法语阅读,而不使用 Google Translate(它会收集邮件内容)。n8n 监控您的 IMAP 邮箱,Ollama 负责翻译,翻译结果会放入“Traduit”标签下,或生成回复草稿。
- 01触发器:IMAP Email配置 IMAP 凭据(Gmail 需要应用密码)。筛选条件:INBOX 文件夹中所有未读邮件。每 10 分钟轮询一次。
- 02语言检测:Ollama #1首次调用 Ollama 时使用系统提示:"仅返回该文本语言的 ISO 639-1 语言代码(fr, en, de, es...)。不输出句子,仅输出两个字母。" 提示:{{ $json.subject }} {{ $json.textPlain }}.
- 03条件分支:IF 节点条件:{{ $json.response }} ≠ "fr"。若为真则翻译。若为假则忽略(已为法语)。
- 04翻译:Ollama #2系统提示:"将以下文本翻译成自然流畅的法语。保留格式(段落、列表)。不要加评论,直接翻译。" 提示:邮件正文。
- 05最终操作两种选择:使用 Gmail 节点的 "Add Label",并通过 "Reply Draft" 将译文写在邮件开头;或者直接发送包含译文的 Slack/Telegram 通知。
#5. 工作流:对新流入的潜在客户进行分类
典型场景:联系表单将数据写入 Airtable / Notion / Postgres 数据库。您希望自动对每条潜在客户线索进行分类:Hot / Warm / Cold、所属行业、紧急程度。n8n 监听数据库,Ollama 读取自由填写的消息,并写入结构化标签。
这个工作流利用 Ollama 的 JSON 模式,强制输出符合指定模式(schema)。只要涉及结构化数据,这项功能就必不可少。
- 01触发器:Airtable/Postgres Trigger以 "New row in table Leads" 为触发条件。每 5 分钟轮询一次,或在数据源支持时使用 webhook(响应更及时)。
- 02以JSON模式调用 Ollama使用 HTTP Request 节点,向 http://host.docker.internal:11434/api/generate 发送 POST 请求,请求体使用上面的内容。响应会出现在 $json.response 中(JSON 字符串)。
- 03解析:使用 Code 或 Set 节点JSON.parse($input.first().json.response) 提取 temperature、secteur、urgence 字段。若解析失败(模型出现幻觉),则将温度设为 0 后重试。
- 04写入CRM使用 Airtable Update / Postgres Update 节点写入这三个字段。可选:如果 temperature = Hot 且 urgence ≥ 4,触发一个 Slack 节点,提醒 commercial@boite.fr。
#技巧与故障排除
- n8n 无法连接到 Ollama
- 在 localhost:11434 上出现 ECONNREFUSED 错误?您当前处于 Docker 容器内——请使用 host.docker.internal。在 Linux 上,请确认 compose 文件中包含 extra_hosts,并且 Ollama 在 0.0.0.0 上监听(OLLAMA_HOST=0.0.0.0:11434)。
- 工作流较慢
- Ollama 以冷启动方式加载模型(首次加载耗时5-15秒)。为保持模型处于热状态,可并行启动一个cron任务,每4分钟向/api/generate发送一次ping请求,或设置OLLAMA_KEEP_ALIVE=30m。
- 在分类任务中模型会产生幻觉
- 始终使用 format: "json",并配合一个列出允许值的系统提示词。如果9B模型在Q4量化下的回答仍不明确,改用 qwen3.5:9b-q8_0 能显著提高JSON输出的可靠性。
- Docker 卷丢失
- 工作流和凭据存储在 ./n8n_data 中。没有备份时,绝不要删除此文件夹。通过菜单(Settings > Workflows > Download)将工作流导出为 JSON 格式,以便使用 Git 进行版本管理。
- 调用过多会耗尽显存
- 若一个工作流并行触发20次 Ollama,GPU将饱和。请使用Split In Batches并设置batch size为1,或添加OLLAMA_NUM_PARALLEL=1以实现串行处理。
- n8n 版本
- n8n 大约每 10 天发布一次重大版本。执行 docker compose pull && docker compose up -d 即可更新。Ollama 节点从 1.18 版本起一直保持稳定。
#深入了解
您已经有了一套能正常运行的 n8n + Ollama 工作流。接下来可以顺势探索以下几个方向:
- 接入 RAG
- 网站上的 RAG ChromaDB 指南展示了如何索引您的 PDF/笔记。您可以通过 n8n 调用 RAG 流水线的 HTTP 端点——您的工作流将基于您的知识库实现上下文感知。
- 优化模型
- 如果您的工作流需要处理大量数据,请阅读 Q4/Q5/Q8 量化指南:降至 Q4_K_M 可能将显存占用减半,而分类任务的质量不会出现明显损失。
- 选择专用 GPU
- 如果 n8n + Ollama 需要在机器上 24/7 运行,该网站的 GPU 选购指南根据您的目标工作流提供 12/16/24 GB 的阈值。
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。