SSD Nodes Learn
指南 Matt Connor作者: Matt Connor · 更新于 2026-07-19

Claude + n8n:在 VPS 上搭建 AI 工作流

在您自己的 VPS 上把 Claude 接入 n8n:涵盖凭据配置、按节点选模型、三个可用的 AI 工作流、成本计算与常见报错。

您要搭建的内容

在您已经运行的 n8n 实例上搭建三个可用的 AI 工作流:一个把您丢给它的任何内容都总结出来的 webhook、一个按计划定时读取订阅源并把文章转成结构化表格行的阅读器,以及一个会自行调用 HTTP API 来回答问题的 AI Agent。这是 在 VPS 上用 Python 调用 Claude API 的无代码对应版本:同样的 API、同样的 token、同样的账单,只是编排逻辑放在 n8n 节点里,而不是脚本里。

本文假设您已经按照 在 Docker 上自托管 n8n 指南 把 n8n 跑在 HTTPS 之后。如果还没有,请先完成那一步:webhook 需要一个真实的 TLS 端点,而您接下来要放入 API 密钥的凭据库,也需要那份指南反复提醒您做的加密密钥备份。

这里真正值得琢磨的问题不是拖放操作,而是每个节点的模型选择、会悄悄把 undefined 插进去的提示词字段,以及自动化是无人值守运行这一事实:一个每次运行只花半美分的工作流本来很便宜,直到一个重试循环在一夜之间把它跑了四千次。本文大部分内容讲的都是这些。

一份凭据,用您备份过的密钥加密

在 platform.claude.com 的 Anthropic Console 里获取一个 API 密钥:进入 Settings,再进 API Keys,然后创建一个名字类似 n8n-vps 的密钥。它只显示一次。给账户充值或设置好计费;API 用量是按 token 付费的,与任何 Claude.ai 订阅完全无关。

在 n8n 里:Credentials、Create credential、选择 Anthropic,把密钥粘贴到 API Key 字段,保存。每个工作流里的每个 Claude 节点都引用这一份已保存的凭据,您永远不用把密钥直接粘贴进某个节点。

两点运维提示。第一,n8n 用 N8N_ENCRYPTION_KEY 加密已保存的凭据。如果您按照 n8n 指南在 compose 文件里显式设置了这个环境变量,您的凭据在容器重建后仍然可用;如果您让 n8n 自己生成一个、随后又丢失了卷(volume),那么每一份已保存的凭据(包括这个密钥)都会变成无法恢复的密文。如果之前跳过了这一步,现在就把密钥备份好。第二,把 n8n 凭据库当作影响范围(blast radius)来看待:任何能在您的实例上编辑工作流的人,都能用您的 Anthropic 密钥发起请求。在 Console 的 Settings 里设置一个消费上限,这样即使实例被入侵或失控,也有一个天花板。

模型选择是每个节点各自的决定

n8n 的 Claude 节点里的模型下拉框是实时从 API 拉取的,因此显示的是您的密钥能访问的模型。截至 2026 年 7 月,产品阵容以及按每百万输入/输出 token 计的 API 定价是:Claude Haiku 4.5(claude-haiku-4-5)为 $1/$5,上下文窗口 200K;Claude Sonnet 5(claude-sonnet-5)为 $3/$15,2026 年 8 月 31 日前有 $2/$10 的推广价;Claude Opus 4.8(claude-opus-4-8)为 $5/$25,后两者的上下文窗口都是 100 万 token。此外还有面向最难推理任务的 Claude Fable 5(claude-fable-5),价格 $10/$50;本文没有任何环节需要它。请使用这些确切的 ID:您从旧教程里记住的带日期后缀的变体会返回 404,而且价格会变,所以在相信任何地方(包括本文)读到的数字之前,请到 platform.claude.com 核实。

要养成的习惯是:按节点选模型,而不是按平台选。分类、抽取、摘要、路由这些自动化里的家常活,在 Haiku 上跑得非常好,价格只有 Sonnet 标价的三分之一、Opus 的五分之一。把 Sonnet 留给 Agent 和多步推理,把 Opus 留给那种答错的代价比 token 更高的少数工作流。一个有五个 Claude 节点的工作流,完全可以、也应该混用不同模型。

两个 Claude 节点,以及各自的用武之地

n8n 提供了两个不同的 Anthropic 集成,选错是初学者最常见的弯路。

Anthropic 节点是一个普通的应用节点:一个请求进,一个响应出。它的 Text 资源有一个 Message a Model 操作,还有分析图像和文档的操作。只要工作流的逻辑本身在 n8n 里,就用它:触发器、Claude 调用、下一个节点。下面的工作流 1 和 2 用的就是它,或它的链式等价物。

Anthropic Chat Model 节点是一个子节点(sub-node):一个小附件,为 AI AgentBasic LLM Chain 这样的根节点提供模型。它没有触发器,自己也没有输出;它暴露模型选择器,以及 Maximum Number of Tokens、Sampling Temperature 这类采样选项。n8n 文档里有一条值得记住的注意事项:子节点内部的表达式始终针对第一个输入项求值,而不是每一项,所以要把逐项的表达式放在根节点的提示词字段里,而不是子节点里。

工作流 1:webhook 进,摘要出

AI 自动化的 hello-world:任何 POST 到某个 URL 的内容都会被总结,并送到 Slack 或您的收件箱。

  1. Webhook 节点:HTTP Method 选 POST,路径 summarize。n8n 会给您一个测试 URL 和一个生产 URL;生产 URL 只有在工作流处于激活状态时才会监听。
  2. Anthropic 节点:Message a Model,模型 claude-haiku-4-5,Max Tokens 设在 300 左右。
  3. Slack 节点(或 Send Email):把响应文本发到某个频道。

提示词是 n8n 表达式与 Claude 相遇的地方。POST 请求体会落在 $json.body 下,因此用户消息字段看起来是这样:

Summarize the following feedback in three bullets, then one line:
verdict: praise | complaint | churn-risk. No preamble.

{{ $json.body.text }}

把角色和格式说明放在节点的系统提示词字段里,而不是用户消息里:系统提示词保持恒定,而负载(payload)在变化,这能让行为稳定,也能让这段提示词在六个月后依然易读。就在 VPS 上测试它:

curl -X POST https://n8n.example.com/webhook/summarize \
  -H 'Content-Type: application/json' \
  -d '{"text": "Third support ticket this month about slow disk IO..."}'

在 Haiku 上的每次运行成本:一个 1,200 token 的负载加上提示词,大约是 $0.0012 的输入,300 token 的输出是 $0.0015,合起来大约四分之一美分。一个月一千次运行不到 $3。同一个节点若指向 Opus 4.8,大约是这个的五倍。这个比例乘以您搭建的每一个工作流,正是逐节点选模型这个习惯之所以重要的原因。

工作流 2:定时把 RSS 转成结构化表格行

现在来一个按时钟运行、且带结构化输出的:每小时读取一次 RSS 订阅源,对每一项分类,向表格追加行。

  1. Schedule Trigger:每小时一次。
  2. RSS Read:填订阅源 URL。每篇文章输出一项。
  3. Basic LLM Chain:搭配一个设为 claude-haiku-4-5Anthropic Chat Model 子节点,以及一个持有 JSON schema 的 Structured Output Parser 子节点。
  4. Google Sheets(或 Postgres):为每一项追加一行。

Structured Output Parser 能把「Claude,请返回 JSON」从一个愿望变成一份契约:它会用您的 schema 校验模型的回复,一旦不符就让该项显式失败,而不是写入乱七八糟的行。类似这样的 schema:

{
  "type": "object",
  "properties": {
    "category": { "type": "string", "enum": ["release", "security", "tutorial", "other"] },
    "relevance": { "type": "number" },
    "one_line_summary": { "type": "string" }
  },
  "required": ["category", "relevance", "one_line_summary"]
}

而链的提示词引用订阅项:

Classify this article for a VPS hosting audience.

Title: {{ $json.title }}
Content: {{ $json.contentSnippet }}

这里的成本算法换了形状:它是按项计费,而不是按次运行。每小时五十篇文章、一天二十四小时,就是一个月 36,000 次 Claude 调用:在 Haiku 上视文章长度大约 $40–90,在 Opus 上大约是这个的五倍。在 LLM 节点之前先去重(用一个简单的 IF 对照此前见过的链接,或者用 n8n 的 Remove Duplicates 节点),这个数字就会大幅下降,因为大多数每小时的轮询里根本没有新内容。最便宜的 token 就是您从不发起的那次调用。

工作流 3:一个会使用工具的 AI Agent

前两个工作流是流水线,由您来决定步骤。AI Agent 节点把这一点反了过来:您给 Claude 一个目标和一些工具,由来决定调用哪些工具、按什么顺序调用,直到完成为止。n8n 要求附加一个聊天模型子节点,以及至少一个工具子节点。

一个具体的搭法:一个从您的监控里回答「什么挂了、为什么挂」的运维助手:

  1. Chat Trigger(或 webhook):问题进来。
  2. AI Agent:搭配一个设为 claude-sonnet-5Anthropic Chat Model 子节点。Agent 会规划并串联工具调用;Haiku 能驱动简单的单工具 Agent,但一旦工具变多,Sonnet 就是合理的下限。
  3. HTTP Request 节点作为工具附加:指向您的 Uptime Kuma 状态 API 或 Zabbix 端点。第二个 HTTP 工具可以访问任何其他带 REST API 的东西。

两个设置承担了大部分工作。Agent 的 System Message 定义了这份工作:「您是一名运维助手。在回答之前,用状态工具检查当前监控项的状态。只报告处于宕机状态的监控项,并附上持续时长。」而每个工具的描述不是给人看的文档,而是 Claude 判断何时调用它的依据。「以 JSON 形式返回所有被监控服务的当前上/下线状态」会在恰当的时刻被调用;「状态 API」则会被忽略或误用。当您把 HTTP Request 节点作为工具附加时,启用它的 Optimize Response 选项,并选出真正重要的 JSON 字段,否则每个冗长的 API 响应都会被塞进模型的上下文,成为您要付费的输入 token。

给 Agent 设置 Max Iterations(默认是 10),设成能跑通的最小数字:它决定了是「Agent 在 4 次工具调用后放弃」还是「十几轮模型往返的循环」。还要理解计费的形状:每一次迭代都会把到目前为止的完整对话(系统消息、问题、之前的每一次工具结果)作为输入 token 重新发送。一次六轮迭代的 Agent 运行,累计很容易达到 20,000 输入 token 和 2,000 输出:按 Sonnet 5 的推广价大约 $0.06,按标准的 $3/$15 大约 $0.09,相当于一次简单摘要运行的二十倍。如果您发现自己在往一个 Agent 上装很多工具,那正是 在您的 VPS 上运行 MCP 服务器 成为更清晰架构的时刻。

成本护栏,因为没人在盯着

一个无人值守的工作流,需要有人坐在键盘前时隐式提供的那些控制。四层,从最省钱的开始。

每个 Claude 节点上的 Max Tokens。 它是一个硬性的输出上限。摘要器需要 300,分类器需要 100。它给账本上昂贵的那一侧设了界(每百万输出 token $5–$25,对比输入的 $1–$5),同时兼作失控刹车:一个让 Claude 喋喋不休的提示词 bug 只花 300 token,而不是 8,000。

逐节点选模型。 上面已讲;在当前的产品阵容里,这是一个五到十倍的价格杠杆,设置只需十秒。

约束循环。 给 Agent 设 Max Iterations。在工作流设置里设一个工作流超时,好让一个卡住的执行直接死掉,而不是空转。还要小心逐节点的 Retry On Fail:它是处理瞬时错误的正确工具,但重试会成倍增加成本:Max Tries 设 3、Wait Between Tries 设 5000 毫秒,意味着一个持续性的失败在放弃之前会对每一项最多计费三次。永远不要把重试套在一个已经昂贵地成功过的节点上。

一个作为最后防线的错误工作流。 创建一个以 Error Trigger 节点开头的工作流,把出错工作流的名称和错误发到 Slack,然后在每个 AI 工作流的设置里把它设为 Error Workflow。它要抓的失败模式是最难看的那一种:一个由计划触发的工作流每次运行、每小时、连续一周都出错,每次运行在死掉之前都在烧 token。把它与 Anthropic Console 里的每月消费上限搭配使用,并在激活任何计划任务后的头几天查看 Console 的用量页面。如果您想准确了解自己被计费的是什么,token 用量指南 会把它拆解清楚。

失败模式,以及您会看到的字符串

节点瞬间失败,提示「Authorization failed - please check your credentials.」 API 返回了 401。底层的响应体是:

{"type": "error", "error": {"type": "authentication_error", "message": "invalid x-api-key"}}

一个粘错的密钥:被截断、带尾随空格,或者是教程里的占位符。重新创建 n8n 凭据并再次粘贴;如果它昨天还能用,那就检查密钥是否在 Console 里被吊销了,或者是否有一次卷(volume)恢复把凭据回滚到了用另一个 N8N_ENCRYPTION_KEY 加密的版本。

执行成批失败,出现 429 rate_limit_error 消息大意是「Number of request tokens has exceeded your per-minute rate limit.」限流是按分钟计的桶,而 n8n 让您非常容易同时触发五十个 webhook 或 RSS 执行。要从结构上修复它:按顺序处理各项(Loop Over Items)而不是并行,并设置 Retry On Fail,Max Tries 设 3、Wait Between Tries 设到 5000 毫秒的上限——n8n 把这个字段的上限就定在 5000 毫秒。当您需要更长的退避、好让重试落到下一个分钟窗口时,就在错误路径里放一个 Wait 节点,或者一次只处理一项。响应带有一个 retry-after 头,准确告诉您要等多久——n8n 固定的等待读不到它,所以更长的暂停要您自己搭。

404 not_found_error,指名您的模型。 响应体会把打错的字回显出来:

{"type": "error", "error": {"type": "not_found_error", "message": "model: claude-haiku-4.5"}}

用点号代替了连字符(把 4-5 写成 4.5)、来自过时博客文章的日期后缀,或者一个已退役的模型。对照当前列表把 ID 改正——这坑的是那些把模型字段当表达式来输入、而不是从下拉框里选的人。

Claude 回答了一个您没问的问题。 哪里都没有报错,运行是绿色的。一个引用了缺失字段的 n8n 表达式,比如负载用的是 message 时却写了 {{ $json.body.text }},会把字面字符串 undefined 插进您的提示词里,而 Claude 会一本正经地回应一个关于「无」的提示词。如果被引用的节点根本没有执行,您会得到「Referenced node is unavailable」,但一个缺失的字段是无声的。在激活之前,永远先用真实数据跑一次,并在节点的输入面板里读一读实际渲染出的提示词——表达式编辑器会预览解析后的值,只要您去看,undefined 就在那儿。

FAQ

如何把 Claude 接入 n8n?

在 platform.claude.com 的 Anthropic Console 里创建一个 API 密钥,然后在 n8n 里添加一个 Anthropic 类型的凭据,把它粘贴到 API Key 字段。每个 Claude 节点(Anthropic 应用节点和 Anthropic Chat Model 子节点)都引用那份已保存的凭据。n8n 用 N8N_ENCRYPTION_KEY 加密它,所以把那个密钥备份好,否则凭据会随着卷一起丢失。

一个 AI 工作流每次运行要花多少钱?

估算每次运行的 token 数,再乘以模型的每百万价格——截至 2026 年 7 月,Haiku 4.5 是每百万输入/输出 token $1/$5,Sonnet 5 是 $3/$15(2026 年 8 月前有 $2/$10 的推广价)。一次在 Haiku 上的 webhook 摘要大约四分之一美分;一次在 Sonnet 上带几次工具调用的 Agent 运行接近 $0.06–$0.10,因为每一次迭代都会把整个对话作为输入重新发送。请在 Console 的用量页面核实这次运行,而不要轻信估算。

n8n 自动化应该用哪个 Claude 模型?

Haiku 4.5 用于分类、抽取、摘要和路由——速度和价格占主导的高频工作。Sonnet 5 用于 AI Agent 节点和多步推理。Opus 4.8 只用在答错的代价高到足以对得起它 $5/$25 标价的地方——是 Haiku 的五倍、略低于 Sonnet 的两倍。按节点选模型,而不是按工作流——一个工作流可以三个都混用。

如何阻止一个 n8n 工作流在 Claude API 上超支?

把护栏叠起来:每个 Claude 节点上一个低的 Max Tokens、Agent 上的 Max Iterations、一个工作流超时,以及保守的 Retry On Fail 设置,好让失败不会成倍放大 token 花费。然后加一个 Error Trigger 工作流,在任何 AI 工作流失败时在 Slack 里提醒您,并在 Anthropic Console 里设一个每月消费上限,作为 VPS 上任何东西都无法逾越的硬天花板。

AI Agent 的工具调用会额外收费吗?

没有单独的工具费,但工具并不免费:每一个工具结果都会作为输入 token 回喂给模型,而每一次 Agent 迭代都会把到目前为止的整个对话重新发送。一个啰嗦的 API 响应若不加过滤地传过去,可能会把您真正的提示词都比下去——在 HTTP Request 工具上启用 Optimize Response,只返回 Agent 需要的字段。