Skip to main content

Automated Instagram Reels posting from Airtable content calendar

Workflow preview

Workflow preview
100%
Automated Instagram Reels posting from Airtable content calendar preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

A guide to understand, operate, and extend the workflow. 1) What this workflow does (and why it’s useful) Goal: Turn a simple Airtable sheet into a content calendar that automatically publishes Ins...

Best for

  • Social Media automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.stickynote, n8n-nodes-base.cron, n8n-nodes-base.airtable, n8n-nodes-base.splitout, n8n-nodes-base.set, n8n-nodes-base.httprequest, n8n-nodes-base.wait

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by SuS.

Original n8n.io source

1.1 Workflow description

Title
Automated Instagram Reels posting from Airtable content calendar
Workflow name
Automated Instagram Reels posting from Airtable content calendar

A guide to understand, operate, and extend the workflow.


1) What this workflow does (and why it’s useful)

Goal: Turn a simple Airtable sheet into a content calendar that automatically publishes Instagram Reels via the Instagram Graph API, on a schedule you control in n8n.

Why this matters:

  • Your team plans everything in Airtable (user-friendly, collaborative).
  • n8n posts for you at the right time, every time.
  • You keep full control (no third-party SaaS lock-in, no manual uploads).
  • Later, you can reuse the same queue to post YouTube Shorts / TikTok (omnichannel).

Core flow (one row = one post):

  1. Cron starts the workflow at a set time.
  2. Airtable – Search grabs due rows: status = "To Post" AND scheduled_at <= NOW() AND platform = "IG".
  3. Split Out processes each row individually.
  4. Set (Map fields) normalizes Airtable fields → video_url, caption, recordId.
  5. IG: Create Media Container registers your video as REEL.
  6. Wait 90s lets IG process the video.
  7. IG: Publish Reel publishes the container.
  8. Airtable – Update marks the row as Posted, stores ig_media_id, and timestamp.

2) Architecture at a glance

[Cron] 
  → [Airtable: Search records]
    → [Split Out: records]
      → [Set: Map fields]
        → [IG: Create Media Container]
          → [Wait 90s]
            → [IG: Publish Reel]
              → [Airtable: Update record]

Sticky Notes inside the workflow explain each step (they’re rendered from parameters.content with Markdown).


3) Airtable schema (recommended)

Create a table (e.g., Posts) with these fields:

Field Type Purpose
video_url URL or Text Directly accessible (public) URL to your MP4
caption Long text Final caption (hashtags, line breaks, emojis)
platform Single select Set IG for this workflow
status Single select To Post → will be picked up; Posted later
scheduled_at Date/Time (UTC) When to post
ig_media_id Text (optional) Filled by n8n after publishing
posted_at Date/Time Filled by n8n after publishing

Filter used in the Airtable “Search records” node:

AND({status}='To Post', {scheduled_at}<=NOW(), {platform}='IG')

> Tip: If you localize/rename fields, update the filter accordingly.


4) Prerequisites & credentials

  • Instagram Business/Creator account connected to a Facebook Page.
  • IG User ID for the connected account.
  • Long-lived IG Access Token with permissions to create and publish content.
  • n8n environment variables (Settings → Environments):
    • IG_API_VERSION (e.g., v21.0)
    • IG_USER_ID
    • IG_ACCESS_TOKEN
  • Airtable credential in n8n using a Personal Access Token (as in your example).
  • A publicly accessible video_url (e.g., S3/GCS signed URL, public CDN, Drive/Dropbox direct link). The API pulls from your URL; it cannot fetch files behind logins.

5) Node-by-node deep dive (what each node expects/returns)

A) Cron Trigger

  • What it does: Starts the workflow on a schedule (daily at 09:00 in the template).
  • How to use: Adjust hours/minutes to your cadence (hourly, twice a day, etc.).

B) Airtable: Search records

  • Operation: search
  • Base/Table: Select from dropdowns (matches your account).
  • Options → filterByFormula: AND({status}='To Post', {scheduled_at}<=NOW(), {platform}='IG')
  • Return: An array under records[]. Each record has id and fields.

C) Split Out: records

  • What it does: Turns the records[] array into individual items.
  • Why: Downstream steps can then act on each post separately.

D) Set: Map fields

  • What it does: Normalizes data to predictable keys and keeps the recordId.
  • Outputs:
    • recordId = {{$json.id}}
    • video_url = {{$json.fields.video_url}}
    • caption = {{$json.fields.caption}}
    • scheduled_at = {{$json.fields.scheduled_at}}

E) IG: Create Media Container (REELS)

  • Endpoint: POST https://graph.facebook.com/{v}/{ig-user-id}/media
  • Body params:
    • video_url = {{$json.video_url}}
    • caption = {{$json.caption}}
    • media_type=REELS
    • share_to_feed=true (optional)
    • access_token=${IG_ACCESS_TOKEN}
  • Return: JSON with container id under id (this is your creation_id for publishing).

F) Wait 90s

  • Why: IG needs time to process the video behind video_url.
  • Tip: If your videos are large or high bitrate, you may increase to 120–180s.

G) IG: Publish Reel

  • Endpoint: POST https://graph.facebook.com/{v}/{ig-user-id}/media_publish
  • Body params:
    • creation_id = {{$json.id}} (the container id from step E)
    • access_token = ${IG_ACCESS_TOKEN}
  • Return: JSON with id = ig_media_id (the published media).

H) Airtable: Update record

  • What it does: Writes results back to the same row.
  • Fields updated (example):
    • status = "Posted"
    • ig_media_id = {{$json.id}}
    • posted_at = {{$now}}

6) First-run checklist (do this once)

  1. In both Airtable nodes, pick your Base and Table (via dropdown).
  2. Confirm filterByFormula matches your field names exactly.
  3. Add one test row in Airtable:
    • video_url = a public MP4 URL
    • caption = a small caption
    • platform = IG
    • status = To Post
    • scheduled_at = in the past (so it’s due now)
  4. Set Cron to run in the next minute (or click Execute Workflow manually).
  5. Confirm the flow:
    • Airtable search → returns 1 record
    • Container created → you get an id
    • After 90s → Publish returns a media id
    • Airtable updated → row becomes Posted with ig_media_id and posted_at

7) Daily operations (how to use it day-to-day)

  • Your team fills Airtable with upcoming posts.
  • Keep status = To Post, set accurate scheduled_at in UTC.
  • n8n’s Cron checks regularly and posts due items.
  • After publishing, the row is marked Posted (so it won’t re-post).

Backfilling:
If you need to post a bunch of older content, set scheduled_at in the past for those rows and let Cron pick them up. If needed, run the workflow manually.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Sticky: Scheduler

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 2 - Cron Trigger

Type / Role
n8n-nodes-base.cron - cron
Config choices
Version 1

Block 3 - Sticky: Airtable Search

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 4 - Airtable: Search records

Type / Role
n8n-nodes-base.airtable - airtable
Config choices
Version 2.1

Block 5 - Sticky: Split

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 6 - Split Out: records

Type / Role
n8n-nodes-base.splitOut - splitOut
Config choices
Version 1

Block 7 - Sticky: Normalize

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 8 - Set: Map fields

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.2

Block 9 - Sticky: IG Container

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 10 - IG: Create Media Container

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 11 - Sticky: Wait

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 12 - Wait 90s

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 13 - Sticky: Publish

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 14 - IG: Publish Reel

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 15 - Sticky: Airtable Update

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 16 - Airtable: Update record

Type / Role
n8n-nodes-base.airtable - airtable
Config choices
Version 2.1

3. Summary Table

Workflow Automated Instagram Reels posting from Airtable content calendar
Complexity advanced
Nodes 16
Categories Social Media
Author SuS
Published 31 Aug 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/8098/8098.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Automated Instagram Reels posting from Airtable content calendar do?

A guide to understand, operate, and extend the workflow. 1) What this workflow does (and why it’s useful) Goal: Turn a simple Airtable sheet into a content calendar that automatically publishes Ins...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Social Media use case.