8
n8n 中文网amn8n.com

使用 GPT-4o、Fal.ai 和人工监督生成产品 AI 宣传视频

高级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 72 个节点。主要使用 If, Set, Code, Wait, Switch 等节点。 使用 GPT-4o、Fal.ai 和人工监督生成产品 AI 宣传视频

前置要求
  • HTTP Webhook 端点(n8n 会自动生成)
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "5ec543f78db8e552b46818580d4137dda2f58675a1a45426c44ae175fc35ac62"
  },
  "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
      ],
      "webhookId": "150069ed-885b-497f-a32a-09e7088136e6",
      "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
      ],
      "webhookId": "bd084af6-4f7e-4084-bd75-66fe43dd069f",
      "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
      ],
      "webhookId": "150069ed-885b-497f-a32a-09e7088136e6",
      "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
      ],
      "webhookId": "2a80c59b-c47c-46c5-95bf-bccc5c8b7d1c",
      "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
      ],
      "webhookId": "2a80c59b-c47c-46c5-95bf-bccc5c8b7d1c",
      "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
      ],
      "webhookId": "9cc44543-3b16-44bb-92e8-7c8bff09d8fe",
      "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
      ],
      "webhookId": "946e30b4-a7c4-4579-803a-5457cd4bf559",
      "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": "## ⚠️ 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### ⚠️ 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, import review templates from IDs: `Z7V1jyImY1pho9eY039R,0GBaOCWd27tqV562kkCL,E2wlCVPWmk2UnLHVt4uu,DitPdbIapS4rBxBTIYGt,Z2T7nFwkXVFQlD6z50eV`\n(copy&paste this whole comma-separated list of IDs)\n![x](https://cdn.prod.website-files.com/6605a2979ff17b2cd1939cd4/689484a8c752885e94ef212e_import-menu.JPG)\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": "## ⚠️ 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": "## ⚠️ 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": "## ⚠️ 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": "## ⚠️ 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": "## ⚠️ 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": "## ⚠️ 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": "## ⚠️ Instructions\n[ ] Add gotoHuman credentials with your API key\n\n[ ] Select review template \"Topic Ideas\" from list"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {
    "Remote manual trigger": [
      {
        "body": {
          "type": "trigger",
          "formId": "the-trigger-form-id",
          "formName": "Create Campaign",
          "reviewId": "the-trigger-id",
          "accountId": "your-account-id",
          "respondingUser": "hello@acme.org",
          "responseValues": {
            "campaignName": {
              "value": "Late Summer Campaign"
            }
          }
        },
        "webhookUrl": "https://xxx.app.n8n.cloud/webhook-test/x-y-z",
        "executionMode": "test"
      }
    ]
  },
  "connections": {
    "27f11b17-8575-4ea2-b75f-f6f0190cf76f": {
      "ai_languageModel": [
        [
          {
            "node": "9363d3d6-ef9a-4bc5-9418-8f0887549e20",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "67b8909a-b459-4a4c-aaff-17890ffe368e": {
      "ai_languageModel": [
        [
          {
            "node": "aff6dd98-6667-4da5-8b6d-732551e639b9",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "cb44f47a-fb6c-40ef-a0fc-2edcad10ec18": {
      "main": [
        [
          {
            "node": "2c5385cf-31b7-4ddb-aae2-0a836685caa7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "be7a4fd6-fcf8-4784-9ac1-0503805ca388": {
      "main": [
        [
          {
            "node": "844a4693-4548-48e0-8e6f-729dfa250234",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e931c247-83c9-4313-a334-7c7224344738": {
      "ai_tool": [
        [
          {
            "node": "9363d3d6-ef9a-4bc5-9418-8f0887549e20",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "061aed50-8abb-4e19-94d9-584431620442": {
      "main": [
        [
          {
            "node": "c0311862-d85a-4708-bc66-05f47985d107",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3552fa2c-5e24-4798-98db-0ff6bf643d9d": {
      "main": [
        [
          {
            "node": "37b96d9a-a388-42de-92a4-fe67328f5df3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "be7a4fd6-fcf8-4784-9ac1-0503805ca388",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "370b2f6e-3de9-43b3-a375-075d8dc758fd": {
      "ai_tool": [
        [
          {
            "node": "aff6dd98-6667-4da5-8b6d-732551e639b9",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "94a4e219-e3b9-48e0-a74a-212c2a2d65cc": {
      "main": [
        [
          {
            "node": "78500e8d-4d77-4b7a-8927-df8d1a90a86c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "cb44f47a-fb6c-40ef-a0fc-2edcad10ec18",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "03360e1e-e677-4869-b198-e4693a59cbc2": {
      "main": [
        [
          {
            "node": "68571c4c-ae4b-44ea-b76a-86336e9fe3ab",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "da321f97-5080-4bd0-966c-a000c7dfb288": {
      "main": [
        [
          {
            "node": "4219c653-f1cc-42eb-a57f-e1964bfc4540",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "08ca1a40-709c-4d86-b4f3-7d78ead1af58": {
      "main": [
        [
          {
            "node": "aff6dd98-6667-4da5-8b6d-732551e639b9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "851f3fc3-1b22-482d-a2f8-f692dd753f6f": {
      "main": [
        [
          {
            "node": "7cbfd32c-7e8c-415e-a942-1e16596c06aa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c3bafdc2-d550-4e6c-9fd0-a037daeacae4": {
      "ai_outputParser": [
        [
          {
            "node": "9363d3d6-ef9a-4bc5-9418-8f0887549e20",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "78500e8d-4d77-4b7a-8927-df8d1a90a86c": {
      "main": [
        [
          {
            "node": "76b372f9-ded9-4004-979f-8792ffca7396",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2c5385cf-31b7-4ddb-aae2-0a836685caa7": {
      "main": [
        [
          {
            "node": "94a4e219-e3b9-48e0-a74a-212c2a2d65cc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ea4b6668-03b9-44a5-9c73-2c94fa5d366f": {
      "main": [
        [
          {
            "node": "b1811460-de61-4096-88d6-32db3f9d39a3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "abb9a9f3-4ea6-4615-8c95-6bc748541c64": {
      "main": [
        [
          {
            "node": "ffe45096-6a0f-4455-a634-2c4d85c3adfc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1ab3d4d9-0a3b-4a83-929f-d35e71c3c6e0": {
      "main": [
        [
          {
            "node": "788fd78c-32f9-4bd2-98fa-c1679e64f3d5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "99281da0-7453-4c6a-847c-2bb1042a41b8": {
      "ai_outputParser": [
        [
          {
            "node": "aff6dd98-6667-4da5-8b6d-732551e639b9",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "37b96d9a-a388-42de-92a4-fe67328f5df3": {
      "main": [
        [
          {
            "node": "26a54e6b-fb02-4605-afee-70bb04aea5f4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "844a4693-4548-48e0-8e6f-729dfa250234": {
      "main": [
        [
          {
            "node": "3552fa2c-5e24-4798-98db-0ff6bf643d9d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e355e2a4-94d9-407d-88d3-b269aad22ffa": {
      "main": [
        [
          {
            "node": "aff6dd98-6667-4da5-8b6d-732551e639b9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9111812d-361d-40d6-9a62-284078a317ee": {
      "main": [
        [
          {
            "node": "844a4693-4548-48e0-8e6f-729dfa250234",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9d234743-ee8c-4f27-ac26-10b093ced6da": {
      "main": [
        [
          {
            "node": "2c5385cf-31b7-4ddb-aae2-0a836685caa7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b4de412-a17e-4ba8-8edb-6d86a5229b2d": {
      "main": [
        [
          {
            "node": "9363d3d6-ef9a-4bc5-9418-8f0887549e20",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b8af975a-fbc0-4b55-ba08-2c0ac8fffbfc": {
      "main": [
        [
          {
            "node": "92c28c4f-89a9-4525-a92a-b82d9dbd54e3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "68571c4c-ae4b-44ea-b76a-86336e9fe3ab": {
      "main": [
        [
          {
            "node": "9111812d-361d-40d6-9a62-284078a317ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4219c653-f1cc-42eb-a57f-e1964bfc4540": {
      "main": [
        [
          {
            "node": "9d234743-ee8c-4f27-ac26-10b093ced6da",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ffe45096-6a0f-4455-a634-2c4d85c3adfc": {
      "main": [
        [
          {
            "node": "87011dbc-b82b-4bf6-8cc7-c5fa84463013",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "788fd78c-32f9-4bd2-98fa-c1679e64f3d5": {
      "main": [
        [
          {
            "node": "4bd71e90-8f3c-4520-a3cd-e68a32d308df",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7dcf5976-3db1-4ef7-b44e-0b6f3aa64b28": {
      "main": [
        [
          {
            "node": "be670590-b4c2-40c6-945f-446de81bedbe",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "08ca1a40-709c-4d86-b4f3-7d78ead1af58",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "76b372f9-ded9-4004-979f-8792ffca7396": {
      "main": [
        [
          {
            "node": "48ddbcb6-2f40-4cdd-acf2-1c037c835c0e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7cbfd32c-7e8c-415e-a942-1e16596c06aa": {
      "main": [
        [
          {
            "node": "061aed50-8abb-4e19-94d9-584431620442",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "87011dbc-b82b-4bf6-8cc7-c5fa84463013": {
      "main": [
        [
          {
            "node": "e7a9304a-8de8-4268-bc94-33fce6e4a6b1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "03360e1e-e677-4869-b198-e4693a59cbc2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b1811460-de61-4096-88d6-32db3f9d39a3": {
      "main": [
        [
          {
            "node": "7dcf5976-3db1-4ef7-b44e-0b6f3aa64b28",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4bd71e90-8f3c-4520-a3cd-e68a32d308df": {
      "main": [
        [
          {
            "node": "a54dad12-eb4c-4ec9-8324-b22d47f42938",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "da321f97-5080-4bd0-966c-a000c7dfb288",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "16bd1622-e025-420f-9d16-10a17231ac76": {
      "main": [
        [
          {
            "node": "9363d3d6-ef9a-4bc5-9418-8f0887549e20",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aff6dd98-6667-4da5-8b6d-732551e639b9": {
      "main": [
        [
          {
            "node": "ea4b6668-03b9-44a5-9c73-2c94fa5d366f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "48ddbcb6-2f40-4cdd-acf2-1c037c835c0e": {
      "main": [
        [
          {
            "node": "1ab3d4d9-0a3b-4a83-929f-d35e71c3c6e0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "26a54e6b-fb02-4605-afee-70bb04aea5f4": {
      "main": [
        [
          {
            "node": "b8af975a-fbc0-4b55-ba08-2c0ac8fffbfc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c0311862-d85a-4708-bc66-05f47985d107": {
      "main": [
        [
          {
            "node": "e355e2a4-94d9-407d-88d3-b269aad22ffa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "92c28c4f-89a9-4525-a92a-b82d9dbd54e3": {
      "main": [
        [
          {
            "node": "abb9a9f3-4ea6-4615-8c95-6bc748541c64",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "be670590-b4c2-40c6-945f-446de81bedbe": {
      "main": [
        [
          {
            "node": "68571c4c-ae4b-44ea-b76a-86336e9fe3ab",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e7a9304a-8de8-4268-bc94-33fce6e4a6b1": {
      "main": [
        [
          {
            "node": "4219c653-f1cc-42eb-a57f-e1964bfc4540",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9363d3d6-ef9a-4bc5-9418-8f0887549e20": {
      "main": [
        [
          {
            "node": "851f3fc3-1b22-482d-a2f8-f692dd753f6f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 内容创作, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量72
分类2
节点类型15
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
gotoHuman

gotoHuman

@gotohuman

Approve critical actions in gotoHuman’s customizable review interface and edit AI outputs manually or by looping back to your workflow. Ensure AI-generated content is on-brand, messages to customers are accurate, and high-stakes decisions are made by humans.

外部链接
在 n8n.io 查看

分享此工作流

分类

分类: 34