AutomationFlowsAI & RAG › Generate AI Promo Videos for Products with Gpt-4o, Fal.ai & Human Supervision

Generate AI Promo Videos for Products with Gpt-4o, Fal.ai & Human Supervision

BygotoHuman @gotohuman on n8n.io

Generate AI video clips to promote products, services or events on social media. Use gotoHuman as an interface to control and supervise each step of the workflow to create content that's actually worth posting.

Cron / scheduled trigger★★★★★ complexityAI-powered72 nodesAgentOpenAI ChatTool ThinkOutput Parser StructuredHTTP Request@Gotohuman/N8N Nodes Gotohuman
AI & RAG Trigger: Cron / scheduled Nodes: 72 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7196 — 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": "0b4de412-a17e-4ba8-8edb-6d86a5229b2d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1600,
        272
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": [
                4
              ],
              "triggerAtHour": 12
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9363d3d6-ef9a-4bc5-9418-8f0887549e20",
      "name": "AI Agent: Generate Topic ideas",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1952,
        336
      ],
      "parameters": {
        "text": "=I'm running an online store for ceramics.\nPlease come up with 5 ideas for a topic for a short social media marketing post.\nPrimarily adjust it to the current season, considering the current month (Today is {{ $today.format('dd/LL/yyyy') }}) and our customers are in the northern hemisphere.\n\nCome up with a background scenery (e.g. beach, city, park, garden, cabin, office,...), a specific situation (e.g. picnic, day at the beach, party, regular office day,..) and a target audience (e.g. families, party singles, outdoor couples,startups,..)",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "aff6dd98-6667-4da5-8b6d-732551e639b9",
      "name": "AI: Generate Tag Lines",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2352,
        1152
      ],
      "parameters": {
        "text": "={{ $json.prompt }}",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "27f11b17-8575-4ea2-b75f-f6f0190cf76f",
      "name": "LLM",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1920,
        592
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "gpt-4o-mini"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "67b8909a-b459-4a4c-aaff-17890ffe368e",
      "name": "LLM1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2352,
        1376
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "gpt-4o-mini"
        },
        "options": {
          "temperature": 0.9
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e931c247-83c9-4313-a334-7c7224344738",
      "name": "Thinking",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2048,
        592
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "370b2f6e-3de9-43b3-a375-075d8dc758fd",
      "name": "Thinking1",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2448,
        1376
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c3bafdc2-d550-4e6c-9fd0-a037daeacae4",
      "name": "Extract JSON",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2176,
        592
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"scenery\": \"lorem ipsum\",\n    \"activity\": \"lorem ipsum\",\n    \"audience\": \"lorem ipsum\"\n  }\n]\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "99281da0-7453-4c6a-847c-2bb1042a41b8",
      "name": "Extract JSON1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2560,
        1376
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"tagLine\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "844a4693-4548-48e0-8e6f-729dfa250234",
      "name": "Fetch Status1",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        2464,
        1904
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/flux/requests/{{ $json.request_id }}/status",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "be7a4fd6-fcf8-4784-9ac1-0503805ca388",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        2864,
        2000
      ],
      "parameters": {
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "37b96d9a-a388-42de-92a4-fe67328f5df3",
      "name": "Fetch Result1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2864,
        1872
      ],
      "parameters": {
        "url": "={{ $json.response_url }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "9111812d-361d-40d6-9a62-284078a317ee",
      "name": "Fal.ai Image Gen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2272,
        1904
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/flux-pro/kontext",
        "method": "POST",
        "options": {},
        "jsonBody": "={{$json}}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b1811460-de61-4096-88d6-32db3f9d39a3",
      "name": "gotoHuman - Content",
      "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
      "position": [
        2960,
        1152
      ],
      "parameters": {
        "fields": {
          "value": {
            "scenery": "={{ $json.scenery }}",
            "tagLine": "={{ $json.tagLine }}",
            "activity": "={{ $json.activity }}",
            "audience": "={{ $json.audience }}",
            "products": "={{ $json.products }}"
          },
          "schema": [
            {
              "id": "audience",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "audience (textShort)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "scenery",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "scenery (textShort)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "activity",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "activity (textShort)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "style",
              "type": "object",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "style (checkboxes)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "products",
              "type": "array",
              "display": true,
              "required": false,
              "displayName": "products (imageGrid)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tagLine",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "tagLine (textShort)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "metaJson": "={{ $json.metaJson }}",
        "metaSelect": "json",
        "additionalFields": {
          "updateForReviewId": "={{ $json.reviewToUpdate }}"
        },
        "reviewTemplateID": {
          "__rl": true,
          "mode": "list"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "08ca1a40-709c-4d86-b4f3-7d78ead1af58",
      "name": "Rerun input",
      "type": "n8n-nodes-base.set",
      "position": [
        3344,
        1328
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "18a68238-8c1e-4fbd-abdf-b4866fac4f9a",
              "name": "reviewToUpdate",
              "type": "string",
              "value": "={{ $json.reviewId }}"
            },
            {
              "id": "6639c2fc-8b32-4f78-9869-b38e680bd2a3",
              "name": "prompt",
              "type": "string",
              "value": "={{ ($json.messages || [])?.[0]?.content || $('Tagline Prompt').item.json.prompt }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3552fa2c-5e24-4798-98db-0ff6bf643d9d",
      "name": "Is Ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        2704,
        1888
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "ac50759b-e2f3-4efd-a2af-f28b7d209b45",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "COMPLETED"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e355e2a4-94d9-407d-88d3-b269aad22ffa",
      "name": "Tagline Prompt",
      "type": "n8n-nodes-base.set",
      "position": [
        2144,
        1152
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "467bbd06-d02f-4dc5-8597-573b2f762666",
              "name": "prompt",
              "type": "string",
              "value": "=I'm running an online store for ceramics.\nPlease come up with a short tagline to use in a social media marketing post. I'll put it as a layer on top of an image. Again, can be really short!\nIt must not include commas!\nCampaign and image have the following attributes:\nTarget Audience: {{ $('gotoHuman - Topics').item.json.responseValues.topics.value[0].label.audience }}\nActivity Shown: {{ $('gotoHuman - Topics').item.json.responseValues.topics.value[0].label.activity }}\nImage Scenery: {{ $('gotoHuman - Topics').item.json.responseValues.topics.value[0].label.scenery }}\n\nExamples:\n\n{{ ($json.tagLine || [\"Summer Time!\"]).unique().join(\"\\n\") }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b8af975a-fbc0-4b55-ba08-2c0ac8fffbfc",
      "name": "Cloudinary upload",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3216,
        1872
      ],
      "parameters": {
        "url": "=https://api.cloudinary.com/v1_1/{{ $json.environment }}/image/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "value": "={{ $('Fetch Result1').item.json.images[0].url }}"
            },
            {
              "name": "upload_preset",
              "value": "={{ $json.uploadPreset }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a54dad12-eb4c-4ec9-8324-b22d47f42938",
      "name": "Homework: Post it",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1872,
        3472
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6158d06b-5b81-432f-a0cd-e16b740b227c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        32
      ],
      "parameters": {
        "color": 5,
        "width": 1100,
        "height": 724,
        "content": "## 1. Generate campaign ideas\nWe ask the LLM to generate ideas for our upcoming marketing campaign based on the current date/season.\nIn gotoHuman we choose our favorite and approve."
      },
      "typeVersion": 1
    },
    {
      "id": "c75d5bb5-870f-4b11-a73f-88a6a41e4b55",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2384,
        208
      ],
      "parameters": {
        "color": 7,
        "width": 308,
        "height": 304,
        "content": "![Source example](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6877ff9cd93f480ff6eb4def_677c04b5cd6a77eb434526bf9c0eaaca_gotoHuman%20full%20logo.svg)"
      },
      "typeVersion": 1
    },
    {
      "id": "b87823fe-e050-4b3b-9121-0f0749ecb487",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        816
      ],
      "parameters": {
        "color": 5,
        "width": 1756,
        "height": 728,
        "content": "## 2. Generate tag line (self-improving) & pick settings for image generation\nWe are going to place a text label (tag line) on top of our video and we ask AI to generate it for us.\nTo **allow our workflow to learn over time**, we are fetching previously approved tag lines from gotoHuman to incl. in our prompt as positive examples.\n\nIn gotoHuman we edit the scenery of the image, pick the desired style and product to show. We can also manually edit the tag line OR ask AI to retry (we can change the prompt as well)"
      },
      "typeVersion": 1
    },
    {
      "id": "dce551be-7f46-4dd9-9353-b4bbcf3cf00f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2848,
        1024
      ],
      "parameters": {
        "color": 7,
        "width": 324,
        "height": 304,
        "content": "![Source example](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6877ff9cd93f480ff6eb4def_677c04b5cd6a77eb434526bf9c0eaaca_gotoHuman%20full%20logo.svg)"
      },
      "typeVersion": 1
    },
    {
      "id": "9c07b86a-e416-4305-a757-7ae2c9c87451",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        1584
      ],
      "parameters": {
        "color": 5,
        "width": 2516,
        "height": 760,
        "content": "## 3. Generate reference product image\nUsing the approved settings we ask Fal.ai to generate the image that our short video clip will be based on.\nWe then use Cloudinary to put the tag line as a boxed label on top of it.\nIn gotoHuman, we check the image and can ask for a retry. Clicking the chat button allows us to edit the prompt before retrying which is very useful with images."
      },
      "typeVersion": 1
    },
    {
      "id": "15018783-9a60-462b-a9f9-04bbd105a797",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3680,
        1760
      ],
      "parameters": {
        "color": 7,
        "width": 308,
        "height": 320,
        "content": "![Source example](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6877ff9cd93f480ff6eb4def_677c04b5cd6a77eb434526bf9c0eaaca_gotoHuman%20full%20logo.svg)"
      },
      "typeVersion": 1
    },
    {
      "id": "c7a635e5-d557-4dc1-91f3-262228cfb5c7",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        3200
      ],
      "parameters": {
        "color": 5,
        "width": 360,
        "height": 648,
        "content": "## 5. Post to social media\nWe receive the URL of the final human-approved video clip in the response from gotoHuman and can now use it to publish it.\nAlternatively, you can download the video clip from gotoHuman and post it manually."
      },
      "typeVersion": 1
    },
    {
      "id": "cfe4a9aa-d31d-4f9f-9c8a-9318ed46ae62",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1856,
        1040
      ],
      "parameters": {
        "color": 7,
        "width": 228,
        "height": 304,
        "content": "![Source example](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6877ff9cd93f480ff6eb4def_677c04b5cd6a77eb434526bf9c0eaaca_gotoHuman%20full%20logo.svg)"
      },
      "typeVersion": 1
    },
    {
      "id": "2c5385cf-31b7-4ddb-aae2-0a836685caa7",
      "name": "Fetch Status",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        2480,
        2720
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/flux/requests/{{ $json.request_id }}/status",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "cb44f47a-fb6c-40ef-a0fc-2edcad10ec18",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        2896,
        2816
      ],
      "parameters": {
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "78500e8d-4d77-4b7a-8927-df8d1a90a86c",
      "name": "Fetch Result",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2896,
        2688
      ],
      "parameters": {
        "url": "={{ $json.response_url }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "94a4e219-e3b9-48e0-a74a-212c2a2d65cc",
      "name": "Is Ready?1",
      "type": "n8n-nodes-base.if",
      "position": [
        2720,
        2704
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "ac50759b-e2f3-4efd-a2af-f28b7d209b45",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "COMPLETED"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "76b372f9-ded9-4004-979f-8792ffca7396",
      "name": "Cloudinary upload1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3200,
        2688
      ],
      "parameters": {
        "url": "=https://api.cloudinary.com/v1_1/{{ $('Set Cloudinary options').item.json.environment }}/video/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "value": "={{ $json.video.url }}"
            },
            {
              "name": "upload_preset",
              "value": "={{ $('Set Cloudinary options').item.json.uploadPreset }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "35c9e4ea-b95e-4d2f-b8b6-888a7da2533e",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3680,
        2560
      ],
      "parameters": {
        "color": 7,
        "width": 308,
        "height": 304,
        "content": "![Source example](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6877ff9cd93f480ff6eb4def_677c04b5cd6a77eb434526bf9c0eaaca_gotoHuman%20full%20logo.svg)"
      },
      "typeVersion": 1
    },
    {
      "id": "788fd78c-32f9-4bd2-98fa-c1679e64f3d5",
      "name": "gotoHuman - Video",
      "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
      "position": [
        3792,
        2688
      ],
      "parameters": {
        "fields": {
          "value": {
            "video": "={{ $json.video }}"
          },
          "schema": [
            {
              "id": "video",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "video (video)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "refImage"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "metaJson": "={{ $json.metaJson }}",
        "metaSelect": "json",
        "additionalFields": {
          "updateForReviewId": "={{ $json.reviewToUpdate }}"
        },
        "reviewTemplateID": {
          "__rl": true,
          "mode": "list"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "da321f97-5080-4bd0-966c-a000c7dfb288",
      "name": "Rerun Video",
      "type": "n8n-nodes-base.set",
      "position": [
        4160,
        2928
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "978b3fc1-f62d-4ab3-ac10-4cd55c1e7cba",
              "name": "prompt",
              "type": "string",
              "value": "={{ ($json.messages || [])?.[0]?.content || $('Fetch Result1').item.json.prompt }}"
            },
            {
              "id": "1e20d82c-e7d0-4449-8260-badca14041d5",
              "name": "reviewToUpdate",
              "type": "string",
              "value": "={{ $json.reviewId }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ddeefad3-16e7-4802-bfa0-6c67ba887e9f",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        2400
      ],
      "parameters": {
        "color": 5,
        "width": 2512,
        "height": 744,
        "content": "## 4. Turn image into video clip\nWe use Fal.ai again to generate a short video clip based on our reference image, basically making it more vivid.\nAgain, we use Cloudinary to put the tag line on top of the video.\nIn gotoHuman, we check the video and again, can ask for a retry (also allowing prompt edits)"
      },
      "typeVersion": 1
    },
    {
      "id": "ffe45096-6a0f-4455-a634-2c4d85c3adfc",
      "name": "gotoHuman - Image",
      "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
      "position": [
        3792,
        1872
      ],
      "parameters": {
        "fields": {
          "value": {
            "refImage": "={{ $json.refImage }}"
          },
          "schema": [
            {
              "id": "refImage",
              "type": "array",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "refImage (imageGrid)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "refImage"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "metaJson": "={{ $json.metaJson }}",
        "metaSelect": "json",
        "additionalFields": {
          "updateForReviewId": "={{ $json.reviewToUpdate }}"
        },
        "reviewTemplateID": {
          "__rl": true,
          "mode": "list"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "78a65ba0-135f-49a9-b63e-a5cad481dc1b",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1536,
        512
      ],
      "parameters": {
        "color": 7,
        "width": 244,
        "height": 256,
        "content": "![Source example](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6877ff9cd93f480ff6eb4def_677c04b5cd6a77eb434526bf9c0eaaca_gotoHuman%20full%20logo.svg)"
      },
      "typeVersion": 1
    },
    {
      "id": "16bd1622-e025-420f-9d16-10a17231ac76",
      "name": "Remote manual trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [
        1600,
        624
      ],
      "parameters": {
        "path": "9cc44543-3b16-44bb-92e8-7c8bff09d8fe",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "9d234743-ee8c-4f27-ac26-10b093ced6da",
      "name": "Fal.ai Video Gen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2272,
        2720
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/kling-video/v2.1/standard/image-to-video",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "be670590-b4c2-40c6-945f-446de81bedbe",
      "name": "Set Initial Image Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        1872,
        1904
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "let style;\nswitch ($json.responseValues.style.value[0].id) {\n  case \"interior\":\n    style = \"Professional product photography in warm, natural lighting, shot with modern rustic furniture. If there is light, it is soft, diffused light creating gentle shadows and highlights. The composition has a casual, lived-in aesthetic with items arranged in an organic, unstaged manner. Color palette consists of warm neutrals - cream, beige, sage green, and natural wood tones. The lighting is soft and even with no harsh shadows, creating a cozy, authentic atmosphere. Shot from a slightly elevated angle looking down, with shallow depth of field keeping the background softly blurred. The overall mood is clean, contemporary farmhouse style with professional commercial photography quality but maintaining an approachable, everyday feel.\";\n    break;\n  case \"garden\":\n    style = \"Bright, vibrant product photography shot in natural outdoor garden setting with soft, warm lighting. Product is placed on stone or concrete surface, surrounded by lush green lawn, blooming flowers (lavender or similar spiky blooms) in foreground, and other flowers in contrasting colors in raised wooden planters in the background. The lighting is soft and diffused, creating a pleasant golden hour glow with gentle shadows. The composition has shallow depth of field with the background slightly blurred, emphasizing the products while maintaining the beautiful garden context. The overall aesthetic is fresh, organic, and naturally lit with rich saturated colors. Professional commercial photography style with natural, lifestyle garden setting.\"\n    break;\n  default:\n    style = \"Bright, cheerful overhead photography of the given scenery. Shot from shlightly above with even, natural lighting. Features colorful items arranged casually across the surface. Uses vibrant, saturated colors with a warm, sunny aesthetic. Clean, modern interior design photography style with high contrast and sharp detail. Playful, lifestyle-oriented composition that evokes outdoor eating and drinking and summer gatherings. Professional food styling with items arranged in an organic, lived-in manner rather than perfectly positioned.\"\n    break;\n}\nconst scene = $json.responseValues.scenery.value\nconst activity = $json.responseValues.activity.value\nconst prompt = `Show the passed ceramics product in the following context. Only show it once and pay attention to show it in a realistic perspective when it's standing\\n\\n<Style>${style}</Style>\\n\\n<Scenery>${scene}</Scenery>\\n\\n<ActivityShown> ${activity}</ActivityShown>`\n\nreturn {\"prompt\": prompt}"
      },
      "typeVersion": 2
    },
    {
      "id": "e7a9304a-8de8-4268-bc94-33fce6e4a6b1",
      "name": "Set Initial Video Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        1872,
        2720
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "return {\n  \"prompt\": \"Please put some natural movement to this image for a short clip. Only move what would be naturally moving, like plants gently moving in the wind, or very very slowly moving shadows of clouds (clouds not shown). If outdoors add 1-2 tiny insects flying around.\"\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "68571c4c-ae4b-44ea-b76a-86336e9fe3ab",
      "name": "Set Image Request",
      "type": "n8n-nodes-base.code",
      "position": [
        2080,
        1904
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "return {\n  \"prompt\": $json.prompt,\n  \"image_url\": $('gotoHuman - Content').first().json.responseValues.products.selected[0],\n  \"aspect_ratio\": \"3:4\"\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "4219c653-f1cc-42eb-a57f-e1964bfc4540",
      "name": "Set Video Request",
      "type": "n8n-nodes-base.code",
      "position": [
        2080,
        2720
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "return {\n  \"prompt\": $json.prompt,\n  \"image_url\": $(\"Approved or Retry ?\").first().json.responseValues.refImage.value[0].url,\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "03360e1e-e677-4869-b198-e4693a59cbc2",
      "name": "Rerun Image",
      "type": "n8n-nodes-base.set",
      "position": [
        4176,
        2128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "324cc185-bac4-4ddd-a0ef-d1d33d6cb1a6",
              "name": "prompt",
              "type": "string",
              "value": "={{ ($json.messages || [])?.[0]?.content || $('Fetch Result1').item.json.prompt }}"
            },
            {
              "id": "1e20d82c-e7d0-4449-8260-badca14041d5",
              "name": "reviewToUpdate",
              "type": "string",
              "value": "={{ $json.reviewId }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "26a54e6b-fb02-4605-afee-70bb04aea5f4",
      "name": "Set Cloudinary options",
      "type": "n8n-nodes-base.set",
      "position": [
        3040,
        1872
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "231a5488-b990-403f-8b35-1864946060f7",
              "name": "environment",
              "type": "string",
              "value": ""
            },
            {
              "id": "7a3ca199-8b7f-4bd2-99c9-710cb3001b53",
              "name": "uploadPreset",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "92c28c4f-89a9-4525-a92a-b82d9dbd54e3",
      "name": "Image URL with Tag Line",
      "type": "n8n-nodes-base.set",
      "position": [
        3392,
        1872
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2af40631-10e0-4dd2-8d9e-999d9f3fc242",
              "name": "url",
              "type": "string",
              "value": "=https://res.cloudinary.com/{{ $('Set Cloudinary options').item.json.environment }}/image/upload/w_800,f_auto,q_auto/b_white,l_text:bungee_60_bold:{{$('gotoHuman - Content').item.json.responseValues.tagLine.value.urlEncode()}},g_center,y_40,w_600,c_fit,co_rgb:E26D5C/fl_layer_apply,bo_40px_solid_white,g_south,y_40/v{{ $json.version }}/{{ $json.public_id }}.{{ $json.format }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "abb9a9f3-4ea6-4615-8c95-6bc748541c64",
      "name": "Data to send3",
      "type": "n8n-nodes-base.set",
      "position": [
        3568,
        1872
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0a11b75c-8d6a-46f5-8c20-0d414b27ec09",
              "name": "refImage",
              "type": "object",
              "value": "={{\n{\n  ai: { prompt: $('Fetch Result1').item.json.prompt },\n  content:[\n    {\n      \"url\": $json.url\n    }\n  ]\n}\n}}"
            },
            {
              "id": "25d65a8b-6a69-4ff3-9f52-8d65a97900ba",
              "name": "metaJson",
              "type": "string",
              "value": "={\n  \"_gthWorkflow\": {\n    \"runId\": \"{{ $('gotoHuman - Content').item.json.workflowRunId }}\",\n    \"prevSteps\": [\"{{ $('gotoHuman - Content').item.json.reviewId }}\"]\n  }\n}"
            },
            {
              "id": "aef20fd5-1451-4b2d-99f6-e1cdf0c62f82",
              "name": "reviewToUpdate",
              "type": "string",
              "value": "={{ $('Rerun Image').isExecuted ? $('Rerun Image').item.json.reviewToUpdate : null }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "48ddbcb6-2f40-4cdd-acf2-1c037c835c0e",
      "name": "Clip URL with Tag Line",
      "type": "n8n-nodes-base.set",
      "position": [
        3376,
        2688
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f3bf1bef-15ed-49f4-9c41-2d576cc2ee35",
              "name": "url",
              "type": "string",
              "value": "=https://res.cloudinary.com/{{ $('Set Cloudinary options').item.json.environment }}/video/upload/w_800,f_auto,q_auto/b_white,l_text:bungee_60_bold:{{$('gotoHuman - Content').item.json.responseValues.tagLine.value.urlEncode()}},g_center,y_40,w_600,c_fit,co_rgb:E26D5C/fl_layer_apply,bo_40px_solid_white,g_south,y_40/v{{ $json.version }}/{{ $json.public_id }}.{{ $json.format }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1ab3d4d9-0a3b-4a83-929f-d35e71c3c6e0",
      "name": "Data to send4",
      "type": "n8n-nodes-base.set",
      "position": [
        3552,
        2688
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "955a0f62-741a-480c-ad24-c3c7fb69ddda",
              "name": "video",
              "type": "object",
              "value": "={{\n{\n  ai: { prompt: $('Set Initial Video Prompt').item.json.prompt },\n  content:\n    {\n      \"url\": $json.url\n    }\n}\n}}"
            },
            {
              "id": "a1c343cd-90d2-4df7-bb10-7e59641aa518",
              "name": "metaJson",
              "type": "string",
              "value": "={\n  \"_gthWorkflow\": {\n    \"runId\": \"{{ $('gotoHuman - Image').item.json.workflowRunId }}\",\n    \"prevSteps\": [\"{{ $('gotoHuman - Image').item.json.reviewId }}\"]\n  }\n}"
            },
            {
              "id": "a44a817a-1a43-4544-b0d9-6debd1d321eb",
              "name": "reviewToUpdate",
              "type": "string",
              "value": "={{ $('Rerun Video').isExecuted ? $('Rerun Video').item.json.reviewToUpdate : null }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7cbfd32c-7e8c-415e-a942-1e16596c06aa",
      "name": "gotoHuman - Topics",
      "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
      "position": [
        2496,
        336
      ],
      "parameters": {
        "fields": {
          "value": {
            "topics": "={{ $json.topics }}"
          },
          "schema": [
            {
              "id": "topics",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "topics (checkboxes)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "topics"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "metaJson": "={{ $json.metaJson }}",
        "metaSelect": "json",
        "additionalFields": {},
        "reviewTemplateID": {
          "__rl": true,
          "mode": "list"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9d5231af-cfca-4e53-815a-c45e303412fc",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3040,
        96
      ],
      "parameters": {
        "color": 7,
        "width": 960,
        "height": 656,
        "content": "![e](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6893ca394b196bb6438732a3_topics-step.JPG)"
      },
      "typeVersion": 1
    },
    {
      "id": "08b74b94-a645-48c8-933b-94952e67ee2b",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3680,
        832
      ],
      "parameters": {
        "color": 7,
        "width": 624,
        "height": 752,
        "content": "![e](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6893ca39c3a320231f3a9271_content-step.JPG)"
      },
      "typeVersion": 1
    },
    {
      "id": "b3362a00-ab06-4d42-84e2-8b10b122f620",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4464,
        1664
      ],
      "parameters": {
        "color": 7,
        "width": 1040,
        "height": 672,
        "content": "![e](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6893ca39392754f280752980_image-step.JPG)"
      },
      "typeVersion": 1
    },
    {
      "id": "f1eca5be-d6ba-4cca-a516-a53b6dd4ee8f",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4464,
        2464
      ],
      "parameters": {
        "color": 7,
        "width": 1040,
        "height": 672,
        "content": "![e](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6893ca39f9d345b58541c664_video-step.JPG)"
      },
      "typeVersion": 1
    },
    {
      "id": "e6394a0b-3046-42bf-ae49-41c921594307",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5552,
        1664
      ],
      "parameters": {
        "color": 7,
        "width": 912,
        "height": 672,
        "content": "![e](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6893ca39d91d94647ceb31c6_image-ai-chat.JPG)"
      },
      "typeVersion": 1
    },
    {
      "id": "132ba3dd-668b-4033-a63e-41b980248131",
      "name": "Sticky Note22",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3984,
        2448
      ],
      "parameters": {
        "width": 256,
        "content": "## \u26a0\ufe0f Instructions\n[ ] Select your gotoHuman credentials from the list\n\n[ ] Select review template \"Review Clip\" from list"
      },
      "typeVersion": 1
    },
    {
      "id": "c0311862-d85a-4708-bc66-05f47985d107",
      "name": "Fetch approved examples",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1904,
        1152
      ],
      "parameters": {
        "url": "https://api.gotohuman.com/queryResponses",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "formId"
            },
            {
              "name": "fieldIds",
              "value": "tagLine"
            },
            {
              "name": "approvedValuesOnly",
              "value": "true"
            },
            {
              "name": "groupByField",
              "value": "true"
            }
          ]
        },
        "nodeCredentialType": "gotoHumanApi"
      },
      "typeVersion": 4.2
    },
    {
      "id": "851f3fc3-1b22-482d-a2f8-f692dd753f6f",
      "name": "Data to send",
      "type": "n8n-nodes-base.set",
      "position": [
        2240,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "18f6bd6c-398e-4d1d-9675-d5d9da6e36c0",
              "name": "topics",
              "type": "string",
              "value": "={{ $json.output }}"
            },
            {
              "id": "907f7a29-3989-48ad-9b51-1f2c5c1adef0",
              "name": "metaJson",
              "type": "string",
              "value": "={   \"_gthWorkflow\": {     \"runName\": \"{{ $('Remote manual trigger').isExecuted ? $('Remote manual trigger').item.json.body.responseValues.campaignName.value : \"Campaign \" + $('Schedule Trigger').item.json.Month + \" \" + $('Schedule Trigger').item.json.Year + \", \" + $('Schedule Trigger').item.json['Day of month'] }}\"   } }"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ea4b6668-03b9-44a5-9c73-2c94fa5d366f",
      "name": "Data to send2",
      "type": "n8n-nodes-base.set",
      "position": [
        2720,
        1152
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "eaf1edaa-2b7b-442b-a580-9dc85718f09d",
              "name": "audience",
              "type": "string",
              "value": "={{ $('gotoHuman - Topics').item.json.responseValues.topics.value[0].label.audience }}"
            },
            {
              "id": "c8247039-cbc0-47a6-87f2-413e29662da9",
              "name": "scenery",
              "type": "string",
              "value": "={{ $('gotoHuman - Topics').item.json.responseValues.topics.value[0].label.scenery }}"
            },
            {
              "id": "23a332d1-bc17-48c5-96d1-8591df95baed",
              "name": "activity",
              "type": "string",
              "value": "={{ $('gotoHuman - Topics').item.json.responseValues.topics.value[0].label.activity }}"
            },
            {
              "id": "e2b16b68-cfc9-4ff6-8947-14b3d58eebb2",
              "name": "products",
              "type": "array",
              "value": "={{ \n[\n{url: \"https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6889f47fb9639ff10b8a1350_vasecolored.jpg\"},\n{url: \"https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6889f4aa3875b777178936ab_vasegreen.webp\"},\n{url: \"https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/6889f4c8534e9193b60cc22f_vaseyellow.webp\"}\n]\n}}"
            },
            {
              "id": "bfb472ad-4059-44a3-bc45-12a1536f2f92",
              "name": "tagLine",
              "type": "object",
              "value": "={{\n{\nai: {prompt: $('Tagline Prompt').item.json.prompt},\ncontent: $json.output.tagLine\n}\n}}"
            },
            {
              "id": "412dd833-bc29-41a4-ad53-0be4993b74d0",
              "name": "metaJson",
              "type": "string",
              "value": "={\n  \"_gthWorkflow\": {\n    \"runId\": \"{{ $('gotoHuman - Topics').item.json.workflowRunId }}\",\n    \"prevSteps\": [\"{{ $('gotoHuman - Topics').item.json.reviewId }}\"]\n  }\n}"
            },
            {
              "id": "228c5199-503a-43d8-8af8-4b8d064ab3b2",
              "name": "reviewToUpdate",
              "type": "string",
              "value": "={{ $('Rerun input').isExecuted ? $('Rerun input').item.json.reviewToUpdate : null }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "061aed50-8abb-4e19-94d9-584431620442",
      "name": "Approved?",
      "type": "n8n-nodes-base.if",
      "position": [
        2784,
        336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6d70d537-257b-4da9-8841-51e75472ae44",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.response }}",
              "rightValue": "approved"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "7dcf5976-3db1-4ef7-b44e-0b6f3aa64b28",
      "name": "Approved or Retry?",
      "type": "n8n-nodes-base.switch",
      "position": [
        3216,
        1152
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Approved",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0e1a0eaf-64e6-4004-952e-8d1b85c28fe8",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($json.response === \"approved\")  }}",
                    "rightValue": "true"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Rerun tagline",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3e87dd5e-ac87-4d1f-a3b6-f0a31ea1bab6",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($json.type === \"chat\") }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "87011dbc-b82b-4bf6-8cc7-c5fa84463013",
      "name": "Approved or Retry ?",
      "type": "n8n-nodes-base.switch",
      "position": [
        4032,
        1872
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Good",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0e1a0eaf-64e6-4004-952e-8d1b85c28fe8",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($json.type === \"review\") && ($json.response === \"approved\")  }}",
                    "rightValue": "true"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Rerun",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3e87dd5e-ac87-4d1f-a3b6-f0a31ea1bab6",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($json.type === \"chat\") }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "4bd71e90-8f3c-4520-a3cd-e68a32d308df",
      "name": "Approved or Retry  ?",
      "type": "n8n-nodes-base.switch",
      "position": [
        4032,
        2688
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Good",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0e1a0eaf-64e6-4004-952e-8d1b85c28fe8",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($json.type === \"review\") && ($json.response === \"approved\")  }}",
                    "rightValue": "true"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Rerun",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3e87dd5e-ac87-4d1f-a3b6-f0a31ea1bab6",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($json.type === \"chat\") }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "2dd8fe28-83b2-442b-ada6-38663a836b5e",
      "name": "Sticky Note25",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        48
      ],
      "parameters": {
        "width": 880,
        "height": 1408,
        "content": "## Create AI product videos with Fal.ai using [gotoHuman](https://www.gotohuman.com) for supervision\nLet's say we are a shop selling ceramics and want to showcase one of our products on social media each week.\nThis mainly demonstrates how to use **gotoHuman** to supervise each step of the workflow.\n\n@[youtube](mjjkPjCubns)\n\n### \u26a0\ufe0f How to set up\n[ ] In n8n, install gotoHuman node **before** importing this template or some settings will be missing (Just add the node to a blank canvas before importing)\n\n[ ] Create gotoHuman account, copy API key\n\n[ ] In gotoHuman, select and create the pre-built review template **Promo video agent** or import these IDs: `Z7V1jyImY1pho9eY039R,0GBaOCWd27tqV562kkCL,E2wlCVPWmk2UnLHVt4uu,DitPdbIapS4rBxBTIYGt,Z2T7nFwkXVFQlD6z50eV`\n(copy&paste this whole comma-separated list of IDs)\n[ ] Follow further instructions in the yellow notes below\n\n### Requirements\n- gotoHuman account for human supervision\n- OpenAI account for ideation and tag line generation\n- Fal.ai account for image/video generation\n- Cloudinary account for adding a text layer on top of image/video\n\n### How to customize\n- Adjust/Replace the workflow triggers as needed\n- Change the prompt in the topics generation node\n- Replace the product image URLs used in the \"gotoHuman - Content\" node\n- Adjust the available styles for image generation in the gotoHuman review template and the prompts they link to in the \"Set Initial Image Prompt\" node\n- Remove Cloudinary if you do not need a text overlay\n- Adjust the prompt used for video generation in the \"Set Initial Video Prompt\" node"
      },
      "typeVersion": 1
    },
    {
      "id": "d05548c1-463f-4082-982c-d074a9742e10",
      "name": "Sticky Note21",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3984,
        1664
      ],
      "parameters": {
        "width": 256,
        "content": "## \u26a0\ufe0f Instructions\n[ ] Select your gotoHuman credentials from the list\n\n[ ] Select review template \"Review Ref Image\" from list"
      },
      "typeVersion": 1
    },
    {
      "id": "a0bda33c-c741-415d-896d-466558dd40a9",
      "name": "Sticky Note23",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2192,
        1744
      ],
      "parameters": {
        "width": 256,
        "content": "## \u26a0\ufe0f Instructions\n[ ] You need a Fal.ai account\n[ ] Choose \"Generic Credential Type\" > \"Header Auth\" > Name: `Authorization`, Value: `Key YOUR-API-KEY` "
      },
      "typeVersion": 1
    },
    {
      "id": "7db74fa7-cd53-4878-9ea9-0834940b3dc1",
      "name": "Sticky Note24",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2976,
        1664
      ],
      "parameters": {
        "width": 336,
        "height": 208,
        "content": "## \u26a0\ufe0f Instructions\n[ ] You need a cloudinary.com account\n[ ] In Cloudinary, find your environment/cloud name\n[ ] In Cloudinary, [add an upload preset](https://console.cloudinary.com/settings/upload/presets). Enter a name, set signing mode to **Unsigned** and enter asset folder name. Leave rest as is. Save.\n[ ] In this node, enter names of environment and upload preset (no credential req.)"
      },
      "typeVersion": 1
    },
    {
      "id": "398ec2f5-e380-4ac4-9f67-70ad43853685",
      "name": "Sticky Note20",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3168,
        912
      ],
      "parameters": {
        "width": 256,
        "content": "## \u26a0\ufe0f Instructions\n[ ] Select your gotoHuman credentials from the list\n\n[ ] Select review template \"Product,...\" from list"
      },
      "typeVersion": 1
    },
    {
      "id": "13b8c8d6-8939-4a95-9ff8-24ab5b9a63bb",
      "name": "Sticky Note19",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1616,
        1120
      ],
      "parameters": {
        "width": 256,
        "height": 240,
        "content": "## \u26a0\ufe0f Instructions\n[ ] Select credential type \"gotoHuman API\"\n\n[ ] Select your gotoHuman credentials from the list\n\n[ ] For `formId` enter the ID of your gotoHuman review template \"Product,...\""
      },
      "typeVersion": 1
    },
    {
      "id": "c37b2041-5d08-4298-b952-38524a2f040d",
      "name": "Sticky Note17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        624
      ],
      "parameters": {
        "content": "## \u26a0\ufe0f Instructions\n[ ] Add the webhook URL shown in this node to the settings of the review template \"Create Campaign\" in gotoHuman"
      },
      "typeVersion": 1
    },
    {
      "id": "1f0b871b-f801-4518-9068-b8b9823e234a",
      "name": "Sticky Note18",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        128
      ],
      "parameters": {
        "width": 256,
        "content": "## \u26a0\ufe0f Instructions\n[ ] Add gotoHuman credentials with your API key\n\n[ ] Select review template \"Topic Ideas\" from list"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "LLM": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent: Generate Topic ideas",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "LLM1": {
      "ai_languageModel": [
        [
          {
            "node": "AI: Generate Tag Lines",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Fetch Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Fetch Status1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Thinking": {
      "ai_tool": [
        [
          {
            "node": "AI Agent: Generate Topic ideas",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Approved?": {
      "main": [
        [
          {
            "node": "Fetch approved examples",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Ready?": {
      "main": [
        [
          {
            "node": "Fetch Result1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Thinking1": {
      "ai_tool": [
        [
          {
            "node": "AI: Generate Tag Lines",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Is Ready?1": {
      "main": [
        [
          {
            "node": "Fetch Result",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rerun Image": {
      "main": [
        [
          {
            "node": "Set Image Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rerun Video": {
      "main": [
        [
          {
            "node": "Set Video Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rerun input": {
      "main": [
        [
          {
            "node": "AI: Generate Tag Lines",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Data to send": {
      "main": [
        [
          {
            "node": "gotoHuman - Topics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract JSON": {
      "ai_outputParser": [
   
Pro

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

About this workflow

Generate AI video clips to promote products, services or events on social media. Use gotoHuman as an interface to control and supervise each step of the workflow to create content that's actually worth posting.

Source: https://n8n.io/workflows/7196/ — 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

This workflow is designed for creators, marketers, and agencies who want to automate content publishing while keeping quality control through human review. It integrates four powerful tools — Google S

Tool Think, Output Parser Structured, OpenAI Chat +4
AI & RAG

kisisel asistan. Uses toolWorkflow, toolHttpRequest, toolCalculator, toolThink. Scheduled trigger; 43 nodes.

Tool Workflow, Tool Http Request, Tool Calculator +15
AI & RAG

Generate creative ASMR cutting video concepts with GPT-5.1, create high-quality video clips using Sora v2, stitch them together with Cloudinary, and automatically post to Twitter/X—transforming ideas

OpenAI Chat, HTTP Request, Agent +3
AI & RAG

ASMR. Uses googleSheets, outputParserStructured, httpRequest, lmChatOpenAi. Scheduled trigger; 35 nodes.

Google Sheets, Output Parser Structured, HTTP Request +5
AI & RAG

darkweb-get-forum-posts. Uses outputParserStructured, toolThink, httpRequest, discord. Scheduled trigger; 32 nodes.

Output Parser Structured, Tool Think, HTTP Request +5