SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor

Claude 接入 n8n:VPS 上构建 AI 工作流

学习在自托管 VPS 的 n8n 中接入 Claude,配置 Anthropic 凭据、按节点选择模型,并构建 3 个 AI 工作流,同时核算 token 成本与排查常见错误。

构建内容

在您现有的 n8n 实例上运行 3 个 AI 工作流:一个用于总结任意输入内容的 webhook;一个按计划读取信息源,并将文章转换为结构化的电子表格行;以及一个会自行调用 HTTP API 来回答问题的 AI Agent。这相当于 在 VPS 上通过 Python 调用 Claude API 的无代码实现:使用相同的 API、相同的令牌和相同的费用,但由 n8n 节点负责编排,而不是由脚本完成。

以下内容假设您已按照 使用 Docker 自托管 n8n 指南,在 HTTPS 后运行 n8n。如果尚未完成,请先完成该配置。webhook 需要真实的 TLS 端点;此外,您即将用于存储 API 密钥的凭据存储,还需要该指南反复强调的加密密钥备份。

这里真正需要解决的问题不是拖放节点,而是为每个节点选择合适的模型、会静默插入 undefined 的提示词字段,以及自动化任务会在无人值守的情况下运行。每次运行成本半美分的工作流看似便宜,但如果重试循环在一夜之间运行 4000 次,费用就会迅速增加。本指南的大部分内容都将讨论这些问题。

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

在 Anthropic Console 中获取 API key:访问 platform.claude.com,依次进入 Settings、API Keys,然后创建一个名称类似 n8n-vps 的密钥。密钥只显示一次。创建密钥时,Console 还会要求选择过期时间;请记录该日期,因为密钥过期后,无人值守工作流会失败,并出现下文“故障模式”中所述的相同 401 错误。为账户充值或设置计费。API 使用按 token 计费,从预付余额中扣款。Pro 订阅不包含 API 使用额度,但 Claude Max 和 Team 计划现在包含每月 Claude API 额度(Max 5x 为 $100,Max 20x 为 $200,Team 共享额度最高为 $500)。您需要在 claude.ai 的计费设置中关联一个 Console 组织,才能领取这些额度。这些额度可支付 n8n 发起的 API 调用,但不适用于 Claude Code,并且会在每个计费周期结束时过期。如果您原本希望完全免费构建这三个工作流,这里没有免费层级,只有 token 计数等少数端点完全免费。

在 n8n 中依次选择 Credentials、Create credential,选择 Anthropic,将密钥粘贴到 API Key 字段,然后保存。每个工作流中的每个 Claude 节点都引用这个已存储的凭据,您不需要将密钥粘贴到节点中。

请注意以下两点。第一,n8n 使用 N8N_ENCRYPTION_KEY 加密存储的凭据。如果您按照 n8n 指南在 compose 文件中显式设置该环境变量,凭据在重建容器后仍可保留;如果让 n8n 自动生成该变量,之后又丢失了数据卷,那么所有已存储的凭据(包括此密钥)都会变成无法恢复的密文。如果之前没有备份,现在请备份该密钥。第二,请将 n8n 凭据存储视为影响范围:任何能够使用您的 Anthropic 凭据的人,都可以使用您的密钥发起请求。在 Community 版本中,能够访问这些凭据的是您和实例所有者;n8n 文档对此的表述是:“只有实例所有者和创建工作流及凭据的用户可以访问它们”,因此其他 Member 账户无法访问。自托管 n8n 上的工作流和凭据共享功能属于付费功能(Business 或 Enterprise)。共享工作流后,该工作流的编辑者可以使用它所引用的每个凭据。因此,如果还有其他人登录此实例,在分配账户前,请阅读付费 n8n 许可证所提供的访问控制。在 Console 的 Settings 中设置支出上限,以便在实例遭到入侵或失控运行时限制费用。

模型选择应按节点决定

n8n 的 Claude 节点中的模型下拉列表会实时从 API 获取,因此显示的是您的密钥可以访问的模型。本指南使用的模型,以及截至 2026 年 10 月每百万输入/输出 token 的 API 价格如下:Claude Haiku 4.5(claude-haiku-4-5)为 $1/$5,上下文窗口为 200K;Claude Sonnet 5(claude-sonnet-5)为 $2/$10;Claude Opus 4.8(claude-opus-4-8)为 $5/$25,后两者的上下文窗口均为 1M token。此外,还有用于最复杂推理任务的 Claude Fable 5(claude-fable-5),价格为 $10/$50;本指南中的任何内容都不需要它。请使用这些准确的 ID。claude-haiku-4-5 是固定快照 claude-haiku-4-5-20251001 的别名,也可以使用;但从旧教程复制的带日期 ID 可能指向已退役的模型并导致请求失败。价格会变动,因此在采信任何来源中的价格前,包括本文中的价格,请先查看 platform.claude.com。

本指南首次发布后,Anthropic 发布了更新的模型,其文档现在将 Haiku 4.5、Sonnet 5 和 Opus 4.8 标记为旧版。它们仍可使用:Haiku 4.5 最早于 2026 年 10 月 15 日退役,Sonnet 5 和 Opus 4.8 最早于 2027 年中期退役;Anthropic 会在模型退役前至少提前 60 天通知,因此如果您的工作流固定使用 Haiku 4.5,请监控其弃用页面。当前产品线包括 Claude Haiku 5.5(claude-haiku-5-5,于 2026 年 10 月 7 日发布),处理不超过 100,000 token 的提示时价格为 $0.10/$0.50,超过该数量时为 $0.50/$2.50;Claude Sonnet 5.5(claude-sonnet-5-5)为 $2/$10;Claude Opus 5.5(claude-opus-5-5)为 $4/$20;Claude Fable 5.1(claude-fable-5-1)为 $10/$50。Haiku 5.5 的 tokenizer 对相同文本的 token 计数约比 Haiku 4.5 多 30%,因此应在 Console 的 usage 页面比较每次实际运行成本,不要只比较标价。

应养成这样的习惯:按节点选择模型,而不是按平台选择。分类、提取、摘要和路由是自动化中最常见的任务,使用 Haiku 就能很好地完成,其标价只有 Sonnet 的一半、Opus 的五分之一。将 Sonnet 留给 agent 和多步推理,将 Opus 留给少数错误答案成本高于 token 成本的工作流。包含 5 个 Claude 节点的工作流可以而且应该混用不同模型。

两个 Claude 节点,以及各自的适用场景

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

Anthropic 节点是常规应用节点:输入一个请求,输出一个响应。它的 Text 资源包含 Message a Model 操作,还提供分析图像和文档的操作。只要工作流逻辑由 n8n 负责,就应使用此节点,例如“触发器 → Claude 调用 → 下一个节点”。下面的工作流 1 和工作流 2 使用此节点或其链式等效节点。

Anthropic Chat Model 节点是子节点。它作为一个小型附加组件,为 AI Agent 或 Basic LLM Chain 等根节点提供模型。它没有触发器,也不会独立输出结果;它只提供模型选择器,以及 Maximum Number of Tokens、Sampling Temperature 等采样选项。请记住 n8n 文档中的一个注意事项:子节点中的表达式始终根据第一个输入项解析,而不是根据每个输入项解析。对于每个输入项分别计算的表达式,应放在根节点的提示词字段中,而不要放在子节点中。Anthropic 还有一项需要注意的限制:对于 Claude 4.7 及更高版本的模型(本指南中的所有模型均属于此范围,Haiku 4.5 除外),如果将 temperature、top_p 或 top_k 设置为非默认值,将返回 400 错误。因此,在这些模型上不要设置 Sampling Temperature、Top K 和 Top P。

工作流 1:接收 webhook,输出摘要

这是 AI 自动化的入门示例:向 URL POST 的任何内容都会被生成摘要,并发送到 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 }}

将角色和格式要求放在节点的系统提示词字段中,而不是用户消息中。系统提示词保持不变,负载内容则会变化。这样可以保持行为稳定,也便于您在六个月后理解提示词。请直接在 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,约合四分之一美分。每月运行 1,000 次,成本低于 $3。将同一节点改为使用 Opus 4.8,成本约为上述金额的五倍。每个工作流都遵循这一比例,因此按节点选择模型的习惯很重要。

工作流 2:定时将 RSS 转换为结构化行

现在处理按时间运行并生成结构化输出的场景:每小时读取一次 RSS feed,对每个条目进行分类,然后将结果追加到表格中。

  1. Schedule Trigger,每小时运行一次。
  2. RSS Read,读取 feed URL。每篇文章输出一个条目。
  3. Basic LLM Chain,添加一个 Anthropic Chat Model 子节点,将其设置为 claude-haiku-4-5;再添加一个 Structured Output Parser 子节点,并在其中保存 JSON schema。
  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"]
}

链的提示词需要引用 feed 条目:

Classify this article for a VPS hosting audience.

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

这里的成本计算方式不同:成本按条目计算,而不是按运行次数计算。每小时 50 篇文章、每天 24 小时,相当于每月调用 Claude 36,000 次。使用 Haiku 时,根据文章长度,费用可能为 $40–90;使用 Opus 时,费用约为其 5 倍。在 LLM 节点之前去重(可以使用针对已处理链接的简单 IF,或 n8n 的 Remove Duplicates 节点),调用次数会大幅减少,因为大多数每小时轮询并没有发现新内容。最便宜的 token 是无需发起的调用。

工作流 3:使用工具的 AI Agent

前两种工作流属于流水线模式,由你决定执行步骤。AI Agent 节点则反其道而行之:你为 Claude 提供目标和工具,由它决定调用哪些工具、以何种顺序调用,直至任务完成。n8n 要求连接一个聊天模型子节点和至少一个工具子节点。

一个具体的构建方案是:一个运维助手,通过监控系统回答“哪些服务宕机了以及原因”。

  1. Chat Trigger(或 webhook):接收问题。
  2. AI Agent:配置一个 claude-sonnet-5 的 Anthropic Chat Model 子节点。Agent 负责规划并串联工具调用;Haiku 可以驱动简单的单工具 Agent,但当工具数量增加时,Sonnet 是合理的起步选择。
  3. HTTP Request 节点:作为工具连接,指向你的 Uptime Kuma 状态 API 或 Zabbix 端点。第二个 HTTP 工具可以对接任何其他带有 REST API 的服务。

两项设置决定了大部分工作效果。Agent 的 System Message 定义了工作职责:“你是一名运维助手。在回答前,请使用状态工具检查当前监控状态。仅报告已宕机的监控项及其持续时间。”此外,每个工具的 description(描述)并非给人看的文档,而是 Claude 判断何时调用该工具的依据。“返回所有监控服务的当前在线/离线状态(JSON 格式)”会被在恰当时机调用;而“状态 API”这种描述则会被忽略或误用。将 HTTP Request 节点作为工具连接时,请启用 Optimize Response 选项并选择关键的 JSON 字段,否则冗长的 API 响应会全部作为输入 Token 填充到模型上下文中,从而增加你的费用。

设置 Agent 的 Max Iterations(默认值为 10)为能正常工作的最小值,这决定了 Agent 是在 4 次工具调用后放弃,还是陷入十几次模型往返的循环。同时要理解计费模式:每次迭代都会重新发送完整的对话历史、系统消息、问题以及之前所有的工具结果,这些都计入输入 Token。一次 6 次迭代的 Agent 运行很容易累计达到 20,000 个输入 Token 和 2,000 个输出 Token:在 Sonnet 5 上,按 $2/$10 的价格计算,费用约为 $0.06,这相当于 20 次简单摘要任务的成本。如果你发现需要为一个 Agent 挂载大量工具,那么此时 在 VPS 上运行 MCP 服务器 将是更简洁的架构选择。

成本防护,因为没人监控

无人值守的工作流需要人坐在键盘前时会默认提供的控制措施。分为4层,先从成本最低的开始。

为每个 Claude 节点设置 Max Tokens。 这是硬性输出上限。摘要器需要300,分类器需要100。这样可以限制成本中较高的部分(本指南涉及的模型中,每百万输出 token 的价格为$5–$50,输入 token 为$1–$10;各模型的输出价格均为输入价格的5倍),同时也能防止失控:提示词错误导致 Claude 长篇输出时,成本上限为300个 token,而不是8,000个。

为每个节点选择合适的模型。 上文已经说明;在 Haiku 4.5 和 Opus 4.8 之间,这是5倍的价格杠杆;扩展到 Fable 5 时,价格差达到10倍;在当前产品线中,从 Haiku 5.5 到 Fable 5.1,对于不超过100,000个 token 的提示词,价格差可达到100倍。设置只需10秒。

限制循环。 为 agent 设置 Max Iterations。在工作流设置中配置工作流超时,使卡住的执行终止,而不是持续运行。还要谨慎设置每个节点的 Retry On Fail:它适合处理临时错误,但重试会增加成本;Max Tries 为3、Wait Between Tries 为5000 ms 时,持续性故障会导致每个项目最多计费3次,然后才放弃。不要在已经产生高额成本且成功的节点外层再套一层重试。

使用错误工作流作为最后防线。 创建一个以 Error Trigger 节点开头的工作流,将失败工作流的名称和错误发送到 Slack,然后在每个 AI 工作流的设置中将其指定为 Error Workflow。它可以捕获最糟糕的故障模式:按计划触发的工作流每小时运行一次,并且每次都报错,持续一周;每次运行在终止前都会消耗 token。将其与 Anthropic Console 中的月度支出上限结合使用,并在启用任何计划任务后的最初几天检查 Console 的使用量页面。如果需要准确了解计费项目,请参阅token 使用指南。

故障模式及其对应的错误信息

节点立即失败,并显示 “Authorization failed - please check your credentials.” API 返回了 401。响应正文的结构如下(当前响应还会包含 request_id 字段):

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

可能是密钥粘贴错误、密钥被截断、末尾包含空格,或误用了教程中的占位符。重新创建 n8n 凭据并再次粘贴。如果昨天还能使用,请在 Console 中检查密钥是否已被撤销或已过期,或者卷恢复是否回滚到了使用其他 N8N_ENCRYPTION_KEY 加密的凭据。

执行集中失败,并返回 429 rate_limit_error, 消息类似于 “Number of request tokens has exceeded your per-minute rate limit.” 速率限制按分钟分桶,而 n8n 很容易同时触发 50 个 webhook 或 RSS 执行。应从结构上解决:使用 Loop Over Items 依次处理项目,而不是并行处理;同时启用 Retry On Fail,将 Max Tries 设为 3,并将 Wait Between Tries 设为最大值 5000 ms。n8n 对该字段的上限是 5000 ms。如果需要更长的退避时间,使重试进入下一分钟的时间窗口,请在错误路径中添加 Wait 节点,或一次处理一个项目。响应会通过 retry-after 标头准确告知等待时间。n8n 的固定等待无法读取该值,因此需要自行构建更长的暂停。例外情况是:429 响应不包含 retry-after 标头,且 error_code 的值为 enforced_spend_limit_reached。这表示组织已达到其使用层级的月度支出上限。在下个月开始或提高使用层级之前,任何重试都不会成功。

404 not_found_error,并在错误信息中列出模型名称。 消息会包含你发送的模型 ID,类似于:

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

常见原因包括使用句点代替连字符(4.5 应为 4-5)、日期后缀拼写错误或自行编造,或者使用了过时博客文章中的已退役模型。请根据当前模型列表修正 ID。很多人直接将模型 ID 输入为表达式,而不是从下拉列表中选择,因此容易遇到此问题。

Claude 回答了你没有提出的问题。 任何位置都没有错误,运行状态也是绿色。n8n 表达式引用了不存在的字段时,例如负载使用的是 message,但表达式写成了 {{ $json.body.text }},n8n 会将字面字符串 undefined 插入提示词。随后 Claude 会正常回答一个内容为空的问题。如果被引用的节点根本没有执行,n8n 会停止并报告表达式引用的节点 “hasn't been executed yet”;但缺失的字段不会产生错误。激活工作流前,始终使用真实数据运行一次,并在节点的输入面板中查看实际渲染后的提示词。表达式编辑器会预览解析后的值,只要查看,就能看到 undefined。

FAQ

如何将 Claude 连接到 n8n?

在 Anthropic Console(platform.claude.com)中创建 API key,然后在 n8n 中添加 Anthropic 类型的凭据,并将其粘贴到 API Key 字段。每个 Claude 节点、Anthropic app 节点和 Anthropic Chat Model 子节点都会引用该凭据。n8n 使用 N8N_ENCRYPTION_KEY 对其加密,因此请备份该密钥;否则卷丢失时,凭据也会丢失。

每次运行 AI 工作流的成本是多少?

先估算每次运行所使用的 token 数量,再乘以模型按每百万 token 计费的价格。截至 October 2026,Haiku 4.5 的输入/输出 token 价格为每百万 $1/$5,Sonnet 5 为 $2/$10。在 Haiku 上运行一次 webhook 摘要大约需要四分之一美分;在 Sonnet 上运行一次包含多个工具调用的 agent 通常接近 $0.06–$0.10,因为每次迭代都会重新发送完整对话作为输入。请在 Console 的使用量页面中核实实际运行成本,不要只依赖估算值。

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

分类、提取、摘要和路由,以及速度和价格优先的高吞吐量任务,使用 Haiku 4.5。AI Agent 节点和多步骤推理使用 Sonnet 5。只有在错误答案的代价足以证明其 $5/$25 标准价格合理时,才使用 Opus 4.8;该价格是 Haiku 的五倍、Sonnet 的两点五倍。Anthropic 更新的 Haiku 5.5、Sonnet 5.5 和 Opus 5.5 适用相同的场景,标准价格相同或更低。按节点设置模型,而不是按工作流设置;一个工作流可以混用这三个模型。

如何防止 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 所需的字段。