{ "meta": { "instanceId": "workflow-3c85b426", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:45.377662", "updatedAt": "2025-09-29T07:07:45.377680", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "0c46db99-4216-4132-a705-62560e8ebff0", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 200, -100 ], "parameters": { "color": 4, "width": 275, "height": 239, "content": "👈\nSet up Google Drive credentials.\n\nWhen a new photo/video or carousel is uploaded to the selected folder in Google Drive for posting on Instagram, this trigger will be activated.\n\nFollow the steps (YouTube video):\n{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "bea7e9cb-c125-4469-a902-71f949d82858", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 180, -480 ], "parameters": { "color": 4, "width": 492, "height": 100, "content": "### Automate instagram posts with Google Drive, AI Captions & Facebook Graph API Agent (Easy to Set-Up)\n(Easy to set-up)" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "b56d4729-cc93-41d9-be09-27547d0d8204", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 480, -100 ], "parameters": { "color": 3, "width": 275, "height": 239, "content": "👈\nSet up Google Drive credentials.\n\nThis node will download the posting file in the n8n workflow.\n\nFollow the steps (YouTube video):\n{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "f70fd011-9eab-46b4-a861-148ddd90bca1", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ 760, -100 ], "parameters": { "color": 5, "width": 275, "height": 239, "content": "👈\nSet up OpenAI Message Model.\n\nSet up credentials.\n\nThis node will create captions for the post.\n\nFollow the steps (YouTube video):\n{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "4a85fd3c-66a8-40cf-be58-030568b953cf", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [ 1040, -100 ], "parameters": { "width": 275, "height": 399, "content": "👈\nSet up Google Sheets Node.\n\nSet up credentials.\n\nCreate a new sheet in Google Sheets (e.g., Instagram posts).\n\nCreate 3 columns: Name, Caption, and Image/Reel Link. Connect the Google sheet with this node. & connect the columns with the Google Drive Node (Name Column & Url Column with 2 parameters of Google Drive Node) and captions column with one OpenAI parameter.\n\nFollow the steps (YouTube video):\n{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "5e855a8f-3a45-43bc-a8e6-9c590fb77c3d", "name": "Sticky Note7", "type": "n8n-nodes-base.stickyNote", "position": [ 1320, -100 ], "parameters": { "color": 3, "width": 275, "height": 379, "content": "👈 Hardest Step (Facebook Graph API):\n\nSet up Facebook Graph API Node.\n\nSet up credentials.\n\nConnect query parameters with Google Sheets parameters.\n\nThis node will access your post file from Google Sheets with captions.\n\nFollow the steps (YouTube video):\n{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "515cef5a-52fd-49af-831c-50957e58564a", "name": "Finally Post to Instagram", "type": "n8n-nodes-base.facebookGraphApi", "position": [ 1560, -280 ], "parameters": { "edge": "media_publish", "node": "17841465053058137", "hostUrl": "{{ $env.BASE_URL }}", "options": { "queryParameters": { "parameter": [ { "name": "creation_id", "value": "={{ $json.id }}" } ] } }, "graphApiVersion": "v22.0", "httpRequestMethod": "POST" }, "credentials": { "facebookGraphApi": { "id": "vDjaXB1lRcGeYQV3", "name": "Facebook Graph account" } }, "typeVersion": 1, "notes": "This facebookGraphApi node performs automated tasks as part of the workflow." }, { "id": "b3114251-0799-44a2-a838-0231103d8f87", "name": "Sticky Note8", "type": "n8n-nodes-base.stickyNote", "position": [ 1600, -100 ], "parameters": { "color": 4, "width": 275, "height": 299, "content": "👈 \n1. Set-up Facebook Graph API) Node\n2. Set-Up Credentials\n\n3.This Node will Directly post on your instagram.\n\n\nFollow the Steps (Youtube Video)\n{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "6c3f1ec2-8765-4445-b93b-253e43c102d2", "name": "Post File Upload in Google Drive Folder Trigger", "type": "n8n-nodes-base.googleDriveTrigger", "position": [ 300, -280 ], "parameters": { "event": "fileCreated", "options": {}, "pollTimes": { "item": [ { "mode": "everyMinute" } ] }, "triggerOn": "specificFolder", "folderToWatch": { "__rl": true, "mode": "list", "value": "1VfkhYImlmEXw70IrJvvZKO6mM164zMD6", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "n8n reels automation on instagram" } }, "credentials": { "googleDriveOAuth2Api": { "id": "bugAjkJYMXx2rSaD", "name": "Google Drive account" } }, "typeVersion": 1, "notes": "This googleDriveTrigger node performs automated tasks as part of the workflow." }, { "id": "1c5d5251-f55e-4f1a-b0c3-103e34ac2128", "name": "Post File Download in N8N (Google Drive Node)", "type": "n8n-nodes-base.googleDrive", "position": [ 520, -280 ], "parameters": { "fileId": { "__rl": true, "mode": "id", "value": "={{ $json.id }}" }, "options": {}, "operation": "download" }, "credentials": { "googleDriveOAuth2Api": { "id": "bugAjkJYMXx2rSaD", "name": "Google Drive account" } }, "typeVersion": 3, "notes": "This googleDrive node performs automated tasks as part of the workflow." }, { "id": "e5e336e2-2a07-4611-9700-8c973aefd0f8", "name": "AI Caption generated by OpenAI", "type": "n8n-nodes-base.noOp", "position": [ 740, -280 ], "parameters": { "modelId": { "__rl": true, "mode": "list", "value": "gpt-4o-mini", "cachedResultName": "GPT-4O-MINI" }, "options": {}, "messages": { "values": [ { "content": "=Generate an engaging Instagram caption for a {{ $('Post File Upload in Google Drive Folder Trigger').item.json.name }} about [Description]. Include:\t\n2-3 sentences with emojis\n\n3-5 relevant hashtags\n\nA call-to-action\n\nKeep it under 150 characters as you are skilled at writing detailed captions based on a file name. write a clear, engaging caption that helps viewers understand and appreciate the post withoutj using too many whimsical words or using too many adjectives. make it relatable and suitable for an instagram audience, encouraging people to connect with the post and respond in the comments. " }, {} ] }, "simplify": false }, "credentials": { "openAiApi": { "id": "BiRkxZ4Wi3R6gMpn", "name": "OpenAi account 2" } }, "typeVersion": 1.8, "notes": "This openAi node performs automated tasks as part of the workflow." }, { "id": "19054395-234d-4fae-a0e9-2976df11919d", "name": "Post File Save in Google Sheets", "type": "n8n-nodes-base.googleSheets", "position": [ 1120, -280 ], "parameters": { "columns": { "value": { "Name": "={{ $('Post File Download in N8N (Google Drive Node)').item.json.name }}", "Captions": "={{ $json.choices[0].message.content }}", "Reel Urls ": "{{ $env.BASE_URL }}", "Reel Thumbnail": "={{ $('Post File Download in N8N (Google Drive Node)').item.json.thumbnailLink }}" }, "schema": [ { "id": "Name", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Name", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Captions", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Captions", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Reel Urls ", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Reel Urls ", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Reel Thumbnail", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Reel Thumbnail", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "fb token for api", "type": "string", "display": true, "removed": true, "required": false, "displayName": "fb token for api", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [ "Name" ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "appendOrUpdate", "sheetName": { "__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Sheet1" }, "documentId": { "__rl": true, "mode": "list", "value": "1S-7cZM6W4EpbNH-DRAt1L3zXUt9JTmQEs8EZ_Csq_Fg", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "IG Reel Pass to Meta API " } }, "credentials": { "googleSheetsOAuth2Api": { "id": "aQLnLORao3LXvlT1", "name": "Google Sheets account 2" } }, "typeVersion": 4.5, "notes": "This googleSheets node performs automated tasks as part of the workflow." }, { "id": "d331ddfb-9131-4776-a610-feb830b736b6", "name": "Connect Facebook API for Publishing Instagram Post using N8N", "type": "n8n-nodes-base.facebookGraphApi", "position": [ 1340, -280 ], "parameters": { "edge": "media", "node": "17841465053058137", "options": { "queryParameters": { "parameter": [ { "name": "video_url", "value": "={{ $json['Reel Urls '] }}" }, { "name": "media-type", "value": "REELS" }, { "name": "caption", "value": "={{ $json.Captions }}" }, { "name": "image_url", "value": "={{ $json['Reel Thumbnail'] }}" } ] } }, "graphApiVersion": "v22.0", "httpRequestMethod": "POST" }, "credentials": { "facebookGraphApi": { "id": "vDjaXB1lRcGeYQV3", "name": "Facebook Graph account" } }, "typeVersion": 1, "notes": "This facebookGraphApi node performs automated tasks as part of the workflow." } ], "pinData": {}, "connections": { "515cef5a-52fd-49af-831c-50957e58564a": { "main": [ [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-35c11cf4", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-40b71a95", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-da2d67ef", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-653a1bc7", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-04235de5", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-9b1ad22a", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-f79e4c5a", "type": "main", "index": 0 } ], [ { "node": "error-handler-515cef5a-52fd-49af-831c-50957e58564a-bd46aa95", "type": "main", "index": 0 } ] ] }, "d331ddfb-9131-4776-a610-feb830b736b6": { "main": [ [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-4ae606c3", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-da886b87", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-6293fe57", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-8f9ada54", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-8d060097", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-8499db35", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-42409e6f", "type": "main", "index": 0 } ], [ { "node": "error-handler-d331ddfb-9131-4776-a610-feb830b736b6-843000b1", "type": "main", "index": 0 } ] ] }, "6c3f1ec2-8765-4445-b93b-253e43c102d2": { "main": [ [ { "node": "error-handler-6c3f1ec2-8765-4445-b93b-253e43c102d2-0a1d40e6", "type": "main", "index": 0 } ] ] }, "1c5d5251-f55e-4f1a-b0c3-103e34ac2128": { "main": [ [ { "node": "error-handler-1c5d5251-f55e-4f1a-b0c3-103e34ac2128-6f5d9094", "type": "main", "index": 0 } ] ] }, "e5e336e2-2a07-4611-9700-8c973aefd0f8": { "main": [ [ { "node": "error-handler-e5e336e2-2a07-4611-9700-8c973aefd0f8-d6af897e", "type": "main", "index": 0 } ] ] }, "19054395-234d-4fae-a0e9-2976df11919d": { "main": [ [ { "node": "error-handler-19054395-234d-4fae-a0e9-2976df11919d-1c26048d", "type": "main", "index": 0 } ] ] } }, "name": "Stickynote Workflow", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "description": "Automated workflow: Stickynote Workflow. This workflow integrates 7 different services: stickyNote, facebookGraphApi, googleDriveTrigger, googleDrive, stopAndError. It contains 21 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Stickynote Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }