📱 Post scheduled social content to Facebook, Instagram, and TikTok with Meta and Buffer
⚡ 74 views · 📱 Social Media & Email Marketing
💡 Pro Tip — Since TikTok doesn’t have a public API, getting data usually means fragile HTTP scraping. ScraperNode is a community node that gives you clean JSON for TikTok profiles, videos, and comments — drop it into your workflow and skip the parsing.
Description
Quick overview
This workflow runs every two minutes to fetch due social posts from your app, publishes them to Facebook Pages and Instagram (via the Meta Graph API) and to TikTok (via Buffer), and then reports per-platform posting results back to your app.
How it works
- Runs every 2 minutes and calls your app’s
/posts/dueendpoint to retrieve posts scheduled for publishing. - For posts that include Facebook, it publishes either a photo or a video to the configured Facebook Page using the Meta Graph API.
- For posts that include Instagram, it creates an Instagram media container for an image or a Reel via the Meta Graph API.
- For Instagram Reels, it waits and polls the container status (up to 20 retries) until processing finishes or errors.
- Once the Instagram container is ready, it publishes the media to Instagram using the Meta Graph API.
- For posts that include TikTok and are videos, it sends a “share now” publish request to Buffer’s API and checks whether Buffer accepted the post.
- After each platform attempt, it POSTs a
POSTEDorFAILEDstatus (and any external ID or error details) back to your app at/posts/{id}/result.
Setup
- Create an HTTP Header Auth credential for your app API and update the base URL and
clientIdquery parameter used forhttps://your-app.com/api/n8n/posts/due. - Create a Meta Graph API access token credential (HTTP Query Auth) and replace
YOUR_FB_PAGE_IDandYOUR_IG_ACCOUNT_IDwith your Facebook Page ID and Instagram Business/Creator account ID. - Create a Buffer API credential (HTTP Header Auth) and replace
YOUR_BUFFER_CHANNEL_IDwith the Buffer channel ID for your TikTok account. - Ensure your app’s
/posts/dueresponse includesid,platforms,mediaType,mediaUrl, andcaption, and that/posts/{id}/resultaccepts the workflow’s result payload.
đź”— Nodes Used
HTTP Request, Schedule Trigger
📥 Import
Download workflow.json and import into n8n:
Workflow menu → Import from File