MCP (streamable HTTP) or REST API · Facebook

Automate Facebook Page posts in n8n with an approval step

n8n is often the glue between a website and its Facebook Page: a new blog post, a new event in the calendar, a form from a volunteer. Posting those straight to the Page is risky because one malformed item becomes a public post. SocialHandoff adds a review step. n8n sends the post to the REST API, it lands in the approval inbox, and a person approves it for the right Page.

Prompt

(AI Agent node system prompt) Write one Facebook Page post for a new event from the calendar item: title, date and time, place, one sentence on why to come, and the registration link. Under 90 words. Output only the post.

How to do it

  1. Connect Facebook and mint a key In https://app.socialhandoff.com, open Connections, sign in with Facebook and pick the Pages to connect; each Page becomes its own channel. Then create an agent key named n8n scoped to Facebook with draft permission.
  2. Set up the trigger Start with a trigger, for example a Google Calendar event created, and generate the text with an AI Agent node or an expression.
  3. Import media by URL Add an HTTP Request node: POST https://app.socialhandoff.com/v1/media/import with JSON {"url": public https link, "alt": description} for photos (up to 10, each with alt text) or one video. No multipart needed. Keep the id it returns for the next step.
  4. Create the post Add an HTTP Request node: POST https://app.socialhandoff.com/v1/posts with a bearer header and JSON body {"body": text, "networks": ["facebook"], "mode": "submit"}, adding "mediaIds" only when photos were uploaded. The post lands in the approval inbox.
  5. Approve for the right Page The card shows which Page the post goes to. Approve on desktop or in the phone swipe stack, and it publishes to that Page at the scheduled time.

Example draft

Free workshop: Intro to home composting.

Saturday, November 8, 10:00 to 11:30, at the community garden shed. Learn what to compost, what to skip, and how to avoid the smell, then take home a starter bag.

Register here: https://example.com/events/composting

Gotchas

  • Calendar triggers fire again when an event is edited. Send an idempotencyKey built from the event id so an edit returns the existing draft instead of creating a second one.
  • Facebook Page tokens do not expire, but removing the app's access in Facebook disconnects the Page. Reconnect it in Connections.
  • The import URL must be public https. A cloud storage link that needs sign-in fails the import; use a shared link or a presigned URL in the expression.
  • Only Facebook Pages can be connected, not personal profiles. Every Page you grant at sign-in becomes its own channel, so check which Page the card names before approving.
Facebook
  • Where you can post: Facebook Pages only. The API does not allow posting to personal profiles or to Groups through SocialHandoff.
  • Page access: You need a role on the Page that allows creating content.
  • Photos: One photo with alt text, or up to 10 photos in one post.
  • Video: One video per post.
Facebook post scheduler for Pages, with approval built in

Frequently asked questions

Can I post to a personal Facebook profile?
No. Meta only allows API publishing to Pages. Personal profiles cannot be connected.
Can I use the MCP Client Tool instead of HTTP Request?
Yes. The MCP Client Tool exposes attach_media and draft_post to the AI Agent node. The HTTP Request node is simpler when the workflow, not the model, decides which file to attach.
Do Facebook Page posts need an image?
No. A Page post can be text and a link, one or more photos (up to 10), or one video.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial