Hướng dẫn sử dụng workflow n8n đăng bài Facebook Page (Text + Image/Video)
Nội dung
Tài liệu này hướng dẫn chi tiết cách sử dụng workflow n8n tự động đăng bài viết kèm image hoặc video lên Facebook Page, hỗ trợ đăng ngay hoặc đặt lịch (scheduled) rồi publish thông qua Meta Business Suite.
1. Tổng quan workflow
1.1 Giới thiệu
Workflow n8n Blog on FB Page được thiết kế để tự động hóa toàn bộ quy trình đăng bài viết lên Facebook Page, bao gồm cả Image Post và Video / Reel, với khả năng:
- Đăng ngay lập tức
- Đặt lịch đăng (Scheduled)
- Tạo bài viết dạng Draft để admin duyệt trong Meta Business Suite
Workflow này đặc biệt phù hợp để tích hợp với Notion / AI Agent / CMS / Form nội bộ.
1.2 Mục tiêu
Workflow được xây dựng nhằm:
- Tự động đăng bài viết (text) + image hoặc video lên Facebook Page
- Hỗ trợ đăng ngay (publish ngay lập tức)
- Hỗ trợ đặt lịch đăng (scheduled) và quản lý ở Meta Business Suite
- Áp dụng cho cả image post, video post và video reel
1.3 Use case phù hợp
- Tự động hóa đăng blog từ CMS / AI / Notion
- Lên lịch nội dung marketing cho Facebook Page
- Chuẩn hóa quy trình đăng bài cho team content
2. Kiến trúc tổng thể workflow
2.1 Nguyên lý hoạt động của workflow
Phần này mô tả cách workflow vận hành từ đầu đến cuối, giúp bạn hiểu vì sao phải chia nhiều node như vậy và tại sao Facebook API cần xử lý theo từng bước.
2.1.1 Nguyên lý tổng quát (High-level)
Sơ đồ luồng tổng quát:
[Start / Form / Webhook]
│
▼
[Check Media Type]
┌───────────┴───────────┐
▼ ▼
[Image Flow] [Video / Reel Flow]
│ │
▼ ▼
[Upload Media
(unpublished)] [Upload Video]
│ │
▼ ▼
[Aggregate Media IDs] [Check Video Status]
│ │
└───────────┬───────────┘
▼
[Create Post]
(Publish Now / Scheduled)
│
▼
[Meta Business Suite]
│
▼
[Log / Email / DB]

Workflow hoạt động theo mô hình Pipeline + Router:
- Nhận input (text + image/video + config)
- Phân loại nội dung (Image vs Video)
- Xử lý media trước (upload unpublished)
- Tạo post (publish ngay hoặc scheduled)
- Theo dõi trạng thái & thông báo kết quả
Facebook không cho phép upload media và publish trong 1 bước duy nhất đối với các case nâng cao (multi-image, scheduled, video).
Lưu ý quan trọng
- Facebook Graph API bắt buộc:
- Upload media trước (ảnh / video)
- Sau đó mới tạo post
- Nếu cố gắng gộp chung:
- Post có thể không hiển thị
- Không có
permalink_url - Dễ lỗi silent (API trả success nhưng không có bài)
Vì vậy workflow bắt buộc phải tách ra thành nhiều node để đảm bảo ổn định.
2.1.2 Nguyên lý xử lý Image Post
Với Image Post, workflow tuân theo nguyên tắc:
Upload media trước → gom ID → tạo post sau

Cụ thể:
- Ảnh được upload lên Facebook với
published = false - Facebook trả về
media_fbidcho từng ảnh - Workflow gom các
media_fbidthànhattached_media[] - Gửi request tạo post:
published = true→ đăng ngaypublished = false + scheduled_publish_time→ đặt lịch
Vì sao phải làm vậy?
Cách này giúp:
Đăng nhiều ảnh trong 1 post
- Tạo Draft / Scheduled post trong Meta Business Suite
- Admin có thể chỉnh sửa lại trước khi publish
Đây là cách Meta khuyến nghị cho workflow production.
- Đăng nhiều ảnh trong 1 post
- Tạo Draft / Scheduled post trong Meta Business Suite
2.1.3 Nguyên lý xử lý Video / Reel
Video không thể publish ngay sau khi upload vì Facebook cần thời gian xử lý (processing).

Nguyên lý bắt buộc:
- Upload video (chunk/binary)
- Nhận
video_id - Check status video liên tục
- Chỉ publish khi video ở trạng thái
ready
Nếu bỏ bước check status:
Lỗi rất hay gặp với Video
- Video upload xong nhưng không xuất hiện trên Page
- Không publish được dù API trả
success = true - Không lấy được
permalink_url
Rule bắt buộc: Chỉ publish video khi status = ready.
- Video có thể upload thành công nhưng không xuất hiện trên Page
- Không lấy được
permalink_url
Với Video Reel:
- Áp dụng logic tương tự Image
- Có thể dùng
scheduled_publish_timeđể đặt lịch
2.1.4 Nguyên lý Router & If Node
Workflow sử dụng nhiều node If / Router để đảm bảo:

- Đúng loại nội dung → đúng luồng xử lý
- Không publish sai thời điểm
- Dễ mở rộng về sau
Các điều kiện thường dùng:
has_video === true/falsepublish_mode === now/scheduledvideo_status === ready
Nhờ router rõ ràng, workflow:
- Ít bug hơn
- Debug dễ hơn
- Team khác đọc vào vẫn hiểu logic
2.1.5 Nguyên lý thiết kế workflow (Design Principles)
Workflow này được thiết kế để:
- Chạy ổn định lâu dài (production-ready)
- Dễ debug khi Facebook API thay đổi
- Người khác đọc vào vẫn hiểu ngay
Workflow này được thiết kế theo các nguyên lý:
- Single Responsibility: mỗi node làm 1 việc rõ ràng
- Fail-safe: không publish nếu media chưa sẵn sàng
- Observable: luôn có output để log / gửi mail
- Extensible: dễ gắn thêm AI, CMS, DB
Đây là lý do workflow trông dài nhưng rất ổn định khi chạy production.
Workflow này được thiết kế theo các nguyên lý:
- Single Responsibility: mỗi node làm 1 việc rõ ràng
- Fail-safe: không publish nếu media chưa sẵn sàng
- Observable: luôn có output để log / gửi mail
- Extensible: dễ gắn thêm AI, CMS, DB
Đây là lý do workflow trông dài nhưng rất ổn định khi chạy production.
2.2 Các luồng chính
Workflow gồm 3 luồng xử lý chính:
- Luồng Image
- Upload ảnh
- Tạo post dạng image
- Đăng ngay hoặc đặt lịch
- Luồng Video / Reel
- Upload video
- Tạo video post hoặc reel
- Kiểm tra trạng thái xử lý video
- Publish hoặc scheduled
- Luồng điều phối (Router / If)
- Phân nhánh theo loại nội dung (image / video)
- Phân nhánh theo mode (publish ngay / scheduled)
3. Input đầu vào của workflow
Workflow nhận các input chính sau:

3.1 Nội dung bài viết
message: Nội dung text của bài post- Có thể lấy từ:
- Webhook
- Notion
- Google Sheet
- AI Agent (ChatGPT / Claude)
3.2 Media
- Image: URL hoặc binary file ảnh
- Video: URL hoặc binary file video
3.3 Cấu hình đăng bài
post_type:image|videopublish_mode:now|scheduledscheduled_time: thời gian đăng (timestamp, ISO format)
4. Luồng xử lý Image Post
Luồng Image được kích hoạt khi không có file video được upload từ form.
4.1 On form submission
Notion Callout – Tip sử dụng Form
- Nên validate input ngay từ form (bắt buộc content, media)
- Nếu dùng cho team content, chỉ expose các field cần thiết
- Access Token & Page ID nên để mặc định (hidden field)
Node: On form submission
Chức năng:
- Nhận input từ người dùng qua Form Trigger
Các field quan trọng:
- Điền nội dung vào đây →
content - Upload Image → binary image
- Thời gian đăng bài → publish mode
- Facebook Access Token
- Facebook Page ID
- Email nhận thông báo
4.2 Check Media Type
Node: Check Media Type1
Chức năng:
- Kiểm tra có video hay không
- Nếu không có video → đi vào nhánh xử lý Image
4.3 Split Image Binary Fields
Node: Split Image Binary Fields
Chức năng:
- Tách nhiều ảnh upload thành từng item riêng biệt
- Chuẩn hóa binary field về
Upload_Image
Lý do cần node này:
- Facebook API yêu cầu upload từng ảnh một
4.4 Upload Images to Drive
Node: Upload Images to Drive
Chức năng:
- Upload từng ảnh lên Google Drive
- Đặt tên file theo format:
yyyyMMdd_HHmmss_image_index.jpg
4.5 Process Media Data
Node: Process Media Data
Chức năng:
- Tổng hợp toàn bộ thông tin bài đăng:
- content
- media_type = Image
- publish_now / scheduled_time
- page_id
- access_token
Logic quan trọng:
- Nếu chọn đặt lịch →
publish_now = false - Tính
scheduled_timetheo phút/giờ
4.6 Create Post Folder & Move Media
Nodes:
- Create Post Folder
- Prepare Files For Moving1
- Move Image Video to Folder
Chức năng:
- Tạo folder theo format
FB_Post_yyyyMMdd_HHmmss - Di chuyển toàn bộ ảnh vào đúng folder
4.7 Upload Image lên Facebook (Unpublished)
Notion Callout – Rất quan trọng
Luôn để published = false ở bước upload image.
Nếu để true:
- Facebook sẽ publish từng ảnh riêng lẻ
- Không thể gom nhiều ảnh thành 1 post
- Không dùng được scheduled
Node: HTTP: Upload Image to FB1
Chức năng:
- Upload ảnh lên Facebook Page với:
published = false
Kết quả trả về:
idcủa từng ảnh (media_fbid)
4.8 Aggregate Image IDs
Node: Aggregate Image IDs2
Chức năng:
- Gom toàn bộ
media_fbidthành mảng - Chuẩn bị dữ liệu cho bước tạo post
4.9 Prepare Facebook Post Data
Node: Prepare Facebook Post Data
Chức năng:
- Chuẩn hóa payload gửi lên Facebook Feed API
Payload bao gồm:
- message
- attached_media
- published
- scheduled_publish_time
4.10 Post Image to Facebook Feed
Node: HTTP: Post Image to FB Feed1
Kết quả:
- Trả về
post_id - Post có thể ở trạng thái:
- published
- scheduled
4.11 Upload ảnh lên Facebook
- Workflow gọi Facebook Graph API để upload ảnh
- Ảnh được upload ở trạng thái:
published: false(nếu scheduled)- hoặc publish ngay
4.12 Tạo bài post từ image
- Sau khi upload ảnh thành công, workflow:
- Lấy
media_fbid - Gắn vào post
- Lấy
4.13 Đăng ngay hoặc đặt lịch
- Đăng ngay:
published: true
- Đặt lịch:
published: falsescheduled_publish_time- Post xuất hiện trong Meta Business Suite để chỉnh sửa
5. Luồng xử lý Video / Reel
5.1 Upload video
- Video được upload trước ở trạng thái nháp
- Nhận về:
video_id
5.2 Check trạng thái video
Notion Callout – Best Practice cho Video
- Không publish video ngay sau khi upload
- Luôn check status đến khi
ready - Với video dài, nên có delay / retry logic
Workflow sử dụng node Get Status Video / Reel để:
- Kiểm tra video đã xử lý xong hay chưa
- Tránh publish khi video chưa sẵn sàng
5.3 Publish hoặc Scheduled
- Khi video ở trạng thái
ready:- Publish ngay hoặc
- Đặt lịch bằng
scheduled_publish_time
- Với video reel:
- Có thể áp dụng logic scheduled tương tự image
6. Các node logic quan trọng
6.1 Node Check Post Status (Video)
- Kiểm tra:
- Video đã upload xong
- Đã sẵn sàng để publish chưa
6.2 Node If / Router
- Phân nhánh theo:
post_typepublish_mode
6.3 Node Prepare Post Data
- Chuẩn hóa payload gửi sang Facebook API
- Mapping các field:
- message
- media
- scheduled time
7. Quản lý bài viết trong Meta Business Suite
- Với các post
published: false+scheduled_publish_time: - Bài viết sẽ xuất hiện ở Meta Business Suite
- Admin có thể:
- Chỉnh sửa nội dung
- Đổi thời gian đăng
- Publish thủ công

8. Lỗi thường gặp & cách xử lý
Notion Callout – Cách debug nhanh
Khi workflow lỗi:
- Kiểm tra output node HTTP
- So sánh payload với Facebook Graph API docs
- Test lại bằng publish ngay trước, rồi mới scheduled
8.1 Upload thành công nhưng không thấy bài đăng
- Kiểm tra:
publishedđang làfalse- Post đang ở trạng thái scheduled
8.2 Video không publish được
- Nguyên nhân thường gặp:
- Video chưa xử lý xong
- Chưa check status trước khi publish
- Giải pháp:
- Bắt buộc dùng node Check Status Video
8.3 Không có permalink_url
permalink_urlchỉ có khi:- Post đã được publish thành công
9. Mở rộng workflow
Một số hướng mở rộng:
- Tích hợp AI sinh nội dung tự động
- Tích hợp Notion làm CMS
- Tự động log
post_id,permalink_urlvào Google Sheet / DB - Thêm retry & error handling
10. Kết luận
Workflow này giúp bạn:
- Chuẩn hóa quy trình đăng bài Facebook Page
- Tiết kiệm thời gian vận hành
- Dễ dàng mở rộng cho nhiều loại nội dung (image, video, reel)
Phù hợp cho cả cá nhân lẫn team marketing sử dụng lâu dài.