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 →
{
"template_id": 12372,
"template_name": "Create active learning notes from YouTube videos with Gemini and Notion",
"source": "n8n_official_api",
"nodes": [
{
"id": "a10c960f-e25e-4bca-911d-0b7f4bbee975",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
3248,
1408
],
"parameters": {
"options": {
"path": "7eefa8a2-fe80-46ce-b86c-acd138eb6941",
"buttonLabel": "Generate Learning Notes",
"appendAttribution": false
},
"formTitle": "YouTube to Active Learning Notes",
"formFields": {
"values": [
{
"fieldName": "URL",
"fieldLabel": "YouTube Video URL",
"placeholder": "input your link youtube",
"requiredField": true
}
]
},
"formDescription": "Transform any YouTube video into structured Active Learning study sheets powered by AI"
},
"typeVersion": 2.4
},
{
"id": "0a27dd78-5c4d-4e3e-acb4-646889b385ba",
"name": "Sticky Note - Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
3200,
656
],
"parameters": {
"width": 420,
"height": 544,
"content": "## \ud83d\ude80 Overview & Setup\n**Turn YouTube videos into Active Learning study sheets.**\n\n### \u2699\ufe0f How it works\n1. **Input:** Submit a YouTube Link.\n2. **Process:** The workflow fetches metadata, transcribes audio, and analyzes it using the ICAP framework.\n3. **Output:** A structured Notion page with learning goals and practice tasks.\n\n### \ud83d\udccb Prerequisites\n* **Notion Template:** [Click here to duplicate](https://www.notion.so/YouTube-to-Notion-Active-Learning-Assistant-Beginner-2db1fc5a596381b1b5dec683689d3d1d?source=copy_link)\n* **API Keys:** RapidAPI, Google Gemini, YouTube Data API.\n\n### \u26a0\ufe0f Before Running\n1. Paste your **RapidAPI Key** in the *HTTP - Get YouTube Audio* node.\n2. Paste your **Database ID** in the *Function - Parse Notion JSON* node."
},
"typeVersion": 1
},
{
"id": "4462a719-70ef-4aa0-a253-4485c48b2ebd",
"name": "Sticky Note - Fetch",
"type": "n8n-nodes-base.stickyNote",
"position": [
3200,
1216
],
"parameters": {
"color": 7,
"width": 888,
"height": 396,
"content": "## \ud83d\udce5 Step 1: Get Video Data\nHere, the bot receives your YouTube Link.\n\n**What happens?**\n- It separates the Video ID from the link.\n- It fetches the Title, Channel Name, and Thumbnail image to make your Notion header look good."
},
"typeVersion": 1
},
{
"id": "656a39f9-c80b-4167-97c1-e10f8d7d4fe1",
"name": "Sticky Note - Audio",
"type": "n8n-nodes-base.stickyNote",
"position": [
4112,
1248
],
"parameters": {
"color": 2,
"width": 880,
"height": 688,
"content": "## \ud83c\udfa7 Step 2: Listen & Note-take\nSince AI cannot \"watch,\" we convert the video into text.\n\n**The Process:**\n1. **Download:** Grabs the audio file (.m4a) from YouTube via RapidAPI.\n2. **Transcribe:** Sends the audio file to **Gemini Flash**. This model is chosen because it's fast, cheap, and handles long audio well."
},
"typeVersion": 1
},
{
"id": "e473e386-b06f-4b5f-a7f3-fb1425239056",
"name": "Sticky Note - AI",
"type": "n8n-nodes-base.stickyNote",
"position": [
5024,
1152
],
"parameters": {
"color": 2,
"width": 676,
"height": 672,
"content": "## \ud83e\udd16 Step 3: \"Active Learning\" Analysis\nThis is the brain of the system. The AI acts as your **Private Tutor**, not just a summarizer.\n\n**AI Tasks (based on Instructions):**\n- Create **Micro-goals** (Specific learning targets).\n- Generate **Cornell Notes** (Critical Q&A).\n- Perform the **Feynman Test** (Explain complex concepts simply).\n- Design a **Simulation Task** for you to practice immediately."
},
"typeVersion": 1
},
{
"id": "01ba8b94-8c62-4b81-b43e-a4ecb849d99b",
"name": "Sticky Note - Storage",
"type": "n8n-nodes-base.stickyNote",
"position": [
5728,
1152
],
"parameters": {
"color": 2,
"width": 472,
"height": 428,
"content": "## \ud83d\udcbe Step 4: Build Notion Page\nThis part arranges the \"furniture\" in your Notion page to keep it tidy.\n\n**Features:**\n- Uses custom code (JavaScript) to create Checkboxes, Toggles, and Colored Boxes.\n- Sends the structured data to your Notion Database via API."
},
"typeVersion": 1
},
{
"id": "afa15c61-be81-4a6b-ba4d-badbc6d74241",
"name": "Sticky Note - Security",
"type": "n8n-nodes-base.stickyNote",
"position": [
5728,
1600
],
"parameters": {
"color": 3,
"width": 400,
"height": 900,
"content": "## \ud83d\udee0\ufe0f Checklist Before Running (Must Check!)\n\nIf the workflow fails (red error), check these 3 items first:\n\n### 0. Get the Notion Template \ud83d\udcc4\n*First, duplicate this database to your Notion workspace.*\n- [**\ud83d\udc49 Click Here to Open Template**](https://www.notion.so/YouTube-to-Notion-Active-Learning-Assistant-Beginner-2db1fc5a596381b1b5dec683689d3d1d?source=copy_link)\n- Click **Duplicate** (top-right corner) to save it.\n\n### 1. Notion Database ID \ud83d\uddc2\ufe0f\n*Ensure the ID inside the \"Function\" Node matches your new Notion Database.*\n- **How to Find:** Open your Notion database in a browser -> Check the URL.\n- **Format:** `notion.so/username/[DATABASE_ID]?v=...` (The long string between the username and the question mark).\n- **Example:** `2db1fc5a...`\n\n### 2. API Keys & Quota \ud83d\udd11\n*Ensure your keys are active and you have available quota.*\n\n* **RapidAPI (YouTube Downloader):**\n - [Get Key Here](https://rapidapi.com/ytdlfree/api/youtube-video-fast-downloader-24-7)\n - Check the \"My Apps\" menu in RapidAPI to view your remaining monthly quota.\n\n* **Google Gemini API:**\n - [Create Free API Key](https://aistudio.google.com/app/apikey)\n - Ensure your Google Cloud project has billing linked (even for the free tier).\n\n### 3. Notion Connection (Integration) \ud83d\udd0c\n*The \"HTTP Request\" Node must be connected to your Notion account.*\n- **How to Check:** Click the HTTP Request Node -> \"Credential\" Tab -> Ensure status is **\"Connected\"**.\n- **Important:** Inside Notion, click the three dots `...` at the top right of your Database page -> `Connections` -> `Connect to` -> Select your n8n integration name."
},
"typeVersion": 1
},
{
"id": "46fd1111-9807-44ca-b81b-e1d867f5192e",
"name": "Set - Prepare Video Metadata",
"type": "n8n-nodes-base.set",
"position": [
3920,
1408
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "field1",
"name": "videoId",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "field2",
"name": "title",
"type": "string",
"value": "={{ $json.snippet.title }}"
},
{
"id": "field3",
"name": "description",
"type": "string",
"value": "={{ $json.snippet.description }}"
},
{
"id": "field4",
"name": "publishedAt",
"type": "string",
"value": "={{ $json.snippet.publishedAt }}"
},
{
"id": "field5",
"name": "thumbnailUrl",
"type": "string",
"value": "={{ $json.snippet.thumbnails.maxres?.url || $json.snippet.thumbnails.high?.url || $json.snippet.thumbnails.default.url }}"
},
{
"id": "field6",
"name": "videoUrl",
"type": "string",
"value": "={{ 'https://www.youtube.com/watch?v=' + $json.id }}"
},
{
"id": "field7",
"name": "channelTitle",
"type": "string",
"value": "={{ $json.snippet.channelTitle }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4bec85e9-d4dc-461c-8674-3466a9096c45",
"name": "HTTP - Download Audio File",
"type": "n8n-nodes-base.httpRequest",
"position": [
4496,
1520
],
"parameters": {
"url": "={{ $json.file }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "f7dcab68-667c-4abf-a9f2-adca1b4bde27",
"name": "IF - Skip if No Transcript",
"type": "n8n-nodes-base.if",
"position": [
4768,
1760
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition1",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.content?.parts?.[0]?.text }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.1
},
{
"id": "8eac35a4-8269-4b77-80cd-f876957219e1",
"name": "Merge - Attach Metadata + Transcript",
"type": "n8n-nodes-base.merge",
"position": [
5104,
1408
],
"parameters": {
"mode": "combine",
"options": {
"includeUnpaired": true
},
"combineBy": "combineByPosition"
},
"retryOnFail": false,
"typeVersion": 3,
"alwaysOutputData": false
},
{
"id": "6315aa12-cdad-43d9-a5c6-6d18b2314b88",
"name": "HTTP - Get YouTube Audio",
"type": "n8n-nodes-base.httpRequest",
"position": [
4240,
1520
],
"parameters": {
"url": "={{ 'https://youtube-video-fast-downloader-24-7.p.rapidapi.com/download_audio/' + $json.videoId + '?quality=140' }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "youtube-video-fast-downloader-24-7.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "PASTE_YOUR_RAPIDAPI_KEY_HERE"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "6a2a6bc0-8c90-4e51-9a7c-7296845f03c7",
"name": "YouTube - Fetch Video Details",
"type": "n8n-nodes-base.youTube",
"position": [
3680,
1408
],
"parameters": {
"options": {},
"videoId": "={{ $json.VIdeoID }}",
"resource": "video",
"operation": "get"
},
"typeVersion": 1
},
{
"id": "459a4568-c7cb-429e-8d52-7bdde7bffab7",
"name": "Memory - Conversation Buffer",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
5344,
1648
],
"parameters": {
"sessionKey": "active-learning-session",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "91546d20-4d78-41bc-a735-2308eae843cb",
"name": "Output Parser - Structured JSON",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
5536,
1648
],
"parameters": {
"jsonSchemaExample": "{\n \"micro_goals\": [\n \"Goal 1: Mampu menjelaskan konsep X...\",\n \"Goal 2: Mampu mempraktikkan Y tanpa panduan...\"\n ],\n \"cornell_notes\": [\n {\n \"trigger\": \"Pertanyaan pemicu (Misal: Mengapa harus X?)\",\n \"concept\": \"Penjelasan inti atau logika di baliknya...\"\n }\n ],\n \"feynman_explanation\": \"Penjelasan konsep inti dengan bahasa yang sangat sederhana (untuk anak 5 tahun).\",\n \"simulation_task\": \"Tugas konkret untuk mempraktikkan materi pada kasus/data yang berbeda (bukan menyalin contoh).\",\n \"key_topics\": [\"Topic 1\", \"Topic 2\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "ac6457de-491b-4dc2-b6d9-213d24f47ecf",
"name": "Transcribe a recording",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
4496,
1760
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "id",
"value": "models/gemini-2.5-flash"
},
"options": {},
"resource": "audio",
"inputType": "binary"
},
"retryOnFail": true,
"typeVersion": 1.1,
"waitBetweenTries": 5000
},
{
"id": "fe37039f-34e4-4ae5-b392-8fed7165f7db",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
5152,
1648
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "64b5a9a2-00a0-4b3c-b3ac-dd2d29db39fa",
"name": "AI Agent - Active Learning",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
5312,
1408
],
"parameters": {
"text": "=# INPUT DATA\nTitle: {{ $json.title }}\nChannel: {{ $('Set - Prepare Video Metadata').item.json.channelTitle }}\nTranscript: {{ $json.content?.parts?.[0]?.text || 'No transcript available' }}\n\n# ROLE\nYou are an Expert Learning Scientist specializing in the ICAP Framework (Interactive, Constructive, Active, Passive).\nYour goal is NOT to summarize the content. Your goal is to create an **Active Learning Worksheet** that forces the user to construct knowledge, not just consume it.\n\n# TASK\nAnalyze the transcript and generate a structured JSON output based on the Active Learning Protocol.\n\n# CRITICAL INSTRUCTIONS (Fill these specific fields):\n1. \"micro_goals\": Extract 2-3 specific, measurable learning outcomes. What should the user BE ABLE TO DO after this? (e.g., \"Build a Pivot Table from scratch\", not \"Understand Pivot Tables\").\n2. \"cornell_notes\": Extract key concepts but format them as a \"Dialogue\".\n - \"trigger\": A critical question, a 'Why', or a keyword.\n - \"concept\": The logic, answer, or insight (in user's own words style).\n3. \"feynman_explanation\": Explain the *single most complex concept* in the video using simple language/analogies (No jargon).\n4. \"simulation_task\": Create a specific \"Lab Challenge\". Ask the user to apply the concept to a **DIFFERENT** scenario/dataset than the one in the video.\n5. \"key_topics\": 2-3 main tags.",
"options": {
"systemMessage": "You are an Elite Productivity Strategist & Coach.\nYou do not just summarize; you convert information into aggressive, high-impact ACTION PLANS.\nYour goal is to \"Upgrade\" the user's life by extracting the specific \"How-To\", frameworks, and tactical steps from the content.\nAvoid generic advice. Be specific, direct, and \"no-nonsense\"."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "7f6762ee-5049-4f06-b13b-222c4014b6f8",
"name": "SET - Get YT ID",
"type": "n8n-nodes-base.set",
"position": [
3456,
1408
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8ba34655-8879-4f7a-8a29-8c6ae34f0575",
"name": "VIdeoID",
"type": "string",
"value": "={{ $json.URL.match(/(?:v=|youtu.be\\/)([a-zA-Z0-9_-]{11})/)?.[1] || $json.URL }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "90ead700-ad81-4402-bc8e-f53a1b68dc40",
"name": "Create Notion Page",
"type": "n8n-nodes-base.httpRequest",
"position": [
6000,
1408
],
"parameters": {
"url": "https://api.notion.com/v1/pages",
"method": "POST",
"options": {},
"jsonBody": "={{ $json }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Notion-Version",
"value": "2022-06-28"
}
]
},
"nodeCredentialType": "notionApi"
},
"typeVersion": 4.3
},
{
"id": "fbc07f2c-96e6-4617-a0cf-8575996e9c5d",
"name": "Set Audio MimeType",
"type": "n8n-nodes-base.code",
"position": [
4240,
1760
],
"parameters": {
"jsCode": "const items = $input.all();\n\n// Loop semua item yang masuk\nfor (const item of items) {\n // Cek apakah ada data binary (biasanya bernama 'data')\n if (item.binary && item.binary.data) {\n // Kita paksa ubah label MIME type-nya agar dikenali Gemini\n // Karena sumber dari RapidAPI biasanya .m4a, kita pakai audio/mp4\n item.binary.data.mimeType = 'audio/mp4';\n item.binary.data.fileExtension = 'm4a';\n item.binary.data.fileName = 'audio_downloaded.m4a';\n }\n}\n\nreturn items;"
},
"typeVersion": 2
},
{
"id": "24f07c3f-613c-456b-be64-ecbca17d9299",
"name": "Build Page Structure",
"type": "n8n-nodes-base.code",
"position": [
5792,
1408
],
"parameters": {
"jsCode": "// 1. Ambil data\nconst rawAi = $input.item.json.output || $input.item.json;\nconst ai = typeof rawAi === 'string' ? JSON.parse(rawAi) : rawAi;\n\n// Fallback Metadata\nconst youtubeNode = $('YouTube - Fetch Video Details').first();\nconst youtubeData = youtubeNode ? youtubeNode.json : {};\nconst setNode = $('Set - Prepare Video Metadata').first();\nconst setData = setNode ? setNode.json : {};\n\nconst videoTitle = youtubeData.snippet?.title || setData.title || \"Untitled\";\nconst videoUrl = `https://www.youtube.com/watch?v=${youtubeData.id || setData.videoId}`;\nconst channelName = youtubeData.snippet?.channelTitle || setData.channelTitle || \"Unknown\";\nconst publishedAt = youtubeData.snippet?.publishedAt || setData.publishedAt || new Date().toISOString();\nconst thumbnailUrl = youtubeData.snippet?.thumbnails?.maxres?.url || youtubeData.snippet?.thumbnails?.high?.url || setData.thumbnailUrl;\n\n// 2. ID DATABASE\nconst database_id = \"PASTE_YOUR_NOTION_DATABASE_ID_HERE\";\n\n// 3. Properties Header\nconst properties = {\n \"Name\": { \"title\": [{ \"text\": { \"content\": videoTitle.substring(0, 2000) } }] },\n \"URL\": { \"url\": videoUrl },\n \"Channel\": { \"select\": { \"name\": channelName.replace(/,/g, '') } },\n \"Topics\": { \"multi_select\": (ai.key_topics || [\"Learning\"]).map(t => ({ \"name\": t })) },\n \"Status\": { \"status\": { \"name\": \"\ud83d\udfe2 Processed\" } },\n \"Summary\": { \"rich_text\": [{ \"text\": { \"content\": ai.feynman_explanation || \"-\" } }] },\n \"Published Date\": { \"date\": { \"start\": publishedAt } },\n \"Thumbnail\": { \"files\": [{ \"type\": \"external\", \"name\": \"Cover\", \"external\": { \"url\": thumbnailUrl } }] }\n};\n\n// 4. Page Content (Active Learning Structure)\nconst children = [\n // --- Header Filosofi (FIXED ANNOTATIONS) ---\n {\n \"object\": \"block\",\n \"type\": \"callout\",\n \"callout\": {\n \"rich_text\": [{ \n \"text\": { \"content\": \"Active Learning Mode: Jangan cuma nonton. Konstruksi pengetahuanmu.\" },\n \"annotations\": { \"italic\": true } // Fixed: Annotations diluar text\n }],\n \"icon\": { \"emoji\": \"\ud83e\udde0\" },\n \"color\": \"gray_background\"\n }\n },\n\n // --- 1. TARGET (Micro-Goals) ---\n {\n \"object\": \"block\",\n \"type\": \"heading_2\",\n \"heading_2\": { \"rich_text\": [{ \"text\": { \"content\": \"\ud83c\udfaf Preparation & Micro-Goals\" } }] }\n },\n ...(ai.micro_goals || []).map(goal => ({\n \"object\": \"block\",\n \"type\": \"to_do\",\n \"to_do\": { \"rich_text\": [{ \"text\": { \"content\": goal } }], \"checked\": false }\n })),\n\n // --- 2. NOTES (Cornell Style) ---\n {\n \"object\": \"block\",\n \"type\": \"heading_2\",\n \"heading_2\": { \"rich_text\": [{ \"text\": { \"content\": \"\ud83d\udcdd Constructive Notes (Cornell)\" } }] }\n },\n ...(ai.cornell_notes || []).map(note => ({\n \"object\": \"block\",\n \"type\": \"toggle\",\n \"toggle\": {\n \"rich_text\": [{ \n \"text\": { \"content\": \"\u2753 \" + (note.trigger || \"Pemicu\") }, \n \"annotations\": { \"bold\": true } \n }],\n \"children\": [\n {\n \"object\": \"block\",\n \"type\": \"paragraph\",\n \"paragraph\": { \"rich_text\": [{ \"text\": { \"content\": \"\ud83d\udca1 \" + (note.concept || \"...\") } }] }\n }\n ]\n }\n })),\n\n // --- 3. FEYNMAN TEST ---\n {\n \"object\": \"block\",\n \"type\": \"heading_2\",\n \"heading_2\": { \"rich_text\": [{ \"text\": { \"content\": \"\ud83d\udde3\ufe0f The Feynman Test\" } }] }\n },\n {\n \"object\": \"block\",\n \"type\": \"quote\",\n \"quote\": {\n \"rich_text\": [{ \"text\": { \"content\": ai.feynman_explanation || \"Penjelasan tidak tersedia.\" } }],\n \"color\": \"blue_background\"\n }\n },\n {\n \"object\": \"block\",\n \"type\": \"paragraph\",\n \"paragraph\": { \n \"rich_text\": [{ \n \"text\": { \"content\": \"Apakah penjelasan di atas sudah cukup sederhana? Bagian mana yang masih macet?\" }, \n \"annotations\": { \"italic\": true, \"color\": \"gray\" } \n }] \n }\n },\n\n // --- 4. IMMEDIATE EXECUTION (FIXED ANNOTATIONS) ---\n {\n \"object\": \"block\",\n \"type\": \"heading_2\",\n \"heading_2\": { \"rich_text\": [{ \"text\": { \"content\": \"\ud83d\udee0\ufe0f Immediate Execution (The Lab)\" } }] }\n },\n {\n \"object\": \"block\",\n \"type\": \"callout\",\n \"callout\": {\n \"rich_text\": [\n { \n \"text\": { \"content\": \"Tantangan Simulasi: \" }, \n \"annotations\": { \"bold\": true } // Fixed: Annotations diluar text\n },\n { \"text\": { \"content\": ai.simulation_task || \"Coba terapkan konsep ini sekarang.\" } }\n ],\n \"icon\": { \"emoji\": \"\ud83e\uddea\" },\n \"color\": \"red_background\"\n }\n },\n {\n \"object\": \"block\",\n \"type\": \"to_do\",\n \"to_do\": { \"rich_text\": [{ \"text\": { \"content\": \"Saya sudah mencoba tantangan di atas tanpa melihat tutorial.\" } }], \"checked\": false }\n }\n];\n\nreturn {\n json: {\n parent: { database_id: database_id },\n properties: properties,\n children: children\n }\n};"
},
"typeVersion": 2
}
],
"connections": {
"SET - Get YT ID": {
"main": [
[
{
"node": "YouTube - Fetch Video Details",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "SET - Get YT ID",
"type": "main",
"index": 0
}
]
]
},
"Set Audio MimeType": {
"main": [
[
{
"node": "Transcribe a recording",
"type": "main",
"index": 0
}
]
]
},
"Build Page Structure": {
"main": [
[
{
"node": "Create Notion Page",
"type": "main",
"index": 0
}
]
]
},
"Transcribe a recording": {
"main": [
[
{
"node": "IF - Skip if No Transcript",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent - Active Learning",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"HTTP - Get YouTube Audio": {
"main": [
[
{
"node": "HTTP - Download Audio File",
"type": "main",
"index": 0
}
]
]
},
"AI Agent - Active Learning": {
"main": [
[
{
"node": "Build Page Structure",
"type": "main",
"index": 0
}
]
]
},
"HTTP - Download Audio File": {
"main": [
[
{
"node": "Set Audio MimeType",
"type": "main",
"index": 0
}
]
]
},
"IF - Skip if No Transcript": {
"main": [
[
{
"node": "Merge - Attach Metadata + Transcript",
"type": "main",
"index": 1
}
]
]
},
"Memory - Conversation Buffer": {
"ai_memory": [
[
{
"node": "AI Agent - Active Learning",
"type": "ai_memory",
"index": 0
}
]
]
},
"Set - Prepare Video Metadata": {
"main": [
[
{
"node": "Merge - Attach Metadata + Transcript",
"type": "main",
"index": 0
},
{
"node": "HTTP - Get YouTube Audio",
"type": "main",
"index": 0
}
]
]
},
"YouTube - Fetch Video Details": {
"main": [
[
{
"node": "Set - Prepare Video Metadata",
"type": "main",
"index": 0
}
]
]
},
"Output Parser - Structured JSON": {
"ai_outputParser": [
[
{
"node": "AI Agent - Active Learning",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Merge - Attach Metadata + Transcript": {
"main": [
[
{
"node": "AI Agent - Active Learning",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Template 12372. Uses formTrigger, httpRequest, youTube, memoryBufferWindow. Event-driven trigger; 22 nodes.
Source: https://github.com/alihussain6692/agentilizer/blob/cac0e7b8ce9f32ae913d94ba5e21fff661c0cedd/data/workflows/official_n8n/template_12372.json — 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.
How it Works
This Shopify AI automation is an advanced n8n-powered workflow that transforms Shopify product collections into SEO-optimized blog articles with images, while maintaining full visibility and control t
This workflow is designed for e-commerce, marketing teams, or creators who want to automate the production of high-quality, AI-generated product visuals and ad creatives.
Categories: Business Automation, Content Creation, SEO, AI
Automatically generate SEO-optimized YouTube Titles, Descriptions, Tags & Hashtags – enriched with blog articles, affiliate links, and product recommendations!