Tự đăng bài từ Google Sheet bằng n8n
Bạn soạn bài trong Google Sheet. n8n đọc từng dòng, đăng lên các kênh qua MADIAD Hub, rồi ghi kết quả về đúng dòng đó.
Cần có: một n8n (tự dựng hoặc n8n Cloud), API key MADIAD Hub (gói nào cũng có), một tài khoản Google.
Trong bộ có gì
| File | Việc của nó | Cần không |
|---|---|---|
wf-01-publish-on-schedule.json | 15 phút quét sheet một lượt, đăng các dòng Đăng ngay | Cần |
wf-03-reconcile.json | Tra lại bài đang chờ nền tảng xử lý, ghi kết quả thật | Cần |
wf-02-publish-at.json | Đăng đúng giờ ghi trong cột Hẹn Giờ | khi cần hẹn giờ |
wf-04-usage.json | Sáng nào cũng ghi hạn mức vào tab Hạn Mức | nên có |
wf-06-retry-unpublish.json | Chạy hai lệnh Đăng lại và Gỡ bài | khi cần |
wf-05-publish-now.json | Đăng ngay, không chờ lượt quét 15 phút | tùy chọn |
Gate.gs | Mã dán vào sheet, thêm menu MADIAD Hub. Đi cùng wf-05 | khi dùng wf-05 |
Vì sao luôn cầnwf-03: nhiều nền tảng nhận bài trước, xử lý sau. Lúcwf-01gọi xong, bài mới vào hàng đợi. Thiếuwf-03thì dòng đó nằm mãi ởĐang Đăng, dù bài đã lên.
Phần A. Nối sheet với n8n (15 phút)
Bước 1. Tạo bản sao sheet mẫu
Để làm gì: có sheet của riêng bạn để luồng ghi kết quả vào. Bản gốc chỉ xem được.
Mở sheet mẫu, bấm Tệp › Tạo bản sao.
Bước 2. Điền tab Cấu Hình
Để làm gì: luồng biết đăng bằng profile nào của bạn.
- Tab Cấu Hình nằm ở hàng tab dưới cùng của sheet, cạnh tab
Lịch Đăng. - Dán
profile_idvào cộtGiá Trị, đúng dòngprofile_id. Mã này nằm trong Dashboard MADIAD Hub, mục Kết nối. - Có đăng Pinterest thì điền thêm
pinterest_board_id.

Bước 3. Cất API key vào n8n
Để làm gì: n8n gọi MADIAD Hub bằng tài khoản của bạn. Key nằm trong n8n chứ không nằm trong sheet, vì link sheet hay đi qua tay nhiều người.
Mở node Gọi MADIAD Hub, bấm Connect to Header Auth, rồi:
- Name:
Authorization - Value:
Bearer(có dấu cách) rồi dán API key ngay sau. Key lấy trong Dashboard, mục API key. - Bấm Save.

Các luồng khác chọn lại đúng credential này. Nên tạo một key riêng cho n8n: lỡ lộ thì thu hồi đúng key đó, chỗ khác vẫn chạy.
Bước 4. Nạp luồng, chọn sheet
Để làm gì: chỉ cho từng node Google Sheets biết đọc và ghi vào bản sao nào.
- Trong n8n: Workflows › Import from File, chọn
wf-01, rồiwf-03. Tối thiểu hai luồng này. - Node nào có tam giác đỏ thì mở ra. Bấm Connect to Google Sheets để đăng nhập Google, rồi ở ô Document chọn bản sao sheet của bạn.

Bước 5. Bấm Publish
Để làm gì: luồng chỉ tự chạy sau khi Publish. Chưa Publish thì không có gì xảy ra, và cũng không có gì báo lỗi.
Hết tam giác đỏ thì bấm Publish ở góc trên bên phải. Làm cho từng luồng.

Xong phần A, dòng nào có Hành Động là Đăng ngay sẽ lên trong vòng 15 phút.
Phần B. Bấm là đăng ngay (tùy chọn, 10 phút)
Phần này thêm menu MADIAD Hub vào sheet, và nếu muốn thì đổi ô là đăng luôn, không chờ lượt quét 15 phút. Ảnh chụp giao diện Google tiếng Anh, nên tên nút ghi kèm chữ tiếng Anh trong ngoặc.
Bước 6. Lấy Production URL của wf-05
Để làm gì: đây là địa chỉ sheet gọi sang n8n.
- Nạp
wf-05-publish-now.json, chọn sheet và Publish như bước 4 và 5. - Mở node Nhận lệnh từ Sheet, chọn Production URL, chép địa chỉ.

Địa chỉ đúng có /webhook/. Địa chỉ có /webhook-test/ là Test URL, chỉ chạy khi bạn đang mở n8n và bấm nghe thử.
Bước 7. Dán Gate.gs vào Apps Script, bấm Lưu
Để làm gì: thêm menu MADIAD Hub vào sheet.
- Trong sheet: Tiện ích mở rộng › Apps Script (Extensions › Apps Script).
- Xóa đoạn mã có sẵn, dán toàn bộ
Gate.gstrong bộ. - Bấm biểu tượng Lưu (Save project). Không cần bấm Triển khai (Deploy).


Bước 8. Điền WEBHOOK_URL
Để làm gì: cho đoạn mã biết gửi lệnh tới đâu.
Trong Apps Script: Cài đặt dự án (Project Settings, bánh răng bên trái) › Thuộc tính tập lệnh (Script Properties) › thêm một dòng tên WEBHOOK_URL, giá trị là Production URL vừa chép, rồi bấm Lưu thuộc tính tập lệnh (Save script properties).

Bước 9. Tải lại sheet, kiểm tra kết nối
Để làm gì: chắc chắn sheet gọi được n8n trước khi đăng thật.
- Tải lại trang sheet. Menu MADIAD Hub hiện ra cạnh menu Trợ giúp (Help). Không thấy menu nghĩa là mã chưa dán hoặc chưa Lưu.
- Vào menu MADIAD Hub, bấm Kiểm tra kết nối n8n. Lần đầu Google hỏi cấp quyền thì đồng ý. Báo "Gọi được n8n" nghĩa là sheet đã gọi tới n8n. Lệnh này không đăng bài nào, và cũng không kiểm các node trong luồng: lỗi phía n8n (chưa chọn sheet, sai key) xem ở tab Executions, bước 11.

Bước 10. Cài trình kích hoạt để đổi ô là đăng
Để làm gì: đổi ô Hành Động thành Đăng ngay là bài đi luôn, khỏi mở menu.
- Trong Apps Script, bấm biểu tượng đồng hồ (Triggers) bên trái › Thêm trình kích hoạt (Add Trigger).
- Hàm:
onEditInstallable. Nguồn sự kiện: Từ bảng tính (From spreadsheet). Loại sự kiện: Khi chỉnh sửa (On edit). Bấm Lưu (Save), Google hỏi cấp quyền thì đồng ý.

Bỏ qua bước này vẫn đăng ngay được: chọn dòng, rồi bấm Đăng ngay dòng đang chọn trong menu MADIAD Hub.
Bước 11. Đăng thử, xem kết quả
Để làm gì: thấy một bài đi trọn đường, từ sheet tới kênh.
- Ở dòng đã có
Nội DungvàKênh Đăng, đổiHành ĐộngthànhĐăng ngay. Dòng mới chưa cóMã Bàivẫn đăng bình thường, luồng tự sinh mã. - Góc dưới sheet hiện "Đã gửi 1 lệnh đăng". Ít giây sau
Trạng TháichuyểnĐang Đăng, rồiĐã Đăngkèm link bài. - Không thấy gì đổi thì mở luồng trong n8n, tab Executions. Dòng đỏ là lần chạy lỗi: bấm vào để xem node nào hỏng và vì sao.

Dùng hằng ngày
Nhập từ dòng 3. Dòng 1 là tiêu đề, dòng 2 là phần giải thích, đừng xóa.
| Cột | Bạn điền gì |
|---|---|
Hành Động | Đăng ngay · Hẹn giờ · Đăng lại · Gỡ bài |
Kênh Đăng | chọn một kênh, hoặc gõ nhiều kênh cách nhau bởi dấu phẩy |
Tiêu Đề | tùy chọn, tiêu đề riêng cho YouTube và Pinterest. Để trống thì lấy Nội Dung làm tiêu đề |
Nội Dung | phần chữ của bài |
Media | link ảnh hoặc video, bắt đầu bằng https://. Nhiều ảnh thì mỗi link một dòng |
Hẹn Giờ | chỉ khi chọn Hẹn giờ. Dạng 2026-09-10 08:30 |
Bình Luận Đầu | tùy chọn, bình luận tự đăng dưới bài |
Reddit chưa đăng được từ sheet mẫu, vì Reddit cần chọn subreddit mà sheet chưa có cột đó. Profile đã kết nối Reddit thì soạn bài Reddit trong Dashboard MADIAD Hub.
Các cột còn lại do hệ thống ghi, đừng sửa tay. Đang Đăng là đã gửi đi, đang chờ nền tảng nhận. Đã Đăng chỉ hiện khi nền tảng đăng xong thật. Dòng hỏng thì cột Lỗi nói vì sao: sửa xong, xóa trắng Trạng Thái, đặt lại Hành Động.
Trang Facebook, LinkedIn và các kênh khác
- Facebook, LinkedIn: một kết nối là một tài khoản, và tài khoản đó quản được nhiều Trang. Profile đăng được lên tất cả các Trang ấy.
- TikTok, Instagram và các kênh đăng nhập bằng tài khoản riêng: mỗi profile một tài khoản.
- Chọn Trang cho từng bài: soạn bài trong Dashboard MADIAD Hub và chọn ở ô Trang. Cách này dùng khi profile chưa ghim Trang nào.
- Đã ghim một Trang (Dashboard, mục Kết nối): bài lên Trang đó. Bài nhắm Trang khác bị từ chối, muốn đăng Trang khác thì bỏ ghim trước.
- Bài từ sheet mẫu lên Trang đang ghim, vì sheet không có cột chọn Trang. Tài khoản quản nhiều Trang thì nên ghim Trang muốn đăng. Cần chọn Trang theo từng dòng sheet thì liên hệ MADIAD.
Node MADIAD Hub cho n8n (tùy chọn)
Thay node HTTP Request bằng node MADIAD Hub: có ô chọn profile lấy thẳng từ tài khoản bạn, và nút Test để biết key đúng hay sai trước khi chạy.
- n8n tự dựng: vào Settings › Community nodes, bấm Install a community node, gõ
n8n-nodes-madiad-hub, tick ô đồng ý, bấm Install. Hoặc chạynpm installcho gói này trong~/.n8n, rồi khởi động lại n8n. - n8n Cloud: chỉ cài được node đã qua kiểm định của n8n, node này chưa qua. Trên Cloud, dùng các luồng JSON ở trên: chúng chỉ cần node có sẵn.
Node và các luồng dùng chung một API key.
Bộ mẫu cập nhật định kỳ
Bản mới luôn ở https://hub.madiad.com/n8n-templates. Tải về, nạp đè lên luồng cũ trong n8n. Có bản Gate.gs mới thì dán đè vào đúng file cũ trong Apps Script rồi bấm Lưu: trình kích hoạt đã cài vẫn giữ nguyên.
Bảng tính của bạn không bị đụng tới. Bản nào đổi tên cột thì phần này sẽ ghi rõ, vì đổi tên cột là thứ duy nhất làm luồng mất dấu dữ liệu cũ.
Hỏng thì xem ở đây
| Hiện tượng | Thường do |
|---|---|
| Không thấy menu MADIAD Hub | Chưa dán Gate.gs hoặc chưa bấm Lưu, rồi tải lại sheet (bước 7, 9) |
| Menu báo "Không có dòng nào để đăng" | Dòng thiếu Nội Dung hoặc Kênh Đăng, hoặc chọn dòng 1, 2 |
Menu báo dòng chưa gửi vì ô Hành Động | Đặt Hành Động là Đăng ngay |
| Kiểm tra kết nối báo mã 404 | Dán nhầm Test URL (/webhook-test/), hoặc luồng chưa Publish |
| Đổi ô mà không có gì xảy ra | Chưa cài trình kích hoạt ở bước 10 |
n8n báo Parameter "Document" is required | Một node Google Sheets chưa chọn sheet (bước 4) |
| Chạy xong mà không đăng dòng nào | Trạng Thái chưa trống, hoặc Hành Động sai chữ |
Cột Kênh Đăng không khớp kênh nào | Gõ tay sai tên kênh. Chọn từ danh sách cho chắc |
Link media phải bắt đầu bằng https:// | Đang dùng link chia sẻ Drive. Cần link ảnh trực tiếp |
Dòng nằm mãi ở Đang Đăng | Chưa Publish wf-03 |
| Bài lên nhầm Trang Facebook | Ghim đúng Trang trong Dashboard, mục Kết nối |
401 hoặc 403 | API key sai, thiếu chữ Bearer , hoặc gói đã hết hạn |
| Node MADIAD Hub không hiện sau khi cài | n8n chưa khởi động lại, hoặc đang dùng n8n Cloud |
Tài liệu API đầy đủ: https://docs.madiad.com
