Workflow này giải quyết vấn đề gì?
Nếu như mà bạn nhận hàng chục, thậm chí hàng trăm email mỗi ngày, việc tự phân loại thủ công (email công việc, quảng cáo, mạng xã hội, thông báo dịch vụ...) rất tốn thời gian và dễ bỏ sót các email quan trọng.
Cách làm truyền thống trong Gmail là đặt bộ lọc (filter) theo từ khóa hoặc người gửi cố định, nhưng cách này khá cứng nhắc: một quy tắc lọc theo từ khóa "khuyến mãi" sẽ bỏ sót một email quảng cáo không chứa đúng từ đó.
Workflow trong bài viết này của Quantrimang.com dùng một AI Agent để thay bạn "đọc hiểu" từng email như con người thật sự đọc, rồi tự quyết định nhãn phù hợp nhất dựa trên ngữ cảnh, không chỉ dựa vào từ khóa cứng nhắc.

Nhìn vào ví dụ thực tế trong ảnh minh họa, email từ ChatGPT được tự động gắn nhãn AI/ChatGPT, còn một email test workflow được gắn nhãn AI/Workflow - đúng như cấu trúc nhãn con (sublabel) mà hệ thống AI tự tạo ra dựa trên ngữ cảnh nội dung.
Workflow này biến Gmail của bạn thành một hộp thư tự sắp xếp: mỗi khi có email mới đến, n8n sẽ kích hoạt một AI Agent chạy trên nền tảng Gemini, đọc nội dung email, so sánh với các nhãn (label) đang có, rồi tự quyết định gắn nhãn sẵn có hoặc tạo nhãn mới nếu cần. Toàn bộ quá trình diễn ra tự động, không cần bạn tự tay kéo email vào từng thư mục nữa.
Workflow này gồm những thành phần nào?

Nhìn tổng thể sơ đồ workflow, có bốn nhóm thành phần chính phối hợp với nhau:
- Kích hoạt khi có Gmail mới (Gmail Trigger): điểm khởi đầu, liên tục kiểm tra hộp thư.
- Chờ 1 giây (Wait node): một bước đệm nhỏ trước khi AI Agent bắt đầu xử lý.
- Agent Phân Loại Gmail : bộ não trung tâm, dùng mô hình Gemini để suy luận và ra quyết định.
- Bốn công cụ Gmail (Gmail Tools) cắm vào Agent: đọc danh sách nhãn, lấy nội dung email, gắn nhãn, và tạo nhãn mới - đây chính là "tay chân" giúp Agent thao tác thật sự trên Gmail.
Ngoài ra còn có một bộ nhớ đệm (Memory Buffer) giúp Agent ghi nhớ ngữ cảnh theo từng phiên xử lý email riêng biệt.
Cần chuẩn bị gì trước khi bắt đầu?
- Một tài khoản n8n (Cloud hoặc tự lưu trữ).
- Tài khoản Gmail đã kết nối qua OAuth2 trong n8n (mục Credentials).
- Một API key Google Gemini, kết nối qua credential loại Google Gemini (PaLM) API.
- Hiểu cơ bản về cách n8n dùng node dạng AI Agent kết hợp với các Tool node.
Hướng dẫn từng bước xây dựng workflow
Tải file. ZIP chưa Workflow bên trên và Import vào giao diện workflow trống của bạn, sau đó bạn hãy thực hiện theo các bước dưới đây.
Bước 1: Thiết lập node kích hoạt khi có Gmail mới
Node đầu tiên trong workflow là Gmail Trigger, đặt tên là "Kích hoạt khi có Gmail mới". Đây là điểm khởi đầu của toàn bộ quy trình.
Trong phần cấu hình, tại mục Poll Times, chọn chế độ Every X (mỗi X phút), rồi đặt giá trị là 5 với đơn vị Minutes. Điều này có nghĩa là n8n sẽ kiểm tra hộp thư Gmail mỗi 5 phút một lần để xem có email mới hay không. Thời gian bao lâu là tùy bạn chọn, ở đây có hai đơn vị là giờ (Hour) và phút (Minutes) trong tùy chọn Unit bên dưới.

Tại mục Event, chọn Message Received (nhận được tin nhắn mới), và bật công tắc Simplify để n8n trả về dữ liệu email ở dạng gọn gàng, dễ xử lý hơn cho các bước sau.
Đừng quên chọn đúng Credential là tài khoản Gmail bạn đã kết nối trước đó ở góc trên bên trái khung cấu hình.
Bước 2: Thêm bước chờ trước khi xử lý
Ngay sau node kích hoạt là node Wait, được đặt tên "Chờ 1 giây". Trong phần cấu hình, mục Resume chọn After Time Interval, Wait Amount đặt là 1.00, và Wait Unit chọn Seconds.

Bước chờ nhỏ này giúp đảm bảo dữ liệu email đã được đồng bộ đầy đủ trước khi AI Agent bắt đầu đọc và xử lý, tránh trường hợp Agent thao tác trên dữ liệu chưa hoàn chỉnh.
Bước 3: Kết nối mô hình Google Gemini làm "bộ não" cho Agent
Thêm node Google Gemini Chat Model, đặt tên "Mô hình Google Gemini". Trong phần cấu hình:
- Credential: chọn tài khoản Google Gemini (PaLM) API đã kết nối.
- Model: chọn phiên bản mô hình phù hợp, ví dụ models/gemini-3.6-flash - dòng flash thường có tốc độ phản hồi nhanh và chi phí thấp, phù hợp cho tác vụ phân loại lặp lại nhiều lần như thế này.

Node này sẽ được kết nối vào cổng Chat Model của Agent chính, đóng vai trò cung cấp khả năng suy luận ngôn ngữ cho toàn bộ hệ thống.
Bước 4: Tạo bộ nhớ đệm cho từng phiên xử lý email
Thêm node Window Buffer Memory, đặt tên "Bộ Nhớ Đệm Window Buffer". Trong phần Session ID, chọn Define below, sau đó tại ô Key, nhập biểu thức:
{{ $json.id }}
Cách làm này giúp mỗi email có một ID phiên (session) riêng biệt, nghĩa là Agent sẽ không bị lẫn ngữ cảnh giữa email này với email khác khi xử lý. Lưu ý quan trọng được n8n cảnh báo ngay trong giao diện: node này lưu bộ nhớ cục bộ ngay trên instance n8n, không tương thích với chế độ Queue Mode hoặc Multi-Main. Nếu bạn triển khai ở quy mô lớn, nên cân nhắc dùng một kho lưu trữ bộ nhớ ngoài như Redis hoặc Postgres thay thế.

Bước 5: Thêm bốn công cụ Gmail cho Agent sử dụng
Đây là phần quan trọng nhất, vì các công cụ này chính là "tay" giúp AI Agent thao tác thực sự trên Gmail thay vì chỉ đưa ra gợi ý suông.
Công cụ 1 - Gmail: Đọc danh sách nhãn

Thêm node Gmail Tool, đặt tên "Gmail - Đọc danh sách nhãn". Cấu hình:
- Tool Description: chọn Set Manually, rồi nhập mô tả: "Công cụ đọc toàn bộ các nhãn (labels) hiện có trên Gmail".
- Resource: chọn Label.
- Operation: chọn Get Many.
- Bật công tắc Return All để lấy toàn bộ danh sách nhãn, không giới hạn số lượng.
Công cụ này giúp Agent biết được hiện tại hộp thư đã có những nhãn nào, tránh việc tạo trùng lặp nhãn không cần thiết.
Công cụ 2 - Gmail: Lấy nội dung email

Thêm node Gmail Tool thứ hai, đặt tên "Gmail - Lấy nội dung email". Cấu hình:
- Description: "Công cụ lấy nội dung email cụ thể dựa trên ID của email".
- Resource: chọn Message.
- Operation: chọn Get.
- Message ID: nhập biểu thức động để AI tự điền giá trị:
{{ $fromAI('gmail_message_id', 'ID của email Gmail, ví dụ: 1944fdc33f544369', 'string') }}
Bật công tắc Simplify để dữ liệu email trả về gọn gàng, dễ đọc hơn.
Hàm $fromAI() ở đây chính là cơ chế cho phép AI Agent tự động điền tham số khi gọi công cụ này, thay vì phải khai báo cứng giá trị từ trước.
Công cụ 3 - Gmail: Gắn nhãn cho email

Thêm node Gmail Tool thứ ba, đặt tên "Gmail - Gắn nhãn cho email". Cấu hình:
- Description: "Công cụ thêm nhãn vào email".
- Resource: chọn Message.
- Operation: chọn Add Label.
- Message ID: nhập {{ $fromAI('gmail_message_id') }}.
- Label Names or IDs: nhập:
{{ $fromAI('gmail_categories', 'Danh sách mảng chứa ID của các nhãn') }}
Đây là bước AI thực sự "hành động" - gắn nhãn đã chọn vào đúng email đang xử lý.
Công cụ 4 - Gmail: Tạo nhãn mới

Thêm node Gmail Tool thứ tư, đặt tên "Gmail - Tạo nhãn mới". Cấu hình:
- Description: "Công cụ tạo nhãn mới trên Gmail, chỉ sử dụng nếu nhãn phù hợp chưa tồn tại".
- Resource: chọn Label.
- Operation: chọn Create.
- Name: nhập:
{{ $fromAI('new_label_name', 'Tên nhãn mới', 'string') }}
Công cụ này chỉ được Agent gọi đến khi không tìm thấy nhãn nào phù hợp trong danh sách hiện có, giúp tránh tạo nhãn tràn lan không kiểm soát.
Bước 6: Cấu hình Agent trung tâm - trái tim của workflow

Đây là node quan trọng nhất: Tools Agent, đặt tên "Agent Phân Loại Gmail". Trong phần cấu hình:
- Agent: chọn loại Tools Agent - loại agent có khả năng gọi các công cụ (tools) đã kết nối.
- Source for Prompt (User Message): chọn Define below.
- Prompt (User Message): nhập nội dung sau, dùng biểu thức để đưa toàn bộ dữ liệu email vào:
Phân loại và gắn nhãn cho email dựa trên thông tin chi tiết bên dưới:
{{ JSON.stringify($json) }}
Tiếp theo, phần quan trọng nhất là System Message - nơi định nghĩa "luật chơi" cho Agent. Nội dung này cần được viết chi tiết, rõ ràng theo bốn phần:
Mục tiêu: nêu rõ Agent cần tự động phân loại email dựa trên nhãn hiện có, hoặc tạo nhãn mới nếu chưa có nhãn phù hợp.
Các công cụ khả dụng: liệt kê bốn công cụ đã kết nối ở Bước 5 - lấy nội dung email, đọc tất cả nhãn, tạo nhãn mới, gắn nhãn cho email.
Hướng dẫn thực hiện, gồm ba quy tắc cốt lõi:
- Khớp nhãn: Agent cần phân tích tiêu đề, người gửi, người nhận, từ khóa và nội dung email, rồi so sánh với danh sách nhãn hiện có để tìm nhãn phù hợp nhất.
- Phân bổ nhãn: Gắn email vào nhãn sẵn có phù hợp nhất; bỏ nhãn INBOX nếu email ít quan trọng (như quảng cáo, khuyến mãi), còn email quan trọng hoặc thông thường thì giữ lại INBOX. Nếu chưa có nhãn phù hợp, tạo nhãn mới dựa trên cấu trúc nhãn hiện có, ưu tiên tái sử dụng nhãn cũ tối đa. Luôn tạo nhãn mới dưới dạng nhãn con (sublabel) - nếu chưa có nhãn chính tương ứng, tạo nhãn gốc "AI" trước, rồi tạo nhãn mới nằm bên dưới nhãn "AI" đó.
- Quy tắc tạo nhãn: Đảm bảo nhãn mới tuân thủ đúng định dạng của các nhãn cũ, từ cách viết hoa/thường, dấu phân cách, cho tới tiền tố sử dụng.
Kết quả mong muốn: email được phân loại đồng nhất, gọn gàng, và duy trì đúng cấu trúc quản lý sẵn có của Gmail.
Ngoài ra, trong phần Options, đặt maxIterations là 5 - giới hạn số vòng lặp suy luận tối đa mà Agent được phép thực hiện cho mỗi email, tránh trường hợp Agent xử lý quá lâu hoặc lặp vô hạn.
Bước 7: Kết nối các node lại với nhau
Sau khi tạo xong tất cả các node, hãy kết nối theo đúng luồng dữ liệu:
- Kích hoạt khi có Gmail mới → Chờ 1 giây → Agent Phân Loại Gmail (luồng chính, kết nối kiểu main).
- Mô hình Google Gemini → Agent Phân Loại Gmail (kết nối vào cổng ai_languageModel).
- Bộ Nhớ Đệm Window Buffer → Agent Phân Loại Gmail (kết nối vào cổng ai_memory).
- Cả bốn công cụ Gmail → Agent Phân Loại Gmail (kết nối vào cổng ai_tool).
Nhìn vào sơ đồ tổng thể, bạn sẽ thấy rõ Agent nằm ở vị trí trung tâm, với các đường nối màu xanh lá tỏa ra từ bốn công cụ Gmail phía dưới, cùng với Model và Memory kết nối vào từ hai phía.
Bước 8: Chạy thử và kiểm tra kết quả
Bấm Fetch Test Event ở node Gmail Trigger để lấy một email mẫu, sau đó bấm Execute step lần lượt qua từng node để kiểm tra dữ liệu được truyền đúng hay không. Cuối cùng, chạy toàn bộ workflow và mở lại hộp thư Gmail để xem kết quả thực tế: các email mới sẽ được tự động gắn nhãn tương ứng, ví dụ nhãn AI/ChatGPT cho email từ ChatGPT, hoặc AI/Workflow cho email liên quan tới việc kiểm tra workflow.
Vì sao nên dùng cấu trúc nhãn con dạng "AI/..." thay vì nhãn phẳng?
Một điểm thiết kế đáng chú ý trong System Message là quy tắc luôn tạo nhãn mới dưới dạng nhãn con (sublabel) nằm bên dưới nhãn gốc "AI". Cách làm này mang lại vài lợi ích thực tế:
- Dễ phân biệt nhãn do AI tạo ra với nhãn bạn tự đặt thủ công: Khi nhìn vào danh sách nhãn, bạn biết ngay nhãn nào là do hệ thống tự động sinh ra.
- Tránh làm loạn cấu trúc nhãn gốc của Gmail: Thay vì tạo hàng loạt nhãn rời rạc ở cấp cao nhất, mọi nhãn AI tạo ra đều gói gọn trong một nhánh riêng, dễ quản lý và dễ xóa hàng loạt nếu cần dọn dẹp sau này.
- Cho phép mở rộng linh hoạt: Khi có thêm nhiều loại email mới xuất hiện, Agent chỉ cần thêm nhãn con mới dưới nhánh "AI" mà không phá vỡ cấu trúc đã có.
Những lưu ý khi triển khai workflow này trong thực tế
- Kiểm tra định kỳ danh sách nhãn được tạo ra: Vì Agent tự quyết định khi nào cần tạo nhãn mới, bạn nên rà soát sau vài ngày đầu triển khai để đảm bảo nhãn được đặt tên nhất quán, không bị trùng lặp ý nghĩa.
- Cân nhắc giới hạn tần suất kiểm tra Gmail: Mức 5 phút một lần trong ví dụ là hợp lý cho hộp thư cá nhân, nhưng nếu khối lượng email quá lớn, bạn có thể cần điều chỉnh để tránh vượt giới hạn gọi API của Gmail hoặc Gemini.
- Bộ nhớ đệm chỉ phù hợp với quy mô nhỏ: Như cảnh báo ngay trong giao diện n8n, node Window Buffer Memory lưu trữ cục bộ và không phù hợp khi triển khai ở chế độ nhiều worker (Queue Mode). Nếu mở rộng quy mô, hãy thay bằng một kho lưu trữ bộ nhớ ngoài.
- Xem xét thêm bước xác nhận cho các hành động nhạy cảm: Ví dụ, nếu bạn lo ngại Agent có thể bỏ nhãn INBOX nhầm với email quan trọng, có thể cân nhắc thêm logic kiểm tra bổ sung hoặc theo dõi log trong giai đoạn đầu vận hành.
Câu hỏi thường gặp
Workflow này có xóa email không?
- Workflow chỉ đọc nội dung, đọc và tạo nhãn, gắn nhãn, và có thể bỏ nhãn INBOX (chuyển email ra khỏi hộp thư chính, tương đương lưu trữ) chứ không xóa vĩnh viễn email nào.
Bạn có thể dùng mô hình AI khác thay vì Gemini không?
- Về nguyên tắc có thể, nếu bạn sử dụng được, miễn n8n hỗ trợ node Chat Model cho mô hình đó và mô hình có khả năng gọi công cụ (tool calling) tương thích với kiểu Tools Agent.
Nếu Agent gắn nhãn sai thì xử lý thế nào?
- Bạn có thể tự tay điều chỉnh lại nhãn trong Gmail như bình thường. Nếu tình trạng gắn sai lặp lại nhiều lần, hãy xem lại và làm rõ thêm phần System Message, đặc biệt là các tiêu chí khớp nhãn.
Giao diện và tên gọi các trường cấu hình của n8n, Gmail và Google Gemini có thể thay đổi theo thời gian khi các nền tảng này cập nhật phiên bản mới. Trước khi triển khai, hãy đối chiếu lại với giao diện hiện tại trên tài khoản của bạn để đảm bảo các bước vẫn khớp chính xác.
Hướng dẫn AI
AI Tools
Học IT
AI
Hàm Excel