标签 n8n 下的文章

点赞 + 关注 + 收藏 = 学会了

整理了一个n8n小专栏,有兴趣的工友可以关注一下 👉 《n8n修炼手册》

在日常办公中,重复发送通知邮件、定时推送报表、表单提交后自动回复等场景十分常见,手动操作不仅耗时,还容易出现遗漏或错误。n8n作为一款开源的可视化工作流自动化工具,无需复杂编程,只需通过拖拽节点、配置参数,就能轻松实现邮件自动发送,非常适合没编程经验的工友上手。

n8n的核心优势是“可视化拖拽”和“多节点集成”,它能连接不同工具和服务,让数据按设定好的规则流转,从而完成自动化任务。对于自动发邮件来说,整个工作流的逻辑非常简单,只需满足两个核心组件:

  1. 触发节点:相当于工作流的“开关”,用来启动整个邮件发送流程,比如手动点击触发、定时触发、表单提交后触发等,初学者可先从最简单的手动触发入手;
  2. 动作节点:相当于工作流的“执行器”,负责完成具体的发邮件操作,n8n内置了专门的Email节点,支持通过SMTP协议连接各类邮箱,适配QQ、网易、企业邮箱等主流平台。

简单来说,我们要做的就是“搭建触发节点→连接邮件动作节点→配置邮箱参数→测试运行”,全程无需写一行代码。

创建邮箱凭证

想发邮件,首先就得登录邮箱。

在 n8n 登录邮箱跟我们在邮箱提供商的网页登录有点不同,我们需要到邮箱提供方那里开启 SMTP 授权。

我用 QQ 邮箱举例说明。

其他邮箱的开启方式大同小异,在流行 Python 自动化办公的年代,自动发邮件是很常见的示例。使用其他邮箱的工友直接百度搜【邮箱名 + 开启SMTP授权】基本能找到相关的教程。

首先在 QQ 邮箱网页登录你的账号。

然后找到“设置 -> 账号”。

然后 Ctrl + F ,搜索 SMTP 就能找到它。

默认情况 SMTP 是关闭的,如下图所示。需要你手动打开它(点击“开启服务”按钮)。

开启时,通常要收条短信验证码。输入完验证码之后就会给你一个授权码,这个授权码是用在 n8n 这边的,一定要保管好这个授权码,不要泄露出去。

在浏览器打开 n8n,创建一个凭证。

搜索 SMTP,选中它。

在表单里填入你的邮箱地址,Password 填入你刚刚申请的授权码。

Host、Port 和 SSL 要根据你所使用的邮箱去填,详情要看你使用的邮箱的官方文档。

比如我使用的 QQ 邮箱是这么要求的,发邮件的话,Host 填 smtp.qq.com,使用 SSL,端口是 465587

创建完成后就能看到一条记录。

发送第一封邮件

接下来的邮件发送我会用一个非常简单的工作流来讲解。

触发器我用了“手动触发”,也就是点一下鼠标就发邮件。虽然这看上去不像“自动化”,但你掌握了“发邮件节点”的用法,在以后的工作中只要把上游节点改成别的节点也是走得通的。

发送邮件用的是 Send email 节点。

本例的工作流是这样的。

重点是配置 Send email 节点。

  • Credential to connect with:邮件的凭证,用前面创建的那个凭证就行。
  • Operation:你要用这个节点做什么。Send 是发邮件的意思。
  • From Email:发送方的邮箱地址,填你的邮箱。
  • To Email:收件方的邮箱地址,填目标邮箱地址。
  • Subject:邮件标题
  • Email Format:邮件格式,如果你对格式没要求,选择 Text 也行。如果你需要搞一些样式,那就选 HTML
  • HTML:邮件内容。上一项选了 HTML,这项的标题就是 HTML;选 Text 这项的标题就是 Text
  • Options:其他选项。这里可以添加附件、添加抄送人等。

邮件标题和邮件内容可以写死,也可以使用上游节点传入的数据,动态调整邮件内容。

本例先写死,你根据自己的需求来做就行。

我用 QQ 邮箱向 Outlook 邮箱发一封邮件。

标题是“雷猴,自己人”。

格式是“Text”,也就是最简单的发送一些字符串过去。

内容是“用n8n发送的第一封邮件”。

完成上面的配置后,回到工作流画布面板,点一下“Execute workflow”按钮就能运行工作流了。

可以看到它已经执行了发邮件的操作。

打开 Outlook 邮箱就能看到这封邮件。

我使用的 n8n 是社区版(免费版),所以邮件下方会添加一条 n8n 的尾巴。

同时给多个人发送邮件

如果你想将一封邮件同时发送给多个人,只需要在 To Email 这里继续输入其他邮件地址就行。

每个邮箱之间要用“英文逗号”分割!!!

抄送

抄送也是很常用的功能,这个功能藏在 Send email 节点的 Options 配置项里。

CC(抄送)和BCC(密送)是邮件常用功能:CC用于告知相关人员邮件内容,所有收件人可见彼此信息,适合同步工作进度;BCC收件人信息对其他人隐藏,可保护隐私,适合批量发送通知。

我以 CC Email 举例说明。

CC Email 输入框里输入邮箱地址就行。如果要抄送给多个邮箱,那就用英文逗号把每个邮箱分割开来。

来到被抄送的邮箱,能清楚看到“我”是被抄送的对象。

发送附件

添加附件也是很常用的功能。

发送附件之前,首先得获取到附件。在日常工作中可能会从上游同事的接口获取附件,也可能是从本地上传一个附件。

我用本地附件来举例说明。

在此之前你需要掌握 《『n8n』读写本地文件》 这里的知识。也许你还会遇到无法读取本地文件的问题,可以看看这个解决方案👉 《『n8n』一招解决“无法读写本地文件”》

在 n8n 获取本地文件可以使用 Read/Write Files from Disk 节点。

我要获取本地的 posts.xlsx 文件, Read/Write Files from Disk 节点的配置如下图所示。

然后调整一下 Send email 节点的配置,需要在 Options 里添加一项 Attachments

上一个节点传入的是 data 字段,所以在 Attachments 直接填入 ”data“ 即可。

运行工作流,然后打开接收方的邮箱,就能看到这份附件了。


以上就是本文的全部内容啦,想了解更多n8n玩法欢迎关注《n8n修炼手册》👏

如果你有 NAS,我非常建议你在 NAS 上部署一套 n8n,搞搞副业也好,帮你完成工作任务也好 《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》

点赞 + 关注 + 收藏 = 学会了

点赞 + 关注 + 收藏 = 学会了

整理了一个n8n小专栏,有兴趣的工友可以关注一下 👉 《n8n修炼手册》

可视化拖拽是 n8n 的优势,但也有明显的局限性。但实际使用中,你大概率会遇到 “现成节点不够用” 的情况,这时候「代码节点」就成了你的 “万能补位工具”。

「代码节点」核心可以总结为 4 个场景:

  1. 个性化逻辑无法通过拖拽实现。
  2. 特殊格式数据的处理需求。
  3. 弥补 n8n 没有的内置功能。
  4. 简化工作流,减少节点冗余

简单来说:可视化节点能搞定的,优先用拖拽;可视化节点搞不定的,就用代码节点补位,两者结合才能发挥 n8n 的最大威力。

本文介绍「代码节点」里常用的内置变量和方法。

代码节点的用法讲解

在 n8n 中可以搜索 code 就能找到「代码节点」。

n8n 的代码节点支持两种编程语言:JavaScript(默认,最常用)和 Python

这两种语言上手都很简单,我之前写过一篇《Python 快速入门篇》,想在 n8n 用 Python 写代码的工友可以看看。之后也许会再开一个新坑聊聊 JS 的算法以及容易出错的点,毕竟 JS 可是我以前的淘金铲。

「代码节点」提供了2种运行模式(Mode):

  • Run Once for All ltems:这是默认设置。当你的工作流程运行时,代码节点中的代码会执行一次,无论输入项多少。
  • Run Once for Each Item:如果你想让代码对每个输入项目运行一次,就选择这个。

代码节点的工作逻辑很简单,就三件事:获取输入数据 → 处理数据 → 输出数据,这是使用代码节点的关键,必须先搞懂。

在使用「代码节点」之前我建议你先收藏一下 n8n 代码节点的文档👉 https://docs.n8n.io/code/code-node

n8n 的代码运行环境提供了一些针对工作流常用到的内置函数和内置变量,它们能大大减少你的原生代码量。所以一定要多看 n8n 的官方文档。

内置变量通常是以 $ 符号开头的,(念念叨叨一句:死去的 JQuery 记忆被踢了一脚)。

在代码编辑器里输入 $ ,编辑器就会提示有哪些内置函数和变量可以使用,非常方便。

前面说了它能节省我们的原生代码量,到底有多节省呢?

比如,输出今天的日期,使用 n8n 内置变量这么写,而且语义非常清晰⬇️

console.log($today)

用JS原生的方法要这么写⬇️

/**
 * 获取当天的年、月、日(格式化版本,个位数补零)
 * @param {boolean} [returnString=false] - 是否返回格式化字符串(如"2026-01-25"),默认返回对象
 * @returns {Object|string} 格式化后的年月日对象或字符串
 */

function getCurrentFormattedDate(returnString = false) {
  const now = new Date();
  const year = now.getFullYear();
  
  // 月份补零:先+1转为实际月份,再转为字符串,不足2位则前面补0
  const month = String(now.getMonth() + 1).padStart(2, '0');
  
  // 日期补零:同理,不足2位补0
  const day = String(now.getDate()).padStart(2, '0');
  
  // 根据参数返回对应格式
  if (returnString) {
    return `${year}-${month}-${day}`;
  }
  
  return {
    year,
    month,
    day
  };
}

console.log(getCurrentFormattedDate(true))

使用 console.log() 可以在浏览器控制台输出内容。

比如上面的 console.log($today),按 F12 打开浏览器控制台,切换到 Console 面板,点击运行代码就能看到控制台输出了对应的内容。

读取上一个节点输入的数据

用到「代码节点」大概率是要处理数据的了,所以接收上一个节点传入的数据也是很常见的操作。

n8n 提供了一堆内置方法让我们很方便的获取上一个节点传入的数据。

这个文档也要收藏👉 https://docs.n8n.io/code/code-node

如果你想获取「代码节点」前面任意一个节点的数据,其实不需要记住代码,只要会用鼠标拖拽就行了。

比如我这个工作流,用「HTTP 节点」请求了一些数据,并且给这个「HTTP 节点」重命名为 GetUserInfo,然后再接一个「Edit Fields 节点」里面设置了一个 name_zh 数据。

在最后的「代码节点」里要获取「GetUserInfo 节点」的数据只需要拖进来就行了。

可以看到,拖进来之后它是以 $('GetUserInfo') 的方式找到这个节点,也就是通过节点名的方式找到它。

first() 是这个节点的第一项数据,节点返回的数据是数组,这些在官方文档都有提到。

输出结果可以打开浏览器控制台看看。

常用方法

n8n 还提供了一些常用的方法 ⬇️

https://docs.n8n.io/code/builtin/convenience

比如 $ifEmpty()

$ifEmpty(value, defaultValue)

这个方法会判断 value 是否为空(undefinednull''、空数组、空对象),如果为空则返回 defaultValue 的值。

要在一堆数值里挑出最大值或者最小值,可以使用 $max()$min() 方法。

其他方法可以参考文档,用法非常简单。

输出数据给下一个节点

「代码节点」还有一个功能就是整理数据。这个能力完全覆盖了「Edit Fields 节点」的能力。

在「代码节点」里,通过 return 可以将数据传递给下一个节点,而 return 的内容就是你整理好的数据。

比如,从前2个节点获取到一大堆数据,但我就是要骗下一个节点说没获取到任何用户信息,就可以这么写。

当然,我们通过节点名可以获取任意祖先节点的数据,通过「代码节点」可以将所有祖先数据都重新组装一遍返回给下一个节点。


以上就是本文的全部内容啦,想了解更多n8n玩法欢迎关注《n8n修炼手册》👏

如果你有 NAS,我非常建议你在 NAS 上部署一套 n8n,搞搞副业也好,帮你完成工作任务也好 《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》

点赞 + 关注 + 收藏 = 学会了

点赞 + 关注 + 收藏 = 学会了

整理了一个n8n小专栏,有兴趣的工友可以关注一下 👉 《n8n修炼手册》

在 n8n 中 AI Agent 默认只停留在“一次性交互”的层面。你问它一个问题,它精准回应,可当你接着上一个话题追问,或是隔一段时间再提起之前聊过的细节,它却像断了片一样,毫无印象,只能重新解释背景、重复需求。

比如我和它说了我叫什么名字,接着追问“我叫什么名字?”它立刻忘掉。

n8n 的「AI Agent 节点」其实已经提供了接入记忆能力的接口「Memory」。

点击「Memory」接口可以调用各种数据库,但前提是你已经安装了这些数据库。

n8n 提供了一个简单的数据库给我们使用:「Simple Memory」

如果你的需求不复杂,只想让AI有一点点记忆,用它就行。

打开「Simple Memory」的配置项,可以配置上下文窗口“Context Window Length”,数字越大记忆力越强,但占用的资源也更多。

根据你业务需求配置就行。

此时我们再测试一次。

它记住了!


以上就是本文的全部内容啦,想了解更多n8n玩法欢迎关注《n8n修炼手册》👏

点赞 + 关注 + 收藏 = 学会了

n8n 是一款强大的开源低代码自动化工具,它允许你通过可视化节点的方式,将不同的服务和 API 串联起来,构建复杂的自动化工作流。与传统的自动化平台相比,n8n 拥有极高的自由度和扩展性,支持自托管部署,能够确保数据的完全私有化。

在集成 AI 能力时,n8n 丰富的节点生态可以轻松对接 GPUStack 部署的本地大模型。这种组合不仅消除了昂贵的 API 调用费用,还确保了企业敏感数据在处理过程中始终留在本地,是构建私有化 AI 智能体的理想选择。接下来,我们将通过一个实战案例,演示如何将两者结合使用。

🛠️ 演示环境

  1. GPUStack v2.0.3:请参考官方文档 https://docs.gpustack.ai 进行安装部署。
  2. n8n 最新版:推荐使用 Docker 快速部署,请参考官方指引 https://docs.n8n.io/hosting/installation/docker
  3. gpt-oss-120b:在 GPUStack 中部署,具备优秀并发能力。

📖 工作流搭建

1. 获取模型 API 凭证

首先,我们需要获取模型的调用地址。在 GPUStack 的 Deployments 列表找到目标模型,通过右侧菜单点击 API Access Info。系统会弹出详细的接入信息,若尚未配置密钥,可直接点击窗口内的链接跳转至创建页。


创建 API Key

成功创建后,生成的 API Key 将作为 n8n 访问本地模型的安全凭证。由于 Key 仅在创建时显示一次,建议立即将其妥善保存。

2. 配置 n8n 模型连接

由于 GPUStack 兼容 OpenAI 协议,我们在 n8n 中直接添加一个 OpenAI API 类型的凭证即可。


在配置窗口,填入刚才获取的 API Key 和 GPUStack 的接入地址。如果填入凭据信息无误,点击 Save 会提示 Connection tested successfully


关闭凭据配置窗口后,勾选 Limit models,指定该凭证仅使用特定的本地模型。

3. 编排自动化工作流

本节目标是搭建一个自动化链路:每天早上八点半定时触发,自动采集 RSS 源信息,并调用 AI 提取摘要发送至指定邮箱。

  1. 创建空白 Workflow

  1. 设置工作流的 First step nodeOn a schedule 类型

配置触发时间为每天早上八点半

  1. 添加 RSS Read 节点,这里以 https://36kr.com/feed 为例


点击测试按钮,验证 RSS Read 节点是否正常工作


双击 RSS Read 节点可查看执行日志和数据

  1. 添加 Basic LLM Chain 节点,用于提取信息摘要

在弹出的配置窗口中,配置 Source for Prompt (User Message)Define below,然后拖动左侧面板 contentSnippet 字段到 Prompt (User Message) 输入框中


继续在下方配置 System Prompt -> 你是一个资深科技编辑。请阅读下方的文章内容,提取摘要,要求字数精炼,直击本质。

  1. 配置 LLM Model


  1. 添加 Send Email 节点


添加 Email 凭据,如下如所示,点击 Create new credential 会弹出配置窗口。

此界面仅为示例,具体的 SMTP 配置信息(如服务器地址、端口、授权码)请参照你所使用邮箱服务的官方说明。

配置收件人地址及邮件正文。作为初步演示,我们直接将模型输出的原始文本作为邮件内容。

表达式无需手写,将字段拖拽到输入框即可。

📊 效果验证

点击 Execute Workflow 手动触发一次工作流。n8n 将抓取最新的 RSS 资讯,调用 GPUStack 进行推理生成摘要,最后通过 Send Email 节点发送邮件。

注意:这一步不要着急实操,否则将一次性收到 30 封邮件!🤣

执行完成如图所示:

邮箱截图:

💡 工作流优化

上述流程中我们注意到,工作流每完整执行一次就会发送 30 封邮件,这显然不符合预期。我们期望将每条资讯压缩为一句话摘要,再将所有摘要汇总为一个列表,以单封邮件的形式发送,并对展示样式进行统一美化。

  1. 修改 Basic LLM Chain 节点上的系统提示词,指导其直接输出一个 list item
你是一个资深科技编辑。请将用户输入的文章内容总结为一条简练的 HTML 列表项(<li>...</li>),包含标题和核心要点。

格式示例:
<li><b>标题</b>:核心要点摘要</li>

要求:
1. 仅输出 <li> 标签及其内容,不要包含 <ul> 或其他 markdown 格式。
2. 摘要控制在 50 字以内。

  1. Basic LLM ChainSend Email 节点之间插入一个 Code 节点,用于将分散的摘要聚合为美观的 HTML 格式。

在后续弹出的菜单中,根据自己偏好选择 Code in JavaScript / Code in Python (Native)

本文以 Code in JavaScript 为例。

在弹出的配置面板中,填入如下 JavaScript Code

⚠️ 注意:在微信公众号中直接复制以下代码时,普通空格可能会被替换成不换行空格 (NBSP),粘贴后请务必检查并手动替换回普通空格!
// 获取所有 LLM 节点的输出项
const items = $input.all();

// 定义 CSS 样式
const style = {
  container: "font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; background-color: #f9f9f9; border-radius: 10px; border: 1px solid #e0e0e0;",
  header: "color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; margin-bottom: 20px; font-size: 24px;",
  list: "list-style-type: none; padding: 0;",
  listItem: "background-color: #ffffff; margin-bottom: 15px; padding: 15px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.05); line-height: 1.6; color: #555;",
  footer: "margin-top: 30px; font-size: 12px; color: #999; text-align: center; border-top: 1px solid #e0e0e0; padding-top: 10px;"
};

// 构建 HTML 内容
let htmlContent = `<div style="${style.container}">`;
htmlContent += `<h2 style="${style.header}">📅 每日科技资讯摘要</h2>`;
htmlContent += `<ul style="${style.list}">`;

for (const item of items) {
  if (item.json.text) {
    // 为 item 添加样式
    let styledItem = item.json.text.replace('<li>', `<li style="${style.listItem}">`);
    htmlContent += styledItem + "\n";
  }
}

htmlContent += `</ul>`;
htmlContent += `<div style="${style.footer}">Generated by n8n & GPUStack • ${new Date().toLocaleDateString()}</div>`;
htmlContent += `</div>`;

// 返回合并后的单一结果供邮件节点使用
return [{
  json: {
    email_content: htmlContent
  }
}];

  1. 更新 Send Email 节点

n8n 支持在 {{ }} 中编写 JavaScript 表达式。这里我们使用 {{ $now.format('yyyy-MM-dd') }},以便在邮件主题中自动附带当天的日期信息。

  1. 最终效果

修改完成,重新运行,最终效果如下所示

  1. 保存工作流并发布

至此,工作流部署完成。只要 n8n 服务保持运行,系统将按照预设在每天早上 8:30 触发执行,并在处理完成后自动发送资讯摘要邮件。

📈 总结

通过本文的实战,我们成功利用 n8n 和 GPUStack 搭建了一套全自动、零成本的 AI 资讯助手。从 RSS 抓取到 AI 摘要再到邮件推送,整个流程完全运行在本地环境中,既保护了数据隐私,又规避了高昂的 API 调用成本。

最后,别忘了打开 GPUStack Dashboard 概览页。你可以直观地查看指定模型在一段时间内的 Token 消耗详情(包括 Prompt 和 Completion)以及 API 请求总数,真正掌握 AI 服务的运行状况。

🙌 欢迎加入我们的社区

如果二维码失效,大家可前往 GPUStack 项目获取最新入群二维码 https://github.com/gpustack/gpustack/blob/main/docs/assets/wechat-group-qrcode.jpg

点赞 + 关注 + 收藏 = 学会了

整理了一个n8n小专栏,有兴趣的工友可以关注一下 👉 《n8n修炼手册》

不管是在电脑还是 NAS 通过 Docker 部署 n8n,环境变量没配置好的话,使用 Read/Write Files from Disk 节点「读取本地本地」或者「保存文件到本地」,有可能出现这个报错。

这是 Docker + n8n 文件系统权限/路径隔离 的经典问题,不是 n8n 节点用错,而是容器只能访问被允许的目录

⚠️⚠️⚠️

想解决这个问题,首先要将你 n8n 上已有的工作流等数据找个地方保存好。因为要改环境变量,有可能会丢失数据。

⚠️⚠️⚠️

在电脑用 Docker 部署

打开 Docker,首先要在 Containers 里删掉部署好的 n8n。

然后到 Images,假设你没删掉 n8n 镜像的话,重新点击一下运行按钮。

删掉镜像了就重新拉一遍吧。可以参考《『n8n』环境搭建》

点击运行按钮后,需要添加在 Volumes 里添加一项(下图红框)。

在你的电脑,找个位置创建要给文件夹。

  • 上图红框的 Host path 这项就填入你在电脑创建的文件夹的绝对路径。
  • Container path 这项填入 /home/node/.n8n-files,必须是这个值!一个字一个符号都不能少!

然后点击“Run”按钮(弹窗右下角蓝色底色那个按钮)。

之后再浏览器输入 localhost:5678 就能运行 n8n 了。

接下来使用 Read/Write Files from Disk 节点读写文件,都是指向你刚刚在电脑创建的那个文件夹。

比如我的 /home/node/.n8n-files 指向了 文稿/n8n-data 这个文件夹,里面有一个 hello.txt 文件。

在 n8n 里使用 Read/Write Files from Disk 节点时,File(s) Selector 项需要这么写:

/home/node/.n8n-files/hello.txt

可以看到文件读取成功了。

记住记住!用法是这样的,别问为什么⬇️⬇️⬇️

/home/node/.n8n-files/文件名.后缀

在绿联 NAS 部署

如果你是在 NAS 上部署 n8n,通常使用 Docker 部署的吧~

不管你是用群晖还是其他牌子的NAS,如果使用新建项目,用是 yaml 拉镜像。

services:
  n8n:
    image: n8nio/n8n:latest   # 为了汉化成功,这里需要指定镜像版本号
    container_name: n8n
    ports:
      - 5678:5678
    volumes:
      - n8n:/home/node/.n8n # 冒号前面映射n8n文件夹绝对路径
      - n8n-files:/home/node/.n8n-files # 冒号前面映射n8n-files文件夹绝对路径
    restart: unless-stopped

那么 yaml 的代码必须在 volumes 里加一项 - n8n-files:/home/node/.n8n-files。冒号前面的 n8n-files 是允许 n8n 读写文件的文件夹的绝对路径

如果你是使用《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》里提到的方法,在 Docker 的「镜像」模块里搜索 n8n 下载部署的话,需要这么做。

我用绿联 NAS 举例,其他品牌的 NAS 操作方法大同小异。

在 Docker 的「容器」里找到 n8n,停止运行。

然后编辑它。

在 NAS 的「文件管理」里创建一个文件夹,用来给 n8n 读写文件使用的。

然后在「编辑容器」的「存储空间」里添加一项 /home/node/.n8n-files 指向那个文件夹,提供“读写”权限,如下图红框所示。

点击“保存”按钮,然后运行项目。

我在 NAS 的 n8n-files 文件夹里准备了一个 雷猴世界.txt 文件。

在 n8n 里,使用 /home/node/.n8n-files/雷猴世界.txt 这个路径就能读取到上面这个文件了。

同样,也是这个格式:

/home/node/.n8n-files/文件名.后缀

以上就是本文的全部内容啦,想了解更多n8n玩法欢迎关注《n8n修炼手册》👏

如果你有 NAS,我非常建议你在 NAS 上部署一套 n8n,搞搞副业也好,帮你完成工作任务也好 《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》

点赞 + 关注 + 收藏 = 学会了

看到了 v 友的分享 https://www.v2ex.com/t/1186743 ,给我打开了新思路。

刚好,我最近刚搭建了一个 n8n ;刚好,我有一个 CalDAV 账户;刚好,我有一个 OpenWeather 的 API 。

于是我就让 AI 给写了一段代码,如果你正在折腾 n8n 可以尝试下我这个工作流。

仓库地址:https://github.com/eyebrowkang/n8n-workflows

下面简单介绍一下这个工作流:

通过 Schedule 定时触发 http request (默认 30 分钟更新一次),获取返回的数据,然后通过 python 代码写入到 CalDAV 中指定的日历里面。可以设置保留过去的天气信息,其中当天的信息用的是 current 。由于 CalDAV 是通用协议,因此不局限于 Apple ,任何日历软件只要支持 CalDAV 就行。顺便要夸一下果子,默认的日历对于 CalDAV 的集成真的是顶级的。

目前跑了一下没问题,还有不少需要完善和不太优雅的地方,比如凭据我直接写在了代码里,因为免费版不让用 variables ,我后面再折腾下看 n8n 怎么在代码里用密钥会比较优雅。

以上,感谢 v 友的分享

有监测显示,威胁攻击者在 npm 软件包仓库中上传了八个恶意软件包。这些软件包伪装成面向 n8n 工作流自动化平台的集成插件,其真实目的是窃取开发者的 OAuth 身份凭证。
其中一款名为n8n-nodes-hfgjf-irtuinvcm-lasdqewriit的软件包,仿冒了谷歌广告的集成功能。它会诱导用户通过一个看似正规的表单绑定广告账户,随后将用户的 OAuth 凭证窃取并传输至攻击者控制的服务器中。
恩多尔实验室在其上周发布的一份报告中指出:“此次攻击标志着供应链威胁进入了全新的升级阶段。” 与传统的 npm 恶意软件不同 —— 这类软件往往以窃取开发者个人凭证为目标,而此次攻击则直接针对工作流自动化平台。这类平台本身相当于一个集中式凭证存储库,会将谷歌广告、Stripe 支付、Salesforce 客户管理等数十种集成服务的 OAuth 令牌、API 密钥以及敏感凭证统一存储。
目前已被确认并下架的恶意软件包完整名单如下:
  • n8n-nodes-hfgjf-irtuinvcm-lasdqewriit(下载量 4241 次,作者:kakashi-hatake)
  • n8n-nodes-ggdv-hdfvcnnje-uyrokvbkl(下载量 1657 次,作者:kakashi-hatake)
  • n8n-nodes-vbmkajdsa-uehfitvv-ueqjhhhksdlkkmz(下载量 1493 次,作者:kakashi-hatake)
  • n8n-nodes-performance-metrics(下载量 752 次,作者:hezi109)
  • n8n-nodes-gasdhgfuy-rejerw-ytjsadx(下载量 8385 次,作者:zabuza-momochi)
  • n8n-nodes-danev(下载量 5525 次,作者:dan_even_segler)
  • n8n-nodes-rooyai-model(下载量 1731 次,作者:haggags)
  • n8n-nodes-zalo-vietts(下载量 4241 次,作者:vietts_code、diendh)
截至本文撰写时,npm 用户zabuza-momochidan_even_seglerdiendh还被列为另外四款仍可下载的软件包的作者,具体如下:
  • n8n-nodes-gg-udhasudsh-hgjkhg-official(下载量 2863 次)
  • n8n-nodes-danev-test-project(下载量 1259 次)
  • @diendh/n8n-nodes-tiktok-v2(下载量 218 次)
  • n8n-nodes-zl-vietts(下载量 6357 次)
目前尚无法确认这四款软件包是否包含类似的恶意功能。不过,逆向实验室通过 Spectra Assure 工具对前三款软件包进行的安全评估显示,其暂未发现安全隐患;而针对n8n-nodes-zl-vietts的分析结果则显示,该软件包中包含一个曾被标记为恶意软件的组件。

值得警惕的是,软件包n8n-nodes-gg-udhasudsh-hgjkhg-official的更新版本在三小时前刚刚发布至 npm 仓库,这一迹象表明,攻击者的此次攻击活动可能仍在持续
这类恶意软件包一旦作为社区节点完成安装,其外在表现与其他任何一款 n8n 集成插件无异 —— 会正常显示配置界面,并将谷歌广告账户的 OAuth 令牌以加密形式保存至 n8n 的凭证存储库。但当工作流开始执行时,它会运行恶意代码,利用 n8n 的主密钥对存储的令牌进行解密,随后将这些凭证窃取并外传至远程服务器。
这一攻击事件的出现,标志着供应链威胁首次明确将 n8n 生态系统作为攻击目标。攻击者正是利用了用户对社区集成插件的信任,进而实现其窃取凭证的目的。
此次事件也凸显出一个核心安全隐患:集成来源不可信的工作流,会大幅扩大企业的攻击面。研究人员建议,开发者在安装任何软件包前都应进行安全审计,仔细核查软件包的元数据是否存在异常,并优先使用 n8n 官方提供的集成插件。
n8n 官方同样发出警告,提醒用户警惕来自 npm 仓库的社区节点所带来的安全风险。这类节点可能会引入破坏性更新,或在服务运行的主机上执行恶意操作。官方建议,对于自托管的 n8n 实例,可通过将环境变量N8N_COMMUNITY_PACKAGES_ENABLED设置为false的方式,禁用社区节点功能。
研究人员基兰・拉吉与亨里克・普拉特指出:“社区节点拥有与 n8n 主程序完全等同的访问权限。它们可以读取环境变量、访问文件系统、发起对外网络请求,而最关键的一点是,它们能在工作流执行过程中获取到已解密的 API 密钥与 OAuth 令牌。节点代码与 n8n 运行时环境之间,不存在任何沙箱隔离机制。”
“正因如此,一款恶意 npm 软件包就足以让攻击者深度窥探目标系统的工作流、窃取各类凭证,并且在不触发即时警报的情况下实现对外通信。对于攻击者而言,npm 供应链已成为他们潜入 n8n 环境的一条隐蔽且高效的入侵通道。”

更新补充

在接受《黑客新闻》采访时,恩多尔实验室证实,npm 软件包n8n-nodes-gg-udhasudsh-hgjkhg-official确实为恶意软件,且属于此次攻击活动的一部分;其余三款软件包则被判定为良性。

前言 最近n8n的漏洞挺多的,恰好看到https://xz.aliyun.com/news/91090这篇25年的Git 节点 RCE 漏洞分析,一查发现还有个CVE-2026-21877,于是来了兴趣 1. 漏洞概述 N8N 是一个开源的工作流程自动化平台。在0.121.2及以下版本中,经过认证的攻击者可能能够使用n8n服务执行恶意代码。这可能导致全面入侵,并可能影响自托管和n8n云实例。这个问题在1.121.3版本中修复了。


2. 漏洞分析
在受影响的版本中,Git节点的文件写入功能存在根本性的路径验证缺陷:

Plain Text

复制代码
const repositoryPath = this.getNodeParameter('repositoryPath', itemIndex, '') as string;

这里直接获取了用户完全控制的路径,且没有任何安全检查

Plain Text

复制代码
if (operation === 'clone') {
try {
await access(repositoryPath);
} catch (error) {
await mkdir(repositoryPath);
}
}

根据用户输入的路径创建目录,从而创建恶意目录结构,直接将我们的文件不用经过检验上传至.git/hook/目录下执行 该漏洞最精妙之处在于它与n8n早期安全加固措施的对抗。在2025年,n8n曾修复一个类似的Git节点漏洞(CVE-2025-65964),并在1.119.2版本中引入了默认禁用Git钩子执行的防护机制。 修复原理

然而,CVE-2026-21877完全绕过了这一防护。原因在于: Git钩子执行优先级:Git在执行钩子时,会优先检查仓库本地.git/hooks/目录,然后才会考虑core.hooksPath配置。直接写入.git/hooks/的脚本具有最高优先级。 配置作用域差异core.hooksPath配置通常作用于全局或系统级,但Git在仓库本地执行操作时,对.git/hooks/的检查是硬编码行为,不受该配置影响。 信任边界差异core.hooksPath机制允许重定向钩子位置,是Git的安全特性之一。但攻击者直接写入.git/hooks/,这是Git最原始的钩子机制,享有最高级别的信任。
5. 修复方案分析 5.1 官方修复(n8n 1.121.3)

在Git节点操作前新增调用,利用现有通用函数检查仓库路径,若越权则阻断,以此修复漏洞。
参考: https://github.com/Ashwesker/Ashwesker-CVE-2026-21877 https://www.venusgroup.com.cn/new_type/aqtg/20260108/29069.html
https://xz.aliyun.com/news/91090

有监测显示,威胁攻击者在 npm 软件包仓库中上传了八个恶意软件包。这些软件包伪装成面向 n8n 工作流自动化平台的集成插件,其真实目的是窃取开发者的 OAuth 身份凭证。
其中一款名为n8n-nodes-hfgjf-irtuinvcm-lasdqewriit的软件包,仿冒了谷歌广告的集成功能。它会诱导用户通过一个看似正规的表单绑定广告账户,随后将用户的 OAuth 凭证窃取并传输至攻击者控制的服务器中。
恩多尔实验室在其上周发布的一份报告中指出:“此次攻击标志着供应链威胁进入了全新的升级阶段。” 与传统的 npm 恶意软件不同 —— 这类软件往往以窃取开发者个人凭证为目标,而此次攻击则直接针对工作流自动化平台。这类平台本身相当于一个集中式凭证存储库,会将谷歌广告、Stripe 支付、Salesforce 客户管理等数十种集成服务的 OAuth 令牌、API 密钥以及敏感凭证统一存储。
目前已被确认并下架的恶意软件包完整名单如下:
  • n8n-nodes-hfgjf-irtuinvcm-lasdqewriit(下载量 4241 次,作者:kakashi-hatake)
  • n8n-nodes-ggdv-hdfvcnnje-uyrokvbkl(下载量 1657 次,作者:kakashi-hatake)
  • n8n-nodes-vbmkajdsa-uehfitvv-ueqjhhhksdlkkmz(下载量 1493 次,作者:kakashi-hatake)
  • n8n-nodes-performance-metrics(下载量 752 次,作者:hezi109)
  • n8n-nodes-gasdhgfuy-rejerw-ytjsadx(下载量 8385 次,作者:zabuza-momochi)
  • n8n-nodes-danev(下载量 5525 次,作者:dan_even_segler)
  • n8n-nodes-rooyai-model(下载量 1731 次,作者:haggags)
  • n8n-nodes-zalo-vietts(下载量 4241 次,作者:vietts_code、diendh)
截至本文撰写时,npm 用户zabuza-momochidan_even_seglerdiendh还被列为另外四款仍可下载的软件包的作者,具体如下:
  • n8n-nodes-gg-udhasudsh-hgjkhg-official(下载量 2863 次)
  • n8n-nodes-danev-test-project(下载量 1259 次)
  • @diendh/n8n-nodes-tiktok-v2(下载量 218 次)
  • n8n-nodes-zl-vietts(下载量 6357 次)
目前尚无法确认这四款软件包是否包含类似的恶意功能。不过,逆向实验室通过 Spectra Assure 工具对前三款软件包进行的安全评估显示,其暂未发现安全隐患;而针对n8n-nodes-zl-vietts的分析结果则显示,该软件包中包含一个曾被标记为恶意软件的组件。

值得警惕的是,软件包n8n-nodes-gg-udhasudsh-hgjkhg-official的更新版本在三小时前刚刚发布至 npm 仓库,这一迹象表明,攻击者的此次攻击活动可能仍在持续
这类恶意软件包一旦作为社区节点完成安装,其外在表现与其他任何一款 n8n 集成插件无异 —— 会正常显示配置界面,并将谷歌广告账户的 OAuth 令牌以加密形式保存至 n8n 的凭证存储库。但当工作流开始执行时,它会运行恶意代码,利用 n8n 的主密钥对存储的令牌进行解密,随后将这些凭证窃取并外传至远程服务器。
这一攻击事件的出现,标志着供应链威胁首次明确将 n8n 生态系统作为攻击目标。攻击者正是利用了用户对社区集成插件的信任,进而实现其窃取凭证的目的。
此次事件也凸显出一个核心安全隐患:集成来源不可信的工作流,会大幅扩大企业的攻击面。研究人员建议,开发者在安装任何软件包前都应进行安全审计,仔细核查软件包的元数据是否存在异常,并优先使用 n8n 官方提供的集成插件。
n8n 官方同样发出警告,提醒用户警惕来自 npm 仓库的社区节点所带来的安全风险。这类节点可能会引入破坏性更新,或在服务运行的主机上执行恶意操作。官方建议,对于自托管的 n8n 实例,可通过将环境变量N8N_COMMUNITY_PACKAGES_ENABLED设置为false的方式,禁用社区节点功能。
研究人员基兰・拉吉与亨里克・普拉特指出:“社区节点拥有与 n8n 主程序完全等同的访问权限。它们可以读取环境变量、访问文件系统、发起对外网络请求,而最关键的一点是,它们能在工作流执行过程中获取到已解密的 API 密钥与 OAuth 令牌。节点代码与 n8n 运行时环境之间,不存在任何沙箱隔离机制。”
“正因如此,一款恶意 npm 软件包就足以让攻击者深度窥探目标系统的工作流、窃取各类凭证,并且在不触发即时警报的情况下实现对外通信。对于攻击者而言,npm 供应链已成为他们潜入 n8n 环境的一条隐蔽且高效的入侵通道。”

更新补充

在接受《黑客新闻》采访时,恩多尔实验室证实,npm 软件包n8n-nodes-gg-udhasudsh-hgjkhg-official确实为恶意软件,且属于此次攻击活动的一部分;其余三款软件包则被判定为良性。

然后就发现了问题,用 github 托管镜像的话,国内的服务器拉取镜像速度太慢,各厂商镜像服务又有相应限制,在服务器上挂代理又有一定的风险

故而迁移一份仓库到腾讯新出的平台 CNB 上

提高国内服务器的访问速度,依旧自动更新和构建

(不过感觉腾讯给的免费对象存储额度不太够)

忘了给链接了


📌 转载信息
原作者:
AliverAnme
转载时间:
2026/1/16 12:46:09

最近在折腾自动化内容产出,发现微信公众号的排版和发布流程非常割裂。虽然 mdnice 很好用,但它没有官方 API ,很难集成到自动化流里。

于是自己动手撸了一套方案,并把其中最关键的 Markdown 转微信排版 环节封装成工具开源了。

技术栈:

n8n:作为全流程自动化编排中心。

DeepSeek:负责高质量文本生成。

Gemini (Image Generation):根据内容自动生成配图作为头图。

自建 API (markdown2wechat):解析 mdnice 主题并将 MD 转换为适合微信预览的 HTML 格式。

全流程逻辑:

定时触发或 Webhook 触发。

调用 DeepSeek API 生成符合排版规范的 Markdown 。

调用 Gemini 生成文章封面图并自动上传。

通过我的工具接口,将 MD 自动套用 mdnice 主题模板并转换为 HTML 。

推送到草稿箱。

工具开源地址: https://github.com/koala9527/markdown2wechat

欢迎 V 友们拍砖,如果大家有更好的全自动发布 API 思路也欢迎交流。


一波三折啊~今天官方又出了新的领取方式了
这篇适用时填写了表单积分还没入帐,或是还没填表单的佬友


请直接透过下方填写表单即可领取积分

本次领取会判定是否在本次活动注册满四日 以及是否重覆领取
(根据官方的反馈,假设你填写了表单但 Kiro 方判定已领取过 会直接清空免费积分)
如果还没有注册到达时数会显示如下,请等时数到达再填写即可


📌 转载信息
原作者:
josenlou
转载时间:
2026/1/11 08:33:05

转载自 n8n 论坛,原文见 Security Advisory: Security Vulnerability in n8n Versions 1.65-1.120.4 - Community Highlights - n8n Community

中文内容来自 qwen-mt 翻译


Potential impact 潜在影响

Who is affected: 受影响对象:

  • Self-hosted instances running versions 1.65-1.120.4
    运行版本 1.65–1.120.4 的自托管实例
  • If you’re running any 2.x version (including any RC/beta), you already have this security fix
    若您运行的是任意 2.x 版本(包括任何 RC 或测试版),则已内置此项安全修复
  • Cloud instances are being upgraded. You can also start the upgrade from your Cloud dashboard.
    云实例正在逐步升级中,您也可通过云控制台手动启动升级流程。

If this vulnerability were exploited, it could lead to:
若该漏洞被成功利用,可能导致:

  • In certain configurations, privilege escalation within the n8n instance
    在特定配置下,n8n 实例内部发生权限提升
  • Unauthorized access to sensitive information stored in your n8n instance
    未经授权访问您 n8n 实例中存储的敏感信息

Required action 需采取的操作

If you’re running version 1.65-1.120.4: Please update your n8n instance to version 1.121.0 (or later) as soon as possible. This version contains the necessary security fixes.
若您当前运行版本为 1.65–1.120.4:请尽快将 n8n 实例升级至 1.121.0 或更高版本。该版本已包含必要的安全修复补丁。

If you’re running any 2.x version (including any RC/beta): No action needed - you already have this security fix.
若您运行的是任意 2.x 版本(包括任何 RC 或测试版):无需额外操作 —— 您已具备此项安全修复。


📌 转载信息
原作者:
seamee
转载时间:
2026/1/9 17:36:45

简单来说就是只要有方出 n8n 的文件上传页出去 就能被攻击
影响所有小于 1.121.0 版本的 n8n


前几天刚来一个 py 节点任意执行。。。

详细内容:

https://www.cve.org/CVERecord?id=CVE-2026-21858


📌 转载信息
原作者:
blacksein
转载时间:
2026/1/8 12:12:30

最高危Ni8mare漏洞允许黑客劫持n8n服务器

                        By

12:41 PM

一个被称为“Ni8mare”的最高严重性漏洞允许远程、未经身份验证的攻击者控制本地部署的N8N工作流自动化平台实例。

该安全问题被标识为CVE-2026-21858,严重性评分为10分(满分10分)。根据数据安全公司Cyera的研究人员称,存在超过100,000台易受攻击的n8n服务器。

n8n是一个开源工作流自动化工具,允许用户通过可视化编辑器将应用程序、API和服务连接成复杂的工作流。它主要用于自动化任务,并支持与人工智能和大型语言模型(LLM)服务的集成。

Ni8mare漏洞详情

Ni8mare漏洞使攻击者能够通过执行某些基于表单的工作流来访问底层服务器上的文件。

n8n开发者表示:“易受攻击的工作流可能向未经身份验证的远程攻击者授予访问权限。这可能导致系统上存储的敏感信息暴露,并可能根据部署配置和工作流使用情况,引发进一步的系统危害。”

Cyera研究人员发现了Ni8mare漏洞(CVE-2026-21858),并于2025年11月9日向n8n报告。他们指出,该安全问题是n8n解析数据方式中存在的内容类型混淆。

n8n使用两个函数来处理传入数据,基于webhook中配置的'content-type'头部(webhook是通过监听特定消息来触发工作流中事件的组件)。

当webhook请求被标记为multipart/form-data时,n8n将其视为文件上传,并使用特殊的上传解析器将文件保存在随机生成的临时位置。

“这意味着用户无法控制文件的最终存储位置,从而防止了路径遍历攻击。”

然而,对于所有其他内容类型,n8n则使用其标准解析器。

Cyera发现,通过设置不同的内容类型(例如application/json),攻击者可以绕过上传解析器。

存在缺陷的解析器逻辑

来源:Cyera

Cyera解释道:“由于调用此函数时未验证内容类型是否为multipart/form-data,我们控制了整个req.body.files对象。这意味着我们控制了filepath参数——因此,我们不是复制上传的文件,而是可以复制系统中的任何本地文件。”

这允许从n8n实例中读取任意文件,通过将内部文件添加到工作流的知识库中,可能暴露密钥信息。

Cyera表示,这可能被滥用以暴露实例上存储的密钥、将敏感文件注入工作流、伪造会话cookie以绕过身份验证,甚至执行任意命令。

触发Ni8mare(CVE-2026-21858)以访问数据库

来源:Cyera

Cyera强调,n8n通常存储API密钥、OAuth令牌、数据库凭证、云存储访问权限、CI/CD密钥和业务数据,使其成为中心自动化枢纽。

n8n开发者表示,目前没有针对Ni8mare的官方临时解决方案,但一种缓解措施是限制或禁用可公开访问的webhook和表单端点。

建议的操作是更新到n8n 1.121.0或更高版本。