n8n là công cụ tự động hóa workflow mã nguồn mở đang dần trở thành một trong những nền tảng mạnh nhất để xây dựng automation tích hợp AI. Khác với Zapier hay Make, bạn có thể tự host, kiểm tra từng bước biến đổi dữ liệu, và chèn AI model vào bất kỳ điểm nào trong workflow. Bài hướng dẫn này sẽ xây dựng một automation thực tế từ đầu bằng các AI node của n8n.

Bạn Sẽ Xây Dựng Gì

Một workflow theo dõi hộp thư Gmail dùng chung, dùng LLM để phân loại và tóm tắt từng email đến, sau đó chuyển kết quả vào kênh Slack hoặc database Notion tùy theo danh mục. Đây là dạng use case phổ biến nhất khi kết hợp n8n với AI: đọc dữ liệu, xử lý bằng AI model, ghi vào đúng đích.

Yêu Cầu Trước Khi Bắt Đầu

  • n8n đã cài local (Docker) hoặc tài khoản n8n Cloud
  • Tài khoản Google (để truy cập Gmail)
  • API key của OpenAI hoặc Anthropic
  • Hiểu cơ bản về JSON

Bước 1: Cài Đặt n8n

Cách nhanh nhất để chạy n8n local là dùng Docker:

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n

Mở http://localhost:5678 trên trình duyệt. Nếu muốn dùng bản managed, n8n Cloud cung cấp giao diện tương tự mà không cần lo hạ tầng.

Để tự host production với lưu trữ bền vững và database, dùng Docker Compose:

# Tạo file docker-compose.yml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - N8N_ENCRYPTION_KEY=your-random-key-here
    volumes:
      - n8n_data:/home/node/.n8n
 
  postgres:
    image: postgres:16
    environment:
      - POSTGRES_DB=n8n
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data
 
volumes:
  n8n_data:
  postgres_data:

Bước 2: Kết Nối Thông Tin Đăng Nhập

Trước khi xây workflow, hãy thiết lập credentials. Trong n8n, credentials được mã hóa và dùng lại xuyên suốt các workflow.

  1. Vào Settings > Credentials > New Credential
  2. Thêm Gmail OAuth2 credentials (theo hướng dẫn Google Cloud Console trong tài liệu n8n)
  3. Thêm OpenAI API credential (hoặc Anthropic nếu muốn dùng Claude)
  4. Thêm Slack Bot TokenNotion Integration Token

Đặt tên cho OpenAI key kiểu như OpenAI Production để dễ tham chiếu lại khi làm workflow khác.

Bước 3: Tạo Workflow

Nhấn New Workflow, rồi bắt đầu thêm các node.

Trigger: Gmail

Thêm node Gmail Trigger làm điểm khởi đầu. Cấu hình:

  • Theo dõi nhãn INBOX
  • Poll mỗi phút (hoặc dùng webhook push nếu n8n của bạn có URL public)
  • Trả về toàn bộ email bao gồm nội dung, người gửi và tiêu đề

AI Node: Phân Loại và Tóm Tắt

Đây là phần cốt lõi của workflow. Thêm node OpenAI Chat Model kết nối với node Basic LLM Chain.

Cấu hình Basic LLM Chain với system prompt như sau:

You are an email classifier. Given an email, return a JSON object with two fields:
- "category": one of "support", "sales", "billing", "other"
- "summary": a 1-2 sentence plain-English summary of what the sender needs

Return only valid JSON, no extra text.

Đặt user message dùng expression của n8n:

Subject: {{ $json.subject }}
From: {{ $json.from.value[0].address }}
Body: {{ $json.text }}

Node Basic LLM Chain sẽ tự động truyền prompt vào chat model được kết nối và trả về kết quả dạng text.

Xử Lý Kết Quả JSON

Thêm node Code sau LLM chain để parse output:

const raw = $input.first().json.text;
 
let parsed;
try {
  parsed = JSON.parse(raw);
} catch (e) {
  // Dự phòng nếu model trả về JSON bọc trong markdown
  const match = raw.match(/```json\s*([\s\S]*?)```/);
  parsed = match ? JSON.parse(match[1]) : { category: "other", summary: raw };
}
 
return [{ json: { ...parsed, originalEmail: $input.first().json } }];

Phân Luồng Theo Danh Mục

Thêm node Switch với hai nhánh:

  • Nếu categorysupport hoặc billing → chuyển đến Slack
  • Còn lại → chuyển đến Notion

Đích Đến: Slack

Thêm node Slack, đăng lên kênh #support-inbox với mẫu tin nhắn:

*Email {{ $json.category }} mới*
Từ: {{ $json.originalEmail.from.value[0].address }}
Tóm tắt: {{ $json.summary }}
Tiêu đề: {{ $json.originalEmail.subject }}

Đích Đến: Notion

Thêm node Notion chọn hành động Create Page trong database. Gán các trường:

  • Title → $json.originalEmail.subject
  • Category → $json.category
  • Summary → $json.summary
  • Sender → $json.originalEmail.from.value[0].address
  • Date → $json.originalEmail.date

Bước 4: Xử Lý Lỗi

Mặc định, workflow n8n sẽ dừng âm thầm khi gặp lỗi. Hãy thêm xử lý lỗi ở hai điểm.

Đầu tiên, bật Continue on Fail trên node LLM để một phản hồi API lỗi không làm hỏng toàn bộ lần chạy. Đoạn fallback trong node Code bên trên đã xử lý trường hợp model trả về output không đúng format.

Thứ hai, tạo workflow Error Trigger:

  1. Tạo workflow mới với node Error Trigger
  2. Kết nối với node Slack để gửi thông báo vào kênh #alerts
  3. Trong workflow chính, vào Workflow Settings > Error Workflow và chọn workflow xử lý lỗi vừa tạo

Từ đây, mọi lỗi chưa được xử lý trong workflow chính sẽ tự động thông báo vào Slack kèm tên workflow, nội dung lỗi và run ID.

Bước 5: Kiểm Tra và Kích Hoạt

Trước khi kích hoạt, hãy kiểm tra từng node thủ công:

  1. Nhấn Gmail trigger rồi chọn Fetch Test Event để lấy một email thực
  2. Chạy từng node tiếp theo để xác nhận dữ liệu truyền đúng
  3. Kiểm tra node Switch phân luồng đúng với từng giá trị category
  4. Xác nhận tin nhắn Slack và trang Notion xuất hiện như mong muốn

Khi đã hài lòng, bật toggle Active. n8n sẽ tự động poll Gmail mỗi phút.

Mở Rộng Thêm

Cùng cấu trúc này có thể áp dụng cho các automation phức tạp hơn:

  • Thay Gmail bằng RSS feed hoặc webhook để xử lý bất kỳ đầu vào dạng text nào
  • Thêm node Pinecone hoặc Qdrant vector store trước bước LLM để tìm kiếm ngữ nghĩa trong dữ liệu lịch sử, cung cấp context liên quan cho model
  • Nối nhiều lần gọi LLM: một lần phân loại, lần hai soạn thảo câu trả lời, lần ba kiểm tra giọng văn
  • Dùng node n8n AI Agent cho các tác vụ cần model tự quyết định gọi tool nào, thay vì đi theo luồng cố định

Giao diện trực quan của n8n giúp bạn thấy rõ dữ liệu vào từ đâu, biến đổi thế nào, và đi ra chỗ nào. Đó là lợi thế thực tế lớn nhất so với giải pháp thuần code.

Mẹo Thực Tế

  • Ghim dữ liệu test. Sau khi lấy được test event, hãy ghim nó vào node để mỗi lần chạy lại đều dùng cùng đầu vào. Tránh tốn API credit mỗi khi điều chỉnh node phía sau.

  • Dùng expression thay vì giá trị cứng. Các expression như {{ $json.subject }} được tính toán lúc runtime và giúp workflow linh hoạt hơn. Giá trị cứng sẽ bị lỗi khi schema đầu vào thay đổi.

  • Giới hạn độ dài output LLM. Đặt max_tokens trên node OpenAI ở mức hợp lý (512 cho tác vụ phân loại). Output không giới hạn tốn tiền hơn và khó parse hơn.

  • Quản lý phiên bản workflow. n8n lưu snapshot tự động mỗi lần bạn save. Trong môi trường nhóm, export workflow ra JSON và lưu vào Git.

  • Tự host cho dữ liệu nhạy cảm. Nếu email chứa thông tin cá nhân hay dữ liệu nội bộ, chạy n8n trên hạ tầng của mình đảm bảo dữ liệu không rời khỏi mạng của bạn.

Try n8n

n8n Cloud cung cấp instance managed với OAuth sẵn cho tất cả dịch vụ lớn, cập nhật tự động và ghi log từng lần thực thi — không cần cài Docker hay cấu hình database.

Try n8n