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 →
{
"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.
googleOAuth2ApigoogleSheetsOAuth2Api
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
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
This workflow provides an end-to-end automation for discovering, evaluating, and optionally downloading high-quality educational YouTube videos.
• 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
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
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