This workflow corresponds to n8n.io template #8037 — we link there as the canonical source.
This workflow follows the Agent → Googlegemini 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "e45b22bd-caa4-4adc-8da0-5229cea720cf",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
624,
-112
],
"parameters": {
"text": "=Please create a blog post from the following video transcript. Identify the key themes, structure the content logically, and generate a title, category, and tags.\n\nTranscript:\n{{ $json.content.parts[0].text }}",
"options": {
"systemMessage": "=You are an expert content strategist and editor. Your task is to transform a raw video transcript into a well-structured and engaging blog post.\n\nYou must adhere to the following rules:\n1. Your entire response must be a single JSON object enclosed in a markdown code block (```json ... ```).\n2. Do NOT include any introductory phrases, explanations, apologies, or any text whatsoever outside of the JSON markdown block.\n3. The tone should be informative, clear, and engaging, transforming the conversational transcript into polished written content.\n4. The language of all generated text in the output JSON must match the primary language of the input transcript.\n5. The JSON object must have this exact structure:\n{\n \"category\": \"A single, top-level category based on the content.\",\n \"tags\": [\n \"An array of 3 to 5 relevant, lowercase string tags.\"\n ],\n \"title\": \"A creative, compelling title for the blog post.\",\n \"short_description\": \"A concise, one-to-two sentence summary of the blog post, optimized for search engines (around 150-160 characters).\",\n \"body\": \"The full blog post content formatted in HTML, including <h1>, <h2>, and <p> tags.\"\n}\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "b5606a62-9672-41f0-9a97-26994256e409",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
672,
240
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "74a9a1c6-af62-4e4e-8295-86550691525f",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
768,
96
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": "{\n \"category\": \"Travel\",\n \"tags\": [\n \"breda\",\n \"summer travel\",\n \"netherlands\",\n \"city trip\",\n \"north brabant\"\n ],\n \"title\": \"Soaking Up the Last Days of Summer: A Weekend Guide to Breda\",\n \"short_description\": \"Don't let summer slip away! Discover the best things to do in Breda for a perfect late-summer weekend, from historic sites to vibrant terrace cafes.\",\n \"body\": \"<h1>Soaking Up the Last Days of Summer: A Weekend Guide to Breda</h1><p>As the golden light of late August settles over the Netherlands, there's no better place to capture the final, perfect moments of the season than Breda. This historic city in North Brabant, with its relaxed atmosphere and beautiful scenery, is the ideal destination for a memorable summer weekend. Here\u2019s how to make the most of it.</p><h2>Morning: History and Coffee on the Grote Markt</h2><p>Start your day in the heart of the city, the Grote Markt. The square is dominated by the impressive Grote Kerk (Great Church), a must-see landmark. After exploring the church, find a spot at one of the many bustling terrace cafes. Ordering a coffee and watching the city wake up is a quintessential Breda experience.</p><h2>Afternoon: A Royal Stroll in Valkenberg Park</h2><p>Escape the midday heat with a walk through the shady paths of Valkenberg Park. This stunning park, once the garden of the Castle of Breda, is filled with ancient trees, fountains, and remnants of the old city fortifications. It's the perfect place for a picnic or simply to relax with a book and enjoy the sunshine.</p><h2>Evening: Sunset by the Harbor</h2><p>As the day winds down, head to Breda's charming harbor (Haven). The waterfront comes alive in the evening, with boats gently bobbing and restaurant lights reflecting on the water. Enjoy dinner with a view or simply take a stroll along the dock to watch a beautiful late-summer sunset.</p>\"\n}"
},
"typeVersion": 1.3
},
{
"id": "e81db094-9445-4953-81c6-45ddf7c8f68f",
"name": "Download the Youtube Audio",
"type": "n8n-nodes-base.executeCommand",
"position": [
-176,
-112
],
"parameters": {
"command": "=yt-dlp -x --audio-format mp3 -o output-{{ $json.now_unix }}.mp3 '{{ $('Get Youtube Url').item.json.body.videoUrl }}'\n"
},
"typeVersion": 1
},
{
"id": "362d280b-bf10-4ad6-9d9a-2274ed2747fb",
"name": "Read Output MP3 Binary",
"type": "n8n-nodes-base.readWriteFile",
"position": [
32,
-112
],
"parameters": {
"options": {},
"fileSelector": "=output-{{ $('Get Time').item.json.now_unix }}.mp3"
},
"typeVersion": 1
},
{
"id": "d37ff911-4ebf-4acc-9d66-1be48921d71a",
"name": "Respond The Blog Post",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1376,
-112
],
"parameters": {
"options": {}
},
"typeVersion": 1.4
},
{
"id": "09d024f5-9c8e-4332-bbb6-5a58d735152d",
"name": "Get Youtube Url",
"type": "n8n-nodes-base.webhook",
"position": [
-704,
-112
],
"parameters": {
"path": "57fddbda-a118-4546-a223-8e91a7d53ff6",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "3e1d9f4b-a1e0-4f02-9928-4ddab3a474dc",
"name": "Transcribe a recording",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
320,
-112
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-1.5-flash",
"cachedResultName": "models/gemini-1.5-flash"
},
"options": {},
"resource": "audio",
"inputType": "binary"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "646309f5-7b01-41d1-be78-67894e062540",
"name": "Add Video Url to Output",
"type": "n8n-nodes-base.set",
"position": [
1136,
-112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f7f8a432-f6a3-4594-8048-53e170b46db6",
"name": "videoUrl",
"type": "string",
"value": "={{ $('Get Youtube Url').item.json.body.url }}"
},
{
"id": "b441eb26-15bb-43c6-afea-fa4733a100b5",
"name": "fulltext",
"type": "string",
"value": "={{ $('Transcribe a recording').item.json.content.parts[0].text }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "04bc9c1f-e198-42f9-9fb1-31fa391aed43",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-256,
-256
],
"parameters": {
"color": 3,
"width": 464,
"height": 336,
"content": "## Get YouTube Video Audio\nDownload the YouTube video from the provided URL and prepare it as binary data."
},
"typeVersion": 1
},
{
"id": "f1c784d9-01f4-4219-876e-1fa2da37d687",
"name": "Get Time",
"type": "n8n-nodes-base.set",
"position": [
-464,
-112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1573616e-c70d-468b-ba22-1e0a337dbfa0",
"name": "now_unix",
"type": "number",
"value": "={{ new Date().getTime() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1c821513-2683-48bf-a015-67f02d5c671a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
-288
],
"parameters": {
"color": 5,
"width": 512,
"height": 688,
"content": "## Preparing the Blog Post\nThe AI Agent processes the full YouTube video transcript and transforms it into a blog post with content, a short description, a category, and tags. The output is provided as a structured JSON."
},
"typeVersion": 1
}
],
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Add Video Url to Output",
"type": "main",
"index": 0
}
]
]
},
"Get Time": {
"main": [
[
{
"node": "Download the Youtube Audio",
"type": "main",
"index": 0
}
]
]
},
"Get Youtube Url": {
"main": [
[
{
"node": "Get Time",
"type": "main",
"index": 0
}
]
]
},
"Read Output MP3 Binary": {
"main": [
[
{
"node": "Transcribe a recording",
"type": "main",
"index": 0
}
]
]
},
"Transcribe a recording": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Add Video Url to Output": {
"main": [
[
{
"node": "Respond The Blog Post",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Download the Youtube Audio": {
"main": [
[
{
"node": "Read Output MP3 Binary",
"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.
googlePalmApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically turns any YouTube video into a structured blog post with Gemini AI. By sending a simple POST request with a YouTube URL to a webhook, it downloads the video’s audio, transcribes the content, and generates a blog-ready article with a title,…
Source: https://n8n.io/workflows/8037/ — 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.
Scale short-form content without scaling your team. This template turns idea discovery → prompt & text generation → Veo-3 video rendering → vertical formatting → multi-channel publishing into one cohe
NCompanyProfiling. Uses agent, lmChatGoogleGemini, mongoDb, outputParserStructured. Event-driven trigger; 11 nodes.
Automatically generate viral short-form health videos using AI and publish them to social platforms with n8n and Veo 3. This workflow collects viral ideas, analyzes engagement patterns, generates AI v
This workflow transforms any video you drop into a Google Drive folder into a ready-to-publish YouTube upload. It analyzes the video with AI to craft 3 high-CTR title ideas, 3 long SEO-friendly descri
This automation template is an AI-powered booking agent that schedules property viewings and reserves restaurant tables for you, all coordinated through Telegram. It checks your calendar to avoid conf