Auto-Generate and Post Instagram Reels with Veo3, OpenAI, and Blotato

⚡ Auto-Generate and Post Instagram Reels with Veo3, OpenAI, and Blotato

This workflow allows creators and marketers to automatically generate engaging Instagram Reels using Veo3 and OpenAI, with Blotato handling automated posting. AI generates scripts, captions, and visual effects to maximize engagement, while Blotato ensures seamless scheduling and publishing across multiple accounts.

Overview

The workflow integrates Veo3’s AI video generation with OpenAI’s natural language capabilities to create optimized Reels content. Blotato automates posting, tracking, and scheduling, giving users full control and efficiency in their social media strategy. The result is fast, high-quality content production with minimal manual work.

Key Features

  • AI-generated scripts for Instagram Reels optimized for virality.
  • Automatic visual effects and subtitles via Veo3.
  • OpenAI-powered captions, hashtags, and engagement suggestions.
  • Blotato automation for scheduling and posting.
  • Supports multiple Instagram accounts and Reels formats.
  • Analytics and post-performance tracking.

How It Works

New video content is generated using Veo3, AI scripts from OpenAI are applied for captions and hashtags, and the final Reels are sent to Blotato. Blotato handles automated posting according to your schedule, ensuring content reaches your audience at optimal times. Performance metrics can be collected for further strategy adjustments.

Benefits

  • High-quality Reels produced automatically.
  • Maximizes engagement with AI-generated captions and effects.
  • Reduces manual editing and posting time.
  • Seamless multi-account management.
  • Real-time analytics for strategy optimization.

{
  "nodes": [
    {
      "parameters": {
        "options": {}
      },
      "id": "748cbf5d-c44f-4d0c-97ad-6c53dfbe1d79",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        1248,
        480
      ],
      "webhookId": "6d4edfc3-f45e-4404-a2bd-f5a740de6667",
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4",
          "cachedResultName": "GPT-4"
        },
        "messages": {
          "values": [
            {
              "content": "={{ $json.chatInput }}"
            },
            {
              "content": "You are a creative video prompt generator for short-form reels (e.g., Instagram, TikTok). Based on:\n\nThe chat input of the user\n\nYour task is to craft an elaborate, visually descriptive video generation prompt suitable for input into the Seedance/Veo3 API.\n\nšŸ›‘ Do not include any extra explanation, formatting, or commentary. Your entire output must be the exact prompt to pass into the video generator.\n\nThe prompt should:\n– Be under 100 words\n– Describe the visual elements, tone, and motion clearly\n– Reflect the thematic visual in a coherent manner\n\nExample of your expected output format:\n\n“A close-up slow-motion shot of a glass perfume bottle as morning sunlight filters through mist. The background shows soft-focus wildflowers, matching the theme of natural beauty and calm. Overlay text: ‘Nature’s Elegance. Reinvented.’ Trend-inspired styling based on the ‘quiet luxury’ aesthetic. For Instagram.”",
              "role": "system"
            }
          ]
        },
        "options": {}
      },
      "id": "85e110c8-3655-4f8a-b4e0-cb0fa9d8023c",
      "name": "AI Video Prompt Agent",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1472,
        480
      ],
      "typeVersion": 1.8,
      "credentials": {}
    },
    {
      "parameters": {
        "amount": 30
      },
      "id": "6b98147c-69de-46e6-9be5-868be53436ec",
      "name": "30 Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        2048,
        480
      ],
      "webhookId": "feb86a07-9431-4fde-8f41-8145483921e1",
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "url": "=https://api.wavespeed.ai/api/v3/predictions/{{ $json.data.id }}/result",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "id": "412c35be-e37d-4373-aea7-a9d438dff8ee",
      "name": "HTTP Get Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2272,
        480
      ],
      "typeVersion": 4.2,
      "credentials": {}
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "57f70829-d058-494e-b438-7ce9dc8a6384",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "processing"
            }
          ]
        },
        "options": {}
      },
      "id": "fd4495d3-a62e-4eb5-844a-3917a187915e",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        2496,
        480
      ],
      "typeVersion": 2.2
    },
    {
      "parameters": {
        "amount": 30
      },
      "id": "a733eb21-21a4-4421-ba7e-54e888f1360d",
      "name": "Wait 30 Secs",
      "type": "n8n-nodes-base.wait",
      "position": [
        2448,
        688
      ],
      "webhookId": "0f2d17ef-dde0-41d6-b29e-0896907f75a0",
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "messages": {
          "values": [
            {
              "content": "=Based on this video generation prompt, create an impactful accompanying caption for the Instagram Post: {{ $('AI Video Prompt Agent').item.json.message.content }}"
            },
            {
              "content": "You're an Instagram Caption copywriter. You'll receive a set of video prompt message that is used for generating an Instagram short reel video. Your job is to write an effective accompanying caption. Language style should be playful and impactful.",
              "role": "system"
            }
          ]
        },
        "options": {}
      },
      "id": "caf8768f-b5c0-4409-a5d8-26903819affa",
      "name": "Caption Agent",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        2720,
        480
      ],
      "typeVersion": 1.8,
      "credentials": {}
    },
    {
      "parameters": {
        "mode": "raw",
        "jsonOutput": "{}",
        "options": {}
      },
      "id": "a4b6823c-5613-4005-8027-7d572b5ac16e",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        3296,
        480
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://backend.blotato.com/v2/media",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $('Google Sheet Ready To Post').item.json['Video URL (google drive)'] }}"
            }
          ]
        },
        "options": {}
      },
      "id": "3fcb1142-1fc0-48a2-8b98-029e71f5bbd8",
      "name": "Upload Bloatato",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3488,
        480
      ],
      "typeVersion": 4.2,
      "credentials": {}
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": "",
        "sheetName": ""
      },
      "id": "133122f3-3121-493c-a8de-0143e6c4bb8f",
      "name": "Google Sheets1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3936,
        480
      ],
      "typeVersion": 4.6,
      "credentials": {}
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://backend.blotato.com/v2/posts",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"instagram\"\n    },\n    \"content\": {\n      \"text\": {{ $('Google Sheet Ready To Post').item.json.Caption.toJsonString() }},\n      \"platform\": \"instagram\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"{{ YOUR_INSTAGRAM_ID }}\"\n  }\n}",
        "options": {}
      },
      "id": "5e9c7145-face-4312-957e-189be416d08e",
      "name": "Publish to IG",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3696,
        480
      ],
      "typeVersion": 4.2,
      "credentials": {}
    },
    {
      "parameters": {
        "content": "Chat Trigger",
        "height": 820,
        "width": 300
      },
      "id": "cf959117-131c-424a-9dcc-f140c745b9c3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        240
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "Video Prompt Agent",
        "height": 820,
        "width": 300,
        "color": 4
      },
      "id": "9bdaebd2-89f6-4200-8039-fcb2c865d8dd",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        240
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "Video Prompt Agent",
        "height": 820,
        "color": 5
      },
      "id": "499c2aa4-053b-4afc-8451-2c24576bcab3",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1776,
        240
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.wavespeed.ai/api/v3/google/veo3-fast",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "aspect_ratio",
              "value": "9:16"
            },
            {
              "name": "duration",
              "value": "8"
            },
            {
              "name": "enable_prompt_expansion",
              "value": "true"
            },
            {
              "name": "generate_audio",
              "value": "true"
            },
            {
              "name": "prompt",
              "value": "={{ $json.message.content }}"
            }
          ]
        },
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "id": "e9c9f126-d4df-4ed7-a623-b2597874ce08",
      "name": "Veo3 Video Generator",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1840,
        480
      ],
      "typeVersion": 4.2,
      "credentials": {}
    },
    {
      "parameters": {
        "content": "Veo3 Get Requst Loop",
        "height": 820,
        "width": 640,
        "color": 6
      },
      "id": "ee9bda38-b08a-4a5b-88b5-553ba786d2fd",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2032,
        240
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "Caption Agent",
        "height": 820,
        "width": 320,
        "color": 3
      },
      "id": "f8889ae0-2605-4427-bae4-a4214cc17ca4",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2688,
        240
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "Upload to Google Sheet, Blotato and Post",
        "height": 820,
        "width": 820,
        "color": 2
      },
      "id": "9466e6a7-ead7-4815-83dd-f8d41d2228c2",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3040,
        240
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": "",
        "sheetName": ""
      },
      "id": "69b4f195-0227-4402-bd3b-256155df9f53",
      "name": "Google Sheet Ready To Post",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3120,
        480
      ],
      "typeVersion": 4.6,
      "credentials": {}
    },
    {
      "parameters": {
        "content": "Update Google Sheet",
        "height": 820,
        "width": 300,
        "color": 4
      },
      "id": "da6abba8-5722-4e4c-8403-9e3ea6655573",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3872,
        240
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "šŸ“± Veo3 Instagram Agent – Create & Auto-Post Reels with AI\nDescription:\nThis no-code workflow automates the full pipeline of generating and publishing Instagram Reels using Veo3 (via Wavespeed API). From prompt to post, it handles content ideation, short-form video generation, caption writing, logging, and even automatic publishing to Instagram via Blotato.\n\nPerfect for creators, brands, and marketers who want to scale content creation without needing to shoot or edit videos manually.\n\nšŸ”—  Watch the full step-by-step tutorial on how to build this workflow:\nhttps://www.youtube.com/@Automatewithmarc\n\nšŸš€ What This Workflow Does:\nTrigger via Chat or Telegram\n Start with a simple message like:\n \"Make a reel for a luxury minimalist candle brand using calm aesthetics.\"\n\nAI Video Prompt Generation\n Uses OpenAI to craft a visually rich, platform-optimized video description prompt.\n\nšŸŽž️ Video Creation with Veo3 API\n Submits your prompt to Veo3 to create a short video (9:16 ratio, 8 seconds) with motion, tone, and trend styles.\n\n✍️ Caption Writing\n An AI agent writes an engaging and playful caption based on the video content.\n\nšŸ“„ Google Sheets Logging\n Stores prompt, video URL, caption, and status in a GSheet to keep track of all generated assets.\n\nšŸ“¤ Auto-Publish to Instagram\n Posts the video + caption directly to Instagram using Blotato’s social media publishing API.\n\nšŸ”Œ Tools & Integrations Used:\nOpenAI for prompt & caption generation\n\nWavespeed API (Veo3) for video generation\n\nGoogle Sheets for tracking\n\nBlotato for scheduling & publishing content\n\nn8n for orchestration and automation logic\n\nšŸ’” Use Cases:\nContent calendar automation for small teams\n\nTrend-based ad creation and testing\n\nUGC-style reel generation for e-commerce\n\nRapid ideation & creative experimentation",
        "height": 1020,
        "width": 700
      },
      "id": "46d2c455-ee23-43aa-876a-0b934e637dc8",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        240
      ],
      "typeVersion": 1
    }
  ],
  "connections": {
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Video Prompt Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Video Prompt Agent": {
      "main": [
        [
          {
            "node": "Veo3 Video Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "30 Wait": {
      "main": [
        [
          {
            "node": "HTTP Get Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Get Request": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Wait 30 Secs",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Caption Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 30 Secs": {
      "main": [
        [
          {
            "node": "HTTP Get Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Caption Agent": {
      "main": [
        [
          {
            "node": "Google Sheet Ready To Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Upload Bloatato",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Bloatato": {
      "main": [
        [
          {
            "node": "Publish to IG",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish to IG": {
      "main": [
        [
          {
            "node": "Google Sheets1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Veo3 Video Generator": {
      "main": [
        [
          {
            "node": "30 Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheet Ready To Post": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "75abd48bc57d25714aa960bb88d4b2adecc422dfb024e5b5e89c730044230c39"
  }
}
    

Comments