DIMORI logo
← Back to the blog

# User Guide – n8n Workflow for Posting to Facebook Page (Text + Image/Video)

Content

This document provides a detailed guide on how to use an n8n workflow to automatically post content with images or videos to a Facebook Page, supporting instant publishing or scheduled posting via Meta Business Suite.

1. Workflow Overview

1.1 Introduction

The n8n Blog on FB Page workflow is designed to automate the entire process of posting content to a Facebook Page, including Image Posts and Video / Reel, with the ability to:

  • Publish instantly
  • Schedule posts
  • Create draft posts for admin review in Meta Business Suite

This workflow is especially suitable for integration with Notion / AI Agent / CMS / Internal Forms.

1.2 Objectives

The workflow is built to:

  • Automatically post text content + image or video to a Facebook Page
  • Support instant publishing
  • Support scheduled posting and management in Meta Business Suite
  • Apply to image posts, video posts, and video reels

1.3 Suitable Use Cases

  • Automating blog posting from CMS / AI / Notion
  • Scheduling marketing content for Facebook Page
  • Standardizing posting workflow for content teams

2. Overall Workflow Architecture

2.1 Workflow Operating Principles

This section explains how the workflow runs from start to finish, helping you understand why multiple nodes are required and why Facebook API must be processed step by step.

2.1.1 High-level Principle

Overall flow diagram:

[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]

The workflow follows a Pipeline + Router model:

  1. Receive input (text + image/video + config)
  2. Classify content (Image vs Video)
  3. Pre-process media (upload unpublished)
  4. Create post (publish now or scheduled)
  5. Monitor status & notify results

Facebook does not allow uploading media and publishing in a single step for advanced cases (multi-image, scheduled, video).

Important Note

  1. Facebook Graph API requires:
    • Upload media first (image / video)
    • Then create the post
  2. If trying to combine steps:
    • Post may not appear
    • No permalink_url
    • Silent errors may occur (API returns success but no post)

Therefore, the workflow must be split into multiple nodes for stability.


2.1.2 Image Post Processing Principle

For Image Posts, the workflow follows:

Upload media first → aggregate IDs → create post

Specifically:

  1. Images are uploaded with published = false
  2. Facebook returns media_fbid for each image
  3. The workflow aggregates them into attached_media[]
  4. Send request to create post:
    • published = true → publish immediately
    • published = false + scheduled_publish_time → schedule post

Why is this required?

This approach helps:

  • Post multiple images in one post
  • Create Draft / Scheduled posts in Meta Business Suite
  • Allow admin editing before publishing

This is Meta’s recommended approach for production workflows.


2.1.3 Video / Reel Processing Principle

Videos cannot be published immediately after upload because Facebook needs processing time.

Required process:

  1. Upload video (chunk/binary)
  2. Receive video_id
  3. Continuously check video status
  4. Only publish when status is ready

If skipping status check:

Common Video Issues

  • Video uploaded but not visible on Page
  • Cannot publish even if API returns success = true
  • Cannot get permalink_url

Mandatory rule: Only publish when status = ready

For Video Reels:

  • Apply similar logic as Image
  • Can use scheduled_publish_time

2.1.4 Router & If Node Principles

The workflow uses multiple If / Router nodes to ensure:

  • Correct content type → correct flow
  • Avoid wrong publish timing
  • Easy to extend later

Common conditions:

  • has_video === true/false
  • publish_mode === now/scheduled
  • video_status === ready

Benefits:

  • Fewer bugs
  • Easier debugging
  • Easy for team understanding

2.1.5 Workflow Design Principles

This workflow is designed to:

  • Run reliably in production
  • Be easy to debug when Facebook API changes
  • Be easy to understand for other developers

Design principles:

  • Single Responsibility: each node does one clear task
  • Fail-safe: do not publish if media is not ready
  • Observable: always produce logs/output
  • Extensible: easy to integrate AI, CMS, DB

This is why the workflow is long but very stable in production.


2.2 Main Flows

The workflow includes 3 main flows:

  1. Image Flow

    • Upload images
    • Create image post
    • Publish or schedule
  2. Video / Reel Flow

    • Upload video
    • Create video/reel post
    • Check video status
    • Publish or schedule
  3. Router Flow

    • Branch by content type (image / video)
    • Branch by mode (publish now / scheduled)

3. Workflow Inputs

The workflow receives the following main inputs:

3.1 Post Content

  • message: Text content of the post
  • Can be sourced from:
    • Webhook
    • Notion
    • Google Sheet
    • AI Agent (ChatGPT / Claude)

3.2 Media

  • Image: URL or binary image file
  • Video: URL or binary video file

3.3 Posting Configuration

  • post_type: image | video
  • publish_mode: now | scheduled
  • scheduled_time: posting time (timestamp, ISO format)

4. Image Post Processing Flow

The Image flow is triggered when no video file is uploaded from the form.

4.1 On form submission

Form Usage Tips

  • Validate input directly at the form level (require content, media)
  • If used for a content team, only expose necessary fields
  • Access Token & Page ID should be set as default (hidden fields)

Node: On form submission

Function:

  • Receive user input via Form Trigger

Important fields:

  • Enter content here → content
  • Upload Image → binary image
  • Posting time → publish mode
  • Facebook Access Token
  • Facebook Page ID
  • Notification email

4.2 Check Media Type

Node: Check Media Type1

Function:

  • Check whether a video exists
  • If no video → go to Image processing flow

4.3 Split Image Binary Fields

Node: Split Image Binary Fields

Function:

  • Split multiple uploaded images into individual items
  • Normalize binary field to Upload_Image

Reason for this node:

  • Facebook API requires uploading images one by one

4.4 Upload Images to Drive

Node: Upload Images to Drive

Function:

  • Upload each image to Google Drive
  • File naming format:
    • yyyyMMdd_HHmmss_image_index.jpg

4.5 Process Media Data

Node: Process Media Data

Function:

  • Aggregate all post information:
    • content
    • media_type = Image
    • publish_now / scheduled_time
    • page_id
    • access_token

Important logic:

  • If scheduled → publish_now = false
  • Calculate scheduled_time by minute/hour

4.6 Create Post Folder & Move Media

Nodes:

  • Create Post Folder
  • Prepare Files For Moving1
  • Move Image Video to Folder

Function:

  • Create folder with format FB_Post_yyyyMMdd_HHmmss
  • Move all images into the correct folder

4.7 Upload Image to Facebook (Unpublished)

Important Note

Always set published = false when uploading images.

If set to true:

  • Facebook will publish each image separately
  • Cannot group multiple images into one post
  • Cannot use scheduling

Node: HTTP: Upload Image to FB1

Function:

  • Upload images to Facebook Page with:
    • published = false

Response:

  • Returns id for each image (media_fbid)

4.8 Aggregate Image IDs

Node: Aggregate Image IDs2

Function:

  • Combine all media_fbid into an array
  • Prepare data for post creation

4.9 Prepare Facebook Post Data

Node: Prepare Facebook Post Data

Function:

  • Normalize payload for Facebook Feed API

Payload includes:

  • message
  • attached_media
  • published
  • scheduled_publish_time

4.10 Post Image to Facebook Feed

Node: HTTP: Post Image to FB Feed1

Result:

  • Returns post_id
  • Post can be:
    • published
    • scheduled

4.11 Upload Images to Facebook

  • The workflow calls Facebook Graph API to upload images
  • Images are uploaded with:
    • published: false (if scheduled)
    • or published immediately

4.12 Create Post from Images

  • After successful upload:
    • Retrieve media_fbid
    • Attach them to the post

4.13 Publish or Schedule

  • Publish immediately:
    • published: true
  • Schedule post:
    • published: false
    • scheduled_publish_time
    • Post appears in Meta Business Suite for editing

5. Video / Reel Processing Flow

5.1 Upload video

  • Video is uploaded first as draft
  • Returns:
    • video_id

5.2 Check video status

Video Best Practice

  • Do not publish immediately after upload
  • Always check status until ready
  • For long videos, implement delay / retry logic

The workflow uses node Get Status Video / Reel to:

  • Check whether video processing is complete
  • Prevent publishing when video is not ready

5.3 Publish or Scheduled

  • When video status is ready:
    • Publish immediately or
    • Schedule using scheduled_publish_time
  • For video reels:
    • Can apply scheduling logic similar to images

6. Important Logic Nodes

6.1 Node Check Post Status (Video)

  • Check:
    • Whether video upload is complete
    • Whether it is ready to publish

6.2 Node If / Router

  • Branch based on:
    • post_type
    • publish_mode

6.3 Node Prepare Post Data

  • Normalize payload sent to Facebook API
  • Map fields:
    • message
    • media
    • scheduled time

7. Managing Posts in Meta Business Suite

  • For posts with published: false + scheduled_publish_time:
  • The post will appear in Meta Business Suite
  • Admin can:
    • Edit content
    • Change posting time
    • Publish manually

8. Common Issues & Solutions

Quick Debug Tips

When the workflow fails:

  • Check HTTP node output
  • Compare payload with Facebook Graph API docs
  • Test with immediate publish first, then scheduled

8.1 Upload successful but no post appears

  • Check:
    • published is false
    • Post is in scheduled state

8.2 Video cannot be published

  • Common causes:
    • Video not fully processed
    • No status check before publishing
  • Solution:
    • Must use Check Status Video node
  • permalink_url is only available when:
    • Post is successfully published

9. Workflow Extensions

Possible enhancements:

  • Integrate AI for automatic content generation
  • Use Notion as CMS
  • Automatically log post_id, permalink_url to Google Sheet / DB
  • Add retry & error handling

10. Conclusion

This workflow helps you:

  • Standardize Facebook Page posting process
  • Save operational time
  • Easily scale for multiple content types (image, video, reel)

Suitable for both individuals and marketing teams for long-term use.