This workflow corresponds to n8n.io template #1357 — we link there as the canonical source.
This workflow follows the Editimage → 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 →
{
"nodes": [
{
"name": "On clicking 'execute'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
260,
210
],
"parameters": {},
"typeVersion": 1
},
{
"name": "Fetch new followers",
"type": "n8n-nodes-base.httpRequest",
"position": [
460,
210
],
"parameters": {
"url": "https://api.twitter.com/2/users/{YOUR_USER_ID}/followers?user.fields=profile_image_url&max_results=3",
"options": {},
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"name": "Item Lists",
"type": "n8n-nodes-base.itemLists",
"position": [
660,
210
],
"parameters": {
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"name": "Function",
"type": "n8n-nodes-base.function",
"position": [
1660,
210
],
"parameters": {
"functionCode": "const binary = {};\nfor (let i=0; i < items.length; i++) {\n binary[`data${i}`] = items[i].binary.avatar;\n}\n\nreturn [\n {\n json: {\n numIcons: items.length,\n },\n binary,\n }\n];\n"
},
"typeVersion": 1
},
{
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1910,
110
],
"parameters": {
"mode": "mergeByIndex"
},
"typeVersion": 1
},
{
"name": "Fetching images",
"type": "n8n-nodes-base.httpRequest",
"position": [
860,
210
],
"parameters": {
"url": "={{$json[\"profile_image_url\"].replace('normal','400x400')}}",
"options": {},
"responseFormat": "file",
"dataPropertyName": "avatar"
},
"typeVersion": 1
},
{
"name": "Fetch bg",
"type": "n8n-nodes-base.httpRequest",
"position": [
1660,
-40
],
"parameters": {
"url": "{TEMPLATE_IMAGE_URL}",
"options": {},
"responseFormat": "file",
"dataPropertyName": "bg"
},
"typeVersion": 1
},
{
"name": "Resize",
"type": "n8n-nodes-base.editImage",
"position": [
1060,
210
],
"parameters": {
"width": 200,
"height": 200,
"options": {},
"operation": "resize",
"dataPropertyName": "avatar"
},
"typeVersion": 1
},
{
"name": "Crop",
"type": "n8n-nodes-base.editImage",
"position": [
1260,
210
],
"parameters": {
"options": {
"format": "png"
},
"operation": "multiStep",
"operations": {
"operations": [
{
"width": 200,
"height": 200,
"operation": "create",
"backgroundColor": "#000000ff"
},
{
"color": "#ffffff00",
"operation": "draw",
"primitive": "circle",
"endPositionX": 25,
"endPositionY": 50,
"startPositionX": 100,
"startPositionY": 100
},
{
"operator": "In",
"operation": "composite",
"dataPropertyNameComposite": "avatar"
}
]
},
"dataPropertyName": "avatar"
},
"typeVersion": 1
},
{
"name": "Edit Image",
"type": "n8n-nodes-base.editImage",
"position": [
2110,
110
],
"parameters": {
"options": {},
"operation": "multiStep",
"operations": {
"operations": [
{
"operation": "composite",
"positionX": 1000,
"positionY": 375,
"dataPropertyNameComposite": "data0"
},
{
"operation": "composite",
"positionX": 1100,
"positionY": 375,
"dataPropertyNameComposite": "data1"
},
{
"operation": "composite",
"positionX": 1200,
"positionY": 375,
"dataPropertyNameComposite": "data2"
}
]
},
"dataPropertyName": "bg"
},
"typeVersion": 1
},
{
"name": "Resize1",
"type": "n8n-nodes-base.editImage",
"position": [
1450,
210
],
"parameters": {
"width": 75,
"height": 75,
"options": {},
"operation": "resize",
"dataPropertyName": "avatar"
},
"typeVersion": 1
},
{
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
2310,
110
],
"parameters": {
"url": "https://api.twitter.com/1.1/account/update_profile_banner.json",
"options": {
"bodyContentType": "multipart-form-data"
},
"requestMethod": "POST",
"authentication": "oAuth1",
"jsonParameters": true,
"sendBinaryData": true,
"binaryPropertyName": "banner:bg"
},
"credentials": {
"oAuth1Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
}
],
"connections": {
"Crop": {
"main": [
[
{
"node": "Resize1",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Edit Image",
"type": "main",
"index": 0
}
]
]
},
"Resize": {
"main": [
[
{
"node": "Crop",
"type": "main",
"index": 0
}
]
]
},
"Resize1": {
"main": [
[
{
"node": "Function",
"type": "main",
"index": 0
}
]
]
},
"Fetch bg": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Function": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Edit Image": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Item Lists": {
"main": [
[
{
"node": "Fetching images",
"type": "main",
"index": 0
}
]
]
},
"Fetching images": {
"main": [
[
{
"node": "Resize",
"type": "main",
"index": 0
}
]
]
},
"Fetch new followers": {
"main": [
[
{
"node": "Item Lists",
"type": "main",
"index": 0
}
]
]
},
"On clicking 'execute'": {
"main": [
[
{
"node": "Fetch new followers",
"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.
httpHeaderAuthoAuth1Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow updates your Twitter profile banner when you have a new follower.
Source: https://n8n.io/workflows/1357/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n workflow automatically shares content from a Telegram Channel to multiple platforms like WordPress, Facebook, X/Twitter, and LinkedIn. It uses a Switch node to detect the type of content—text
This workflow is designed for content creators, social media managers, digital marketers, and business owners who want to automate their content creation and distribution process across multiple platf
This n8n workflow is designed for Shopify store owners, e-commerce managers, and digital marketers who want to automate their product promotion across multiple platforms. The workflow automatically cr
This n8n workflow is designed for content creators, bloggers, digital marketers, and social media managers who want to fully automate their content distribution pipeline. The workflow creates an end-t
Never let an event go unpromoted. This workflow monitors your Google Calendar, generates branded promotional graphics, and schedules a staggered social media countdown across LinkedIn, Twitter/X, and