AutomationFlowsData & Sheets › Publish Videos to 9 Social Platforms From Google Sheets with Blotato

Publish Videos to 9 Social Platforms From Google Sheets with Blotato

Bygiangxai @giangxai on n8n.io

Schedule and load content from Google Sheets, then publish videos in parallel across 9 social media platforms.

Cron / scheduled trigger★★★★☆ complexity18 nodes@Blotato/N8N Nodes BlotatoGoogle Sheets
Data & Sheets Trigger: Cron / scheduled Nodes: 18 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #12836 — we link there as the canonical source.

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 →

Download .json
{
  "id": "Gr4Clj0SJPTyb95c",
  "name": "Auto Publish Videos to 9 Social Media Platforms",
  "tags": [],
  "nodes": [
    {
      "id": "4125ca8d-f47d-447b-88e8-886be2114ecc",
      "name": "Instagram",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueErrorOutput",
      "position": [
        96,
        128
      ],
      "parameters": {
        "options": {},
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "25299",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/25299",
          "cachedResultName": "giangxai.aff"
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}\n\n{{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "postContentMediaUrls": "={{ $('Read Pending Posts (Google Sheets)').item.json[' Media URL'] }}"
      },
      "notesInFlow": false,
      "retryOnFail": false,
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "657a17d3-35a5-4eaf-913f-1311f723bbcd",
      "name": "TikTok",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueErrorOutput",
      "position": [
        96,
        320
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "23867",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/23867",
          "cachedResultName": "kytagiang"
        },
        "postContentText": "={{ $json.Title }}\n\n{{ $json.Caption }}",
        "postContentMediaUrls": "={{ $json[' Media URL'] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "28f9c1c1-0451-4fb0-8130-6b271b8d3c85",
      "name": "Facebook",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueErrorOutput",
      "position": [
        96,
        688
      ],
      "parameters": {
        "options": {},
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "15884",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/15884",
          "cachedResultName": "Giang VT"
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": "688227101036478",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/15884/subaccounts/688227101036478",
          "cachedResultName": "Giang VT"
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}\n\n{{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json[' Media URL'] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "8fa89a31-9912-4d48-9c93-02337687391a",
      "name": "LinkedIn",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        448,
        592
      ],
      "parameters": {
        "options": {},
        "platform": "linkedin",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "10190",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/10190",
          "cachedResultName": "Giang Vuong Thi"
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}\n\n{{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json[' Media URL'] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "3673401f-1c87-42dd-aa2d-08d2ab89eab9",
      "name": "Pinterest",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        448,
        224
      ],
      "parameters": {
        "options": {},
        "platform": "pinterest",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "3601",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/3601",
          "cachedResultName": "the_lawofattraction_tip111"
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "pinterestBoardId": {
          "__rl": true,
          "mode": "id",
          "value": "1116681738796146206"
        },
        "postContentMediaUrls": "={{ $json[' Media URL'] }}",
        "postCreatePinterestOptionTitle": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}"
      },
      "typeVersion": 2
    },
    {
      "id": "5d31e581-71f7-4053-bfbe-c9d14f7a4cf2",
      "name": "Threads",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        448,
        416
      ],
      "parameters": {
        "options": {},
        "platform": "threads",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "4049",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/4049",
          "cachedResultName": "giangxai.aff"
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}\n\n{{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json[' Media URL'] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "127e8605-b1dd-4d96-8d05-dd97558514f3",
      "name": "X",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        448,
        32
      ],
      "parameters": {
        "options": {},
        "platform": "twitter",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "10665",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/10665",
          "cachedResultName": "GiangKyta"
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}\n\n{{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json[' Media URL'] }}"
      },
      "typeVersion": 2
    },
    {
      "id": "a579f6cf-ed00-4963-b1ac-c63462e659f8",
      "name": "YouTube",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueErrorOutput",
      "position": [
        96,
        496
      ],
      "parameters": {
        "options": {},
        "platform": "youtube",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "22282",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/22282",
          "cachedResultName": "xAI Giang ( GiangVT)"
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json[' Media URL'] }}",
        "postCreateYoutubeOptionTitle": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}",
        "postCreateYoutubeOptionShouldNotifySubscribers": false
      },
      "typeVersion": 2
    },
    {
      "id": "d8f37c80-f687-4857-8139-730e3e388853",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        96
      ],
      "parameters": {
        "color": 4,
        "width": 536,
        "height": 452,
        "content": "## Schedule & Load Content from Google Sheets\n\nTrigger workflow on schedule and fetch pending video content\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ab26a7cf-f2de-4727-b72e-ba5fea51724a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -48
      ],
      "parameters": {
        "color": 6,
        "width": 700,
        "height": 1036,
        "content": "## Auto Publish Videos to 9 Social Media Platforms\nPost videos in parallel based on selected platforms"
      },
      "typeVersion": 1
    },
    {
      "id": "69977996-a371-47fd-a000-aded61c694ec",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        176
      ],
      "parameters": {
        "color": 7,
        "width": 256,
        "height": 288,
        "content": "## Mark Post as Published (Success)"
      },
      "typeVersion": 1
    },
    {
      "id": "b755ff0a-8d06-4e88-9d0c-2f4d25d8183f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        496
      ],
      "parameters": {
        "color": 7,
        "width": 272,
        "height": 256,
        "content": "## Log Publishing Errors"
      },
      "typeVersion": 1
    },
    {
      "id": "73bb312a-1a4e-4c8e-9f62-306b71deb30a",
      "name": "Bluesky",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        448,
        816
      ],
      "parameters": {
        "options": {},
        "platform": "bluesky",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "postContentText": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}\n\n{{ $('Read Pending Posts (Google Sheets)').item.json.Caption }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "typeVersion": 2
    },
    {
      "id": "a3a5ed8c-0a7b-4b80-b111-1a93335452a2",
      "name": "Read Pending Posts (Google Sheets)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -384,
        336
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": true
        },
        "filtersUI": {
          "values": [
            {
              "lookupValue": "Ready To Post",
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ/edit?usp=drivesdk",
          "cachedResultName": "Plan Blotato Posting"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "65c697c7-cf32-4710-b8ec-67fd14986288",
      "name": "Update Sheet \u2013 Mark as Published",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        800,
        256
      ],
      "parameters": {
        "columns": {
          "value": {
            "Title": "={{ $('Read Pending Posts (Google Sheets)').item.json.Title }}",
            "Status": "Posted"
          },
          "schema": [
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Media URL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Media URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Caption",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Title"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ/edit?usp=drivesdk",
          "cachedResultName": "Plan Blotato Posting"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "5fbe11d6-4003-4fee-8ba8-759219a445ca",
      "name": "Update Sheet \u2013 Log Error",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        800,
        576
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Errored",
            "row_number": "={{ $('Read Pending Posts (Google Sheets)').item.json.row_number }}"
          },
          "schema": [
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Caption",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": " Media URL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": " Media URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17-52eP8x6IPDNEasBfcs0c0KrXFU2VMJ2IaNuRtaCgQ/edit?usp=drivesdk",
          "cachedResultName": "Plan Blotato Posting"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "721cc5eb-0fc6-4381-ab7d-9ccafb1ba110",
      "name": "Schedule Content Publishing",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -560,
        336
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 1
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b469bf43-a082-45eb-8985-51019245711b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1552,
        32
      ],
      "parameters": {
        "width": 816,
        "height": 752,
        "content": "## Overview\n**Author:** [GiangxAI](https://www.youtube.com/@giangxai.official)\n\nThis n8n template helps you automatically publish videos to multiple social media platforms using Google Sheets as the content control center.\nThe workflow runs on a schedule, reads pending video posts from Google Sheets, and publishes them in parallel to 9 social media platforms. After publishing, it automatically updates the post status and logs any errors, so you always know what has been published and what needs attention.\nThis template is designed to save time, reduce manual uploads, and ensure consistent video distribution across all platforms.\n\n\n## Quick Setup\n\n1. **Prepare Google Sheets**\n   - Create a sheet with video URLs, captions, and a `status` column (e.g. `pending`).\n   - Only rows marked as `pending` will be published.\n\n2. **Connect Google Sheets**\n   - Authenticate your Google Sheets account in n8n.\n   - Select the correct spreadsheet in the read and update nodes.\n\n3. **Set Up Platform Credentials**\n   - Add API credentials or OAuth access for each social platform you want to use.\n   - Disable any platform nodes you don\u2019t need.\n\n4. **Configure the Schedule**\n   - Open the **Schedule Content Publishing** trigger.\n   - Set how often the workflow should run (daily, hourly, or custom).\n\n5. **Run & Monitor**\n   - Activate the workflow.\n   - Published posts are marked as successful, and errors are logged back to Google Sheets.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b38c77a6-834d-49c7-9825-75267abf9182",
  "connections": {
    "TikTok": {
      "main": [
        [
          {
            "node": "Update Sheet \u2013 Mark as Published",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Sheet \u2013 Log Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "YouTube": {
      "main": [
        [
          {
            "node": "Update Sheet \u2013 Mark as Published",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Sheet \u2013 Log Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Facebook": {
      "main": [
        [
          {
            "node": "Update Sheet \u2013 Mark as Published",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Sheet \u2013 Log Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Instagram": {
      "main": [
        [
          {
            "node": "Update Sheet \u2013 Mark as Published",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Sheet \u2013 Log Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Content Publishing": {
      "main": [
        [
          {
            "node": "Read Pending Posts (Google Sheets)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Pending Posts (Google Sheets)": {
      "main": [
        [
          {
            "node": "Instagram",
            "type": "main",
            "index": 0
          },
          {
            "node": "TikTok",
            "type": "main",
            "index": 0
          },
          {
            "node": "Facebook",
            "type": "main",
            "index": 0
          },
          {
            "node": "LinkedIn",
            "type": "main",
            "index": 0
          },
          {
            "node": "Pinterest",
            "type": "main",
            "index": 0
          },
          {
            "node": "Threads",
            "type": "main",
            "index": 0
          },
          {
            "node": "X",
            "type": "main",
            "index": 0
          },
          {
            "node": "YouTube",
            "type": "main",
            "index": 0
          },
          {
            "node": "Bluesky",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Schedule and load content from Google Sheets, then publish videos in parallel across 9 social media platforms.

Source: https://n8n.io/workflows/12836/ — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

This automation publishes to 9 social platforms daily! Manage your content in a simple Google Sheet. When you set a post's status to "Ready to Post" in your Google Sheet, this workflow grabs your imag

Google Sheets, @Blotato/N8N Nodes Blotato
Data & Sheets

This workflow automates video distribution to 9 social platforms simultaneously using Blotato's API. It includes both a scheduled publisher (checks Google Sheets for videos marked "Ready") and a subwo

Google Sheets, HTTP Request, Form Trigger +2
Data & Sheets

YogiAI. Uses googleSheets, googleSheetsTool, httpRequest, stopAndError. Scheduled trigger; 61 nodes.

Google Sheets, Google Sheets Tool, HTTP Request +1
Data & Sheets

This workflow monitors Google Calendar for events indicating that a customer will visit the company today or the next day, retrieves the required details, and sends reminder notifications to the relev

Google Calendar, Google Sheets, HTTP Request +1
Data & Sheets

📄 Documentation: Notion Guide

Google Sheets, Google Drive, HTTP Request +2