AutomationFlowsGeneral › AI YouTube Chapter Generator

AI YouTube Chapter Generator

Original n8n title: Youtube Chapter Generator

youtube chapter generator. Uses manualTrigger, httpRequest, extractFromFile, outputParserStructured. Event-driven trigger; 13 nodes.

Event trigger★★★★☆ complexityAI-powered13 nodesHTTP RequestOutput Parser StructuredYouTubeGoogle Gemini ChatChain Llm
General Trigger: Event Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Chainllm → 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": "SCUbdpVPX4USbQmr",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "youtube chapter generator",
  "tags": [
    {
      "id": "637Ga13eORejFbTG",
      "name": "youtube",
      "createdAt": "2025-04-06T16:41:11.086Z",
      "updatedAt": "2025-04-06T16:41:11.086Z"
    },
    {
      "id": "tfcUyZ2pGsRZFcje",
      "name": "chapters",
      "createdAt": "2025-04-06T16:41:28.633Z",
      "updatedAt": "2025-04-06T16:41:28.633Z"
    }
  ],
  "nodes": [
    {
      "id": "104fa4ce-cd86-4fff-b31c-0ef37fba6d93",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -800,
        -120
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c3b45480-3098-40f9-a77f-ada54481b590",
      "name": "Get Caption ID",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -200,
        -120
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId={{ $json.id }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "youTubeOAuth2Api"
      },
      "credentials": {
        "youTubeOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "fe08adc4-e6ef-47ae-a946-1e6d5a85e10e",
      "name": "Get Captions",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        20,
        -120
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/youtube/v3/captions/{{ $json.items[0].id }}?tfmt=srt",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "youTubeOAuth2Api"
      },
      "credentials": {
        "youTubeOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0e15f334-9ff8-4a7e-85a9-4cf8cf10ea55",
      "name": "Extract Captions",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        240,
        -120
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "af99a919-7ebc-4a6c-80be-83e2ffa68d05",
      "name": "Structured Captions",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        640,
        100
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"description\": \"California\"\n\t\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "414a41a2-0715-4a57-a606-9f3678b2472a",
      "name": "Get Video Meta Data",
      "type": "n8n-nodes-base.youTube",
      "position": [
        -420,
        -120
      ],
      "parameters": {
        "options": {},
        "videoId": "={{ $json.video_id }}",
        "resource": "video",
        "operation": "get"
      },
      "credentials": {
        "youTubeOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7304d9b1-5956-41c3-b78a-2c409d0aa726",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        460,
        100
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-1.5-flash-8b-exp-0924"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "867a6ad6-0712-4fbf-97fd-ab054b783172",
      "name": "Set Video ID",
      "type": "n8n-nodes-base.set",
      "position": [
        -640,
        -120
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "568762f7-e496-4550-8567-d49e2ce1676d",
              "name": "video_id",
              "type": "string",
              "value": "r1wqsrW2vmE"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "dcd0c9d7-1a69-45e8-98e9-b7cf7d12734e",
      "name": "Update Chapters",
      "type": "n8n-nodes-base.youTube",
      "position": [
        940,
        -120
      ],
      "parameters": {
        "title": "={{ $('Get Video Meta Data').item.json.snippet.title }}",
        "videoId": "={{ $('Get Captions').item.json.items[0].snippet.videoId }}",
        "resource": "video",
        "operation": "update",
        "categoryId": "22",
        "regionCode": "US",
        "updateFields": {
          "description": "={{ $json.output.description }}\nChapters\n{{ $json.output.description }}"
        }
      },
      "credentials": {
        "youTubeOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "916629c4-6e49-4432-88e8-626748cb3d24",
      "name": "Tag Chapters in Description",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        460,
        -120
      ],
      "parameters": {
        "text": "=This is an srt format data. please classify this data into chapters\nbased upon this transcript \n{{ $json.data }}\n{\n\"description\":\"00:00 Introduction\n02:15 Topic One\n05:30 Topic Two\n10:45 Conclusion\"\n}\n",
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "b0f56d68-b787-4ccc-8bb5-bdb5b04c3ae4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        -200
      ],
      "parameters": {
        "width": 1040,
        "height": 440,
        "content": "\n## Get Captions"
      },
      "typeVersion": 1
    },
    {
      "id": "0bcee6b5-0e8b-4f85-8f83-c829e785467a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        378,
        -200
      ],
      "parameters": {
        "color": 4,
        "width": 420,
        "height": 440,
        "content": "## Generate Chapters\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0f90f6ec-2154-4945-b262-6531fef2334f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        820,
        -200
      ],
      "parameters": {
        "color": 6,
        "width": 440,
        "height": 440,
        "content": "## Update Description\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "27125160-7c64-4431-b243-832c1ae29d29",
  "connections": {
    "Get Captions": {
      "main": [
        [
          {
            "node": "Extract Captions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Video ID": {
      "main": [
        [
          {
            "node": "Get Video Meta Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Caption ID": {
      "main": [
        [
          {
            "node": "Get Captions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Captions": {
      "main": [
        [
          {
            "node": "Tag Chapters in Description",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Video Meta Data": {
      "main": [
        [
          {
            "node": "Get Caption ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Captions": {
      "ai_outputParser": [
        [
          {
            "node": "Tag Chapters in Description",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Tag Chapters in Description",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Tag Chapters in Description": {
      "main": [
        [
          {
            "node": "Update Chapters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Set Video ID",
            "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

How this works

This workflow effortlessly generates chapter timestamps for your YouTube videos, saving hours of manual editing by automatically analysing captions and metadata to create a structured outline. It's perfect for content creators and video producers who want to boost viewer engagement and SEO without technical hassle. The key step involves feeding the video's captions into Google Gemini's AI model, which intelligently identifies natural breaks and formats them into ready-to-use chapters, integrated seamlessly with YouTube's API for metadata retrieval.

Use this workflow whenever you upload a new video with captions and need quick chapters to enhance watch time, especially for educational or tutorial content. Avoid it for short videos under five minutes or those without captions, as it relies on textual analysis. Common variations include adapting the AI prompt for custom chapter styles or chaining it with social media nodes to auto-post the updated video description.

About this workflow

youtube chapter generator. Uses manualTrigger, httpRequest, extractFromFile, outputParserStructured. Event-driven trigger; 13 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

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

General

Extract & Summarize Bing Copilot Search Results with Gemini AI and Bright Data. Uses manualTrigger, lmChatGoogleGemini, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter. Event-dri

Google Gemini Chat, Document Default Data Loader, Text Splitter Recursive Character Text Splitter +4
General

Extract & Summarize Yelp Business Review with Bright Data and Google Gemini. Uses manualTrigger, stickyNote, httpRequest, lmChatGoogleGemini. Event-driven trigger; 12 nodes.

HTTP Request, Google Gemini Chat, Output Parser Structured +2
General

Wait Schedule. Uses googleDrive, lmChatGoogleGemini, outputParserStructured, stickyNote. Scheduled trigger; 34 nodes.

Google Drive, Google Gemini Chat, Output Parser Structured +4
General

High-Level Service Page SEO Blueprint Report. Uses formTrigger, splitInBatches, httpRequest, lmChatGoogleGemini. Event-driven trigger; 33 nodes.

Form Trigger, HTTP Request, Google Gemini Chat +1
General

Brand Content Extract, Summarize & Sentiment Analysis with Bright Data. Uses manualTrigger, stickyNote, chainLlm, informationExtractor. Event-driven trigger; 23 nodes.

Chain Llm, Information Extractor, HTTP Request +3