AutomationFlowsAI & RAG › Generate Ugc Videos From Product Images with Gpt-4, Fal.ai & Kie.ai via Telegram

Generate Ugc Videos From Product Images with Gpt-4, Fal.ai & Kie.ai via Telegram

ByMuhammad Farooq Iqbal @mfarooqone on n8n.io

Transform any product image into engaging UGC (User-Generated Content) videos and images using AI automation. This comprehensive workflow analyzes uploaded images via Telegram, generates realistic product images, and creates authentic UGC-style videos with multiple scenes. 📱…

Event trigger★★★★☆ complexityAI-powered28 nodesTelegram TriggerHTTP RequestOpenAIAgentOpenAI ChatTool ThinkOutput Parser StructuredTelegram
AI & RAG Trigger: Event Nodes: 28 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8811 — we link there as the canonical source.

This workflow follows the Agent → HTTP Request 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 →

Download .json
{
  "nodes": [
    {
      "id": "8482af93-27b9-450f-938d-2023e8e77bbb",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 864,
        "height": 208,
        "content": "Content Idea"
      },
      "typeVersion": 1
    },
    {
      "id": "c054234e-e8de-456e-9003-799e1eae6154",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        112,
        48
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "2f03d23a-21a3-4937-8045-33a495dcc5b1",
      "name": "Botid 1",
      "type": "n8n-nodes-base.set",
      "position": [
        288,
        48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e4524d93-d12a-47aa-a6bf-c15e6d1b29c1",
              "name": "bot id",
              "type": "string",
              "value": "YOUR_TELEGRAM_BOT_TOKEN"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "41de3164-c91e-40b8-acc2-5252bf301756",
      "name": "Image Pqath",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        448,
        48
      ],
      "parameters": {
        "url": "=https://api.telegram.org/bot{{ $json['bot id'] }}/getFile?file_id={{ $('Telegram Trigger').item.json.message.photo[0].file_id }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "4e2148c6-2c47-42c0-aa98-4b60bbcc7305",
      "name": "Analyze image",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        656,
        48
      ],
      "parameters": {
        "text": "Determine if the image is a character or a product. It is only considered both if there are two completely seperate images within the same image. If it is both, describe them seperately. Describe the appearance details only.\n\nYour output should only include the description, nothing else.\n",
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "options": {},
        "resource": "image",
        "imageUrls": "=https://api.telegram.org/file/bot{{ $('Botid 1').item.json['bot id'] }}/{{ $json.result.file_path }}",
        "operation": "analyze"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "a16cde3c-dada-45f4-973e-8059458a844c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 880,
        "height": 224,
        "content": "Image Creation"
      },
      "typeVersion": 1
    },
    {
      "id": "e6f175ef-718c-4e0e-912c-3f5bd871a957",
      "name": "Image Prompt",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        192,
        304
      ],
      "parameters": {
        "text": "=Make one image prompt.\n\nEnsure you use the details of the reference image as accurately as possible for your final output.\n\nUser Instructions:\n{{ $('Telegram Trigger').item.json.message.caption }}\n\nDescription of the reference image:\n{{ $json.content }}\n\n",
        "options": {
          "systemMessage": "=Role: You create image prompts.\n\nMain objective: Insert the product (or the item from a reference image) into realistic, everyday situations. These should resemble content captured by regular people or influencers on their phones.\n\nCharacters should always be described as realistic and lifelike.\n\nIf the user gives vague instructions, use this structure: place the (product) into a scene with the (character).\n\nUGC focus: When the user wants authentic, user-generated content, assume casual everyday scenes unless told otherwise.\n\nIf the video takes place in a car, the perspective should be from in front of the character, with the headrest of the seat visible behind their head.\n\nStyle guidelines: All results should feel natural and unstaged, never polished or professional. Specifically:\n\n* Relatable real-world settings\n* Product text must remain untouched and accurate (logos, claims, slogans). Do not invent details or numbers.\n* iPhone snapshot look (basic, amateur quality)\n* Casual poses and unposed expressions\n* Sunlight on the character, skin detail\nRULES:\n\nAlways use single quotes ('') never use double quotes (\"\")\n\nYour only output should be the image prompt itself. No other text.\n\nNo need to generate dialogue or video instructions. only still image prompts.\n\nIf the user specifies a different style or setting, follow their direction.\n\nNever use hyphens or dashes.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "2181e18d-ee3f-46c2-9682-465ae2ae6142",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        736,
        704
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ce393fe6-f654-4f81-a752-6003c5a8ef57",
      "name": "Think",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        880,
        704
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "4235666d-54be-45cb-b7a6-b511587f4427",
      "name": "Create Image 1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        464,
        304
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/nano-banana/edit",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"prompt\": \"{{ $json.output }}\",\n  \"image_urls\": [\n    \"https://api.telegram.org/file/bot{{ $('Botid 1').item.json['bot id'] }}/{{ $('Image Pqath').item.json.result.file_path }}\",\n    \"https://i.ibb.co/q332LXHf/Whats-App-Image-2025-09-11-at-15-54-09.jpg\",\n    \"https://i.ibb.co/rPRzBdK/Whats-App-Image-2025-09-11-at-15-54-11-1.jpg\",\n    \"https://i.ibb.co/Zz9HPfZ9/Whats-App-Image-2025-09-11-at-15-54-12-1.jpg\",\n    \"https://i.ibb.co/tp7rhyK7/Whats-App-Image-2025-09-11-at-15-54-12-2.jpg\",\n    \"https://i.ibb.co/N2wDdJpJ/Whats-App-Image-2025-09-11-at-15-54-12-3.jpg\"\n  ]\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "82ed7b41-68f8-40d3-ac2f-f5c164e47fd3",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        608,
        304
      ],
      "parameters": {
        "amount": 30
      },
      "typeVersion": 1.1
    },
    {
      "id": "45f95593-2dba-4a03-a91e-cb3c37bbb37f",
      "name": "Get the Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        304
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/nano-banana/requests/{{ $json.request_id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "248b1998-d40f-41d4-964a-65dbee8138a4",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        16
      ],
      "parameters": {
        "color": 6,
        "width": 1360,
        "height": 208,
        "content": "Video Generation Prompt"
      },
      "typeVersion": 1
    },
    {
      "id": "755fe249-3493-438a-808e-4e6d8ca762cb",
      "name": "Video Prompt",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1168,
        48
      ],
      "parameters": {
        "text": "=Create video prompts.\n\nUser instructions:\n{{ $('Telegram Trigger').item.json.message.caption }}\nDescription of the reference image(s):\n{{ $('Analyze image').item.json.content }}\n",
        "options": {
          "systemMessage": "=You are an AI agent that generates UGC (User-Generated Content) video prompts.\nYour only output must be 3 scenes in the following JSON format:\n\njson\n{\n  \"scenes\": {\n    \"scene 1\": \"\",\n    \"scene 2\": \"\",\n    \"scene 3\": \"\"\n  }\n}\n\nScene Structure\n\nScene 1 (Hook):** Start with a casual line that grabs attention and ties to the product.\n\nScene 2 (Product):** Show what the product does or the benefit it gives.\n\nScene 3 (Call to Action):** End with a natural CTA like 'You can click the link below to get some for yourself'.\n\nScenes must flow together like a mini-story. Always pull in details from the reference image in a UGC style.\n\n**Description Requirement**\nEvery scene must include a description that covers:\n\nThe character (appearance, vibe, or mood)\nThe action they\u2019re taking (what they\u2019re doing)\nThe setting (the environment or location)\n\nAvoid dashes and hyphens.\n\nDialogue Rules\nBegin each scene with: Dialogue:\n\nWrite 2\u20133 conversational sentences (100 < 200 characters).\n\nThe dialogue between scenes should flow like a casual conversation.\n\nKeep tone casual, like talking to a friend. Avoid scripted or overly formal lines.\n\nUse ... for pauses, not dashes or hyphens.\n\nUnless requested, the character only shows the product \u2014 no eating, opening, or using.\nAlways use single quotes for dialogue ('') never double quotes.\n\nCamera Rules\nEnd each scene with: Camera:\n\nCamera descriptions must emphasize UGC style, e.g.: amateur iPhone video, snapchat clip, uneven framing, slightly blurry, casual phone footage.\n\nStyle Guidelines\n\nAll prompts should look natural, candid, and unpolished:\n\n Everyday, realistic environments\n\n Phone-quality lighting and framing\n\n Candid expressions and poses\n\n No staged or 'polished' aesthetics\n\n If the character is fictional, the mouth movement should look realistic.\n\n**Formatting Rules**\nNever use double quotes.\nFollow the exact JSON schema shown above.\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "4a7c71f7-9044-42c5-bbf3-3c910d89cd91",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1232,
        608
      ],
      "parameters": {
        "autoFix": true,
        "schemaType": "manual",
        "inputSchema": "\n{\n  \"type\": \"object\",\n  \"properties\": {\n    \"scenes\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"scene 1\": { \"type\": \"string\" },\n        \"scene 2\": { \"type\": \"string\" },\n        \"scene 3\": { \"type\": \"string\" }\n      },\n      \"required\": [\"scene 1\", \"scene 2\", \"scene 3\"]\n    }\n  },\n  \"required\": [\"scenes\"]\n}\n\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "38738213-4bb4-46c5-adba-47acec1788b8",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1456,
        48
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output.scenes"
      },
      "typeVersion": 1
    },
    {
      "id": "e3c4bf59-57b6-4ecb-b1af-e1394d5af1dd",
      "name": "Make video 1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1648,
        48
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/veo/generate",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"prompt\": \"{{ $json['output.scenes'] }}\",\n  \"model\": \"veo3_fast\",\n  \"aspectRatio\": \"9:16\",\n  \"imageUrls\": \"{{ $('Get the Image').item.json.images[0].url }}\"\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e05839ad-25b6-48c3-8729-8bbc9990e032",
      "name": "Get Record Info",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2048,
        48
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/veo/record-info",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "taskId",
              "value": "={{ $json.data.taskId }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "18515c34-3187-4ccc-9ff9-5331615bd5d9",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        1856,
        48
      ],
      "parameters": {
        "amount": 100
      },
      "typeVersion": 1.1
    },
    {
      "id": "4d1ae9bf-9c23-40da-a1bb-35dd434bf11c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        240
      ],
      "parameters": {
        "color": 3,
        "width": 1360,
        "height": 240,
        "content": "Combine The video"
      },
      "typeVersion": 1
    },
    {
      "id": "4a19e505-c3b8-44b8-b9eb-c5ee745ddbf3",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1216,
        320
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "data.response.resultUrls[0]"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2e47aa96-c962-4682-9eb4-0d399e145c8c",
      "name": "Combine Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1424,
        320
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/ffmpeg-api/merge-videos",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"video_urls\": [{{ $json.resultUrls[0].map(url => `\"${url}\"`) }}]\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "86a4e2ec-07fd-402b-a554-e5061de603e2",
      "name": "Wait2",
      "type": "n8n-nodes-base.wait",
      "position": [
        1632,
        320
      ],
      "parameters": {
        "amount": 100
      },
      "typeVersion": 1.1
    },
    {
      "id": "24f4d1a8-0c60-4848-acdf-0223c8b4579a",
      "name": "Get the final Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1840,
        320
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $json.request_id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "7e66cc28-ce4b-4d14-937c-55b5a9a9c971",
      "name": "Send a video",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2048,
        320
      ],
      "parameters": {
        "file": "={{ $json.video.url }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "operation": "sendVideo",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "903ebc12-5eac-49e6-b64d-f6ea55cbfa8b",
      "name": "Send a photo message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        480,
        704
      ],
      "parameters": {
        "file": "={{ $json.images[0].url }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "operation": "sendPhoto",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9b9f0923-d06a-4d64-a291-d23dafdf6ea2",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1088,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 528,
        "height": 640,
        "content": "## Muhammad Farooq Iqbal - Automation Expert & n8n Creator\n\nI am a passionate automation expert and recognized n8n Creator specializing in intelligent workflow automation. With extensive experience in n8n, AI automation, Zapier, and Make.com, I have created innovative workflow templates with 500+ downloads across the global automation community\n\n### Expertise\n- **Workflow Automation**: n8n, Zapier, Make.com, AI automation\n- **AI Integration**: Gemini AI, API integration, data processing\n- **Platform Mastery**: Google Sheets, Google Drive, custom scripts\n\n## Need Help with This Workflow?\n\nIf you face any issues with this workflow or need customization support, feel free to reach out:\n\n**\ud83d\udce7 Email**: mfarooqiqbal143@gmail.com  \n**\ud83d\udcf1 Phone**: +923036991118  \n**\ud83d\udcbc LinkedIn**: [Connect with me](https://linkedin.com/in/muhammadfarooqiqbal)  \n**\ud83c\udf10 Portfolio**: [View my work](https://mfarooqone.github.io/n8n/)\n\n*I'm always excited to help with automation challenges and workflow optimization!*\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0a5ccf70-91b6-4f4b-b8d9-716c0449982f",
      "name": "Setup Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 448,
        "height": 640,
        "content": "**Setup Instructions for UGC Content Creator:**\n\n**1. Configure Credentials:**\n- **Telegram API**: Set up your Telegram bot token\n- **OpenAI API**: Add your OpenAI API key for image analysis\n- **Fal.ai API**: Configure Fal.ai API key for image generation\n- **KIE.ai API**: Add KIE.ai API key for video generation\n\n**2. Telegram Bot Setup:**\n- Create a Telegram bot via @BotFather\n- Get your bot token and update in credentials\n- Set up webhook for the Telegram Trigger node\n\n**3. API Keys Required:**\n- OpenAI API key (for GPT-4 Vision analysis)\n- Fal.ai API key (for image generation & video merging)\n- KIE.ai API key (for Veo3 video generation)\n\n**4. Test the Workflow:**\n- Send an image with caption to your Telegram bot\n- The workflow will analyze, generate images, and create UGC videos\n- Check all API connections are working properly\n\n**5. Customization Options:**\n- Modify image generation prompts in 'Image Prompt' node\n- Adjust video scene prompts in 'Video Prompt' node\n- Update reference images in 'Create Image 1' node\n\n**Ready to create UGC content!** \ud83d\ude80"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get the Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Think": {
      "ai_tool": [
        [
          {
            "node": "Image Prompt",
            "type": "ai_tool",
            "index": 0
          },
          {
            "node": "Video Prompt",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Get Record Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait2": {
      "main": [
        [
          {
            "node": "Get the final Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Botid 1": {
      "main": [
        [
          {
            "node": "Image Pqath",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Combine Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Make video 1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image Pqath": {
      "main": [
        [
          {
            "node": "Analyze image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image Prompt": {
      "main": [
        [
          {
            "node": "Create Image 1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Make video 1": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Video Prompt": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze image": {
      "main": [
        [
          {
            "node": "Image Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine Video": {
      "main": [
        [
          {
            "node": "Wait2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get the Image": {
      "main": [
        [
          {
            "node": "Video Prompt",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send a photo message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Image 1": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Record Info": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Botid 1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Image Prompt",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Video Prompt",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get the final Video": {
      "main": [
        [
          {
            "node": "Send a video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Video Prompt",
            "type": "ai_outputParser",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Transform any product image into engaging UGC (User-Generated Content) videos and images using AI automation. This comprehensive workflow analyzes uploaded images via Telegram, generates realistic product images, and creates authentic UGC-style videos with multiple scenes. 📱…

Source: https://n8n.io/workflows/8811/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

RAG CHATBOT Main. Uses telegram, telegramTrigger, lmChatOpenAi, n8n-nodes-mcp. Event-driven trigger; 87 nodes.

Telegram, Telegram Trigger, OpenAI Chat +8
AI & RAG

Creators, marketers, and brands that want to turn a single product photo into premium motion clips, then optionally publish to Instagram/TikTok/YouTube via LATE. No editing skills required.

Telegram, Agent Tool, Telegram Trigger +5
AI & RAG

Product to Social Video (xCodeWraith Edition). Uses telegram, agentTool, telegramTrigger, httpRequest. Event-driven trigger; 83 nodes.

Telegram, Agent Tool, Telegram Trigger +5