SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-08-28

Hướng dẫn cài đặt Claude AI trên n8n chạy tại VPS

Tích hợp Claude API vào n8n trên VPS của bạn. Hướng dẫn chi tiết cách cấu hình credential, chọn model, tối ưu prompt và quản lý chi phí để tránh lỗi lặp vô hạn khi chạy tự động.

Bạn sẽ xây dựng những gì

Ba workflow AI hoạt động trên instance n8n mà bạn đang chạy: một webhook tóm tắt bất cứ nội dung nào bạn gửi vào, một trình đọc feed theo lịch trình chuyển đổi bài viết thành các hàng dữ liệu có cấu trúc trong bảng tính, và một AI Agent tự gọi HTTP API để trả lời câu hỏi. Đây là phiên bản no-code tương đương với gọi Claude API từ Python trên VPS của bạn, cùng API, cùng token, cùng chi phí, nhưng việc điều phối nằm trong các node của n8n thay vì một script.

Tôi giả định n8n đã được chạy sau HTTPS theo hướng dẫn tự host n8n trên Docker. Nếu chưa, hãy thực hiện bước đó trước, vì các webhook cần một TLS endpoint thực tế, và kho lưu trữ credential nơi bạn sắp nhập API key cần bản sao lưu encryption-key mà hướng dẫn đó đã nhắc nhở bạn.

Những vấn đề thú vị ở đây không nằm ở thao tác kéo thả. Chúng nằm ở việc chọn model cho từng node, các trường prompt tự động chèn undefined, và thực tế là một automation chạy không cần giám sát; một workflow tốn nửa xu mỗi lần chạy thì rất rẻ, cho đến khi một vòng lặp retry chạy nó bốn nghìn lần trong đêm. Hầu hết hướng dẫn này tập trung vào những vấn đề đó.

Một credential, được mã hóa bằng key bạn đã sao lưu

Lấy API key từ Anthropic Console tại platform.claude.com, vào mục Settings, sau đó chọn API Keys, rồi tạo một key với tên ví dụ như n8n-vps. Key này chỉ hiển thị một lần duy nhất. Nạp tiền vào tài khoản hoặc thiết lập thanh toán; việc sử dụng API tính phí theo token và hoàn toàn tách biệt với bất kỳ gói đăng ký Claude.ai nào. Nếu bạn hy vọng xây dựng ba quy trình làm việc này mà không tốn phí, không có gói miễn phí, chỉ có một khoản tín dụng nhỏ khi đăng ký và một vài endpoint không tính phí.

Trong n8n: chọn Credentials, Create credential, chọn Anthropic, dán key vào trường API Key, rồi lưu lại. Mọi node Claude trong mọi workflow đều tham chiếu đến credential đã lưu này, bạn không bao giờ phải dán key trực tiếp vào từng node.

Hai lưu ý vận hành.

Đầu tiên, n8n mã hóa credential được lưu bằng N8N_ENCRYPTION_KEY. Nếu bạn đặt rõ biến môi trường đó trong file compose theo hướng dẫn của n8n, credential sẽ vẫn dùng được sau khi rebuild container. Nếu để n8n tự tạo rồi làm mất volume, mọi credential đã lưu, bao gồm cả key này, sẽ trở thành ciphertext không thể khôi phục. Nếu trước đây bạn chưa backup key, hãy backup ngay bây giờ.

Thứ hai, hãy coi credential store của n8n là phạm vi ảnh hưởng. Bất kỳ ai có quyền chỉnh sửa workflow trên instance của bạn đều có thể gửi request bằng Anthropic key của bạn. Bản Community không có quyền riêng theo từng user đối với credential. Vì vậy, nếu người khác cũng đăng nhập vào instance này, hãy đọc các quyền kiểm soát nào có trong licence n8n trả phí trước khi cấp account. Đặt spend limit trong Console, tại Settings, để instance bị breach hoặc chạy ngoài kiểm soát vẫn có mức trần chi phí.

Lựa chọn model là quyết định trên từng node

Danh sách model trong các node Claude của n8n được lấy trực tiếp từ API, vì vậy nó hiển thị những gì key của bạn có quyền truy cập. Tính đến tháng 7 năm 2026, danh mục và giá API trên mỗi triệu input/output token là: Claude Haiku 4.5 (claude-haiku-4-5) ở mức $1/$5 với context window 200K, Claude Sonnet 5 (claude-sonnet-5) ở mức $3/$15, giá ưu đãi $2/$10 đến hết ngày 31 tháng 8 năm 2026, và Claude Opus 4.8 (claude-opus-4-8) ở mức $5/$25, cả hai đều có context window 1M token. Ngoài ra còn có Claude Fable 5 (claude-fable-5) ở mức $10/$50 cho các tác vụ suy luận phức tạp nhất; không có nội dung nào trong hướng dẫn này cần đến nó. Hãy sử dụng chính xác các ID đó, các biến thể có hậu tố ngày tháng mà bạn nhớ từ hướng dẫn cũ sẽ trả về lỗi 404, và giá cả luôn thay đổi, vì vậy hãy kiểm tra platform.claude.com trước khi tin tưởng bất kỳ con số nào bạn đọc được ở bất cứ đâu, kể cả ở đây.

Thói quen cần xây dựng: chọn model cho từng node, không phải cho toàn bộ nền tảng. Phân loại, trích xuất, tóm tắt, định tuyến, những tác vụ cơ bản của tự động hóa, chạy rất tốt trên Haiku với chi phí bằng một phần ba giá niêm yết của Sonnet và một phần năm của Opus. Hãy dành riêng Sonnet cho các agent và suy luận nhiều bước, Opus cho các workflow hiếm hoi mà một câu trả lời sai gây tốn kém hơn chi phí token. Một workflow với năm node Claude hoàn toàn có thể và nên kết hợp nhiều model khác nhau.

Hai node Claude và cách chọn sử dụng

n8n phát hành hai tích hợp Anthropic riêng biệt, và việc chọn nhầm là lỗi phổ biến nhất của người mới bắt đầu.

Node Anthropic là một node ứng dụng thông thường: một yêu cầu gửi đi, một phản hồi nhận về. Tài nguyên Text của nó có thao tác Message a Model, cùng với các thao tác để phân tích hình ảnh và tài liệu. Hãy sử dụng node này bất cứ khi nào logic của workflow nằm trong n8n, theo trình tự: trigger, gọi Claude, node tiếp theo. Workflow 1 và 2 bên dưới sử dụng node này hoặc node tương đương trong chuỗi.

Node Anthropic Chat Model là một sub-node, một thành phần nhỏ đính kèm cung cấp model cho một node gốc như AI Agent hoặc Basic LLM Chain. Nó không có trigger và không có đầu ra riêng; nó hiển thị trình chọn model cùng các tùy chọn lấy mẫu như Maximum Number of Tokens và Sampling Temperature. Một lưu ý từ tài liệu n8n cần ghi nhớ: các biểu thức bên trong sub-node luôn phân giải dựa trên item đầu vào đầu tiên, không phải từng item một. Hãy đặt các biểu thức theo từng item vào các trường prompt của node gốc, thay vì đặt trong sub-node.

Workflow 1: webhook vào, tóm tắt ra

Ví dụ "hello-world" của tự động hóa AI: bất kỳ dữ liệu nào được POST tới một URL sẽ được tóm tắt và gửi vào Slack hoặc hộp thư đến của bạn.

  1. Webhook node, HTTP Method POST, đường dẫn summarize. n8n cung cấp cho bạn một URL để test và một URL production; URL production chỉ lắng nghe khi workflow đã được kích hoạt.
  2. Anthropic node, Message a Model, model claude-haiku-4-5, Max Tokens khoảng 300.
  3. Slack node (hoặc Send Email), đăng văn bản phản hồi lên một channel.

Prompt là nơi các biểu thức n8n kết hợp với Claude. Nội dung POST body nằm dưới $json.body, vì vậy trường tin nhắn người dùng (user message) sẽ trông như sau:

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

{{ $json.body.text }}

Hãy đặt các hướng dẫn về vai trò và định dạng vào trường system prompt của node, không phải trong tin nhắn người dùng. System prompt giữ nguyên trong khi payload thay đổi, điều này giúp hành vi ổn định và giúp prompt dễ đọc hơn sau sáu tháng. Hãy test nó ngay từ 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..."}'

Chi phí mỗi lần chạy trên Haiku: một payload 1.200 token cộng với prompt tốn khoảng $0.0012 đầu vào, 300 token đầu ra tốn $0.0015, tổng cộng khoảng một phần tư cent. Một nghìn lần chạy mỗi tháng tốn dưới $3. Cùng node đó nếu trỏ vào Opus 4.8 thì chi phí gấp khoảng năm lần. Tỷ lệ đó, nhân với mọi workflow bạn xây dựng, chính là lý do tại sao thói quen chọn model cho từng node lại quan trọng.

Workflow 2: Lịch trình RSS sang các hàng có cấu trúc

Bây giờ là một tác vụ chạy theo lịch trình, với đầu ra có cấu trúc: đọc RSS feed mỗi giờ, phân loại từng mục, và thêm các hàng vào bảng tính.

  1. Schedule Trigger, mỗi giờ một lần.
  2. RSS Read, URL của feed. Xuất ra mỗi mục cho một bài viết.
  3. Basic LLM Chain, với sub-node Anthropic Chat Model được thiết lập thành claude-haiku-4-5, và sub-node Structured Output Parser chứa một JSON schema.
  4. Google Sheets (hoặc Postgres), thêm một hàng cho mỗi mục.

Structured Output Parser biến yêu cầu "Claude, làm ơn trả về JSON" từ một hy vọng thành một cam kết: nó xác thực phản hồi của model dựa trên schema của bạn và sẽ báo lỗi nếu mục đó không hợp lệ thay vì ghi dữ liệu rác vào bảng. Một schema như sau:

{
  "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"]
}

Và prompt của chain tham chiếu đến mục tin từ feed:

Classify this article for a VPS hosting audience.

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

Cách tính chi phí thay đổi ở đây: tính theo từng mục, không phải theo mỗi lần chạy. Năm mươi bài viết mỗi giờ, hai mươi bốn giờ một ngày, là 36.000 lần gọi Claude mỗi tháng, với Haiku có thể tốn khoảng $40–90 tùy vào độ dài bài viết, với Opus thì gấp khoảng năm lần. Hãy loại bỏ trùng lặp trước node LLM (sử dụng một câu lệnh IF đơn giản so sánh với các liên kết đã thấy trước đó, hoặc dùng node Remove Duplicates của n8n) và con số này sẽ giảm mạnh, vì hầu hết các lần kiểm tra hàng giờ đều không có nội dung mới. Token rẻ nhất là lần gọi mà bạn không bao giờ thực hiện.

Workflow 3: AI Agent sử dụng công cụ

Hai workflow đầu tiên là các pipeline, bạn là người quyết định các bước. Một node AI Agent đảo ngược quy trình đó: bạn cung cấp cho Claude một mục tiêu và các công cụ, sẽ tự quyết định gọi công cụ nào, theo thứ tự nào, cho đến khi hoàn thành. n8n yêu cầu một sub-node chat model và ít nhất một sub-node công cụ được gắn kèm.

Một ví dụ cụ thể, một trợ lý vận hành trả lời câu hỏi "cái gì đang down và tại sao" từ hệ thống giám sát của bạn:

  1. Chat Trigger (hoặc webhook), nơi câu hỏi được gửi đến.
  2. AI Agent, với sub-node Anthropic Chat Model được thiết lập tại claude-sonnet-5. Các Agent lập kế hoạch và chuỗi gọi công cụ; Haiku có thể điều khiển các agent dùng một công cụ đơn giản, nhưng Sonnet là lựa chọn tối thiểu hợp lý khi số lượng công cụ tăng lên.
  3. Node HTTP Request được gắn như một công cụ, trỏ đến API trạng thái Uptime Kuma hoặc endpoint Zabbix của bạn. Một công cụ HTTP thứ hai có thể truy vấn bất kỳ thứ gì có REST API.

Hai thiết lập thực hiện phần lớn công việc. System Message của agent xác định nhiệm vụ: "Bạn là trợ lý vận hành. Sử dụng công cụ trạng thái để kiểm tra tình trạng giám sát hiện tại trước khi trả lời. Chỉ báo cáo các monitor đang down, kèm theo thời gian." Và mô tả của mỗi công cụ không phải là tài liệu cho con người, đó là cách Claude quyết định khi nào cần gọi nó. "Trả về trạng thái up/down hiện tại cho tất cả các dịch vụ được giám sát dưới dạng JSON" sẽ được gọi đúng lúc; "API trạng thái" sẽ bị bỏ qua hoặc dùng sai. Khi bạn gắn node HTTP Request như một công cụ, hãy bật tùy chọn Optimize Response và chọn các trường JSON quan trọng, nếu không, mọi phản hồi API dài dòng sẽ bị đẩy vào context của model dưới dạng input token mà bạn phải trả phí.

Thiết lập Max Iterations trên agent (mặc định là 10) về con số nhỏ nhất có thể hoạt động, đây là sự khác biệt giữa việc "agent bỏ cuộc sau 4 lần gọi công cụ" và một vòng lặp hàng chục lần trao đổi với model. Và hãy hiểu về cách tính phí: mỗi lần lặp lại sẽ gửi lại toàn bộ cuộc hội thoại từ trước đến nay, system message, câu hỏi, mọi kết quả công cụ trước đó, dưới dạng input token. Một lần chạy agent với 6 lần lặp có thể dễ dàng đạt tổng cộng 20.000 input token tích lũy và 2.000 output: với mức giá giới thiệu của Sonnet 3.5 là khoảng $0.06, hoặc khoảng $0.09 ở mức giá tiêu chuẩn $3/$15, tương đương với hai mươi lần chạy tóm tắt đơn giản. Nếu bạn thấy mình đang gắn quá nhiều công cụ vào một agent, đó là lúc chạy các MCP server trên VPS của bạn trở thành kiến trúc gọn gàng hơn.

Các chốt chặn chi phí, vì không ai giám sát cả

Một workflow chạy tự động cần các cơ chế kiểm soát mà con người khi ngồi trước bàn phím thường thực hiện theo bản năng. Dưới đây là bốn lớp bảo vệ, sắp xếp theo thứ tự từ rẻ nhất.

Max Tokens trên mọi node Claude. Đây là giới hạn cứng cho đầu ra. Một bộ tóm tắt chỉ cần 300 token, một bộ phân loại cần 100. Việc này kiểm soát phía chi phí đắt đỏ (5 USD–25 USD cho mỗi triệu token đầu ra so với 1 USD–5 USD cho đầu vào) và đóng vai trò như phanh khẩn cấp; một lỗi prompt khiến Claude trả về văn bản dài dòng chỉ tốn 300 token thay vì 8.000.

Model cho từng node. Đã đề cập ở trên; đây là đòn bẩy giá gấp năm đến mười lần trên các dòng model hiện tại và chỉ mất mười giây để thiết lập.

Giới hạn các vòng lặp. Thiết lập Max Iterations trên các agent. Đặt workflow timeout trong cài đặt của workflow để một tiến trình bị treo sẽ tự hủy thay vì chạy mãi. Hãy cẩn thận với Retry On Fail trên từng node: đây là công cụ đúng cho các lỗi tạm thời, nhưng việc thử lại sẽ nhân chi phí lên. Max Tries là 3 với Wait Between Tries là 5000 ms nghĩa là một lỗi dai dẳng sẽ tính phí bạn tới ba lần cho mỗi item trước khi bỏ cuộc. Đừng bao giờ đặt retry cho một node đã thực thi thành công nhưng tốn kém.

Workflow lỗi làm chốt chặn cuối cùng. Tạo một workflow bắt đầu bằng node Error Trigger để gửi tên workflow bị lỗi và thông báo lỗi lên Slack, sau đó đặt nó làm Error Workflow trong cài đặt của mỗi AI workflow. Chế độ lỗi này giúp bắt được trường hợp xấu nhất: một workflow chạy theo lịch bị lỗi mỗi lần, mỗi giờ, trong suốt một tuần, mỗi lần chạy đều đốt token trước khi dừng lại. Hãy kết hợp với giới hạn chi tiêu hàng tháng trong Anthropic Console và kiểm tra trang usage của Console trong vài ngày đầu sau khi kích hoạt bất kỳ tác vụ theo lịch nào. Nếu bạn muốn hiểu chính xác mình đang bị tính phí cho những gì, hướng dẫn sử dụng token sẽ phân tích chi tiết điều đó.

Các chế độ lỗi và thông báo bạn sẽ gặp

Node bị lỗi ngay lập tức với thông báo "Authorization failed - please check your credentials." API trả về mã 401. Nội dung phản hồi là:

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

Khóa bị dán sai, bị cắt bớt, thừa khoảng trắng hoặc vẫn còn placeholder từ hướng dẫn. Hãy tạo lại credential trong n8n và dán lại; nếu hôm qua vẫn hoạt động, hãy kiểm tra xem khóa đã bị thu hồi trong Console chưa hoặc liệu việc khôi phục volume có làm dữ liệu quay về trạng thái sử dụng một N8N_ENCRYPTION_KEY khác hay không.

Các tiến trình thực thi bị lỗi hàng loạt với mã 429 rate_limit_error, kèm thông báo dạng "Number of request tokens has exceeded your per-minute rate limit." Giới hạn rate limit được tính theo từng phút, và n8n rất dễ kích hoạt năm mươi webhook hoặc RSS cùng lúc. Hãy xử lý triệt để: xử lý các item theo trình tự (Loop Over Items) thay vì song song, và thiết lập Retry On Fail với Max Tries là 3, Wait Between Tries ở mức tối đa 5000 ms (n8n giới hạn trường này ở 5000 ms). Khi cần thời gian chờ lâu hơn để các lần thử lại rơi vào khung phút tiếp theo, hãy đặt một node Wait vào đường dẫn lỗi hoặc xử lý từng item một. Phản hồi có chứa header retry-after cho biết chính xác thời gian cần chờ, nhưng tính năng chờ cố định của n8n không đọc được giá trị này, vì vậy bạn hãy tự xây dựng khoảng dừng dài hơn.

Lỗi 404 not_found_error khi gọi tên model. Nội dung phản hồi hiển thị lỗi đánh máy:

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

Dùng dấu chấm thay vì dấu gạch ngang (4.5 thay vì 4-5), hậu tố ngày tháng từ một bài viết cũ hoặc model đã bị loại bỏ. Hãy sửa lại ID cho khớp với danh sách hiện tại; lỗi này thường gặp khi người dùng nhập trực tiếp vào trường model dưới dạng expression thay vì chọn từ menu thả xuống.

Claude trả lời một câu hỏi bạn không hề đặt ra. Không có lỗi nào xảy ra, tiến trình báo thành công (màu xanh). Một expression trong n8n tham chiếu đến một trường bị thiếu, ví dụ {{ $json.body.text }} trong khi payload sử dụng message, sẽ chèn chuỗi ký tự undefined vào prompt của bạn, và Claude sẽ phản hồi một cách nghiêm túc về một prompt không có nội dung. Nếu node được tham chiếu không thực thi, bạn sẽ nhận lỗi "Referenced node is unavailable", nhưng nếu trường bị thiếu thì hệ thống sẽ im lặng. Trước khi kích hoạt, hãy luôn chạy thử một lần với dữ liệu thực và đọc prompt đã render trong bảng input của node; trình chỉnh sửa expression sẽ hiển thị giá trị đã giải quyết, và undefined sẽ hiện ngay ở đó nếu bạn chú ý quan sát.

FAQ

Làm thế nào để kết nối Claude với n8n?

Tạo một API key trong Anthropic Console tại platform.claude.com, sau đó trong n8n, thêm một credential loại Anthropic và dán key đó vào trường API Key. Mọi node Claude, node ứng dụng Anthropic và sub-node Anthropic Chat Model đều tham chiếu đến credential đã lưu này. n8n mã hóa nó bằng N8N_ENCRYPTION_KEY, vì vậy hãy sao lưu key đó nếu không các credential của bạn sẽ bị mất cùng với volume.

Một workflow AI tốn bao nhiêu chi phí cho mỗi lần chạy?

Hãy ước tính số lượng token cho mỗi lần chạy, sau đó nhân với giá mỗi triệu token của model. Tính đến tháng 7 năm 2026, Haiku 4.5 có giá $1/$5 cho mỗi triệu token đầu vào/đầu ra và Sonnet 5 có giá $3/$15 ($2/$10 giá ưu đãi đến hết tháng 8 năm 2026). Một tác vụ tóm tắt qua webhook trên Haiku tốn khoảng một phần tư cent; một lần chạy agent trên Sonnet với nhiều lần gọi tool có thể tốn gần $0.06–$0.10 vì mỗi lần lặp lại đều gửi toàn bộ đoạn hội thoại dưới dạng đầu vào. Hãy kiểm tra lượt chạy trong trang usage của Console thay vì tin vào các ước tính.

Tôi nên dùng model Claude nào cho các automation trong n8n?

Haiku 4.5 cho các tác vụ phân loại, trích xuất, tóm tắt và định tuyến, hoặc các công việc khối lượng lớn nơi tốc độ và giá cả là ưu tiên hàng đầu. Sonnet 5 cho các node AI Agent và suy luận nhiều bước. Opus 4.8 chỉ dùng khi một câu trả lời sai gây thiệt hại đủ lớn để biện minh cho mức giá niêm yết $5/$25, gấp năm lần Haiku và gần gấp đôi Sonnet. Hãy thiết lập model cho từng node, không phải cho từng workflow; một workflow có thể kết hợp cả ba model.

Làm thế nào để ngăn workflow n8n tiêu tốn quá nhiều chi phí cho Claude API?

Thiết lập các lớp bảo vệ: giới hạn Max Tokens thấp trên mọi node Claude, giới hạn Max Iterations trên các agent, thiết lập timeout cho workflow và cấu hình Retry On Fail thận trọng để các lỗi không làm tăng chi phí token. Sau đó, thêm một workflow Error Trigger để cảnh báo bạn qua Slack khi bất kỳ workflow AI nào thất bại, và đặt hạn mức chi tiêu hàng tháng trong Anthropic Console làm giới hạn cứng mà không tiến trình nào trên VPS có thể vượt qua.

Việc gọi tool của AI Agent có tốn thêm phí không?

Không có phí riêng cho việc gọi tool, nhưng các tool không miễn phí: mọi kết quả từ tool đều được đưa ngược lại model dưới dạng token đầu vào, và mỗi lần lặp lại của agent đều gửi lại toàn bộ đoạn hội thoại trước đó. Một phản hồi API dài dòng nếu không được lọc có thể làm chi phí vượt xa prompt thực tế của bạn; hãy bật Optimize Response trên các tool HTTP Request và chỉ trả về những trường mà agent cần.