AutomationFlowsWeb Scraping › Create Character-consistent Images with Flux Kontext & Post to Social via…

Create Character-consistent Images with Flux Kontext & Post to Social via…

Original n8n title: Create Character-consistent Images with Flux Kontext & Post to Social via Upload Post

ByEduard @eduard on n8n.io

Create, iterate, and share! Transform a single image through multiple scenes while maintaining consistency.

Event trigger★★★★☆ complexity27 nodesHTTP RequestExecute Workflow TriggerGitHubN8N Nodes Upload Post
Web Scraping Trigger: Event Nodes: 27 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #4798 — we link there as the canonical source.

This workflow follows the Execute Workflow Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "AdtCs47Lt1Wtf2Dt",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Upload-Post And FLUX Kontext",
  "tags": [],
  "nodes": [
    {
      "id": "ed7d240f-9181-4f23-9e3a-24e7886c7e31",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -180,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "4656ae65-d58b-4126-ada3-eda97fde5c4e",
      "name": "Is Ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        500,
        400
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "3cf5b451-9ff5-4c2a-864f-9aa7d286871a",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "Ready"
            },
            {
              "id": "a9b6d102-bb38-443f-a204-1c07476cb360",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $runIndex }}",
              "rightValue": 5
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f8dbc367-1052-4548-b3b8-33f6ede4d0ba",
      "name": "Check FLUX status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        340,
        400
      ],
      "parameters": {
        "url": "https://api.bfl.ml/v1/get_result",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "id",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9624cdc6-1f7b-459f-b16a-eab69d23b45c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        320
      ],
      "parameters": {
        "color": 7,
        "width": 862,
        "height": 282,
        "content": "# Image processing part"
      },
      "typeVersion": 1
    },
    {
      "id": "c6393bc7-6b7a-4a25-a524-8a7bd6b2c781",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -380,
        400
      ],
      "parameters": {
        "inputSource": "passthrough"
      },
      "typeVersion": 1.1
    },
    {
      "id": "4f3717a6-2580-4664-8182-efa1c8652589",
      "name": "FLUX Kontext",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        0,
        400
      ],
      "parameters": {
        "url": "https://api.bfl.ml/v1/flux-kontext-pro",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "input_image",
              "value": "={{ $json[$('When Executed by Another Workflow').first().json.binaryin] }}"
            },
            {
              "name": "prompt",
              "value": "={{ $('When Executed by Another Workflow').first().json.prompt }}"
            },
            {
              "name": "prompt_upsampling",
              "value": "={{ false }}"
            },
            {
              "name": "output_format",
              "value": "png"
            },
            {
              "name": " aspect_ratio",
              "value": "1:1"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "2a48ecd4-07bc-4202-abe3-3bc0bfbfed6d",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        420,
        0
      ],
      "parameters": {
        "mode": "combine",
        "options": {
          "includeUnpaired": true
        },
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.1
    },
    {
      "id": "cc5f96a9-ed87-4526-85c2-074dc5c8e166",
      "name": "Wait 2 sec",
      "type": "n8n-nodes-base.wait",
      "position": [
        180,
        400
      ],
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "54cf0d0d-c3a0-4243-b425-ba8cdfaf1063",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        -240
      ],
      "parameters": {
        "width": 380,
        "height": 260,
        "content": "## Define prompts here\nPrepare an array of prompts that will be used one by one on the next steps. Update limit in the `Number of Steps` node if you need more than 5 iterations."
      },
      "typeVersion": 1
    },
    {
      "id": "add02353-b31e-4990-83ad-2d936343ab7f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        60
      ],
      "parameters": {
        "width": 380,
        "height": 220,
        "content": "## Load the initial image"
      },
      "typeVersion": 1
    },
    {
      "id": "8367ef9f-cf00-4987-91ec-09fe3ec6918d",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        -420
      ],
      "parameters": {
        "width": 260,
        "height": 400,
        "content": "## Initial example\n![](https://raw.githubusercontent.com/teds-tech-talks/n8n-community-leaderboard/main/_creators/eduard/mascot.png)"
      },
      "typeVersion": 1
    },
    {
      "id": "c4a52815-ba73-4f9c-8c44-fca40cab6440",
      "name": "Get File from GitHub",
      "type": "n8n-nodes-base.github",
      "position": [
        20,
        120
      ],
      "parameters": {
        "owner": {
          "__rl": true,
          "mode": "name",
          "value": "teds-tech-talks"
        },
        "filePath": "_creators/eduard/mascot.png",
        "resource": "file",
        "operation": "get",
        "repository": {
          "__rl": true,
          "mode": "name",
          "value": "n8n-community-leaderboard"
        },
        "authentication": "oAuth2",
        "asBinaryProperty": false,
        "additionalParameters": {}
      },
      "credentials": {
        "githubOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "bb48cde8-fc79-407e-8daa-4322398d8385",
      "name": "Download Initial Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        220,
        120
      ],
      "parameters": {
        "url": "={{ $json.download_url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file",
              "outputPropertyName": "data0"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ffc484fe-c183-4858-8303-8733596e2afc",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        680,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "4d3dcb8f-c435-40fd-aca6-a37647fc3a10",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $runIndex }}",
              "rightValue": "={{ $json.Steps }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6fbd6310-7596-4460-8a85-3cc0b1253509",
      "name": "Number of Steps",
      "type": "n8n-nodes-base.set",
      "position": [
        220,
        -120
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9e3d00d0-467a-41c8-aaa1-f1d29694737c",
              "name": "Steps",
              "type": "number",
              "value": "={{ Math.min($json.Prompts.length,5) }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "6bacc1b2-7154-428c-ab0f-76f356c59e35",
      "name": "All Prompts",
      "type": "n8n-nodes-base.set",
      "position": [
        20,
        -120
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "64e9c28e-a60a-499b-aa89-177bf952959f",
              "name": "Prompts",
              "type": "array",
              "value": "=[\"Make this animal mascot coming out of the builing with wearing an official business suite. Preserve the exact character features and style\",\"Now make this animal mascot sitting in the terrace mediterranian cafe. Preserve the exact character features and style, but wearing hawaii shorts instead of trouses\",\"Now make this animal mascot standing on the beach with a starfish in it's hands, waring only hawaii shorts. Preserve the exact character features and style.\"]"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "913b8c79-e9ed-4221-853a-2ea6071f8c5a",
      "name": "Run FLUX",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1120,
        -100
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "AdtCs47Lt1Wtf2Dt",
          "cachedResultName": "Upload-Post And FLUX Kontext"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8c7089e9-45ea-4626-9c7d-01dc9df2137e",
      "name": "Current Step",
      "type": "n8n-nodes-base.set",
      "position": [
        880,
        0
      ],
      "parameters": {
        "include": "selected",
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "64e9c28e-a60a-499b-aa89-177bf952959f",
              "name": "prompt",
              "type": "string",
              "value": "={{ $json.Prompts[$runIndex] }}"
            },
            {
              "id": "aee3c455-ced2-4520-a088-18ffaf6db11c",
              "name": "binaryin",
              "type": "string",
              "value": "=data{{ $runIndex }}"
            },
            {
              "id": "61cccca2-7b0c-4ea6-82f3-5dc2a377c3cb",
              "name": "binaryout",
              "type": "string",
              "value": "=data{{ Number($runIndex)+1 }}"
            },
            {
              "id": "0cbe4309-e6f0-4c65-87f6-95bf6609aade",
              "name": "currentstep",
              "type": "number",
              "value": "={{ $runIndex }}"
            }
          ]
        },
        "includeFields": "Prompts, Steps",
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "8eb4790f-ecf9-4136-813a-a87bd1d40edd",
      "name": "Merge3",
      "type": "n8n-nodes-base.merge",
      "position": [
        1320,
        -20
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "49eb0be4-4ebc-48bd-a77d-20fb02779ad1",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -200
      ],
      "parameters": {
        "width": 860,
        "height": 380,
        "content": "## Iterate over prompts\n- On each step a next prompt it taken from the original array\n- Outputs from the previous FLUX Kontext request are moved forward to the subsequent generation"
      },
      "typeVersion": 1
    },
    {
      "id": "361cd8ac-29be-40a9-a5f8-d12656373c96",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        220
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 280,
        "content": "## [Post several images via Upload Post](https://www.upload-post.com/?linkId=lp_144414&sourceId=post-now&tenantId=upload-post-app)\n[Click to create your own account](https://www.upload-post.com/?linkId=lp_144414&sourceId=post-now&tenantId=upload-post-app)"
      },
      "typeVersion": 1
    },
    {
      "id": "af34e5a7-d1cc-446f-a210-5aa96c271640",
      "name": "Upload Post",
      "type": "n8n-nodes-upload-post.uploadPost",
      "position": [
        1120,
        340
      ],
      "parameters": {
        "user": "Ed",
        "title": "Testing n8n uploads with Upload Post community node hotfix and FLUX1. Kontext",
        "photos": "={{ Array.from({length: $json.Steps}, (_, i) => `data${i + 1}`).join(',') }}",
        "platform": [
          "x"
        ]
      },
      "credentials": {
        "uploadPostApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "32836601-6a7d-4e1a-9fc4-74d6f5f78187",
      "name": "Image to Base64",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -200,
        400
      ],
      "parameters": {
        "options": {},
        "operation": "binaryToPropery",
        "destinationKey": "={{ $('When Executed by Another Workflow').first().json.binaryin }}",
        "binaryPropertyName": "={{ $('When Executed by Another Workflow').first().json.binaryin }}"
      },
      "typeVersion": 1
    },
    {
      "id": "d40118c7-0ab6-4276-b733-22419e5521d6",
      "name": "Get Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        680,
        400
      ],
      "parameters": {
        "url": "={{ $json.result.sample }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file",
              "outputPropertyName": "={{ $('When Executed by Another Workflow').first().json.binaryout }}"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e35f7544-b687-4ee5-a59f-3f98d26b1d12",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -620
      ],
      "parameters": {
        "width": 260,
        "height": 400,
        "content": "## Step 1\n![](https://pbs.twimg.com/media/Gs7SwU_XYAASZBn?format=jpg&name=medium)"
      },
      "typeVersion": 1
    },
    {
      "id": "230498f5-69f5-4282-bb25-854720b1d536",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        -620
      ],
      "parameters": {
        "width": 260,
        "height": 400,
        "content": "## Step 2\n![](https://pbs.twimg.com/media/Gs7SwovWQAAncQT?format=jpg&name=medium)"
      },
      "typeVersion": 1
    },
    {
      "id": "425c3696-4532-401e-8131-78553358c8c8",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1220,
        -620
      ],
      "parameters": {
        "width": 260,
        "height": 400,
        "content": "## Step 3\n![](https://pbs.twimg.com/media/Gs7SxHsXYAAkhPF?format=jpg&name=medium)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1",
    "saveDataSuccessExecution": "all"
  },
  "versionId": "94bff334-aee9-4139-acb9-966013fca4ea",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Current Step",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Upload Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge3": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run FLUX": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Ready?": {
      "main": [
        [
          {
            "node": "Get Image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 2 sec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 2 sec": {
      "main": [
        [
          {
            "node": "Check FLUX status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "All Prompts": {
      "main": [
        [
          {
            "node": "Number of Steps",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Current Step": {
      "main": [
        [
          {
            "node": "Run FLUX",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge3",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "FLUX Kontext": {
      "main": [
        [
          {
            "node": "Wait 2 sec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image to Base64": {
      "main": [
        [
          {
            "node": "FLUX Kontext",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Number of Steps": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check FLUX status": {
      "main": [
        [
          {
            "node": "Is Ready?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get File from GitHub": {
      "main": [
        [
          {
            "node": "Download Initial Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Initial Image": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Image to Base64",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Get File from GitHub",
            "type": "main",
            "index": 0
          },
          {
            "node": "All Prompts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

Create, iterate, and share! Transform a single image through multiple scenes while maintaining consistency.

Source: https://n8n.io/workflows/4798/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

Remixed Backup your workflows to GitHub from Solomon's work. Check out his templates.

HTTP Request, GitHub, Execute Workflow Trigger +1
Web Scraping

Remixed Backup your workflows to GitHub from Solomon's work. Check out his templates.

Execute Workflow Trigger, HTTP Request, GitHub
Web Scraping

Backup Credentials to GitHub. Uses httpRequest, github, executeCommand, executeWorkflowTrigger. Event-driven trigger; 25 nodes.

HTTP Request, GitHub, Execute Command +1
Web Scraping

Based on Jonathan's work. Check out his templates.

HTTP Request, GitHub, Execute Command +1
Web Scraping

Based on Jonathan & Solomon work.

n8n, HTTP Request, GitHub +1