This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Daily Camerit Social Auto-Poster",
"active": false,
"settings": {},
"tags": [],
"nodes": [
{
"id": "Cron",
"name": "Cron",
"type": "n8n-nodes-base.cron",
"typeVersion": 1,
"parameters": {
"triggerTimes": [
{
"mode": "everyDay",
"hour": 9,
"minute": 0,
"second": 0,
"timezone": "Africa/Cairo"
}
]
}
},
{
"id": "SetDate",
"name": "SetDate",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"parameters": {
"functionCode": "item.today = new Date().toLocaleDateString('en-GB',{weekday:'long',month:'long',day:'numeric',year:'numeric'}); return item;"
}
},
{
"id": "GPT",
"name": "GPT",
"type": "n8n-nodes-base.openai",
"typeVersion": 2,
"parameters": {
"model": "gpt-4o-mini",
"temperature": 0.7,
"maxTokens": 512,
"messagesUi": {
"messageValues": [
{
"role": "system",
"text": "You are Camerit's social copy assistant."
},
{
"role": "user",
"text": "Generate JSON keys twitter, facebook, instagram, linkedin, image_prompt. Twitter \u2264270 chars (no hashtags). Instagram \u226420 hashtags. LinkedIn \u22641200 chars. Theme {{ $json.today }}."
}
]
}
},
"credentials": {
"openAIApi": {
"name": "<your credential>"
}
}
},
{
"id": "Sanity",
"name": "Sanity",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"parameters": {
"functionCode": "// trim twitter etc.\nconst d=JSON.parse(items[0].json.choices[0].message.content);\nif(d.twitter.length>280)d.twitter=d.twitter.slice(0,277)+'\u2026';\nitems[0].json.data=d;return items;"
}
},
{
"id": "Dalle",
"name": "Dalle",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://api.openai.com/v1/images/generations",
"method": "POST",
"sendBody": true,
"jsonParameters": true,
"bodyParametersJson": "={\"model\":\"dall-e-3\",\"prompt\":\"{{$json.data.image_prompt}} white background top-right free for logo\",\"size\":\"1024x1024\",\"n\":1}"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"id": "Download",
"name": "Download",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "={{$json.data[0].url}}",
"responseFormat": "file"
}
},
{
"id": "Logo",
"name": "Logo",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"parameters": {
"functionCode": "const Jimp=require('jimp');\nasync function run(){const logo=await Jimp.read($env.LOGO_URL);const img=await Jimp.read(items[0].binary.data);logo.resize(img.bitmap.width*0.18,Jimp.AUTO);img.composite(logo,img.bitmap.width-logo.bitmap.width-20,20);items[0].binary.data=await img.getBufferAsync(Jimp.MIME_JPEG);return items;}return run();"
}
},
{
"id": "XUpload",
"name": "XUpload",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://api.twitter.com/2/media/upload",
"method": "POST",
"sendBinaryData": true,
"binaryPropertyName": "data",
"headerParametersJson": "{\"Authorization\":\"Bearer {{$env.X_BEARER_TOKEN}}\",\"Content-Type\":\"application/octet-stream\"}"
}
},
{
"id": "XPost",
"name": "XPost",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://api.twitter.com/2/tweets",
"method": "POST",
"sendBody": true,
"jsonParameters": true,
"headerParametersJson": "{\"Authorization\":\"Bearer {{$env.X_BEARER_TOKEN}}\"}",
"bodyParametersJson": "={\"text\":\"{{$json.data.twitter}}\",\"media\":{\"media_ids\":[\"{{$node[\\\"XUpload\\\"].json.media_id}}\"]}}"
}
},
{
"id": "FBPost",
"name": "FBPost",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://graph.facebook.com/v19.0/{{$env.FB_PAGE_ID}}/photos",
"method": "POST",
"sendBinaryData": true,
"binaryPropertyName": "data",
"jsonParameters": true,
"bodyParametersJson": "={\"caption\":\"{{$json.data.facebook}}\",\"published\":true,\"access_token\":\"{{$env.FB_ACCESS_TOKEN}}\"}"
}
},
{
"id": "IGCreate",
"name": "IGCreate",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://graph.facebook.com/v19.0/{{$env.IG_USER_ID}}/media",
"method": "POST",
"jsonParameters": true,
"bodyParametersJson": "={\"image_url\":\"https://example.com/tmp/{{ $json.today | replace(':','-') }}.jpg\",\"caption\":\"{{$json.data.instagram}}\",\"access_token\":\"{{$env.IG_ACCESS_TOKEN}}\"}"
}
},
{
"id": "IGPublish",
"name": "IGPublish",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://graph.facebook.com/v19.0/{{$json.id}}/publish",
"method": "POST",
"jsonParameters": true,
"bodyParametersJson": "={\"access_token\":\"{{$env.IG_ACCESS_TOKEN}}\"}"
}
},
{
"id": "LIInit",
"name": "LIInit",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://api.linkedin.com/rest/images?action=initializeUpload",
"method": "POST",
"jsonParameters": true,
"bodyParametersJson": "={\"initializeUploadRequest\":{\"owner\":\"urn:li:organization:{{$env.LINKEDIN_ORG_ID}}\",\"recipes\":[\"urn:li:digitalmediaRecipe:feedshare-image\"],\"serviceRelationships\":[{\"identifier\":\"urn:li:userGeneratedContent\",\"relationshipType\":\"OWNER\"}]}}"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"id": "LIUpload",
"name": "LIUpload",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "={{$node[\"LIInit\"].json.value.uploadMechanism['com.linkedin.digitalmedia.uploading.MediaUploadHttpRequest'].uploadUrl}}",
"method": "PUT",
"sendBinaryData": true,
"binaryPropertyName": "data",
"headerParametersJson": "{\"Authorization\":\"Bearer {{$env.LINKEDIN_ACCESS_TOKEN}}\",\"Content-Type\":\"application/octet-stream\"}"
}
},
{
"id": "LICreate",
"name": "LICreate",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"parameters": {
"url": "https://api.linkedin.com/rest/posts",
"method": "POST",
"jsonParameters": true,
"bodyParametersJson": "={\"owner\":\"urn:li:organization:{{$env.LINKEDIN_ORG_ID}}\",\"lifecycleState\":\"PUBLISHED\",\"specificContent\":{\"com.linkedin.ugc.ShareContent\":{\"shareCommentary\":{\"text\":\"{{$json.data.linkedin}}\"},\"shareMediaCategory\":\"IMAGE\",\"media\":[{\"status\":\"READY\",\"media\":\"{{$node[\\\"LIInit\\\"].json.value.asset}}\"}]}},\"visibility\":{\"com.linkedin.ugc.MemberNetworkVisibility\":\"PUBLIC\"}}"
}
},
{
"id": "Sheet",
"name": "Sheet",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 3,
"parameters": {
"sheetId": "your-sheet-id",
"range": "Logs!A1",
"valueInputMode": "USER_ENTERED"
},
"credentials": {
"googleSheetsOAuth2Api": "<your credential>"
}
}
],
"connections": {
"Cron": {
"main": [
[
{
"node": "SetDate",
"type": "main",
"index": 0
}
]
]
},
"SetDate": {
"main": [
[
{
"node": "GPT",
"type": "main",
"index": 0
}
]
]
},
"GPT": {
"main": [
[
{
"node": "Sanity",
"type": "main",
"index": 0
}
]
]
},
"Sanity": {
"main": [
[
{
"node": "Dalle",
"type": "main",
"index": 0
}
]
]
},
"Dalle": {
"main": [
[
{
"node": "Download",
"type": "main",
"index": 0
}
]
]
},
"Download": {
"main": [
[
{
"node": "Logo",
"type": "main",
"index": 0
}
]
]
},
"Logo": {
"main": [
[
[
{
"node": "XUpload",
"type": "main",
"index": 0
}
]
],
[
[
{
"node": "FBPost",
"type": "main",
"index": 0
}
]
],
[
[
{
"node": "IGCreate",
"type": "main",
"index": 0
}
]
],
[
[
{
"node": "LIInit",
"type": "main",
"index": 0
}
]
]
]
},
"XUpload": {
"main": [
[
{
"node": "XPost",
"type": "main",
"index": 0
}
]
]
},
"XPost": {
"main": [
[
{
"node": "Sheet",
"type": "main",
"index": 0
}
]
]
},
"FBPost": {
"main": [
[
{
"node": "Sheet",
"type": "main",
"index": 0
}
]
]
},
"IGCreate": {
"main": [
[
{
"node": "IGPublish",
"type": "main",
"index": 0
}
]
]
},
"IGPublish": {
"main": [
[
{
"node": "Sheet",
"type": "main",
"index": 0
}
]
]
},
"LIInit": {
"main": [
[
{
"node": "LIUpload",
"type": "main",
"index": 0
}
]
]
},
"LIUpload": {
"main": [
[
{
"node": "LICreate",
"type": "main",
"index": 0
}
]
]
},
"LICreate": {
"main": [
[
{
"node": "Sheet",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApihttpHeaderAuthopenAIApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Daily Camerit Social Auto-Poster. Uses openai, httpRequest, googleSheets. Scheduled trigger; 16 nodes.
Source: https://gist.github.com/mdabees/ca54fc92a8ba4945447e15e53529ef5e — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Generador y Publicador de Shorts. Uses googleSheets, openai, httpRequest. Scheduled trigger; 8 nodes.
AI Institutional Stock Valuation Engine with Risk Scoring & Scenario Targets
Overview This is a production-grade, fully automated stock analysis system built entirely in n8n. It combines institutional-level financial analysis, dual AI model consensus, and a self-improving back
This workflow is a complete outbound automation system that discovers local businesses, extracts contact emails, generates personalized cold emails using AI, and runs a multi-step follow-up sequence —
This automation is a complete end-to-end system designed to find, qualify, and contact B2B leads — fully automated and powered by AI. Searches for target companies on LinkedIn via Ghost Genius API, us