AutomationFlowsSocial Media › Sync Youtube Channel Videos to Google Sheets for Content Database

Sync Youtube Channel Videos to Google Sheets for Content Database

ByGrigory Frolov @gregfrolov on n8n.io

Automatically sync your YouTube videos (title, description, tags, publish date, captions, etc.) into Google Sheets — perfect for creators and marketers who want a clean content database for analysis or reporting. ✅ Connects to your personal YouTube channel via Google OAuth 🔁…

Event trigger★★★★☆ complexity23 nodesHTTP RequestGoogle Sheets
Social Media Trigger: Event Nodes: 23 Complexity: ★★★★☆ Added:

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

This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "2c4YjNJ2NIfVHFhr",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Youtube Personal Channel Videos To Google Sheets - Teamplte",
  "tags": [
    {
      "id": "sFkN3c5bNkm7sfcy",
      "name": "templates",
      "createdAt": "2025-10-12T09:24:37.553Z",
      "updatedAt": "2025-10-12T09:24:37.553Z"
    }
  ],
  "nodes": [
    {
      "id": "fa7989b5-a630-4ade-a7ac-1b2fe09052aa",
      "name": "Get My Channel",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        32,
        -80
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/youtube/v3/channels",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "part",
              "value": "contentDetails"
            },
            {
              "name": "mine",
              "value": "true"
            }
          ]
        },
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": false,
      "typeVersion": 4.2
    },
    {
      "id": "d8272734-2d3d-4b5c-a5e0-defcaa7c2db8",
      "name": "List Uploads",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        704,
        -144
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/youtube/v3/playlistItems",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "part",
              "value": "contentDetails"
            },
            {
              "name": "maxResults",
              "value": "={{ $json.per_page }}"
            },
            {
              "name": "=playlistId",
              "value": "={{ $json.playlistId }}"
            },
            {
              "name": "pageToken",
              "value": "={{ $json.nextPageToken }}"
            }
          ]
        },
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": false,
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "842c0a1b-e35c-4b65-85d6-aafcb5fc9387",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        1600,
        -80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9f6aa04b-801a-4b18-978d-3f359e9acb5f",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ $json.current_page }}",
              "rightValue": "={{ Math.ceil($('List Uploads').last().json.pageInfo.totalResults / $('List Uploads').last().json.pageInfo.resultsPerPage) }}\n"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "1654cda6-045d-4623-8c90-bd98c809831c",
      "name": "Loop Vars",
      "type": "n8n-nodes-base.code",
      "position": [
        480,
        -80
      ],
      "parameters": {
        "jsCode": "let vars;\ntry {\n  vars = $('Loop Vars').last().json;\n} catch (e) {\n  vars = $('Variables').last().json;\n}\n\nconst next = Number(vars?.current_page ?? 1) + 1;\nvars.current_page = next;\ntry {\n  vars.nextPageToken = $('List Uploads').last().json.nextPageToken;\n} catch (e) {\n  vars.nextPageToken = '';\n}\n\ntry {\n  ids = $('Collect ids').last().json.ids;\n} catch (e) {\n  ids = \"\";\n}\n\nreturn [\n  {\n    json: { ...vars, current_page: next, ids: ids }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "61d3c00b-df9c-45ba-97cf-6897c097612d",
      "name": "Update Posts",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1152,
        -144
      ],
      "parameters": {
        "columns": {
          "value": {
            "published": "={{ $json.contentDetails.videoPublishedAt }}",
            "youtube_id": "={{ $json.contentDetails.videoId }}"
          },
          "schema": [
            {
              "id": "youtube_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "youtube_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "published",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "youtube_id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 359175774,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit#gid=359175774",
          "cachedResultName": "Videos"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1pU-YOUR_AWS_SECRET_KEY_HERE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit?usp=drivesdk",
          "cachedResultName": "OzWebExpert Pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "19256d37-b425-4001-ab24-9b93a3354654",
      "name": "Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        256,
        -80
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={\n  \"per_page\": 50,\n  \"current_page\": 0,\n  \"nextPageToken\":\"\",\n  \"playlistId\": \"{{ $json.items[0].contentDetails.relatedPlaylists.uploads }}\",\n\"ids\":\"\"\n}"
      },
      "typeVersion": 3.4
    },
    {
      "id": "b089728f-92d1-4def-bdd0-3cc72a037aee",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        928,
        -144
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "items"
      },
      "typeVersion": 1
    },
    {
      "id": "bbc91a58-514e-4762-b20d-beea4b222c34",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        -528
      ],
      "parameters": {
        "color": 4,
        "width": 592,
        "height": 496,
        "content": "## Sync your YouTube channel videos to Google Sheets\nAutomatically fetch video data (title, tags, captions, publish date, etc.) from your YouTube channel and store it in Google Sheets \u2014 perfect for creators and marketers who want an organised content database.\n\n@[youtube](vOmqW2-T1Xg)"
      },
      "typeVersion": 1
    },
    {
      "id": "0ae8a1c7-2059-4e03-8ade-fb4e1b1cc85b",
      "name": "Get Video Details",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2272,
        -80
      ],
      "parameters": {
        "url": "https://www.googleapis.com/youtube/v3/videos",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "part",
              "value": "snippet,status"
            },
            {
              "name": "=id",
              "value": "={{ $json.youtube_id }}"
            }
          ]
        },
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8a7317e9-0501-44a3-8406-6b155baaa5db",
      "name": "Collect ids",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        -144
      ],
      "parameters": {
        "jsCode": "// \u0411\u0435\u0440\u0451\u043c vars \u0438\u0437 \u0443\u0437\u043b\u0430 \"Loop Vars\" (\u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0435 ids)\nconst vars = $('Loop Vars').last().json;\nconst prevIds = (vars.ids || '').split(',').map(s => s.trim()).filter(Boolean);\n\n// \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 youtube_id \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0440\u0430\u0437\u043e\u043c\nconst newIds = $input.all().map(i => i.json.youtube_id).filter(Boolean);\n\n// \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c + \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0443\u0431\u043b\u0438\nconst idsString = [...new Set([...prevIds, ...newIds])].join(',');\nvars.ids = idsString;\n\n// \u041e\u0442\u0434\u0430\u0451\u043c \u043e\u0434\u0438\u043d item \u0441 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439\nreturn [{ json: { ...vars, ids: idsString } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ff70a0e4-4110-4a5a-a713-c71df0c002ba",
      "name": "Update Posts1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2720,
        -80
      ],
      "parameters": {
        "columns": {
          "value": {
            "tags": "={{ $json.snippet.tags }}",
            "title": "={{ $json.snippet.title }}",
            "maxres": "={{ $json.snippet.thumbnails.maxres.url }}",
            "categoryId": "={{ $json.snippet.categoryId }}",
            "youtube_id": "={{ $json.id }}",
            "description": "={{ $json.snippet.description }}",
            "uploadStatus": "={{ $json.status.uploadStatus }}",
            "privacyStatus": "={{ $json.status.privacyStatus }}"
          },
          "schema": [
            {
              "id": "youtube_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "youtube_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "published",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "categoryId",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "categoryId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "maxres",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "maxres",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "uploadStatus",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "uploadStatus",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "privacyStatus",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "privacyStatus",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "youtube_id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 359175774,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit#gid=359175774",
          "cachedResultName": "Videos"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1pU-YOUR_AWS_SECRET_KEY_HERE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit?usp=drivesdk",
          "cachedResultName": "OzWebExpert Pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c87ef245-2066-4e48-a4e3-f8d97d20102b",
      "name": "Split Out1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2496,
        -80
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "items"
      },
      "typeVersion": 1
    },
    {
      "id": "9072a793-652f-41d2-9059-495a9a235246",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -192,
        -80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5210628c-409a-4b62-b3ce-04c132008dd8",
      "name": "Get captions text",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3392,
        -80
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/youtube/v3/captions/{{ $json.items[0].id }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "responseFormat": "text"
            }
          }
        },
        "sendQuery": true,
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "tfmt",
              "value": "srt"
            },
            {
              "name": "alt",
              "value": "media"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "text/plain; charset=UTF-8"
            }
          ]
        },
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "250cec31-bb66-4fae-93ce-910650e8484e",
      "name": "Get captions ID",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2944,
        -80
      ],
      "parameters": {
        "url": "https://www.googleapis.com/youtube/v3/captions",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "videoId",
              "value": "={{ $json.youtube_id }}"
            }
          ]
        },
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "29966cde-a92e-495a-a2f2-c85c5f6851e0",
      "name": "Update Posts2",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3616,
        -80
      ],
      "parameters": {
        "columns": {
          "value": {
            "captions": "={{ $json.data }}",
            "youtube_id": "={{ $('Update Posts1').item.json.youtube_id }}"
          },
          "schema": [
            {
              "id": "youtube_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "youtube_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "published",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "published",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "categoryId",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "categoryId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "maxres",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "maxres",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "uploadStatus",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "uploadStatus",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "privacyStatus",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "privacyStatus",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "thumbnail",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "thumbnail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "captions",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "captions",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "youtube_id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 359175774,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit#gid=359175774",
          "cachedResultName": "Videos"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1pU-YOUR_AWS_SECRET_KEY_HERE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit?usp=drivesdk",
          "cachedResultName": "OzWebExpert Pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "561f7723-66f6-454e-b1fd-1ee2a20faf41",
      "name": "If1",
      "type": "n8n-nodes-base.if",
      "position": [
        3168,
        -80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b6cc377c-c5aa-4c7b-85b1-93a433f6e74d",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.items[0].id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "92f4da57-2e8f-4f32-8e61-bba847a31746",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1824,
        -80
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "captions"
            },
            {
              "lookupColumn": "privacyStatus"
            },
            {
              "lookupColumn": "uploadStatus"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 359175774,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit#gid=359175774",
          "cachedResultName": "Videos"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1pU-YOUR_AWS_SECRET_KEY_HERE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pU-YOUR_AWS_SECRET_KEY_HERE/edit?usp=drivesdk",
          "cachedResultName": "OzWebExpert Pages"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "6c91b57e-b023-4a43-8afe-e174552e24be",
      "name": "If2",
      "type": "n8n-nodes-base.if",
      "position": [
        2048,
        -80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "57849dc9-65ca-4ca1-aacd-b8125c4fdf5c",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "def8b7d8-f66c-4497-8b8b-99b317ba9a64",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        -240
      ],
      "parameters": {
        "color": 6,
        "width": 336,
        "height": 128,
        "content": "## Setup Instructions\nConnect your Google account in both HTTP Request and Google Sheets nodes. Replace the sheet URL with your own Google Sheet."
      },
      "typeVersion": 1
    },
    {
      "id": "77276d26-2276-408a-8b1a-fbef31c1c67a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -16
      ],
      "parameters": {
        "width": 480,
        "height": 144,
        "content": "## Google Sheets Template\nhttps://docs.google.com/spreadsheets/d/1xTtkkA8ZWGOzu9eisKyY6CcYM6xF9kzS-5HNGSe-XOs/edit?gid=0#gid=0"
      },
      "typeVersion": 1
    },
    {
      "id": "f070efb7-dfe5-458c-a6cf-aa0e17205d5b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        -304
      ],
      "parameters": {
        "color": 6,
        "width": 352,
        "height": 128,
        "content": "## Flow logic\nThe flow loops through all pages of your YouTube uploads playlist, extracts video details, and appends them to Google Sheets."
      },
      "typeVersion": 1
    },
    {
      "id": "c38602a6-fa4a-42ed-a9f0-3c93e382439c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2944,
        -256
      ],
      "parameters": {
        "color": 2,
        "width": 288,
        "height": 128,
        "content": "## Captions\nCaptions (.srt) are fetched for each video if available. This can be disabled by disconnecting the last branch."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "4dd56d2a-87bd-4723-808f-4916fbe09358",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Vars",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If1": {
      "main": [
        [
          {
            "node": "Get captions text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If2": {
      "main": [
        [
          {
            "node": "Get Video Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Vars": {
      "main": [
        [
          {
            "node": "List Uploads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Update Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Variables": {
      "main": [
        [
          {
            "node": "Loop Vars",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out1": {
      "main": [
        [
          {
            "node": "Update Posts1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect ids": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List Uploads": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Posts": {
      "main": [
        [
          {
            "node": "Collect ids",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Posts1": {
      "main": [
        [
          {
            "node": "Get captions ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get My Channel": {
      "main": [
        [
          {
            "node": "Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get captions ID": {
      "main": [
        [
          {
            "node": "If1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Video Details": {
      "main": [
        [
          {
            "node": "Split Out1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get captions text": {
      "main": [
        [
          {
            "node": "Update Posts2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "If2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Get My Channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

Automatically sync your YouTube videos (title, description, tags, publish date, captions, etc.) into Google Sheets — perfect for creators and marketers who want a clean content database for analysis or reporting. ✅ Connects to your personal YouTube channel via Google OAuth 🔁…

Source: https://n8n.io/workflows/9824/ — 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 n8n workflow automates the process of uploading video and image advertisements to Meta Ads Manager via the Meta Graph API (Facebook Ads) directly from Google Sheets and Google Drive. The workflow

Facebook Graph Api, Google Sheets, HTTP Request +2
Social Media

This workflow provides an end-to-end automation for discovering, evaluating, and optionally downloading high-quality educational YouTube videos.

HTTP Request, Google Sheets
Social Media

• Downloads videos/music from YouTube using yt-dlp • Merges assets with dynamic text overlays • Automatically uploads to YouTube as Shorts (9:16 format) • Tracks everything in Google Sheets Install yt

Google Sheets, Execute Command, Read Write File +1
Social Media

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

HTTP Request, Google Sheets, Google Drive +1
Social Media

This workflow is perfect for digital content creators, marketers, and social media managers who regularly create engaging short-form videos featuring inspirational or motivational quotes. While the wo

Google Sheets, Google Drive, Read Write File +2