n8n social media scheduling: Preflight node

    Schedule posts to 12 networks from n8n: the Preflight node, a signed trigger, five templates and a rules check in the workflow before anything goes out.

    Updated · 6 min read · Prices and limits checked against the vendors' own pages and APIs on that date.

    Preflight has an n8n node, n8n-nodes-preflight, that schedules, queues and publishes social media posts to YouTube, TikTok, Instagram, Facebook, Threads, LinkedIn, Pinterest, Bluesky, Mastodon, Telegram, Discord and Tumblr from any n8n workflow, and a trigger that starts a workflow when a post goes live or fails. What sets it apart from posting through each network's own node is the step before: every post can be validated against each network's real publishing rules inside the workflow, so a caption that is too long for Bluesky or a video TikTok would reject stops at the n8n canvas instead of failing at three in the morning.

    What the node does

    The Preflight node has three resources.

    • Post. Validate dry-runs a post against every chosen network and returns ok, the number of errors and warnings, and each issue as a plain sentence, such as "Text is 385 characters; Bluesky allows 300." Create saves a draft, schedules it for a time, schedules it for a local time per channel, adds it to the queue, or publishes it now. Get, Get Many, Update, Delete and Retry work on posts that already exist.
    • Media. Upload takes a public URL, which Preflight downloads itself, or binary data from an earlier node, which goes straight to storage through signed URLs in 16 MB parts. It waits until the file is ready and measured, then returns the media ID a post uses. Get and Delete do the rest.
    • Channel. Get Many lists the connected accounts with their network, time zone and whether they need reconnecting. Get Next Queue Times says when the queue would post next on each one.

    The Preflight Trigger starts a workflow on post.published (once per channel, with the post's link) and post.failed (once per channel, after retrying has stopped, with the reason and whether a retry can work). Activating the workflow registers a webhook in Preflight; deactivating it removes the webhook. Every delivery is signed with HMAC-SHA256 over a timestamp and the body, and the trigger refuses anything unsigned, changed or older than five minutes.

    The action node can also be handed to n8n's AI Agent as a tool, so an agent can draft, validate and schedule posts itself.

    Installing it

    The node is a community node published on npm with provenance, built and released only by GitHub Actions, with no runtime dependencies. It has been submitted to n8n for verification, which is what makes a community node available on n8n Cloud. Until n8n approves it:

    • Self-hosted n8n. Open Settings, then Community Nodes, choose Install and enter n8n-nodes-preflight. The instance owner can do this. It has been tested on n8n 2.43.
    • n8n Cloud. Call the REST API with the HTTP Request node and an API key in the Authorization header, or connect the Preflight MCP server to an AI Agent through n8n's MCP Client Tool with the same key as a bearer token. Both reach the same features the node uses.

    Then create the credential:

    1. Sign in to Preflight and connect your social accounts there. Accounts are connected in the app, through each network's own sign-in, never through the API.
    2. Under Settings, then API keys, create a key. Every plan has API access, Free included.
    3. In n8n, add a Preflight API credential and paste the key. The credential test reads your channel list.

    Give the key only the scopes the workflows need:

    ScopeNeeded for
    posts:readChannels, reading posts, queue times, the credential test
    posts:writeDrafts, and changing or deleting drafts
    posts:publishAnything that goes live: scheduling, queueing, publishing now, retrying
    media:read, media:writeUploading, reading and deleting files
    webhooks:read, webhooks:writeThe trigger

    A key with only posts:read and posts:write can never publish anything, which is a sensible start for a workflow written by someone else.

    Five templates

    The templates folder on GitHub has five workflows to import with Import from File. Each has a sticky note that explains its setup.

    TemplateWhat it does
    Blog RSS to AI caption to draftsNew articles get an AI-written caption, Preflight validates it per network, and only captions every network accepts become drafts.
    Google Sheets content calendarRows marked Ready are validated, then scheduled or queued, and written back as Scheduled, or Needs fix with the reason.
    One vertical video to Shorts, Reels and TikTokA video uploaded through an n8n form is checked against all three networks' video rules and queued.
    Notion database to PreflightThe sheet workflow for a Notion content database.
    Failed post to Slack or Telegrampost.failed becomes an alert with the network, the reason, whether a retry can work and a link to the post.

    All five follow the same three rules. They validate before they create. They build idempotency keys from the article link, the row or the page and a hash of the text, so running a workflow twice never makes two posts. And nothing goes live by surprise: the RSS template makes drafts, and TikTok in the video template goes to the creator's inbox as Only me until someone changes it.

    Why validate inside the workflow

    An automation fails where nobody is watching. Most of what makes a post fail is known before it is sent: a caption over a network's limit counted the way that network counts it, a link TikTok will not take, a video outside a network's length, frame-rate or aspect-ratio range, a Pinterest pin without a board, a YouTube upload without a title, a plan with no publishes left. Preflight checks all of these against the rules each network enforces, the same check its web app runs, and returns the result as data the workflow can branch on.

    The pattern is short:

    1. Preflight, Post, Validate with the channels and the text.
    2. If ok is true, Preflight, Post, Create.
    3. Otherwise, send issues somewhere a person will read them: back into the sheet row, to Slack, or to a second AI step that shortens the caption and tries again.

    Create runs the same checks again on the server and refuses a post that would fail, so a workflow that skips step 1 still cannot publish something broken. Step 1 is what lets the workflow say why and fix it.

    Safe to run twice

    Automations retry. n8n's Retry on Fail, a schedule that overlaps itself, an RSS feed that shows an item again: each would publish twice through an API that does not guard against it.

    • Idempotency keys. Every Create sends an Idempotency-Key. The same key returns the first post instead of making a second, and the same key with different text is refused. For content that can be seen twice, build the key from the content, such as a hash of the article link.
    • Publish Now has to be confirmed. Choosing Publish Now also needs Confirm Publish Now, so a test run cannot post by accident.
    • No time in the past. A scheduled time more than five minutes ago is refused, so an old item can never go out at once.
    • Deliveries carry an ID. A trigger delivery keeps the same deliveryId across retries, so a workflow can ignore a repeat.

    Webhooks the node does not use yet

    Preflight's webhooks also send account.needs_reconnect when a channel's sign-in stops working and a refresh could not fix it. Every post scheduled to that channel will fail until someone connects it again, so this is the alert worth having. The trigger in version 0.1 listens to the two post events; until it adds this one, subscribe an n8n Webhook node to it through the API. POST /v1/workspace/webhooks/{id}/test sends a signed sample of any event, marked as a test, so the fields can be mapped before anything real happens.

    What it cannot do

    • Connect accounts. Social accounts are connected in the Preflight app, because each network's sign-in has to be done by a person. The workflow uses them once they are there.
    • Post to X or Reddit. Preflight publishes to the twelve networks listed above.
    • Run on n8n Cloud as a node before verification. Until n8n approves it, Cloud users reach the same features through the HTTP Request node or the MCP server.
    • Lift a network's own limits. YouTube's daily upload quota, Instagram's 50 posts in 24 hours and TikTok's creator limits still apply. When one stops a post, the reason comes back in plain words, and post.failed says whether a retry can work.

    Questions people ask

    Is there an n8n node for scheduling social media posts?
    Yes. n8n-nodes-preflight schedules, queues and publishes posts to twelve networks, including YouTube, TikTok, Instagram, LinkedIn, Bluesky and Mastodon, and validates each post against every network's rules before it is created. Install it on self-hosted n8n under Settings, Community Nodes.
    Does the Preflight node work on n8n Cloud?
    Not yet as a node: it has been submitted to n8n for verification, which is what Cloud requires of community nodes. Meanwhile, Cloud workflows can call the same REST API through the HTTP Request node, or the Preflight MCP server through an AI Agent's MCP Client Tool.
    Can n8n post the same content to several social networks at once?
    With the Preflight node, one Create posts to every channel you pick, with per-network text and options where they differ. Validate first and the workflow learns which networks would refuse the post and why, before anything is sent.
    How do I stop an n8n workflow from posting twice?
    Send an Idempotency-Key with each post, built from the content, such as a hash of the RSS item's link. Preflight returns the first post for a repeated key instead of creating another, so retries and overlapping runs are safe.
    Do I need a paid Preflight plan to use the n8n node?
    No. API keys and webhooks come with every plan, Free included. The plan sets how many channels and publishes a month the workflows can use, and Validate reports when a post would go over that allowance.

    Write it once. Let the rules be our problem.

    Preflight checks every post against each network's rules before it leaves, then publishes it to twelve networks. Free plan, no card.