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

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

Description:

Google Sheets, Google Drive, YouTube
Social Media

YouTube AI analys. Uses youTube, httpRequest, googleSheets, lmChatOpenRouter. Scheduled trigger; 55 nodes.

YouTube, HTTP Request, Google Sheets +2
Social Media

AI YouTube transcript. Uses youTube, googleSheets, lmChatOpenRouter, chainLlm. Scheduled trigger; 26 nodes.

YouTube, Google Sheets, OpenRouter Chat +3