AI Automation

Pipeline nội dung AI có người duyệt: Claude viết nháp, bạn bấm “Approve” trên Slack rồi mới đăng

Tóm tắt

Workflow n8n: lịch chạy → lấy nguồn (RSS, sheet ý tưởng) → Claude viết nháp theo giọng thương hiệu → gửi Slack bằng thao tác Send and Wait for Response (Approve/Decline) → chỉ khi Approve mới đăng. Không bao giờ để AI tự đăng lên kênh công khai mà không qua người.

Để AI viết nháp nội dung marketing, bài blog, post mạng xã hội là việc rất hợp lý — tiết kiệm hàng giờ mỗi tuần. Để AI tự đăng lên kênh công khai thì không. Một bài sai sự thật, sai giọng thương hiệu hay dính bản quyền có thể gây thiệt hại lớn hơn nhiều so với 30 giây duyệt. Bài này hướng dẫn dựng pipeline trong n8n: Claude viết nháp, bạn bấm Approve ngay trong Slack, chỉ khi đó nội dung mới được đăng.

Sơ đồ pipeline

Schedule (8h sáng, thứ 2–6)
  → Lấy nguồn: RSS các blog chọn lọc / Google Sheet "ý tưởng bài viết"
  → Lọc trùng bằng code (đã viết rồi thì bỏ)
  → Claude: viết nháp + 3 phương án tiêu đề + hashtag  (đầu ra JSON)
  → Slack: Send and Wait for Response  (Approve / Decline)
      ├─ Approve → đăng lên kênh (CMS / LinkedIn / Facebook) + ghi log
      └─ Decline → lưu nháp + lý do vào Sheet để cải thiện prompt

Bước 1: Lấy nguồn và lọc trùng

  • RSS Read node để lấy bài mới từ các blog bạn theo dõi, hoặc Google Sheets chứa danh sách ý tưởng do team điền.
  • Dùng Code node hoặc so khớp với Sheet “đã xử lý” để bỏ bài trùng — rẻ hơn nhiều so với để model tự nhận ra.
  • Cắt bớt nội dung đầu vào (chỉ lấy tiêu đề, tóm tắt, link) để tiết kiệm token.

Bước 2: Claude viết nháp — đầu ra có cấu trúc

Dùng node Anthropic (hoặc AI Agent không có tool) với prompt có ba phần bắt buộc:

  1. Giọng thương hiệu: mô tả ngắn + 2–3 bài mẫu tốt nhất của bạn.
  2. Quy tắc cứng: không bịa số liệu; số liệu phải có trong nguồn; luôn ghi link nguồn; không chép nguyên văn nội dung của người khác — viết lại bằng lời mới.
  3. Định dạng đầu ra JSON để các bước sau xử lý ổn định:
{
  "titles": ["...", "...", "..."],
  "body": "...",
  "hashtags": ["...", "..."],
  "sources": ["https://..."],
  "risk_notes": "những điểm người duyệt nên kiểm tra"
}

Gắn Structured Output Parser để n8n tự validate; trường risk_notes giúp người duyệt biết chỗ cần soi kỹ.

Bước 3: Duyệt trong Slack

Node Slack có thao tác Send and Wait for Response: gửi tin nhắn rồi dừng workflow cho tới khi có người phản hồi. Người duyệt bấm ngay trong Slack, không cần mở n8n.

Tuỳ chọnDùng để
Response Type: ApprovalNút Approve / Decline ngay trong tin nhắn
Free Text / Custom FormMở trang xác nhận của n8n để người duyệt nhập nhận xét hoặc sửa nội dung trước khi đăng
Capture Who RespondedGhi lại ai đã duyệt (audit) — đầu ra có approved, respondedAt và thông tin người bấm
Restrict Who Can ApproveChỉ editor được quyền duyệt; người khác bấm sẽ nhận thông báo không có quyền
After DecisionGỡ nút và hiện kết quả + người quyết định, tránh bấm lại

Lưu ý cấu hình: kiểu Approval với nút tương tác cần Signing Secret của Slack app, các scope users:read, users:read.email, và n8n phải có địa chỉ HTTPS công khai.

Bước 4: Đăng và ghi log

  • Nhánh Approve: gọi API CMS / mạng xã hội để đăng (hoặc lên lịch đăng), sau đó ghi log: ngày, tiêu đề, người duyệt, link bài.
  • Nhánh Decline: lưu nháp và lý do vào Sheet. Mỗi tuần đọc lại các lý do từ chối để chỉnh prompt — đây là vòng cải tiến quan trọng nhất.
  • Đặt thời gian chờ tối đa: nếu không ai duyệt trong 24 giờ, nhắc lại hoặc tự huỷ, đừng tự đăng.

Vì sao bắt buộc có người duyệt?

Rủi roVí dụ
Sai sự thậtSố liệu “nghe hợp lý” nhưng không có trong nguồn
Bản quyềnCâu chữ quá giống bài gốc, dùng ảnh không có quyền
Sai giọng / sai thời điểmBài vui vẻ đăng đúng ngày công ty có sự cố
Prompt injection từ nguồnBài RSS chứa chỉ thị ẩn khiến nội dung bị chèn link lạ

Áp dụng thế nào?

  • Dev: Dựng pipeline với 1 nguồn RSS và 1 kênh Slack trước; khi luồng duyệt chạy ổn mới nối API đăng bài.
  • Marketing / Content: Đưa vào prompt 2–3 bài “chuẩn” nhất của bạn — hiệu quả hơn nhiều so với mô tả giọng văn bằng tính từ.
  • PM: Đo hai chỉ số: tỉ lệ Approve và thời gian từ nháp tới đăng. Tỉ lệ Approve thấp → sửa prompt/nguồn, đừng bỏ bước duyệt.

Nguồn & tham khảo

  1. Slack node: human-in-the-loop approvals — n8n Docs
  2. Email approval workflows in n8n: human-in-the-loop automation — Kirim.Email