{"id":"hKkZYhJqBNir8amQ","meta":{"instanceId":"workflow-85cb0bed","versionId":"1.0.0","createdAt":"2025-09-29T07:07:46.950776","updatedAt":"2025-09-29T07:07:46.950819","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"🎥 Gemini AI Video Analysis","nodes":[{"id":"f5c9faf8-441a-49ef-a0de-0daa08c3bbfa","name":"Wait","type":"n8n-nodes-base.wait","position":[400,160],"webhookId":"7d0cd0c0-ce85-4372-b7a5-b0be061fc2b9","parameters":{},"typeVersion":1.1,"notes":"This wait node performs automated tasks as part of the workflow."},{"id":"c0336074-a30f-4fc0-aa57-7142cea1a3da","name":"Download video","type":"n8n-nodes-base.httpRequest","position":[-40,160],"parameters":{"url":"{{ $env.BASE_URL }}","options":{}},"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"8b04c774-7a02-43ff-bac9-d19a427d514e","name":"Upload video Gemini","type":"n8n-nodes-base.httpRequest","position":[180,160],"parameters":{"url":"{{ $env.BASE_URL }}","method":"POST","options":{},"sendBody":true,"contentType":"binaryData","sendHeaders":true,"headerParameters":{"parameters":[{"name":"X-Goog-Upload-Command","value":"start, upload, finalize"},{"name":"X-Goog-Upload-Header-Content-Length","value":"={{ $binary.data.fileSize }}"},{"name":"X-Goog-Upload-Header-Content-Type","value":"=video/{{ $binary.data.fileExtension }}"},{"name":"Content-Type","value":"video/mp4"}]},"inputDataFieldName":"=data"},"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"eacf4317-18bc-441a-a415-488b65bb9545","name":"Analyze video Gemini","type":"n8n-nodes-base.httpRequest","position":[620,160],"parameters":{"url":"{{ $env.BASE_URL }}","method":"POST","options":{},"jsonBody":"={\n    \"contents\": [\n        {\n            \"role\": \"user\",\n            \"parts\": [\n                {\n                    \"fileData\": {\n                        \"fileUri\": \"{{ $json.file.uri }}\",\n                        \"mimeType\": \"{{ $json.file.mimeType }}\"\n                    }\n                },\n                {\n                    \"text\": \"Describe in detail what is visually happening in the video, including key elements, actions, colors, and branding. Note the style, tone, and any notable creative techniques being used.\"\n                }\n            ]\n        }\n    ],\n    \"generationConfig\": {\n        \"temperature\": 1.4,\n        \"topK\": 40,\n        \"topP\": 0.95,\n        \"maxOutputTokens\": 8192,\n        \"responseModalities\": [\"Text\"]\n    }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"ff204f3f-947e-4b6a-a9a3-822d6d57064b","name":"When clicking ‘Test workflow’","type":"n8n-nodes-base.manualTrigger","position":[-480,160],"parameters":{},"typeVersion":1,"notes":"This manualTrigger node performs automated tasks as part of the workflow."},{"id":"d842a85d-121d-46ed-9df7-44d2c7849c03","name":"Set Input","type":"n8n-nodes-base.set","position":[-260,160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"6e1728e0-4749-47b9-92ae-4d1c0b7008c8","name":"video_url","type":"string","value":"{{ $env.WEBHOOK_URL }}"}]}},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"efb6ed9b-5f65-4bf3-8ea9-00430abdb247","name":"Get Result","type":"n8n-nodes-base.set","position":[840,160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"1ea390b9-3371-4a3a-8741-bd6ec74dc64b","name":"videoDescription","type":"string","value":"={{ $json.candidates[0].content.parts[0].text }}"}]}},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"fc917016-b2f3-4d69-8924-0aa16b4b43bc","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-920,-380],"parameters":{"color":7,"width":560,"height":520,"content":"## Video Analysis with Gemini AI\n\nThis workflow demonstrates how to analyze video content using Google's Gemini 2.0 Flash API:\n1. Download a video from a URL\n2. Upload it to Gemini's servers\n3. Process the video with AI to generate a detailed description\n4. Extract the analysis results\n\nUse cases: Content moderation, video cataloging, accessibility features, etc.\n\nOUTPUT: The workflow produces a detailed text description of the video content in the \"MediaDescription\" variable.\nYou can use this data for content tagging, searchable descriptions, accessibility, moderation, or cataloging.\n\n⚙️ **Before using this workflow**, make sure to set the `GeminiKey` environment variable with your Gemini API key.  \nThis ensures your API key is securely managed and not hardcoded in the workflow.\n\n__SECURITY NOTE__: This workflow contains an API key in the workflow data.  \nFor production use, store your API keys in Credentials or use environment variables (like `GeminiKey`) instead of hardcoding them.\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"8854f039-f23f-4174-8821-7acfbc5ecfab","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-320,20],"parameters":{"color":5,"width":220,"height":300,"content":"## Configuration\nDefine the video URL you want to analyze.\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"189ede99-f80f-4f41-8481-c9ba518fd0e7","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-70,-140],"parameters":{"color":4,"width":820,"height":460,"content":"## Video Processing Pipeline\n\nThis section handles the complete video processing workflow:\n\n1. DOWNLOAD: First, we fetch the video from the provided URL, converting it to binary data that Gemini can process\n\n2. UPLOAD: Next, we send the binary video data to Gemini's servers where it's stored temporarily for AI processing\n\n3. ANALYZE: Finally, we request Gemini's AI to analyze the video content. You can customize the prompt in the \"Analyze video Gemini\" node to focus on specific aspects of the video content you're interested in\n\nThe Wait node ensures the video is fully processed before analysis begins.\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"5f8d8d62-091e-4883-bbb0-8087ebe7b501","connections":{"Download video":{"main":[[],[],[],[],[],[],[],[],[]]},"Upload video Gemini":{"main":[[],[],[],[],[],[],[],[],[]]},"Analyze video Gemini":{"main":[[],[],[],[],[],[],[],[],[]]}},"description":"Automated workflow: 🎥 Gemini AI Video Analysis. This workflow integrates 6 different services: stickyNote, httpRequest, wait, set, stopAndError. It contains 16 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: 🎥 Gemini AI Video Analysis. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}