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:
- Giọng thương hiệu: mô tả ngắn + 2–3 bài mẫu tốt nhất của bạn.
- 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.
- Đị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ọn | Dùng để |
|---|---|
| Response Type: Approval | Nút Approve / Decline ngay trong tin nhắn |
| Free Text / Custom Form | Mở 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 Responded | Ghi lại ai đã duyệt (audit) — đầu ra có approved, respondedAt và thông tin người bấm |
| Restrict Who Can Approve | Chỉ 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 Decision | Gỡ 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 ro | Ví dụ |
|---|---|
| Sai sự thật | Số liệu “nghe hợp lý” nhưng không có trong nguồn |
| Bản quyền | Câu chữ quá giống bài gốc, dùng ảnh không có quyền |
| Sai giọng / sai thời điểm | Bài vui vẻ đăng đúng ngày công ty có sự cố |
| Prompt injection từ nguồn | Bà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
- Slack node: human-in-the-loop approvals — n8n Docs
- Email approval workflows in n8n: human-in-the-loop automation — Kirim.Email