This workflow corresponds to n8n.io template #2875 — we link there as the canonical source.
This workflow follows the Chainllm → Google Drive 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": "81deb753-46b3-4f2a-8c11-a298d9dc0df3",
"name": "Upload Audio to Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
700,
20
],
"parameters": {},
"typeVersion": 3
},
{
"id": "50c749c5-f679-4bdd-864c-2fd998c52a06",
"name": "Make File Public",
"type": "n8n-nodes-base.googleDrive",
"position": [
900,
20
],
"parameters": {},
"typeVersion": 3
},
{
"id": "0cecb8c6-6c0b-48e9-b1f7-32f746e03379",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1160,
-140
],
"parameters": {},
"typeVersion": 3
},
{
"id": "5eeb6bc4-0101-4adb-b8e6-ca1033412371",
"name": "Structured Output Parser1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1560,
220
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "c69c8e7d-b34c-4230-8afe-6e28b70818da",
"name": "Wait3",
"type": "n8n-nodes-base.wait",
"position": [
2180,
-140
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "7c2b2258-2d16-4a0e-9500-867b72027b52",
"name": "Generate Motion1",
"type": "n8n-nodes-base.httpRequest",
"position": [
2540,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "47b084b9-3d30-40b0-831b-488476b6ab6f",
"name": "60 Second Script Writer1",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-240,
-160
],
"parameters": {},
"typeVersion": 1.5
},
{
"id": "b59faede-af9f-4f51-bd78-454b839e2df9",
"name": "Sticky Note22",
"type": "n8n-nodes-base.stickyNote",
"position": [
3420,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "1d2bd76f-6e75-4776-976c-0ed0337c63ef",
"name": "Sticky Note23",
"type": "n8n-nodes-base.stickyNote",
"disabled": true,
"position": [
1120,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "1e3455e1-497b-4bb6-97a4-8465df9aa7bb",
"name": "Sticky Note24",
"type": "n8n-nodes-base.stickyNote",
"position": [
1780,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "bb99847b-339d-4f50-9ad1-7c5d3c20f47f",
"name": "Sticky Note25",
"type": "n8n-nodes-base.stickyNote",
"position": [
2480,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "5cb49580-8fe2-4f16-b41a-2de0d5ed84a5",
"name": "Sticky Note29",
"type": "n8n-nodes-base.stickyNote",
"position": [
-300,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "bdd99629-a8cd-42d2-9a5c-bcef5e8389cf",
"name": "Sticky Note30",
"type": "n8n-nodes-base.stickyNote",
"position": [
260,
-280
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "c4ba2164-3007-44ed-9f2e-9db0792fdda1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
-340
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "57bba861-9517-4c69-9c36-d0a59a256efa",
"name": "Set idea",
"type": "n8n-nodes-base.set",
"position": [
-460,
-160
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "c36ba3a7-3fd9-4d71-9b1c-43e2c350f9cc",
"name": "Formatting",
"type": "n8n-nodes-base.set",
"position": [
80,
-160
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "085a39ed-f565-4597-9fb9-4ffbe6c82434",
"name": "Generate voice",
"type": "n8n-nodes-base.httpRequest",
"position": [
360,
-160
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "e7318a61-3030-436d-91e3-8a9f7247e69e",
"name": "Transcribe audio with OpenAI Whisper",
"type": "n8n-nodes-base.httpRequest",
"position": [
800,
-260
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "19f6c563-e72f-4e6d-a13d-2521759165a7",
"name": "Generate Image Prompts",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1420,
-160
],
"parameters": {},
"typeVersion": 1.5
},
{
"id": "28fb0561-4d1f-48e5-8e49-e32307efdc4d",
"name": "Auto-fixing Output Parse",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
1480,
40
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e0052e59-997a-49ae-94d8-7f9d2bc0b0d4",
"name": "Split Prompts",
"type": "n8n-nodes-base.splitOut",
"position": [
1840,
-140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a73e9725-dfde-4065-9bea-006fe6fc3b33",
"name": "Get Image Generations",
"type": "n8n-nodes-base.httpRequest",
"position": [
2340,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "9bc72725-479b-47dc-ba7f-5dbe60540e0a",
"name": "Generate Images Using Leonardo",
"type": "n8n-nodes-base.httpRequest",
"position": [
2020,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "ad2cf268-bebe-4e7d-b8b1-5d4342b5d60f",
"name": "Wait 5 mins",
"type": "n8n-nodes-base.wait",
"position": [
2700,
-140
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "f65d8ef4-156c-4229-9393-ac889cdca00a",
"name": "Get Motion Generations",
"type": "n8n-nodes-base.httpRequest",
"position": [
2900,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "2128d463-0bb6-43a2-b271-d708fb48e497",
"name": "Download Generated Motions",
"type": "n8n-nodes-base.httpRequest",
"position": [
3100,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "4bd00447-34d0-4d17-a499-71feda845123",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
3260,
-140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "941dd23b-4c87-485a-8d13-b1cbda539c66",
"name": "Edit with Shotstack",
"type": "n8n-nodes-base.httpRequest",
"position": [
3460,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "76e1c977-19bd-4ee4-9ff0-db8c18da1cdb",
"name": "Wait 1 min",
"type": "n8n-nodes-base.wait",
"position": [
3600,
-140
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "00367609-64d3-4206-a750-91fdf4d25b40",
"name": "Poll Shotstack",
"type": "n8n-nodes-base.httpRequest",
"position": [
3760,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "0c5e98c4-decf-4786-a65c-6095e69e0b15",
"name": "Download Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
3920,
-140
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "694a9380-fe8e-4be3-bc10-094e16943038",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
340
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "fb7747d8-63a1-4a42-b24a-c3e37996f0c8",
"name": "Openrouter",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-180,
20
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b16dcab2-1489-4ef0-bcd7-9b42bfeb046c",
"name": "Openrouter1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1320,
20
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a266677a-1d9c-4a88-b0e7-daac14d86368",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
220
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "01dd609e-9eb5-42ec-bb66-f4bfc51918f4",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
-500
],
"parameters": {
"content": ""
},
"typeVersion": 1
}
],
"connections": {
"Merge": {
"main": [
[
{
"node": "Generate Image Prompts",
"type": "main",
"index": 0
}
]
]
},
"Wait3": {
"main": [
[
{
"node": "Get Image Generations",
"type": "main",
"index": 0
}
]
]
},
"Set idea": {
"main": [
[
{
"node": "60 Second Script Writer1",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Edit with Shotstack",
"type": "main",
"index": 0
}
]
]
},
"Formatting": {
"main": [
[
{
"node": "Generate voice",
"type": "main",
"index": 0
}
]
]
},
"Openrouter": {
"ai_languageModel": [
[
{
"node": "60 Second Script Writer1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Wait 1 min": {
"main": [
[
{
"node": "Poll Shotstack",
"type": "main",
"index": 0
}
]
]
},
"Openrouter1": {
"ai_languageModel": [
[
{
"node": "Generate Image Prompts",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Auto-fixing Output Parse",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Wait 5 mins": {
"main": [
[
{
"node": "Get Motion Generations",
"type": "main",
"index": 0
}
]
]
},
"Split Prompts": {
"main": [
[
{
"node": "Generate Images Using Leonardo",
"type": "main",
"index": 0
}
]
]
},
"Generate voice": {
"main": [
[
{
"node": "Upload Audio to Drive",
"type": "main",
"index": 0
},
{
"node": "Transcribe audio with OpenAI Whisper",
"type": "main",
"index": 0
}
]
]
},
"Poll Shotstack": {
"main": [
[
{
"node": "Download Video",
"type": "main",
"index": 0
}
]
]
},
"Generate Motion1": {
"main": [
[
{
"node": "Wait 5 mins",
"type": "main",
"index": 0
}
]
]
},
"Make File Public": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Edit with Shotstack": {
"main": [
[
{
"node": "Wait 1 min",
"type": "main",
"index": 0
}
]
]
},
"Get Image Generations": {
"main": [
[
{
"node": "Generate Motion1",
"type": "main",
"index": 0
}
]
]
},
"Upload Audio to Drive": {
"main": [
[
{
"node": "Make File Public",
"type": "main",
"index": 0
}
]
]
},
"Generate Image Prompts": {
"main": [
[
{
"node": "Split Prompts",
"type": "main",
"index": 0
}
]
]
},
"Get Motion Generations": {
"main": [
[
{
"node": "Download Generated Motions",
"type": "main",
"index": 0
}
]
]
},
"60 Second Script Writer1": {
"main": [
[
{
"node": "Formatting",
"type": "main",
"index": 0
}
]
]
},
"Auto-fixing Output Parse": {
"ai_outputParser": [
[
{
"node": "Generate Image Prompts",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser1": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parse",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Download Generated Motions": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Generate Images Using Leonardo": {
"main": [
[
{
"node": "Wait3",
"type": "main",
"index": 0
}
]
]
},
"Transcribe audio with OpenAI Whisper": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Video runthrough
Source: https://n8n.io/workflows/2875/ — 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.
Use cases are many: This tool is perfect for YouTube and Shorts creators who want to publish daily content without showing their face, TikTok and Reels marketers automating voice-over-driven videos, a
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
Many new n8n users struggle with testing webhooks when running n8n on localhost, as external services cannot reach . This workflow introduces a technique using PostBin, which provides a temporary, pub
Tired of grinding out YouTube content? This n8n workflow turns AI into your personal video factory—creating engaging, faceless shorts on autopilot. Perfect for creators, marketers, or side-hustlers lo
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.