{
  "workflow": {
    "id": 7307,
    "name": "Generate and quality control images with DALL-E 2 and human review loop",
    "views": 577,
    "recentViews": 0,
    "totalViews": 577,
    "createdAt": "2025-08-12T20:57:10.600Z",
    "description": "This n8n workflow automates the process of generating AI images using OpenAI's DALL-E 2 model with built-in human review and quality control. The workflow creates an image based on a predefined prompt, sends it for human review, and if the image is rejected, automatically generates a new version with an improved prompt. This is perfect for content creators, marketers, or anyone who needs high-quality AI-generated images with human oversight to ensure they meet specific standards.\n\n### Key Features:\n- Automated image generation using DALL-E 2\n- Human-in-the-loop review process\n- Automatic regeneration if images are rejected\n- Customizable prompts and review criteria\n- Quality assurance workflow\n\n## Step-by-Step Implementation Guide\n\n### Prerequisites\nBefore setting up this workflow, you'll need:\n\n1. **n8n instance** (cloud or self-hosted)\n2. **OpenAI API account** with DALL-E access\n3. **GotoHuman account** for review management\n\n### Step 1: Set Up OpenAI API Credentials\n\n1. Go to [OpenAI's website](https://platform.openai.com/api-keys)\n2. Create an account or sign in\n3. Navigate to \"API Keys\" in your dashboard\n4. Click \"Create new secret key\"\n5. Copy the API key and save it securely\n6. In n8n, go to **Credentials** → **Add Credential** → **OpenAI API**\n7. Paste your API key and save as \"OpenAI account\"\n\n### Step 2: Set Up GotoHuman Credentials\n\n1. Visit [GotoHuman](https://gotohuman.com/) and create an account\n2. Navigate to your API settings/dashboard\n3. Generate an API key\n4. In n8n, go to **Credentials** → **Add Credential** → **GotoHuman API**\n5. Enter your API credentials and save as \"gotoHuman account\"\n\n### Step 3: Configure the Review Template\n\n1. In your GotoHuman dashboard, create a new review template with ID: `3473LaRDbdf03sd6uzYG`\n2. Set up the template with:\n   - **Image field**: For displaying the generated image\n   - **Prompt field**: For showing the original prompt\n   - **Review options**: Approve/Reject buttons\n3. Configure reviewers and notification settings\n\n### Step 4: Import and Configure the Workflow\n\n1. Copy the provided workflow JSON\n2. In n8n, click **Import from File** or **Import from Clipboard**\n3. Paste the workflow JSON\n4. The workflow will automatically create the following nodes:\n\n#### Node Configuration Details:\n\n##### Start Workflow (Manual Trigger)\n- No configuration needed\n- Used to manually start the workflow\n\n##### Set Image Prompt\n- **Prompt**: \"Make an image of an attractive person standing in new york city\"\n- **Name**: \"woman-nyc\"\n- *Customize these values for your specific use case*\n\n##### Loop Over Items1 (Split in Batches)\n- Processes items in batches\n- No additional configuration needed\n\n##### Initial Image Generation (OpenAI)\n- **Resource**: Image\n- **Model**: DALL-E 2\n- **Prompt**: Uses the prompt from \"Set Image Prompt\"\n- **Credentials**: Select your \"OpenAI account\"\n\n##### Initial Review (GotoHuman)\n- **Review Template ID**: 3473LaRDbdf03sd6uzYG\n- **Fields**: Maps image URL and prompt to review form\n- **Credentials**: Select your \"gotoHuman account\"\n\n##### If Rejected (Conditional Logic)\n- Checks if review response equals \"rejected\"\n- Routes to regeneration if rejected\n\n##### Second Image Generation (OpenAI)\n- Same configuration as initial generation\n- Uses updated prompt from review feedback\n\n##### Second Review (GotoHuman)\n- Same configuration as initial review\n- Final quality check\n\n### Step 5: Customize for Your Use Case\n\n1. **Update Image Prompts**: Modify the \"Set Image Prompt\" node with your specific requirements\n2. **Adjust Review Criteria**: Update your GotoHuman template with specific quality guidelines\n3. **Configure Notifications**: Set up email or Slack notifications in GotoHuman for reviewers\n\n### Step 6: Test the Workflow\n\n1. Click **Execute Workflow** on the manual trigger\n2. Monitor the execution flow\n3. Check that images are generated and sent for review\n4. Verify the conditional logic works when images are rejected\n5. Confirm final approved images are properly handled\n\n### Step 7: Production Deployment\n\n1. Set up proper error handling and logging\n2. Configure webhooks if you need external triggers\n3. Set up monitoring and alerts for failed executions\n4. Document your specific prompt guidelines for reviewers\n\n## Workflow Flow Summary\n\n1. **Start** → Manual trigger initiates the workflow\n2. **Set Prompt** → Define the image generation parameters\n3. **Generate Image** → DALL-E 2 creates the initial image\n4. **Human Review** → GotoHuman presents image for approval\n5. **Quality Check** → If rejected, generate new image with improved prompt\n6. **Final Review** → Second human review ensures quality standards\n7. **Complete** → Approved images are ready for use\n\n## Troubleshooting Tips\n\n- **API Rate Limits**: Ensure your OpenAI account has sufficient credits\n- **Review Template Issues**: Verify the template ID matches exactly\n- **Image URLs**: Check that image URLs are accessible for review\n- **Webhook Failures**: Ensure GotoHuman webhooks are properly configured\n\n---\n\n## Contact Information\n\n**Robert A Ynteractive**\n\nFor support, customization, or questions about this workflow:\n\n- 📧 Email: rbreen@ynteractive.com\n- 🌐 Website: https://ynteractive.com/\n- 💼 LinkedIn: https://www.linkedin.com/in/robert-breen-29429625/\n\n*Need help implementing this workflow or want custom automation solutions? Get in touch for professional n8n consulting and workflow development services.*",
    "workflow": {
      "meta": {
        "instanceId": "ad0113c344ee237399e44e9f11798b05baeb83a6196d514a9ae9d2ad71c3b5c9",
        "templateCredsSetupCompleted": true
      },
      "nodes": [
        {
          "id": "7b815687-00ea-4dc8-a97c-503ba6e90361",
          "name": "Start Workflow",
          "type": "n8n-nodes-base.manualTrigger",
          "position": [
            240,
            4016
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "27c7bcf8-92f6-4e9e-8341-392b41e45728",
          "name": "Set Image Prompt",
          "type": "n8n-nodes-base.set",
          "position": [
            416,
            4016
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "5f36bc2b-9acb-4159-b9c3-98a6f9650787",
                  "name": "Prompt",
                  "type": "string",
                  "value": "Make an image of an attractive person standing in new york city"
                },
                {
                  "id": "e5823995-d822-4f59-b580-c9efaabc465c",
                  "name": "Name",
                  "type": "string",
                  "value": "woman-nyc"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "dca87162-622b-4c42-8642-d60501673a79",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -208,
            3088
          ],
          "parameters": {
            "width": 1600,
            "height": 100,
            "content": "**Need more help?**  \nWebsite: https://ynteractive.com  \nEmail: robert@ynteractive.com"
          },
          "typeVersion": 1
        },
        {
          "id": "899e1ec5-b857-4863-a8d5-a07b8065df8d",
          "name": "Loop Over Items1",
          "type": "n8n-nodes-base.splitInBatches",
          "position": [
            496,
            4256
          ],
          "parameters": {
            "options": {
              "reset": false
            }
          },
          "typeVersion": 3
        },
        {
          "id": "27472c1e-6c24-491a-b759-c6d544fbdd6c",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -208,
            3232
          ],
          "parameters": {
            "color": 3,
            "width": 1072,
            "height": 1480,
            "content": "## Step-by-Step Implementation Guide\n\n### Prerequisites\nBefore setting up this workflow, you'll need:\n\n1. **n8n instance** (cloud or self-hosted)\n2. **OpenAI API account** with DALL-E access\n3. **GotoHuman account** for review management\n\n### Step 1: Set Up OpenAI API Credentials\n\n1. Go to [OpenAI's website](https://platform.openai.com/api-keys)\n2. Create an account or sign in\n3. Navigate to \"API Keys\" in your dashboard\n4. Click \"Create new secret key\"\n5. Copy the API key and save it securely\n6. In n8n, go to **Credentials** → **Add Credential** → **OpenAI API**\n7. Paste your API key and save as \"OpenAI account\"\n\n### Step 2: Set Up GotoHuman Credentials\n\n1. Visit [GotoHuman](https://gotohuman.com/) and create an account\n2. Navigate to your API settings/dashboard\n3. Generate an API key\n4. In n8n, go to **Credentials** → **Add Credential** → **GotoHuman API**\n5. Enter your API credentials and save as \"gotoHuman account\"\n\n### Step 3: Configure the Review Template\n\n1. In your GotoHuman dashboard, create a new review template with ID: `3473LaRDbdf03sd6uzYG`\n2. Set up the template with:\n   - **Image field**: For displaying the generated image\n   - **Prompt field**: For showing the original prompt\n   - **Review options**: Approve/Reject buttons\n3. Configure reviewers and notification settings\n\n### Step 4: Import and Configure the Workflow\n\n1. Copy the provided workflow JSON\n2. In n8n, click **Import from File** or **Import from Clipboard**\n3. Paste the workflow JSON\n4. The workflow will automatically create the following nodes:\n\n#### Node Configuration Details:\n\n##### Start Workflow (Manual Trigger)\n- No configuration needed\n- Used to manually start the workflow\n\n##### Set Image Prompt\n- **Prompt**: \"Make an image of an attractive person standing in new york city\"\n- **Name**: \"woman-nyc\"\n- *Customize these values for your specific use case*\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "dd0abc01-e2a4-4892-9b76-547b0573d6c8",
          "name": "Initial Review",
          "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
          "position": [
            704,
            4576
          ],
          "webhookId": "915e31f2-6f70-4e73-af20-2b3423a772c6",
          "parameters": {
            "fields": {
              "value": {
                "Image": "={{\n  JSON.stringify([\n    {\n      url: $json.url,\n      label: 'Generated Image'\n    }\n  ])\n}}\n",
                "Prompt": "={{ $('Set Image Prompt').item.json.Prompt }}"
              },
              "schema": [
                {
                  "id": "Image",
                  "type": "array",
                  "display": true,
                  "required": false,
                  "displayName": "Image (imageGrid)",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Prompt",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Prompt (text)",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "additionalFields": {},
            "reviewTemplateID": {
              "__rl": true,
              "mode": "list",
              "value": "3473LaRDbdf03sd6uzYG",
              "cachedResultName": "Image Review (3473LaRDbdf03sd6uzYG)"
            }
          },
          "credentials": {
            "gotoHumanApi": {
              "id": "credential-id",
              "name": "gotoHumanApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "520b4b3c-0ddc-4349-8af9-66103ace3701",
          "name": "Initial Image Generation",
          "type": "@n8n/n8n-nodes-langchain.openAi",
          "position": [
            624,
            4384
          ],
          "parameters": {
            "model": "dall-e-2",
            "prompt": "={{ $json.Prompt }}",
            "options": {
              "returnImageUrls": true
            },
            "resource": "image"
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.8
        },
        {
          "id": "8ef0f626-05d2-4867-be56-b3b2ea045b01",
          "name": "Second Image Generation",
          "type": "@n8n/n8n-nodes-langchain.openAi",
          "position": [
            1056,
            4464
          ],
          "parameters": {
            "model": "dall-e-2",
            "prompt": "={{ $('Initial Review').item.json.responseValues.Prompt.value }}",
            "options": {
              "returnImageUrls": true
            },
            "resource": "image"
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.8
        },
        {
          "id": "2761ec7f-7eea-455a-9fdb-edc36028a9d8",
          "name": "Second Review",
          "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
          "position": [
            1248,
            4480
          ],
          "webhookId": "915e31f2-6f70-4e73-af20-2b3423a772c6",
          "parameters": {
            "fields": {
              "value": {
                "Image": "={{\n  JSON.stringify([\n    {\n      url: $json.url,\n      label: 'Generated Image'\n    }\n  ])\n}}\n",
                "Prompt": "={{ $('Set Image Prompt').item.json.Prompt }}"
              },
              "schema": [
                {
                  "id": "Image",
                  "type": "array",
                  "display": true,
                  "required": false,
                  "displayName": "Image (imageGrid)",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Prompt",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Prompt (text)",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "additionalFields": {},
            "reviewTemplateID": {
              "__rl": true,
              "mode": "list",
              "value": "3473LaRDbdf03sd6uzYG",
              "cachedResultName": "Image Review (3473LaRDbdf03sd6uzYG)"
            }
          },
          "credentials": {
            "gotoHumanApi": {
              "id": "credential-id",
              "name": "gotoHumanApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "f2860033-4ce8-4ca2-8a96-b2040ad0ed3d",
          "name": "If rejected",
          "type": "n8n-nodes-base.if",
          "position": [
            928,
            4240
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "159a5db4-20d3-4c84-86bb-a405de6d9ab4",
                  "operator": {
                    "name": "filter.operator.equals",
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.response }}",
                  "rightValue": "rejected"
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "2220b8db-85df-4ec4-a1e5-50d9e20ca25b",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            896,
            3232
          ],
          "parameters": {
            "color": 5,
            "width": 496,
            "height": 1480,
            "content": "##### Loop Over Items1 (Split in Batches)\n- Processes items in batches\n- No additional configuration needed\n\n##### Initial Image Generation (OpenAI)\n- **Resource**: Image\n- **Model**: DALL-E 2\n- **Prompt**: Uses the prompt from \"Set Image Prompt\"\n- **Credentials**: Select your \"OpenAI account\"\n\n##### Initial Review (GotoHuman)\n- **Review Template ID**: 3473LaRDbdf03sd6uzYG\n- **Fields**: Maps image URL and prompt to review form\n- **Credentials**: Select your \"gotoHuman account\"\n\n##### If Rejected (Conditional Logic)\n- Checks if review response equals \"rejected\"\n- Routes to regeneration if rejected\n\n##### Second Image Generation (OpenAI)\n- Same configuration as initial generation\n- Uses updated prompt from review feedback\n\n##### Second Review (GotoHuman)\n- Same configuration as initial review\n- Final quality check\n\n### Step 5: Customize for Your Use Case\n\n1. **Update Image Prompts**: Modify the \"Set Image Prompt\" node with your specific requirements\n2. **Adjust Review Criteria**: Update your GotoHuman template with specific quality guidelines\n3. **Configure Notifications**: Set up email or Slack notifications in GotoHuman for reviewers\n\n### Step 6: Test the Workflow\n\n1. Click **Execute Workflow** on the manual trigger\n2. Monitor the execution flow\n3. Check that images are generated and sent for review\n4. Verify the conditional logic works when images are rejected\n5. Confirm final approved images are properly handled\n"
          },
          "typeVersion": 1
        }
      ],
      "pinData": {},
      "connections": {
        "If rejected": {
          "main": [
            [],
            [
              {
                "node": "Second Image Generation",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Initial Review": {
          "main": [
            [
              {
                "node": "If rejected",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Start Workflow": {
          "main": [
            [
              {
                "node": "Set Image Prompt",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Loop Over Items1": {
          "main": [
            [],
            [
              {
                "node": "Initial Image Generation",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set Image Prompt": {
          "main": [
            [
              {
                "node": "Loop Over Items1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Second Image Generation": {
          "main": [
            [
              {
                "node": "Second Review",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Initial Image Generation": {
          "main": [
            [
              {
                "node": "Initial Review",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 11,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.set": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 3
        },
        "n8n-nodes-base.manualTrigger": {
          "count": 1
        },
        "n8n-nodes-base.splitInBatches": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.openAi": {
          "count": 2
        },
        "@gotohuman/n8n-nodes-gotohuman.gotoHuman": {
          "count": 2
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Robert Breen",
      "username": "rbreen",
      "bio": "Professional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.",
      "verified": true,
      "links": [
        "https://ynteractive.com/"
      ],
      "avatar": "https://gravatar.com/avatar/15bb5ad97bad47ca2079e1fa123a8287000c72c86498c90043f70ec2adab05f3?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 38,
        "icon": "fa:pen",
        "name": "n8n-nodes-base.set",
        "codex": {
          "data": {
            "alias": [
              "Set",
              "JS",
              "JSON",
              "Filter",
              "Transform",
              "Map"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Edit Fields"
        },
        "iconData": {
          "icon": "pen",
          "type": "icon"
        },
        "displayName": "Edit Fields (Set)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 39,
        "icon": "fa:sync",
        "name": "n8n-nodes-base.splitInBatches",
        "codex": {
          "data": {
            "alias": [
              "Loop",
              "Concatenate",
              "Batch",
              "Split",
              "Split In Batches"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"organization\"]",
        "defaults": {
          "name": "Loop Over Items",
          "color": "#007755"
        },
        "iconData": {
          "icon": "sync",
          "type": "icon"
        },
        "displayName": "Loop Over Items (Split in Batches)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 838,
        "icon": "fa:mouse-pointer",
        "name": "n8n-nodes-base.manualTrigger",
        "codex": {
          "data": {
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "When clicking ‘Execute workflow’",
          "color": "#909298"
        },
        "iconData": {
          "icon": "mouse-pointer",
          "type": "icon"
        },
        "displayName": "Manual Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1250,
        "icon": "file:openAi.svg",
        "name": "@n8n/n8n-nodes-langchain.openAi",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "ChatGPT",
              "Sora",
              "DallE",
              "whisper",
              "audio",
              "transcribe",
              "tts",
              "assistant"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Miscellaneous",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "OpenAI"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"
        },
        "displayName": "OpenAI",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 31,
        "name": "Content Creation"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}