Auto-Post Instagram Carousels from Google Sheets + Drive (Cloudinary + IG Graph)
This workflow checks your Google Sheet for “Carousel” posts to do, pulls images from a Drive folder, uploads them to Cloudinary, creates an Instagram carousel, publishes it, and marks the row as “Processed”.
Benefits
- Hands-off posting from a simple Google Sheet queue
- Pulls all images from a Drive folder for each carousel
- Uses Cloudinary for fast, reliable hosting
- Posts via Instagram Graph API (official)
- Updates your Sheet status to “Processed” after publish
How It Works
- Schedule Trigger runs every few minutes.
- Get Execution for Carousel reads rows where
Status = ToDo
and Type = Carousel
.
- Get image list loads all files from the Drive folder in that row.
- Download Image fetches each file from Drive.
- Upload to Cloudinary stores the image and returns a public URL.
- Setup for Instagram prepares
access_token
, ig_user_id
, image_url
, caption
.
- Create Media Container (Image) creates an IG container for each image.
- Combine containers collects all container IDs.
- Create Media Container (Carousel) builds one carousel with the children IDs + caption.
- Publish Instagram Carousel publishes the carousel post.
- Update Execute sets
Status = Processed
for that ExecuteId in Sheets.
Who Is This For
- Social media managers batching carousels
- Agencies posting client content on a schedule
- Creators who organize posts in Google Sheets
Setup
- Google Sheets: set Spreadsheet and “Execute” tab (with
ExecuteId
, Folder
, Expected content
, Status
, Type
)
- Google Drive: put carousel images in the folder referenced by the row
- Cloudinary: set
cloud name
+ upload_preset
- Instagram Graph: get
ig_user_id
and a valid access_token
- In n8n: paste tokens/IDs into the Set nodes and HTTP nodes as shown
Tips
- Keep image order in Drive as you want it to appear (or sort before upload)
- Caption comes from the Sheet field
Expected content
- Make sure the IG account is a Business/Creator account connected to a Facebook Page
- Use high-res images; Cloudinary will optimize delivery
- Add error alerts (Slack/Email) if a step fails
ROI
- Save 2–4 hours/week on manual uploads
- Fewer posting mistakes (everything logged in Sheets)
- Scales easily to multiple brands and calendars
Strategy Insights
- Add a “Schedule_at” column and delay publishing until that time
- Write back the IG post ID to Sheets for tracking
- Extend to cross-post (e.g., Facebook Page) with the same media containers
Check Out My Channel
For more practical automation workflows for content teams, check out my YouTube channel where I share the exact systems I use to run social posting at scale.