This workflow corresponds to n8n.io template #4581 — we link there as the canonical source.
This workflow follows the Agent → Google Sheets 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 →
{
"nodes": [
{
"id": "dc53327e-392e-44db-b633-657f1edbad9d",
"name": "YouTube RSS Trigger",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
2120,
500
],
"parameters": {
"feedUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCf3dc-Y3k5vBTCVpPCAfG6g",
"pollTimes": {
"item": [
{}
]
}
},
"typeVersion": 1
},
{
"id": "d0665878-6c71-4994-9e24-410d6c8dfe94",
"name": "Extract Channel ID",
"type": "n8n-nodes-base.code",
"position": [
2340,
500
],
"parameters": {
"jsCode": "// 'items' is already defined in n8n and contains incoming data\n\nreturn items.map(item => {\n const link = item.json.link; // e.g., \"https://www.youtube.com/watch?v=Y0DYmRnfHlc\"\n const videoId = link.split(\"v=\")[1].split(\"&\")[0];\n return {\n json: {\n videoId,\n },\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "8b22e2ec-9710-4c61-8a4b-bf86fb10db68",
"name": "Fetch Video Details",
"type": "n8n-nodes-base.httpRequest",
"position": [
2720,
500
],
"parameters": {
"url": "https://www.googleapis.com/youtube/v3/videos",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "part",
"value": "snippet"
},
{
"name": "id",
"value": "={{ $json.videoId }}"
},
{
"name": "key",
"value": "YOUR_API_KEY"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "d3bc260c-ec32-44ac-9cb5-22cefe3dd124",
"name": "Summarize Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3140,
500
],
"parameters": {
"text": "=Title: {{ $json.items[0].snippet.title }}\nDescription: {{ $json.items[0].snippet.description }}",
"options": {
"systemMessage": "You are a YouTube video summarizer. If the description is not available just tell that it is not availablee. Summarize the following video description"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "6ffc23a3-5a6d-4333-b2b5-5ca89d6f0003",
"name": "OpenAI GPT Summary Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
3100,
720
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"typeVersion": 1.2
},
{
"id": "028dbd84-3e46-4a88-8c04-33fa4c14db73",
"name": "Store results to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
3600,
500
],
"parameters": {
"columns": {
"value": {
"Title": "={{ $('Fetch Video Details').item.json.items[0].snippet.title }}",
"Summary": "={{ $json.output }}",
"Video URL": "={{ $('YouTube RSS Trigger').item.json.link }}",
"Video Published Date": "={{ $('YouTube RSS Trigger').item.json.isoDate }}"
},
"schema": [
{
"id": "Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Video URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Video URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Video Published Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Video Published Date",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ImEKVtyBlxVvXzWKQw4wGbp4IzT_L2EUVqVj5txqY8A/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ImEKVtyBlxVvXzWKQw4wGbp4IzT_L2EUVqVj5txqY8A",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ImEKVtyBlxVvXzWKQw4wGbp4IzT_L2EUVqVj5txqY8A/edit?usp=drivesdk",
"cachedResultName": "Youtube video summarizer"
}
},
"typeVersion": 4.5
},
{
"id": "a8583d95-e8da-41e3-ac2b-1f33cdedfd71",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
2060,
20
],
"parameters": {
"color": 3,
"width": 440,
"height": 680,
"content": "### \ud83d\udd39 Section 1: **Trigger & Metadata Extraction**\n\n#### 1. `Trigger: New YouTube Video via RSS`\n\n* **Type**: RSS Trigger\n* **Purpose**: Listens for new videos published on a YouTube channel using its RSS feed.\n* **Output**: Latest video feed item including URL, title, and publication date.\n\n#### 2. `Function: Extract Channel ID from RSS`\n\n* **Type**: Function Node\n* **Purpose**: Parses the video URL from the RSS feed and extracts the YouTube Channel ID or Video ID.\n* **Why**: Required to fetch full video metadata using YouTube Data API in the next step.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "8629cc8d-9f91-4a02-a243-02255338cc02",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
-120
],
"parameters": {
"color": 4,
"width": 1300,
"height": 320,
"content": "=======================================\n WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n - YouTube: https://www.youtube.com/@YaronBeen/videos\n - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
},
"typeVersion": 1
},
{
"id": "f423c1f0-4a5d-4c5c-a32d-e2e4818de5a8",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
220
],
"parameters": {
"color": 4,
"width": 1289,
"height": 2378,
"content": "# \ud83d\udcfa YouTube Video Summary Workflow \u2013 Documentation\n\n## \ud83e\udde9 Overview\n\nThis n8n workflow automates the process of:\n\n* Monitoring a YouTube channel for new videos via RSS\n* Extracting video metadata\n* Summarizing the video description using GPT\n* Logging the summary in a Google Sheet\n* Requesting human approval via Slack\n* Posting the approved summary to a Discord channel\n\n---\n\n## \ud83d\udd17 Workflow Breakdown\n\n### \ud83d\udd39 Group 1: **Trigger & Metadata Extraction**\n\n#### 1. `Trigger: New YouTube Video via RSS`\n\n* **Type**: RSS Trigger\n* **Purpose**: Listens for new videos published on a YouTube channel using its RSS feed.\n* **Output**: Latest video feed item including URL, title, and publication date.\n\n#### 2. `Function: Extract Channel ID from RSS`\n\n* **Type**: Function Node\n* **Purpose**: Parses the video URL from the RSS feed and extracts the YouTube Channel ID or Video ID.\n* **Why**: Required to fetch full video metadata using YouTube Data API in the next step.\n\n---\n\n### \ud83d\udd39 Group 2: **Video Metadata Retrieval**\n\n#### 3. `HTTP Request: Fetch Video Metadata from YouTube API`\n\n* **Type**: HTTP Request Node\n* **Purpose**: Fetches detailed video data like description, title, and published date using the YouTube Data API.\n* **Key Output Fields**:\n\n * `videoTitle`\n * `videoDescription`\n * `videoPublishedAt`\n * `videoURL`\n\n---\n\n### \ud83d\udd39 Group 3: **AI Summary Generation**\n\n#### 4. `Agent: Summarize Video Description (GPT)`\n\n* **Type**: OpenAI GPT Agent Node\n* **Purpose**: Uses OpenAI GPT model to generate a concise summary from the video description.\n* **Model Used**: OpenAI GPT (e.g., gpt-4 or gpt-3.5)\n* **Inputs**: Raw video description\n* **Outputs**: Clean, readable summary\n\n---\n\n### \ud83d\udd39 Group 4: **Storage & Human Approval**\n\n#### 5. `Google Sheets: Append Summary Record`\n\n* **Type**: Google Sheets Node\n* **Purpose**: Logs each video\u2019s summary to a Google Sheet.\n* **Fields Stored**:\n\n * `Title`\n * `Video URL`\n * `Summary`\n * `Video Published Date`\n\n#### 6. `Slack: Send Summary for Approval`\n\n* **Type**: Slack (sendAndWait) Node\n* **Purpose**: Sends the summary to a Slack channel for human review.\n* **Interactivity**: Waits for a response (approve or reject) from the user.\n\n---\n\n### \ud83d\udd39 Group 5: **Final Publishing**\n\n#### 7. `Reddit: Post Approved Summary`\n\n* **Type**: Reddit Post Node\n* **Purpose**: Publishes the final approved summary to a specific Reddit subreddit.\n* **Condition**: Only posts if approved via Slack interaction.\n\n---\n\n## \u2705 Benefits\n\n* **Automation**: Saves time by reducing manual video summarization.\n* **Human-in-the-loop**: Ensures quality control via Slack approval.\n* **Cross-platform updates**: Automatically updates both internal (Google Sheets) and external (Reddit) channels.\n\n---\n\n\n"
},
"typeVersion": 1
},
{
"id": "896302ec-7449-4cb7-a318-06c80d3bec0e",
"name": "Send Summary for Approval",
"type": "n8n-nodes-base.slack",
"position": [
3780,
500
],
"parameters": {
"select": "channel",
"message": "=The summary of a video titled \"{{ $json.Title }}\" is given below:\n\n{{ $json.Summary }}",
"options": {
"appendAttribution": false
},
"channelId": {
"__rl": true,
"mode": "list",
"value": "C08TTV0CC3E",
"cachedResultName": "all-nathing"
},
"operation": "sendAndWait"
},
"typeVersion": 2.3
},
{
"id": "db3482aa-eb72-45fb-951b-8f979b092e7a",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2580,
120
],
"parameters": {
"color": 2,
"width": 380,
"height": 580,
"content": "### \ud83d\udd39 Section 2: **Video Metadata Retrieval**\n\n#### 3. `HTTP Request: Fetch Video Metadata from YouTube API`\n\n* **Type**: HTTP Request Node\n* **Purpose**: Fetches detailed video data like description, title, and published date using the YouTube Data API.\n* **Key Output Fields**:\n\n * `videoTitle`\n * `videoDescription`\n * `videoPublishedAt`\n * `videoURL`\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "d7695161-f1fd-4ae2-95d7-471ce387842e",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
3040,
160
],
"parameters": {
"color": 4,
"width": 400,
"height": 700,
"content": "### \ud83d\udd39 Section 3: **AI Summary Generation**\n\n#### 4. `Agent: Summarize Video Description (GPT)`\n\n* **Type**: OpenAI GPT Agent Node\n* **Purpose**: Uses OpenAI GPT model to generate a concise summary from the video description.\n* **Model Used**: OpenAI GPT (e.g., gpt-4 or gpt-3.5)\n* **Inputs**: Raw video description\n* **Outputs**: Clean, readable summary\n\n---\n\n\n"
},
"typeVersion": 1
},
{
"id": "36d3ed80-e31b-4154-b433-5fd2c5f37405",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
3520,
-100
],
"parameters": {
"color": 5,
"width": 400,
"height": 820,
"content": "### \ud83d\udd39 Section 4: **Storage & Human Approval**\n\n#### 5. `Google Sheets: Append Summary Record`\n\n* **Type**: Google Sheets Node\n* **Purpose**: Logs each video\u2019s summary to a Google Sheet.\n* **Fields Stored**:\n\n * `Title`\n * `Video URL`\n * `Summary`\n * `Video Published Date`\n\n#### 6. `Slack: Send Summary for Approval`\n\n* **Type**: Slack (sendAndWait) Node\n* **Purpose**: Sends the summary to a Slack channel for human review.\n* **Interactivity**: Waits for a response (approve or reject) from the user.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "ef7f236c-0fa1-4049-889e-1eacbdef5bb2",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
4000,
220
],
"parameters": {
"color": 6,
"width": 320,
"height": 480,
"content": "### \ud83d\udd39 Section 5: **Final Publishing**\n\n#### 7. `Reddit: Post Approved Summary`\n\n* **Type**: Reddit Post Node\n* **Purpose**: Publishes the final approved summary to a specific Reddit subreddit.\n* **Condition**: Only posts if approved via Slack interaction.\n\n---\n\n\n"
},
"typeVersion": 1
},
{
"id": "c942edf3-ed74-4fe8-970c-e9600b6912ce",
"name": "Publish To Reddit",
"type": "n8n-nodes-base.reddit",
"position": [
4100,
500
],
"parameters": {
"text": "={{ $('Store results to Google Sheet').item.json.Summary }}",
"title": "={{ $('Store results to Google Sheet').item.json.Title }}",
"subreddit": "Youtube"
},
"typeVersion": 1
}
],
"connections": {
"Summarize Agent": {
"main": [
[
{
"node": "Store results to Google Sheet",
"type": "main",
"index": 0
}
]
]
},
"Extract Channel ID": {
"main": [
[
{
"node": "Fetch Video Details",
"type": "main",
"index": 0
}
]
]
},
"Fetch Video Details": {
"main": [
[
{
"node": "Summarize Agent",
"type": "main",
"index": 0
}
]
]
},
"YouTube RSS Trigger": {
"main": [
[
{
"node": "Extract Channel ID",
"type": "main",
"index": 0
}
]
]
},
"OpenAI GPT Summary Model": {
"ai_languageModel": [
[
{
"node": "Summarize Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Send Summary for Approval": {
"main": [
[
{
"node": "Publish To Reddit",
"type": "main",
"index": 0
}
]
]
},
"Store results to Google Sheet": {
"main": [
[
{
"node": "Send Summary for Approval",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This sophisticated n8n automation transforms YouTube content discovery into a seamless, multi-platform intelligence sharing process. By intelligently connecting YouTube RSS, AI summarization, and content distribution platforms, the workflow: Discovers New Content: Monitors…
Source: https://n8n.io/workflows/4581/ — 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 advanced n8n automation is a sophisticated content intelligence tool that transforms YouTube video discovery into a seamless, multi-platform content distribution system. By leveraging RSS, AI, an
This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents.
This workflow streamlines academic assessment through a multi-agent AI system that interprets rubrics, grades submissions, checks for plagiarism, performs quality moderation, generates feedback, and e
This workflow automates invoice processing directly from your email inbox.
This workflow automates athlete performance monitoring through two parallel pipelines: real-time session analysis triggered by training form submissions, and scheduled weekly performance summaries. De