Tìm hiểu về Node - Viên gạch nền tảng của mọi Workflow
Chào mừng bạn đến với bài lý thuyết quan trọng nhất trong hành trình học n8n!
Nếu workflow (quy trình) là một ngôi nhà, thì Node chính là những viên gạch xây nên ngôi nhà đó.
Là chuyên viên tự động hoá, việc hiểu rõ về Node cũng giống như người đầu bếp hiểu rõ từng loại nguyên liệu. Bạn sẽ biết cách kết hợp chúng để tạo ra những "món ăn" tự động hóa nhanh, ngon, rẻ, hiệu quả nhất.
Trong bài học này, chúng ta sẽ mổ xẻ khái niệm Node, cách chúng hoạt động và truyền dữ liệu với nhau. Nắm vững kiến thức này, bạn sẽ có đủ khả năng để xây dựng bất kỳ quy trình tự động hóa nào.
Node là gì?
Định nghĩa đơn giản
Hãy tưởng tượng một quy trình làm việc giống như một công thức nấu ăn. Mỗi bước trong công thức đó, ví dụ như "Lấy 100g bột mì" hay "Nướng ở 180 độ C", chính là một Node.
Trong n8n, Node là một đơn vị hành động độc lập, thực hiện MỘT nhiệm vụ cụ thể. Một workflow được tạo nên bằng cách kết nối nhiều Node lại với nhau theo một trình tự logic.

Ví dụ, đây là 1 workflow tự động hóa từ đăng bài Wordpress lên Threads. Trông dài dòng nhưng thật ra nó chỉ gồm nhiều Node nối với nhau, mỗi Node thực hiện 1 nhiệm vụ cụ thể.
Phần lớn các Node trong n8n hoạt động như là:
- Công cụ chuyên dụng: Chỉ làm một việc và làm thật tốt (ví dụ: Gửi tin nhắn Telegram, đọc dữ liệu từ Google Sheets).
- Trạm xử lý dữ liệu: Nhận dữ liệu đầu vào (INPUT), xử lý (tính toán/phần loại), và trả ra dữ liệu đầu ra (OUTPUT).
- Một mắt xích: Nối các bước trong quy trình của bạn lại với nhau.
Cấu trúc của một Node
Mọi Node trong n8n đều tuân theo một cấu trúc 3 phần kinh điển:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ INPUT (Đầu vào) │ ──→│ PROCESSING │ ──→│ OUTPUT (Đầu ra) │
│ │ │ (Xử lý) │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
↑ ↑ ↓
Dữ liệu từ Node Cài đặt/logic Kết quả gửi cho
phía trước của Node Node tiếp theo
Ví dụ, đây là node HTTP Request, nó nhận dữ liệu đầu vào là URL (link/đường dẫn tới 1 trang web hoặc API) trả về dữ liệu đầu ra là nội dung trang web/kết quả nhận được từ API đó.
💡 Triết lý cốt lõi: Một Node, một nhiệm vụ! Việc chia nhỏ quy trình thành các Node đơn nhiệm giúp workflow của bạn dễ hiểu, dễ gỡ lỗi và dễ bảo trì.
Phân loại Node theo vai trò
Trong một workflow, mỗi Node đóng một vai trò khác nhau. Có 3 vai trò chính:
1. Trigger Node (Node kích hoạt)
┌─────────────┐
│ TRIGGER │
│ NODE │ ──→ Bắt đầu workflow
└─────────────┘
- Nhiệm vụ: Là điểm khởi đầu, "nút bấm" kích hoạt toàn bộ workflow.
- Đặc điểm: Chỉ có ĐẦU RA (OUTPUT), không có ĐẦU VÀO (INPUT).
- Ví dụ:
When clicking Execute Workflow(Khi bấm nút "Execute Workflow"),On a schedule(Chạy theo lịch),On webhook call(Khi có yêu cầu web),On form submission(Khi có người điền form)...

2. Regular Node (Node xử lý thông thường)
┌─────────────┐
│ FUNCTION │
Input ──→ │ NODE │──→ Output
└─────────────┘
- Nhiệm vụ: Thực hiện các tác vụ chính của workflow như đọc, ghi, biến đổi dữ liệu.
- Đặc điểm: Có cả ĐẦU VÀO (INPUT) và ĐẦU RA (OUTPUT). Đây là loại Node phổ biến nhất.
- Ví dụ:
Google Sheets(Đọc/ghi Google Sheets),IF(Kiểm tra điều kiện),Edit Image(Chỉnh sửa ảnh).

3. Action Node (Node hành động cuối)
┌─────────────┐
│ ACTION │
Input ──→│ NODE │
└─────────────┘
- Nhiệm vụ: Thường là các Node thực hiện hành động cuối cùng và không cần trả về dữ liệu cho bước tiếp theo.
- Đặc điểm: Có ĐẦU VÀO (INPUT), nhưng ĐẦU RA (OUTPUT) có thể không quan trọng hoặc không có. Thường dùng để kết thúc Workflow, gửi thông báo, ghi log, update kết quả cuối cùng.
- Ví dụ:
Send email(Gửi email),Post to Slack(Gửi tin nhắn lên Slack),Respond to Webhook(Phản hồi lại yêu cầu web).

Các Node thông thường (Regular Node) cũng có thể dùng để hành động cuối cùng, nếu ta không quan tâm đến kết quả trả về.
n8n cung cấp hàng trăm loại Node, được phân loại theo nhiều cách khác nhau để bạn dễ dàng tìm kiếm và sử dụng. Ở bài sau, ta sẽ học kĩ hơn về cách n8n phân loại Node theo chức năng nhé!
Làm việc với Node trên Canvas
Canvas là không gian làm việc chính của bạn để làm việc với node.
Ở bài trước, mình đã hướng dẫn các bạn cách theo tác với Node trên Canvas rồi. Ở bài này, bọn mình chỉ nhắc lại và bổ sung thêm 1 số ý thôi!
Thêm Node vào Workflow

- Node đầu tiên (Trigger): Khi bạn tạo workflow mới, bạn bắt buộc phải bấm
Add first step. Nhớ bấm vào và chọn Trigger Node kích hoạt phù hợp. (Thường ta chọnTrigger Manuallycho dễ test) - Các Node tiếp theo: Di chuột lên một Node đã có và nhấn vào nút
+. Một bảng chọn Node sẽ hiện ra.
Cấu hình Node
Nháy đúp chuột vào một Node để mở bảng cấu hình của nó. Bảng này thường có 2 tab chính:
1. Parameters (Tham số)
Đây là nơi bạn "chỉ thị" cho Node phải làm gì.
- Resource: Loại tài nguyên bạn muốn tương tác (ví dụ: Trong Node
Google Sheets, tài nguyên có thể làSheethoặcDrive). - Operation: Hành động cụ thể bạn muốn thực hiện (ví dụ:
Get Many,Append,Update). - Fields: Các trường thông tin cần điền để thực thi hành động đó.

2. Settings (Cài đặt)
Tab này chứa các tùy chọn nâng cao để điều khiển hành vi của Node.
- Execute Once: Chỉ chạy Node một lần với item đầu tiên, thay vì chạy với mọi item.
- Retry on Fail: Tự động thử lại nếu Node gặp lỗi. Đầy là tuỳ chọn khá hay nếu bạn làm việc với các Node có thể gặp lỗi, ví dụ như HTTP Request, ...
- Notes: Ghi chú lại chức năng của Node này. Rất quan trọng để workflow dễ hiểu! Nếu bạn chọn
Display Note in Flow, bạn sẽ thấy ghi chú này ở góc dưới của Node.

Bạn cũng có thể nhấp đôi vào tên node để đặt lại tên cho Node để dễ nhận biết (ví dụ: "Lấy danh sách khách hàng" thay vì "Google Sheets").
Các thao tác nhanh
Khi nhấp chuột phải vào một node, bạn sẽ thấy menu actions với các tùy chọn:

- ▶️ Execute: Chạy riêng Node này
- ⚙️ Open: Mở panel cấu hình
- ✏️ Rename: Đổi tên Node
- ⏸️ Deactivate: Tắt Node tạm thời
- 📌 Pin: Giữ dữ liệu hiển thị liên tục
- 📋 Copy/Delete: Sao chép/Xóa Node
Quy tắc thực thi: Trái Phải Trên Dưới + Một Node, Một Lần cho Mỗi Item
Đây là một khái niệm quan trọng bạn cần nắm, để hiểu rõ luồng chạy của một Workflow.
- Các node sẽ chạy từ trái sang phải, từ trên xuống dưới một cách tuần tự.
- Mỗi Node sẽ chạy một lần cho mỗi item nó nhận được ở đầu vào (Nhận 1 item chạy 1 lần, nhận 100 items chạy 100 lần, ...)
Ví dụ
Trigger (1 item) → Google Sheets (đọc ra 100 items) → Send Email (chạy 100 lần)
- Trigger: Chạy 1 lần, tạo ra 1 item rỗng.
- Google Sheets Node: Nhận 1 item, chạy 1 lần. Node đọc file và tạo ra 100 items (mỗi item là một dòng).
- Send Email Node: Nhận 100 items, nó sẽ chạy đúng 100 lần. Mỗi lần Node này sẽ gửi 1 email tương ứng với dữ liệu của 1 item.
Ví dụ trong bài trước, node Trigger lấy dữ liệu cho 5 khách hàng (item), ta thấy node Customer Messenger chạy 5 lần, mỗi lần gửi email cho 1 khách hàng.
Dữ liệu trong n8n: INPUT (Đầu vào) và OUTPUT (Đầu ra)
Nguyên tắc vàng: Mọi thứ đều là JSON
Dữ liệu di chuyển giữa các Node trong n8n có định dạng là JSON (JavaScript Object Notation).
Giả sử ta có 1 bảng dữ liệu như sau (từ file Excel, Google Sheets, ...).
| name | age | |
|---|---|---|
| Nguyen Van A | [email protected] | 30 |
| Tran Thi B | [email protected] | 25 |
Khi biểu diễn dưới dạng JSON, nó sẽ trong như thế này. Mỗi hàng sẽ là một phần tử, còn cột là tên và giá trị của các phần tử đó.
[
{
"name": "Nguyen Van A",
"email": "[email protected]",
"age": 30
},
{
"name": "Tran Thi B",
"email": "[email protected]",
"age": 25
}
]
Dữ liệu đã được chuyển thành một danh sách (array) gồm nhiều phần tử (item).
Mỗi phần tử là một đối tượng (object) chứa các cặp key: value.
Đừng lo lắng nếu bạn chưa quen với JSON. n8n cung cấp các giao diện rất trực quan để bạn làm việc với nó.
Ba chế độ xem dữ liệu
Khi bạn chạy xong một Node, kết quả trả về có thể được xem dưới 3 dạng:
- Schema View (Dạng lược đồ): Tóm tắt cấu trúc dữ liệu, cho bạn biết tất cả các trường (key) có sẵn.

- Table View (Dạng bảng): Trực quan, dễ đọc như một file Excel. Phù hợp để xem tổng quan dữ liệu.

- JSON View (Dạng JSON): Hiển thị dữ liệu gốc, chính xác tuyệt đối. Cần thiết khi bạn cần tham chiếu dữ liệu.

Với những dữ liệu phức tạp, cần lồng ghép nhiều, ta nên xem dữ liệu dạng JSON để dễ quan sát và xử lý.
Expressions: "Ngôn ngữ giao tiếp" giữa các Node
Ở bài trước, ta thấy khi một Node chạy xong, output của nó sẽ có rất nhiều dữ liệu. Khi truyền dữ liệu cho Node sao, có thể không cần toàn bộ dữ liệu, mà chỉ cần một phần cụ thể.
Ví dụ, khi ta đọc email từ Google Sheets để gửi mail, làm thế nào để Node Send Email biết phải lấy email từ đầu trong kết quả của Google Sheets?
Câu trả lời là Expressions!
Expressions là một đoạn code nhỏ, cho phép bạn tham chiếu, xử lý dữ liệu từ các Node trước đó. Cú pháp cơ bản là
{}. Bên trong cặp ngoặc nhọn, bạn có thể truy cập dữ liệu.

Ví dụ:
Giả sử bạn có dữ liệu từ Google Sheets:
{
"Title": "How to Do Great Work",
"summary": "Bài viết này cung cấp một hướng dẫn toàn diện..."
}
Để tạo message cho Telegram Node, bạn có thể viết:
🎉 *Bài viết mới!*
Title: {{ $json.title }}
{{ $json.summary }}
n8n sẽ tự động thay thế expression bằng giá trị tương ứng từ dữ liệu đầu vào.

Kết quả:
🎉 Bài viết mới!
Title: How to Do Great Work
Bài viết này cung cấp một hướng dẫn toàn diện để tạo ra những công việc...
Ở những bài sau, chúng ta sẽ có một bài học chuyên sâu hơn về Expressions, vì nó khá quan trọng và dùng rất nhiều trong n8n.
Tạm kết
Qua bài học này, bạn đã nắm được những khái niệm nền tảng và quan trọng nhất về Node, cách workflow chạy, cũng như cách dữ liệu di chuyển giữa các Node trong n8n rồi!
Trong bài học tiếp theo, chúng ta sẽ cùng nhau tìm hiểu tổng quát về các loại Node cơ bản thông dụng nhất mà ta hay sử dụng.