AutomationFlowsAI & RAG › Summarize Youtube Videos From Transcript for Social Media

Summarize Youtube Videos From Transcript for Social Media

ByEvoort Solutions @evoortsolutions on n8n.io

Turn any YouTube video into a short, structured summary using AI — perfect for content creators, marketers, or social media managers.

Event trigger★★★★☆ complexityAI-powered8 nodesForm TriggerAgentGoogle Gemini ChatGoogle DocsHTTP Request
AI & RAG Trigger: Event Nodes: 8 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Form Trigger 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": "jCs5Yhd71bxr5Ktc",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Summarize youtube videos from transcript for social media",
  "tags": [
    {
      "id": "QXtLNWbsCSABOTNm",
      "name": "Digital Marketing",
      "createdAt": "2025-05-29T11:14:57.099Z",
      "updatedAt": "2025-05-29T11:14:57.099Z"
    }
  ],
  "nodes": [
    {
      "id": "ae2d87c7-870b-4c62-9f25-6454772cb41d",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "options": {},
        "formTitle": "summarize youtube videos from transcript for social media",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Yt Video Id",
              "placeholder": "abc123",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bada944a-2453-451b-ade5-1ff2ff6c6377",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        880,
        0
      ],
      "parameters": {
        "options": {
          "systemMessage": "You are a helpful assistant that summarizes YouTube video transcripts.\n\nHere is the full transcript of a video:\nPlease provide a concise summary of the video in natural language, covering the main points, topics, and tone.\n\nFormat the output as:\n\n---\n\ud83c\udfac **Summary**:\n- [Main idea 1]\n- [Main idea 2]\n- [Optional tone, style, or genre]\n---\n"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "15389a01-0f9f-43b2-821f-b0420e3095ac",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        940,
        220
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fa5c983f-6a44-47fc-be1c-63ca9df9a94b",
      "name": "Google Docs",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1500,
        0
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $json.summary }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "",
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "8786afdb-097c-4b54-9055-2ad41a988ef3",
      "name": "Mapper",
      "type": "n8n-nodes-base.set",
      "position": [
        220,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a2486ac7-c29c-419e-9cfc-753701723510",
              "name": "ytVideoId",
              "type": "string",
              "value": "={{ $json[\"Yt Video Id\"] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "778ade7e-951f-416c-b2d5-c91b0688ab8d",
      "name": "Youtube Transcriptor",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        440,
        0
      ],
      "parameters": {
        "url": "https://youtube-transcriptor-ai.p.rapidapi.com/yt/index.php",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "yt_video_id",
              "value": "={{ $json.ytVideoId }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host"
            },
            {
              "name": "x-rapidapi-key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "00fc4b62-b1fc-44c5-b7ce-5b2950571b9c",
      "name": "Formator",
      "type": "n8n-nodes-base.code",
      "position": [
        660,
        0
      ],
      "parameters": {
        "jsCode": "const transcript = \n$input.first().json.tracks[0].transcript\nif (!Array.isArray(transcript) || transcript.length === 0) {\n  return [{\n    json: {\n      chatInput: \"Transcript not available or invalid video ID.\"\n    }\n  }];\n}\n\n// Join all transcript lines into a single string\nconst transcriptText = transcript.map(t => t.text).join(' ');\n\n// Return as chatInput\nreturn [{\n  json: {\n    chatInput: transcriptText\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "53c8c1d4-5250-4212-adde-bfd1a2a53b04",
      "name": "Optimizer",
      "type": "n8n-nodes-base.code",
      "position": [
        1240,
        0
      ],
      "parameters": {
        "jsCode": "const inputText = $input.first().json.output;\n\nfunction getFieldValue(text, field) {\n  // Updated to stop at \"---\" or end of string, instead of a non-whitespace line\n  const regex = new RegExp(`${field}:\\\\s*([\\\\s\\\\S]*?)(?=\\\\n---|$)`, 'i');\n  const match = text.match(regex);\n  return match ? match[1].trim() : '';\n}\n\nconst summary = getFieldValue(inputText, '\ud83c\udfac \\\\*\\\\*Summary\\\\*\\\\*');\n\nreturn [{\n  json: {\n    summary\n  }\n}];\n"
      },
      "typeVersion": 2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "cb6a2956-019a-492a-881f-b5a179ac34d3",
  "connections": {
    "Mapper": {
      "main": [
        [
          {
            "node": "Youtube Transcriptor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Optimizer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Formator": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Optimizer": {
      "main": [
        [
          {
            "node": "Google Docs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Mapper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Youtube Transcriptor": {
      "main": [
        [
          {
            "node": "Formator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "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

Turn any YouTube video into a short, structured summary using AI — perfect for content creators, marketers, or social media managers.

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

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

This workflow automates the entire UX research planning process — from gathering context to delivering a ready-to-share Google Doc report. Built for UX researchers and designers, it combines AI-powere

Form Trigger, Google Gemini Chat, Agent +3
AI & RAG

This workflow is a content multiplier. Provide a single video topic via a form, and it automatically researches, outlines, and writes two separate scripts: one for a YouTube Shorts and another for a L

Agent, Form Trigger, Google Docs +4
AI & RAG

This n8n workflow automates the process of: Retrieving YouTube Video Transcripts: It fetches the transcript for any YouTube video URL provided using the YouTube Transcript API from RapidAPI. Generatin

Form Trigger, Google Gemini Chat, Google Docs +2
AI & RAG

How it Works

Memory Buffer Window, Agent, Output Parser Structured +9
AI & RAG

This automated workflow template transforms a single product image into a complete professional advertisement video with dynamic motion and custom soundtrack. Perfect for e-commerce businesses, market

HTTP Request, Output Parser Structured, Tool Think +4