AutomationFlowsSocial Media › Automate Video Creation From Google Sheets to Youtube with Videoapihub

Automate Video Creation From Google Sheets to Youtube with Videoapihub

ByRishabh Dugar @rishabhdugar on n8n.io

Video Creation from Google Sheets and Upload to YouTube with VideoApiHub

Cron / scheduled trigger★★★★☆ complexity26 nodesGoogle SheetsN8N Nodes Video Api HubYouTube
Social Media Trigger: Cron / scheduled Nodes: 26 Complexity: ★★★★☆ Added:

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

This workflow follows the Google Sheets → YouTube 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 →

Download .json
{
  "id": "RHsJ2BP766zc8clO",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Google Sheet to Video Creation and Posting to Youtube",
  "tags": [],
  "nodes": [
    {
      "id": "1cf3ed47-7dcf-4f58-a473-7f9f32a448e1",
      "name": "Template Config",
      "type": "n8n-nodes-base.set",
      "position": [
        1808,
        192
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "{\n  \"background_image\": \"https://raw.githubusercontent.com/VideoApiHub/assets/main/samples/image/money_back7.png\",\n  \"audio_url\": \"https://raw.githubusercontent.com/VideoApiHub/assets/main/samples/audio/yellowbirdbeats-banger.mp3\",\n  \"line_1\": \"Success starts\",\n  \"line_2\": \"with small\",\n  \"line_3\": \"consistent\",\n  \"line_4\": \"daily actions\",\n  \"line_5\": \"Stay focused\",\n  \"line_6\": \"Never quit\",\n  \"filename\": \"motivation-short-001\",\n  \"youtube_title\": \"Daily Motivation Shorts #1\",\n  \"description\": \"Motivational YouTube Shorts generated automatically using VideoApiHub and n8n.\",\n  \"tags\": \"motivation,success,mindset,shorts\",\n  \"status\": \"\",\n  \"task_id\": \"\",\n  \"youtube_url\": \"\",\n  \"error_message\": \"\",\n  \"completed_at\": \"\",\n  \n  \"GOOGLE_SHEET_ID\": \"1I0oFB_PEdZdrfrqEMhcyDeKQ-9_0mllUM8Whci3MrG0\",\n  \"SHEET_NAME\": \"Sheet1\",\n  \"VIDEO_TEMPLATE_ID\": \"5d3a842e-dde5-48e7-a382-df838c0c9ffc\",\n  \"YOUTUBE_PRIVACY\": \"public\",\n  \"POLL_INTERVAL_SECONDS\": \"90\"\n\n}"
      },
      "typeVersion": 3
    },
    {
      "id": "5d02a173-8faa-498f-90c5-2fea25fef90d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1568,
        192
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 1
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "aa130358-f3b7-4451-b0a6-6a1aaca7e9cc",
      "name": "Filter Pending Rows",
      "type": "n8n-nodes-base.if",
      "position": [
        2272,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "conditions": [
            {
              "operator": {
                "type": "boolean",
                "operation": "true"
              },
              "leftValue": "={{ !$json.status || $json.status === '' || $json.status === 'failed' }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "edf4d56d-49ee-46c7-86bc-45a19c19120d",
      "name": "Process One Row",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2496,
        192
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "7e05ce55-9439-4270-8285-5219ddca570e",
      "name": "Mark Processing",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2736,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "id": "={{ $json.id }}",
            "status": "processing",
            "row_number": 0
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "background_image",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "background_image",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "audio_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "audio_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_6",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "filename",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "filename",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "youtube_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "youtube_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "task_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "task_id",
              "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": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Template Config').item.json.GOOGLE_SHEET_ID }}"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "712e2296-df88-4285-aec4-2be5d9b0422e",
      "name": "Save Task ID",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3216,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "id": "={{ $('Process One Row').item.json.id }}",
            "status": "queued",
            "task_id": "={{ $json.task_id }}",
            "row_number": 0
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "background_image",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "background_image",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "audio_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "audio_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_6",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "filename",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "filename",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "youtube_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "youtube_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "task_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "task_id",
              "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": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Template Config').item.json.SHEET_NAME }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Template Config').item.json.GOOGLE_SHEET_ID }}"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "f48e70fc-c2c4-4550-bea6-7831e6570806",
      "name": "Wait Before Polling",
      "type": "n8n-nodes-base.wait",
      "position": [
        3456,
        192
      ],
      "parameters": {
        "unit": "seconds",
        "amount": "={{ Number($('Template Config').item.json.POLL_INTERVAL_SECONDS) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "47244556-598c-4994-9d4c-fda3b2d506a0",
      "name": "Check Render Status",
      "type": "n8n-nodes-video-api-hub.videoApiHub",
      "position": [
        3696,
        192
      ],
      "parameters": {
        "taskId": "={{ $('Create Video').item.json.task_id }}",
        "resource": "job"
      },
      "typeVersion": 1
    },
    {
      "id": "6f027e2d-cee0-40ae-8e5b-bab6fe6bde2d",
      "name": "Is Completed?",
      "type": "n8n-nodes-base.if",
      "position": [
        3936,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7f959991-a4a3-43b6-b412-61ff29c43277",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "completed"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "32376ac2-b906-4516-82d5-b9d117057344",
      "name": "Get Rendered Video",
      "type": "n8n-nodes-video-api-hub.videoApiHub",
      "position": [
        4176,
        64
      ],
      "parameters": {
        "resource": "job",
        "operation": "getResult",
        "resultTaskId": "={{ $('Create Video').item.json.task_id }}"
      },
      "typeVersion": 1
    },
    {
      "id": "beec4380-a2e0-41cc-891e-1723b69acd0c",
      "name": "Upload to YouTube",
      "type": "n8n-nodes-base.youTube",
      "position": [
        4416,
        64
      ],
      "parameters": {
        "title": "={{ $('Process One Row').item.json.youtube_title }}",
        "options": {
          "tags": "={{ $('Process One Row').item.json.tags }}",
          "description": "={{ $('Process One Row').item.json.description }}",
          "privacyStatus": "={{ $('Template Config').item.json.YOUTUBE_PRIVACY }}",
          "selfDeclaredMadeForKids": false
        },
        "resource": "video",
        "operation": "upload",
        "categoryId": "27",
        "regionCode": "IN"
      },
      "typeVersion": 1
    },
    {
      "id": "96805e5d-0835-4645-add7-08699d1093fe",
      "name": "Mark Sent",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4656,
        64
      ],
      "parameters": {
        "columns": {
          "value": {
            "id": "={{ $('Process One Row').item.json.id }}",
            "status": "={{ $('Check Render Status').item.json.status }}",
            "task_id": "={{ $('Check Render Status').item.json.task_id }}",
            "row_number": 0
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "background_image",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "background_image",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "audio_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "audio_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_6",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "filename",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "filename",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "youtube_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "youtube_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "task_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "task_id",
              "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": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Template Config').item.json.SHEET_NAME }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Template Config').item.json.GOOGLE_SHEET_ID }}"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "cf90cac6-c95e-4ed0-a74d-ce978ec1cb26",
      "name": "Is Failed?",
      "type": "n8n-nodes-base.if",
      "position": [
        4176,
        304
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "conditions": [
            {
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "failed"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "23febabb-689c-422d-846c-96021ca0cf23",
      "name": "Mark Failed",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4416,
        304
      ],
      "parameters": {
        "columns": {
          "value": {
            "id": "={{ $('Process One Row').item.json.id }}",
            "status": "={{ $json.status }}",
            "row_number": 0
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "background_image",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "background_image",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "audio_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "audio_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_6",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "line_6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "filename",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "filename",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "youtube_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "youtube_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "task_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "task_id",
              "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": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Template Config').item.json.SHEET_NAME }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Template Config').item.json.GOOGLE_SHEET_ID }}"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "ad59b541-a735-4dd5-ae3a-0df2936a70d8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        -64
      ],
      "parameters": {
        "width": 410,
        "height": 434,
        "content": "## \ud83c\udfac Google Sheet to Video Creation and Posting to Youtube\n\n**How It Works?**\nThis workflow reads rows from a Google Sheet, renders videos using **VideoApiHub**, and uploads them to **YouTube** automatically.\n\n\n**How to Set Up:**\n1. Duplicate the [sample Google Sheet](https://docs.google.com/spreadsheets/d/1I0oFB_PEdZdrfrqEMhcyDeKQ-9_0mllUM8Whci3MrG0)\n2. Get VideoApiHub API key using https://videoapihub.com\n3. Create a video template on Video Api Hub Website\n3. Fill in the Template Config node with your IDs\n4. Connect your credentials\n5. YouTube OAuth2 - Select the Youtube Channel to Post to\n\n**Customization**\n- Image Background in the video\n- Audio in the video\n- Text\n- Animation"
      },
      "typeVersion": 1
    },
    {
      "id": "83545d57-75c5-4cb8-90db-112ef0a323e8",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1488,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 328,
        "content": "### \u23f0 Trigger & Config\nUpdate **Template Config** node holds all settings: Sheet ID, template ID, template parameters, privacy, and poll interval."
      },
      "typeVersion": 1
    },
    {
      "id": "f05cd818-79dc-4487-a89d-173996f44798",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2000,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 882,
        "height": 328,
        "content": "### \ud83d\udccb Read & Filter\nReads all rows from the Google Sheet and filters for rows with empty or failed status."
      },
      "typeVersion": 1
    },
    {
      "id": "0c9ad064-7ff2-4af0-9b7b-60ea28069472",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2960,
        144
      ],
      "parameters": {
        "color": 3,
        "width": 204,
        "height": 200,
        "content": "Add Video API Hub Auth"
      },
      "typeVersion": 1
    },
    {
      "id": "a6185e0f-297b-4032-bc90-94f61b08a6d2",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3392,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 690,
        "height": 328,
        "content": "### \u23f3 Poll & Check\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1cd77f15-c2b7-473d-bc56-3e26ee587c56",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4128,
        -16
      ],
      "parameters": {
        "color": 7,
        "width": 722,
        "height": 248,
        "content": "### \ud83d\udce4 Get Video , Upload to Youtube & Update Sheet\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2ec596da-460c-435c-bd5b-d17122eab360",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2016,
        144
      ],
      "parameters": {
        "color": 3,
        "width": 214,
        "height": 208,
        "content": "Add Sheet Crendential"
      },
      "typeVersion": 1
    },
    {
      "id": "51911bbe-7f73-495b-8fe4-467bde12487a",
      "name": "Read Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2048,
        192
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Template Config').item.json.GOOGLE_SHEET_ID }}"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "964244d1-d1e8-415e-8c99-ba6207b8f24b",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2944,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 402,
        "height": 328,
        "content": "### Create Video"
      },
      "typeVersion": 1
    },
    {
      "id": "2b2f0b8a-3187-4d35-847e-6776ef595bb7",
      "name": "Create Video",
      "type": "n8n-nodes-video-api-hub.videoApiHub",
      "position": [
        2976,
        192
      ],
      "parameters": {
        "resource": "template",
        "templateId": "={{ $('Template Config').item.json.VIDEO_TEMPLATE_ID }}",
        "templateOutputKey": "={{ $('Template Config').item.json.filename }}.mp4",
        "templateVariables": {
          "variableValues": [
            {
              "name": "background_image",
              "value": "={{ $('Template Config').item.json.background_image }}"
            },
            {
              "name": "audio_url",
              "value": "={{ $('Template Config').item.json.audio_url }}"
            },
            {
              "name": "line_1",
              "value": "={{ $('Template Config').item.json.line_1 }}"
            },
            {
              "name": "line_2",
              "value": "={{ $('Template Config').item.json.line_2 }}"
            },
            {
              "name": "line_3",
              "value": "={{ $('Template Config').item.json.line_3 }}"
            },
            {
              "name": "line_4",
              "value": "={{ $('Template Config').item.json.line_4 }}"
            },
            {
              "name": "line_5",
              "value": "={{ $('Template Config').item.json.line_5 }}"
            },
            {
              "name": "line_6",
              "value": "={{ $('Template Config').item.json.line_6 }}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2d3d6493-e2d2-44ae-b28a-99c53a8137c1",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4128,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 722,
        "height": 248,
        "content": "### Mark as Failed\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6025800d-c3b3-4305-8424-0dcf9af2fe11",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4368,
        32
      ],
      "parameters": {
        "color": 3,
        "width": 204,
        "height": 184,
        "content": "Add Youtube Auth"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "8c409bc4-d5c7-4cfb-9a29-58989acab4ff",
  "connections": {
    "Is Failed?": {
      "main": [
        [
          {
            "node": "Mark Failed",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait Before Polling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Video": {
      "main": [
        [
          {
            "node": "Save Task ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Task ID": {
      "main": [
        [
          {
            "node": "Wait Before Polling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Completed?": {
      "main": [
        [
          {
            "node": "Get Rendered Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Is Failed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Processing": {
      "main": [
        [
          {
            "node": "Create Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process One Row": {
      "main": [
        [],
        [
          {
            "node": "Mark Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Template Config": {
      "main": [
        [
          {
            "node": "Read Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Template Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Google Sheet": {
      "main": [
        [
          {
            "node": "Filter Pending Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to YouTube": {
      "main": [
        [
          {
            "node": "Mark Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Rendered Video": {
      "main": [
        [
          {
            "node": "Upload to YouTube",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Render Status": {
      "main": [
        [
          {
            "node": "Is Completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Pending Rows": {
      "main": [
        [
          {
            "node": "Process One Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait Before Polling": {
      "main": [
        [
          {
            "node": "Check Render Status",
            "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

Video Creation from Google Sheets and Upload to YouTube with VideoApiHub

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

More Social Media workflows → · Browse all categories →

Related workflows

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

Social Media

Multi YT To TT. Uses googleSheets, httpRequest, youTube. Scheduled trigger; 30 nodes.

Google Sheets, HTTP Request, YouTube
Social Media

This automation runs daily to fetch the latest videos on Youtube from leading AI automators, such as: Nate Herk Nick Saraev Jack Roberts Cole Medin Nick Puru Ed Hill Jason Cooperson Manthan Patel Nick

Google Sheets, YouTube
Social Media

Are you a cord-cutter? Do you find yourself looking through the many titles of videos uploaded to Youtube, just to find the ones you want to watch? Even when you subscribe to the channels you like, do

Google Sheets, HTTP Request, YouTube +1
Social Media

This workflow runs daily to fetch all videos from a YouTube channel, compare key metadata fields against a prior snapshot stored in Google Sheets, log any differences, and optionally post a summary to

YouTube, Google Sheets, Slack
Social Media

This workflow runs daily at 8am to rotate a YouTube channel banner based on a schedule stored in Google Sheets, downloading the banner image from Google Drive, applying it via the YouTube API, and upd

Google Sheets, Google Drive, YouTube