Schedule Social Media Posts from Google Sheets to Twitter & Instagram

Go to Workflow
0 views
Built by Parag Javale Parag Javale
Created on June 05, 2026

Description

Social Media Auto-Poster (Google Sheets → Twitter & Instagram)

This workflow automatically:
Pulls rows marked as Pending from a Google Sheet.
Generates a formatted Instagram caption and HTML preview.
Converts the HTML into an image via HCTI.io.
Posts the content:
As a tweet (text only) to Twitter (X).
As a post (image + caption) to Instagram via the Facebook Graph API.
Marks the row in Google Sheets as Posted with a timestamp.

It runs every 5 hours (configurable via the Schedule Trigger).

Requirements

Google Sheets API Credentials** connected in n8n.
HCTI.io account** (HTML → Image API).
Twitter (X) OAuth1 credentials**.
Facebook/Instagram Graph API** access token (for the business account/page).
A Google Sheet with at least these columns:
RowID
Caption
Desc
Hashtags
Status

Set Status to Pending for any row you want posted.

Setup

Import the JSON workflow (My_workflow.json) into your n8n instance.
Link all credentials (replace placeholders with your own API keys and tokens).
Update the Google Sheet ID and Sheet Name inside the Get row(s) in sheet and Update Status Posted nodes.
(Optional) Adjust the posting interval in the Schedule Trigger node.

How It Works

Trigger: Runs every 5 hours.
Fetch Rows: Reads Google Sheets for rows with Status = Pending.
Caption Generation: Combines Desc + Hashtags into final_caption.
HTML → Image: Converts caption to a styled 1080x1080 post.
Social Posting:
Posts the caption to Twitter (text only).
Uploads the image + caption to Instagram.
Update Status: Marks the row as Posted on [timestamp].

Notes

Facebook/Instagram tokens expire; refresh or use long-lived tokens.
HCTI.io may require a paid plan for high volumes.
Works best with a business Instagram account linked to a Facebook Page.

License

This workflow can be reused and adapted freely under the MIT license.

Nodes Used (3)

Facebook Graph API
n8n-nodes-base.facebookGraphApi
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest