Générer des vidéos promotionnelles de produits IA avec GPT-4o, Fal.ai et une supervision humaine

Avancé

Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 72 nœuds.Utilise principalement des nœuds comme If, Set, Code, Wait, Switch. Générer des vidéos promotionnelles de produits IA avec GPT-4o, Fal.ai et une supervision humaine

Prérequis
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "5ec543f78db8e552b46818580d4137dda2f58675a1a45426c44ae175fc35ac62"
  },
  "nodes": [
    {
      "id": "0b4de412-a17e-4ba8-8edb-6d86a5229b2d",
      "name": "Déclencheur programmé",
      "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": "Agent IA : Générer des idées de sujets",
      "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": "IA : Générer des slogans",
      "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": "Réflexion",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2048,
        592
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "370b2f6e-3de9-43b3-a375-075d8dc758fd",
      "name": "Réflexion1",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2448,
        1376
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c3bafdc2-d550-4e6c-9fd0-a037daeacae4",
      "name": "Extraire 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": "Extraire 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": "Vérifier statut1",
      "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": "Attente1",
      "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": "Récupérer résultat1",
      "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": "Génération d'image Fal.ai",
      "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": "Passage humain - Contenu",
      "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": "Relancer entrée",
      "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": "Prêt ?",
      "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": "Invite slogan",
      "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": "Upload Cloudinary",
      "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": "Tâche : Publication",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1872,
        3472
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6158d06b-5b81-432f-a0cd-e16b740b227c",
      "name": "Note adhésive",
      "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": "Note adhésive1",
      "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": "Note adhésive2",
      "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": "Note adhésive3",
      "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": "Note adhésive4",
      "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": "Note adhésive5",
      "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": "Note adhésive6",
      "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": "Note adhésive7",
      "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": "Vérifier statut",
      "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": "Attente",
      "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": "Récupérer résultat",
      "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": "Prêt ?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": "Upload Cloudinary1",
      "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": "Note adhésive8",
      "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": "Passage humain - Vidéo",
      "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": "Relancer vidéo",
      "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": "Note adhésive9",
      "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": "Passage humain - 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": "Note adhésive10",
      "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": "Déclencheur manuel distant",
      "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": "Génération vidéo Fal.ai",
      "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": "Définir invite image initiale",
      "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": "Définir invite vidéo initiale",
      "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": "Définir requête image",
      "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": "Définir requête vidéo",
      "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": "Relancer 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": "Définir options Cloudinary",
      "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": "URL image avec 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": "Données à envoyer3",
      "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": "URL clip avec 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": "Données à envoyer4",
      "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": "Passage humain - Sujets",
      "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": "Note adhésive12",
      "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": "Note adhésive13",
      "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": "Note adhésive14",
      "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": "Note adhésive15",
      "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": "Note adhésive16",
      "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": "Note adhésive22",
      "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": "Récupérer exemples approuvés",
      "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": "Données à envoyer",
      "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": "Données à envoyer2",
      "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": "Approuvé ?",
      "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": "Approuver ou réessayer ?",
      "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": "Approuver ou réessayer ?",
      "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": "Approuver ou réessayer ?",
      "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": "Note adhésive25",
      "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": "Note adhésive21",
      "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": "Note adhésive23",
      "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": "Note adhésive24",
      "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": "Note adhésive20",
      "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": "Note adhésive19",
      "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": "Note adhésive17",
      "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": "Note adhésive18",
      "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": "4bd71e90-8f3c-4520-a3cd-e68a32d308df",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "788fd78c-32f9-4bd2-98fa-c1679e64f3d5": {
      "main": [
        [
          {
            "node": "4bd71e90-8f3c-4520-a3cd-e68a32d308df",
            "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
          }
        ]
      ]
    },
    "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
          }
        ]
      ]
    },
    "b1811460-de61-4096-88d6-32db3f9d39a3": {
      "main": [
        [
          {
            "node": "4bd71e90-8f3c-4520-a3cd-e68a32d308df",
            "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
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Création de contenu, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Version professionnelle de l'automatisation de blog WordPress (recherche approfondie) v2.1 sur le marché
Automatisation de la création de blog optimisé pour le SEO avec GPT-4o, Perplexity AI et support multilingue
If
Set
Xml
+
If
Set
Xml
125 NœudsDaniel Ng
Création de contenu
Génération de masse de contenu SEO et création de brouillons Webflow avec images IA (modèle)
Génération de contenu SEO en masse avec GPT, images Gemini et brouillons Webflow
If
Set
Code
+
If
Set
Code
54 NœudsDahiana
Création de contenu
Processus de vente B2B complet : Génération de prospects Apollo, externalisation avec Mailgun et gestion des réponses IA
Processus de vente B2B complet : Génération de prospects Apollo, prospection Mailgun et gestion des réponses AI
If
Set
Code
+
If
Set
Code
116 NœudsPaul
Création de contenu
Analyse intelligente quotidienne des groupes WhatsApp : Analyse GPT-4.1 et transcription des messages vocaux
Analyse intelligente des groupes WhatsApp quotidiens : analyse GPT-4.1 et transcription des messages vocaux
If
Set
Code
+
If
Set
Code
52 NœudsDaniel Lianes
Divers
contenugénérateur v3
AI驱动blogautomatisation:utilisationGPT-4génération并publicationSEOarticle至WordPressetTwitter
If
Set
Code
+
If
Set
Code
144 NœudsJay Emp0
Création de contenu
Générer du contenu SEO à partir d'une feuille de calcul de tendances vers un stockage (SharePoint/Drive/Dropbox)
Génération automatique de contenu SEO à partir des tendances avec GPT-4o, FAL AI et prise en charge de plusieurs stockages
If
Set
Code
+
If
Set
Code
47 Nœudsplemeo
Création de contenu
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds72
Catégorie2
Types de nœuds15
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
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.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34