DIMORI logo
← Back to the blog

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 PostVideo / 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 postvideo 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ậytạ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:

  1. Nhận input (text + image/video + config)
  2. Phân loại nội dung (Image vs Video)
  3. Xử lý media trước (upload unpublished)
  4. Tạo post (publish ngay hoặc scheduled)
  5. 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

  1. Facebook Graph API bắt buộc:
  • Upload media trước (ảnh / video)
  • Sau đó mới tạo post
  1. 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ể:

  1. Ảnh được upload lên Facebook với published = false
  2. Facebook trả về media_fbid cho từng ảnh
  3. Workflow gom các media_fbid thành attached_media[]
  4. Gửi request tạo post:
    • published = true → đăng ngay
    • published = 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:

  1. Upload video (chunk/binary)
  2. Nhận video_id
  3. Check status video liên tục
  4. 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/false
  • publish_mode === now/scheduled
  • video_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:

  1. Luồng Image
    • Upload ảnh
    • Tạo post dạng image
    • Đăng ngay hoặc đặt lịch
  2. 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
  3. 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 | video
  • publish_mode: now | scheduled
  • scheduled_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_time theo 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ề:

  • id của từng ảnh (media_fbid)

4.8 Aggregate Image IDs

Node: Aggregate Image IDs2

Chức năng:

  • Gom toàn bộ media_fbid thà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

4.13 Đăng ngay hoặc đặt lịch

  • Đăng ngay:
    • published: true
  • Đặt lịch:
    • published: false
    • scheduled_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_type
    • publish_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
  • permalink_url chỉ 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_url và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.