进阶 18 分钟n8n

n8n + Ollama:使用100% AI实现自动化 locale

n8n 是最能与 Zapier 或 Make 抗衡的无代码自动化工具,其决定性优势在于可以自托管。配合 Ollama,您就能搭建一套完整的处理流程,数据始终不会离开您的机器——翻译邮件、总结文章、分类销售线索,全程无需调用外部 API。这份 n8n + Ollama 自动化指南详细介绍安装方法、原生 Ollama 节点,以及三个可直接复制的具体工作流。

作者: Mohamed Meguedmi·更新于 2026-08-27·已在 Windows、macOS 和 Linux 上测试

#为何将n8n与Ollama结合使用?

n8n 是一个可视化编排工具:您无需编写代码,只需连接节点(触发器、HTTP、数据库、LLM 等),工作流就会由 cron 定时任务、Webhook 或邮箱触发,在后台运行。所有面向大众的竞品(Zapier、Make、Power Automate)都按使用量收费,并要求您的数据经过它们的服务器。

Ollama 则通过 http://localhost:11434 提供本地 LLM,并配有兼容的 HTTP API。自 2023 年底起,n8n 内置了原生 Ollama 节点(兼容 OpenAI 的节点也同样可用)。因此,用于总结客户 PDF 文档或分类人力资源邮件的工作流不会让任何一个字节离开您的基础设施。

i
用一句话概括这个组合
n8n = 负责协调的中枢。Ollama = 负责撰写、翻译或分类的执行单元。两者均运行在您的设备上,并通过本地 HTTP 通信。

#先决条件

本地智能体套件

在你的机器上执行操作的智能体:具备智能体能力的 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 }} 这类表达式仍然很有帮助。
→
起步推荐模型
qwen3.5:9b 采用 Q4_K_M 量化。法语表现不错,上下文长度为 256k,支持工具调用(function calling)和视觉能力,6.6 GB 显存即可容纳。如果您有 12 GB 或更多显存,分类任务可改用 qwen3.5:9b-q8_0(11 GB)——准确率会明显提升。

#1. 通过Docker自行部署n8n

官方且最简单的方法是使用 n8n 团队维护的 Docker 镜像。创建一个专用文件夹和一个 docker-compose.yml 文件:

docker-compose.yml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - GENERIC_TIMEZONE=Europe/Paris
      - N8N_SECURE_COOKIE=false
    volumes:
      - ./n8n_data:/home/node/.n8n
    extra_hosts:
      - "host.docker.internal:host-gateway"

extra_hosts 这一项是关键:从 n8n 容器中调用 Ollama 应通过 http://host.docker.internal:11434 而非 localhost(后者会指向容器自身)。仅在 Linux 系统上,此技巧需要 host-gateway 指令支持。

启动n8n
docker compose up -d
docker compose logs -f n8n

打开 http://localhost:5678。首次访问时,n8n 会要求您创建一个所有者账户——该账户保留在本地,没有强制性的遥测数据收集。登录后,您会进入空白画布。

!
将 n8n 暴露在互联网上?
个人使用时,请将 n8n 限制在您的局域网内。如果必须对外开放(公开 webhook),务必通过支持 HTTPS 的反向代理(Caddy、Traefik),并启用 N8N_BASIC_AUTH_ACTIVE=true。对外开放且未启用身份验证的 n8n 实例,意味着他人可以获得对您的工作流和凭证的完整访问权限。

#2. 在 n8n 中配置 Ollama 节点

n8n 提供两种调用 Ollama 的方式:专用节点 "Ollama Chat Model"(集成在 n8n 的 LangChain 分支中),以及通用 HTTP 调用。对于智能体和调用链,专用节点的实现更简洁;HTTP 调用则提供更多控制。两种方式都能正常工作。

  1. 01
    添加一个 Ollama 节点
    在画布上输入“/”并搜索“Ollama”。选择“Ollama Chat Model”(位于 AI > Language Models 下)。
  2. 02
    创建凭证
    在 Credential 字段中点击 "Create new"。Base URL:http://host.docker.internal:11434(从 Docker 容器内访问时),或 http://localhost:11434(n8n 原生运行时)。无需 API key——因为服务在本地运行。
  3. 03
    测试连接
    n8n 会自动检测并列出可用模型。如果列表为空,请通过 docker exec n8n curl http://host.docker.internal:11434/api/tags 从主机执行检查。
  4. 04
    选择模型
    在 Model 下拉菜单中选择 qwen3.5:9b(或您已下载的模型)。将 Temperature 保持为默认值 0.7;对于确定性任务(分类、提取),将其降至 0.2。
i
HTTP Request 节点仍然很有用
对于一些不常见的调用需求(流式输出、强制 JSON 格式、num_ctx 或 stop 等高级参数),使用 HTTP Request 节点向 http://host.docker.internal:11434/api/generate 发送 POST 请求,可实现 100% 的控制。请求体采用与 Ollama 文档相同的 JSON。

#3. 第一个工作流:为 RSS 订阅源生成摘要

典型场景:您关注15个科技博客,希望每天获得一份法语摘要,而无需通读全部内容。n8n 获取新文章,Ollama 进行摘要,结果通过电子邮件发送或保存为 Markdown 文件。

  1. 01
    触发器:Schedule Trigger
    将其设为每天早上 7 点运行。在 Cron expression 模式下,表达式为:0 7 * * *。
  2. 02
    获取 RSS 订阅源:RSS Feed Trigger 或 RSS Read
    订阅源 URL(例如:https://blog.lemondeinformatique.fr/feed/)。启用“Return only new items”,以免再次总结旧条目。
  3. 03
    按需分批处理:Split In Batches
    如果数据流返回 10 篇文章,请限制为 5 篇,以免让 Ollama 负载过高。Batch size:1,以便逐篇处理。
  4. 04
    调用 Ollama
    使用 Ollama Chat Model 节点,设置上述系统提示词,并将文章作为用户消息。
Ollama 节点的内容
{
  "system": "Tu es un assistant éditorial. Résume l'article en 3 puces de 15 mots maximum, en français, ton neutre. Pas d'intro, juste les puces.",
  "prompt": "Titre : {{ $json.title }}\n\nContenu : {{ $json.content }}"
}
  1. 01
    汇总摘要:使用 Merge 或 Code
    将每篇文章的输出逐条合并为一封邮件正文。一个JavaScript代码节点(Code Node)使用items.map(i => `**${i.json.title}**\n${i.json.response}`).join('\n\n')即可实现。
  2. 02
    发送:Send Email 或写入文件
    使用 Email(SMTP)节点发送到您的邮箱,或使用 Write Binary File 节点写入 /home/node/.n8n/daily-digest.md(该文件持久化保存在 Docker 数据卷中)。
→
技巧:上下文短 = 速度快
使用 Q4 量化的 9B 模型时,一篇 800 个词的文章可在 4–6 秒内完成摘要。如果想加快速度,请明确要求“只阅读前 500 个词”,并在 n8n 端使用表达式 {{ $json.content.slice(0, 2000) }} 截断内容。

#4. 工作流:翻译收到的电子邮件

典型场景:您收到英文、德文和西班牙文的供应商邮件,希望用法语阅读,而不使用 Google Translate(它会收集邮件内容)。n8n 监控您的 IMAP 邮箱,Ollama 负责翻译,翻译结果会放入“Traduit”标签下,或生成回复草稿。

  1. 01
    触发器:IMAP Email
    配置 IMAP 凭据(Gmail 需要应用密码)。筛选条件:INBOX 文件夹中所有未读邮件。每 10 分钟轮询一次。
  2. 02
    语言检测:Ollama #1
    首次调用 Ollama 时使用系统提示:"仅返回该文本语言的 ISO 639-1 语言代码(fr, en, de, es...)。不输出句子,仅输出两个字母。" 提示:{{ $json.subject }} {{ $json.textPlain }}.
  3. 03
    条件分支:IF 节点
    条件:{{ $json.response }} ≠ "fr"。若为真则翻译。若为假则忽略(已为法语)。
  4. 04
    翻译:Ollama #2
    系统提示:"将以下文本翻译成自然流畅的法语。保留格式(段落、列表)。不要加评论,直接翻译。" 提示:邮件正文。
  5. 05
    最终操作
    两种选择:使用 Gmail 节点的 "Add Label",并通过 "Reply Draft" 将译文写在邮件开头;或者直接发送包含译文的 Slack/Telegram 通知。
!
经典陷阱:HTML
邮件通常采用 HTML 格式(包含签名、图片和跟踪标签)。请使用 textPlain 字段而非 html 字段,或添加 HTML Extract 节点,在发送给 Ollama 前进行清理。否则,您的 LLM 会尝试翻译 <table> 标签……

#5. 工作流:对新流入的潜在客户进行分类

典型场景:联系表单将数据写入 Airtable / Notion / Postgres 数据库。您希望自动对每条潜在客户线索进行分类:Hot / Warm / Cold、所属行业、紧急程度。n8n 监听数据库,Ollama 读取自由填写的消息,并写入结构化标签。

这个工作流利用 Ollama 的 JSON 模式,强制输出符合指定模式(schema)。只要涉及结构化数据,这项功能就必不可少。

发送请求到 Ollama 的 HTTP Request 节点的请求体
{
  "model": "qwen3.5:9b",
  "format": "json",
  "stream": false,
  "options": { "temperature": 0.1 },
  "system": "Tu es un assistant CRM. Réponds uniquement en JSON valide avec les clés : temperature (Hot/Warm/Cold), secteur (string court), urgence (1-5).",
  "prompt": "Message du lead : {{ $json.message }}\n\nEntreprise : {{ $json.company }}"
}
  1. 01
    触发器:Airtable/Postgres Trigger
    以 "New row in table Leads" 为触发条件。每 5 分钟轮询一次,或在数据源支持时使用 webhook(响应更及时)。
  2. 02
    以JSON模式调用 Ollama
    使用 HTTP Request 节点,向 http://host.docker.internal:11434/api/generate 发送 POST 请求,请求体使用上面的内容。响应会出现在 $json.response 中(JSON 字符串)。
  3. 03
    解析:使用 Code 或 Set 节点
    JSON.parse($input.first().json.response) 提取 temperature、secteur、urgence 字段。若解析失败(模型出现幻觉),则将温度设为 0 后重试。
  4. 04
    写入CRM
    使用 Airtable Update / Postgres Update 节点写入这三个字段。可选:如果 temperature = Hot 且 urgence ≥ 4,触发一个 Slack 节点,提醒 commercial@boite.fr。
→
为何此处使用 temperature 0.1
对于分类任务,您需要一致性:两个相同的潜在客户必须获得相同的标签。低温度(0 到 0.2)可以消除采样中的随机性。请将 0.7 及以上的温度保留给创造性任务(写作、头脑风暴)。

#技巧与故障排除

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 版本起一直保持稳定。
i
对您的工作流进行版本管理
导出的 n8n 工作流是一个结构清晰的 JSON 文件。将它提交到私有 Git 仓库:这样可以保留历史记录,即使把整个工作流弄坏也能恢复,还能轻松与同事共享。

#深入了解

您已经有了一套能正常运行的 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 的阈值。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。