AI Product Videography Automation
Shared 11/26/2025
422 views
Visual Workflow
JSON Code
{
"id": "XpMQV36znIpoKb6T",
"meta": {
"instanceId": "9fb634bb746cbe3fe9f7fa86fdd635510d2f0c24c4ba919fbba1ca6aec3c4e57",
"templateCredsSetupCompleted": true
},
"name": "AI Product Videography Automation",
"tags": [
{
"id": "XjapSTYfKWctIuwO",
"name": "N8N Course",
"createdAt": "2025-11-10T06:08:02.634Z",
"updatedAt": "2025-11-10T06:08:02.634Z"
},
{
"id": "XZ2fZUKyIdD6LbGn",
"name": "Content Creation",
"createdAt": "2025-10-22T09:44:29.381Z",
"updatedAt": "2025-10-22T09:44:29.381Z"
}
],
"nodes": [
{
"id": "1d64d7e2-5152-4215-b054-eefa77bca419",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
16,
-160
],
"webhookId": "af13c24d-f792-46fb-ab9f-e1660bb6f068",
"parameters": {
"options": {},
"formTitle": "Get Ecom Product Video",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "Product Photo",
"multipleFiles": false,
"requiredField": true
},
{
"fieldLabel": "Product Title",
"placeholder": "Toothpaste",
"requiredField": true
},
{
"fieldLabel": "Product Description",
"placeholder": "Ayurvedic, fluoride-free toothpaste that contains 13 traditional herbal ingredients, such as clove, mint, and ginger, to fight against seven dental problems: toothache, cavities, plaque, germs, bad breath, yellowing, and bleeding gums",
"requiredField": true
},
{
"fieldType": "email",
"fieldLabel": "Email",
"placeholder": "name@example.com",
"requiredField": true
}
]
},
"authentication": "basicAuth",
"formDescription": "Give us a product photo, title, and description, and we'll get back to you with professional marketing materials. "
},
"credentials": {
"httpBasicAuth": {
"id": "O7N5g2KgopMXpAXg",
"name": "Sohail Creds"
}
},
"typeVersion": 2.2
},
{
"id": "03decdba-e769-49f2-afa5-a043fe92f4c7",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
-256
],
"parameters": {
"color": 7,
"width": 208,
"height": 376,
"content": "## Form Trigger"
},
"typeVersion": 1
},
{
"id": "ed65f76a-bccb-4781-9593-e779983548c8",
"name": "Upload Photo",
"type": "n8n-nodes-base.googleDrive",
"position": [
272,
-160
],
"parameters": {
"name": "={{ $json['Product Title'] }} (Original)",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1hQwuRrRZP3NX-xTcIPBxOjTofaNcM4uV",
"cachedResultUrl": "https://drive.google.com/drive/folders/1hQwuRrRZP3NX-xTcIPBxOjTofaNcM4uV",
"cachedResultName": "n8n - Product Videography"
},
"inputDataFieldName": "Product_Photo"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "O8QFm2vAr476EdaM",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "ef49bc84-7359-4ed7-89cf-dbd8a331ef1d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
-256
],
"parameters": {
"width": 228,
"height": 376,
"content": "## Upload File"
},
"typeVersion": 1
},
{
"id": "2d3b5fe7-ffa6-40b4-a334-963fad57a9ef",
"name": "GPT 4.1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
224,
416
],
"parameters": {
"model": "openai/gpt-4.1",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "6z6zYFNsqyqFRUEB",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "ce1fd31a-6aa7-4aba-8d8c-0b4f9434c931",
"name": "Download File",
"type": "n8n-nodes-base.googleDrive",
"position": [
528,
-160
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Upload Photo').item.json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "O8QFm2vAr476EdaM",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "bdef4b71-0316-4089-9887-9ef7718b9c4c",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
-256
],
"parameters": {
"width": 468,
"height": 376,
"content": "## Get File URL"
},
"typeVersion": 1
},
{
"id": "763a4155-b653-4606-af4b-9418fdc92279",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-256
],
"parameters": {
"color": 4,
"width": 704,
"height": 376,
"content": "## Image Generation"
},
"typeVersion": 1
},
{
"id": "67d44f8f-7231-44c4-8940-19549d452d41",
"name": "Generate Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
560,
240
],
"parameters": {
"url": "https://api.dev.runwayml.com/v1/image_to_video",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "promptText",
"value": "={{ $('Product Photography Agent').item.json.output }}"
},
{
"name": "model",
"value": "gen4_turbo"
},
{
"name": "promptImage",
"value": "={{ $json.data.image.url }}"
},
{
"name": "duration",
"value": "={{ Number(10) }}"
},
{
"name": "ratio",
"value": "960:960"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "X-Runway-Version",
"value": "2024-11-06"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "loddmUMVkQD6CbKT",
"name": "Runway Auth"
}
},
"typeVersion": 4.2
},
{
"id": "d45a1be5-75ec-45ff-896b-be5261c81b17",
"name": "5 Secs",
"type": "n8n-nodes-base.wait",
"position": [
1392,
192
],
"webhookId": "dd3eae86-f75c-41fe-a48c-58788f1ee73d",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "aaed05b6-3e9e-48ba-ba4b-15e4f9121d65",
"name": "Get Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
1024,
240
],
"parameters": {
"url": "=https://api.dev.runwayml.com/v1/tasks/{{ $json.id }}",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "X-Runway-Version",
"value": "2024-11-06"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "loddmUMVkQD6CbKT",
"name": "Runway Auth"
}
},
"typeVersion": 4.2
},
{
"id": "eb2dc6bf-c245-4c8a-89ab-2ce5b6d62df8",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
144
],
"parameters": {
"color": 6,
"width": 784,
"height": 388,
"content": "## Video Generation"
},
"typeVersion": 1
},
{
"id": "4a6576b0-6d6c-47b7-8ea9-d28d9492f73f",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
144
],
"parameters": {
"color": 3,
"width": 884,
"height": 388,
"content": "## Polling"
},
"typeVersion": 1
},
{
"id": "e5cf9d30-b5e7-41a7-83af-240ea0893316",
"name": "Send Finished Products",
"type": "n8n-nodes-base.gmail",
"position": [
16,
656
],
"webhookId": "779028aa-2c69-4e60-8d40-ff55f32042bc",
"parameters": {
"sendTo": "={{ $('On form submission').item.json.Email }}",
"message": "=Hey!\n\nHere is your photo: {{ $('Get New File URL').item.json.data.url }}\n\nHere is your video: {{ $json.output[0] }}\n\nCheers!",
"options": {
"appendAttribution": false
},
"subject": "=Marketing Materials: {{ $('On form submission').item.json['Product Title'] }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "pT69eutSGot4W4td",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "95eb9bc3-13e8-4169-851d-44faa877ec82",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
560
],
"parameters": {
"color": 2,
"width": 292,
"height": 292,
"content": "## Done"
},
"typeVersion": 1
},
{
"id": "ae61993e-c2fb-474d-918d-eb765ad048a7",
"name": "Product Photography Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
224,
240
],
"parameters": {
"text": "=Product: {{ $('On form submission').item.json['Product Title'] }}\nDescription: {{ $('On form submission').item.json['Product Description'] }}",
"options": {
"systemMessage": "=You are to generate a clean e-commerce product video. Use the input image only as reference to reconstruct a photorealistic 3D version of the product. Do not display the original image. Present a smooth 360° rotation around the product with soft, neutral studio lighting and a seamless white background. Keep framing centered, motion steady, and details realistic.\n"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "ff588aec-263e-4533-b3b9-3d857b6206bb",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
-256
],
"parameters": {
"width": 500,
"height": 560,
"content": "# 🛠️ Setup Guide\n---\n\n**Author: [Sohail Jafri](https://link.thesohailjafri.me/web_ai) | [Youtube](https://link.thesohailjafri.me/yt_ai) | [Instagram](https://link.thesohailjafri.me/ig_ai) | [Join Skool](https://link.thesohailjafri.me/join-skool)**\n\nFollow these steps to complete your setup:\n\n1. **Connect Google Credentials** \n - Allow access to your **Google Drive** and **Gmail**.\n\n2. **Connect [OpenRouter](https://openrouter.ai/) API Key** \n - This will enable the chat model for your AI agent as well as image generation.\n\n3. **Connect [ImageBB](https://imgbb.com/) API Key** \n - Needed for the **Git URL HTTP request**.\n\n4. **Connect [Runway](https://runwayml.com/api) API Key** \n - Used to **generate** and **Git** the videos.\n\n---\n\nOnce all keys are connected, you're ready to start using the system!\n"
},
"typeVersion": 1
},
{
"id": "a5b4fbf8-8cbf-4768-a7c7-ad7f0c3ff0f1",
"name": "Nano Banana Image Processor",
"type": "n8n-nodes-base.httpRequest",
"position": [
1040,
-160
],
"parameters": {
"url": "https://openrouter.ai/api/v1/chat/completions",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"google/gemini-2.5-flash-image\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Use the provided image as reference and generate a clean produtt photo. Preserve the product exactly as it is, including all original logos, labels, and text printed on it. Remove everything else: no background, no table, no environment, no shadows, no props, no reflections. Place the product on a pure white background (RGB #FFFFFF) with even soft lighting. Keep the product centered, sharp, and high-resolution with no added elements.\"\n },\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"{{ $json.data.url }}\"\n }\n }\n ]\n }\n ]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "openRouterApi"
},
"credentials": {
"openRouterApi": {
"id": "6z6zYFNsqyqFRUEB",
"name": "OpenRouter account"
}
},
"typeVersion": 4.2
},
{
"id": "b4ac7046-6905-4d26-9ac8-fc8bbcfd62b3",
"name": "Get OG File URL",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
-160
],
"parameters": {
"url": "https://api.imgbb.com/1/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "image",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"id": "i16wZHQApYNmkYlF",
"name": "ImageBB Auth"
}
},
"typeVersion": 4.2
},
{
"id": "fe54715c-8e45-4084-96fd-22606d35b460",
"name": "Set Base64",
"type": "n8n-nodes-base.set",
"position": [
1248,
-160
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "92d42d90-c9c7-4535-8efc-a43db58b8927",
"name": "base",
"type": "string",
"value": "={{ $json.choices[0].message.images[0].image_url.url.split(',')[1] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8da4a791-345d-4ef0-b96c-70dc2a278d40",
"name": "Convert to File",
"type": "n8n-nodes-base.convertToFile",
"position": [
1472,
-64
],
"parameters": {
"options": {},
"operation": "toBinary",
"sourceProperty": "base"
},
"typeVersion": 1.1
},
{
"id": "d5ad3777-e50a-4c12-be4f-3afcf886d529",
"name": "Wait 2 Minutes",
"type": "n8n-nodes-base.wait",
"position": [
848,
240
],
"webhookId": "ae4ab48f-6ebe-4768-88f0-743989181262",
"parameters": {
"unit": "minutes",
"amount": 2
},
"typeVersion": 1.1
},
{
"id": "a09c3a33-efe2-4990-ac9a-bdd281437d31",
"name": "Stop and Error",
"type": "n8n-nodes-base.stopAndError",
"position": [
1728,
384
],
"parameters": {
"errorMessage": "Invalid Status Received"
},
"typeVersion": 1
},
{
"id": "ee7021ed-5727-4336-8660-8f90a68e9da1",
"name": "If RUNNING",
"type": "n8n-nodes-base.if",
"position": [
1184,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b45aec04-a6dc-4118-8318-42f40f903935",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "RUNNING"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "48b7e23c-4086-4617-948a-713eea0689b5",
"name": "If SUCCEEDED",
"type": "n8n-nodes-base.if",
"position": [
1488,
368
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "abaa5360-1d70-48e4-8ee4-b9e75faf2441",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "SUCCEEDED"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d14aec1b-bc67-4fb5-a9b5-f89f132875e8",
"name": "Get New File URL",
"type": "n8n-nodes-base.httpRequest",
"position": [
16,
240
],
"parameters": {
"url": "https://api.imgbb.com/1/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "image",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"id": "i16wZHQApYNmkYlF",
"name": "ImageBB Auth"
}
},
"typeVersion": 4.2
},
{
"id": "98adffd7-5603-45a8-a394-55c2efc9afe4",
"name": "Error Trigger",
"type": "n8n-nodes-base.errorTrigger",
"position": [
320,
656
],
"parameters": {},
"typeVersion": 1
},
{
"id": "684404e4-e4ce-4054-b0d2-f3e5f258b696",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
288,
560
],
"parameters": {
"color": 3,
"width": 464,
"height": 288,
"content": "## 🚨 Error and Loop Control Flow\n---"
},
"typeVersion": 1
},
{
"id": "ae8af777-7ff4-4888-b06a-e04dd1badbdd",
"name": "Send a message",
"type": "n8n-nodes-base.gmail",
"position": [
544,
656
],
"webhookId": "d5abd570-74b9-483b-adfb-8a6044143c8c",
"parameters": {
"sendTo": "={{ $('On form submission').item.json.Email }}",
"message": "=Error: {{ $json.execution.error.message }} Please check workflow {{ $json.execution.url }} Last Node Exe.: {{ $json.execution.lastNodeExecuted }}",
"options": {},
"subject": "Error In AI Product Videography Automation"
},
"credentials": {
"gmailOAuth2": {
"id": "pT69eutSGot4W4td",
"name": "Gmail account"
}
},
"typeVersion": 2.1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "4156ee7d-dcfe-4420-aec3-ad3438957d2a",
"connections": {
"5 Secs": {
"main": [
[
{
"node": "Get Video",
"type": "main",
"index": 0
}
]
]
},
"GPT 4.1": {
"ai_languageModel": [
[
{
"node": "Product Photography Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get Video": {
"main": [
[
{
"node": "If RUNNING",
"type": "main",
"index": 0
}
]
]
},
"If RUNNING": {
"main": [
[
{
"node": "5 Secs",
"type": "main",
"index": 0
}
],
[
{
"node": "If SUCCEEDED",
"type": "main",
"index": 0
}
]
]
},
"Set Base64": {
"main": [
[
{
"node": "Convert to File",
"type": "main",
"index": 0
}
]
]
},
"If SUCCEEDED": {
"main": [
[
{
"node": "Send Finished Products",
"type": "main",
"index": 0
}
],
[
{
"node": "Stop and Error",
"type": "main",
"index": 0
}
]
]
},
"Upload Photo": {
"main": [
[
{
"node": "Download File",
"type": "main",
"index": 0
}
]
]
},
"Download File": {
"main": [
[
{
"node": "Get OG File URL",
"type": "main",
"index": 0
}
]
]
},
"Error Trigger": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Generate Video": {
"main": [
[
{
"node": "Wait 2 Minutes",
"type": "main",
"index": 0
}
]
]
},
"Wait 2 Minutes": {
"main": [
[
{
"node": "Get Video",
"type": "main",
"index": 0
}
]
]
},
"Convert to File": {
"main": [
[
{
"node": "Get New File URL",
"type": "main",
"index": 0
}
]
]
},
"Get OG File URL": {
"main": [
[
{
"node": "Nano Banana Image Processor",
"type": "main",
"index": 0
}
]
]
},
"Get New File URL": {
"main": [
[
{
"node": "Product Photography Agent",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Upload Photo",
"type": "main",
"index": 0
}
]
]
},
"Product Photography Agent": {
"main": [
[
{
"node": "Generate Video",
"type": "main",
"index": 0
}
]
]
},
"Nano Banana Image Processor": {
"main": [
[
{
"node": "Set Base64",
"type": "main",
"index": 0
}
]
]
}
}
}