Question regarding inserting my logo into n8n workflow

hi everyone im building workflow which will automate my company social media post generation but i got struck on logo issues when im giving promit to make an logo the AI giving different logo everytime i need to resolve it issue by giving logo image that need to placed in image that generated by AI without changing the colour and style but i dont know which node to use i was keep on trying but no results i went through tons of youtube video if anyone knows please tell me how to do that and i will attach my workflow Json code.

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

name	"My workflow"
nodes	
0	
parameters	
formTitle	"Social Media Auto Publish Agent"
formFields	
values	
0	
fieldLabel	"Choose your input method"
fieldType	"dropdown"
fieldOptions	
values	[…]
requiredField	true
options	{}
type	"n8n-nodes-base.formTrigger"
typeVersion	2.2
position	
0	-2960
1	960
id	"1252db61-decc-486c-84c8-fb5142144fd1"
name	"On form submission1"
webhookId	"12422e76-1049-46cc-92ba-8cf1fa17edc5"
1	
parameters	
conditions	
options	
caseSensitive	true
leftValue	""
typeValidation	"strict"
version	2
conditions	
0	
id	"ca5c5d07-899c-4019-a357-0222d246f093"
leftValue	"={{ $json['Choose your input method'] }}"
rightValue	"Image"
operator	
type	"string"
operation	"equals"
combinator	"and"
options	{}
type	"n8n-nodes-base.if"
typeVersion	2.2
position	
0	-2432
1	960
id	"23cceafa-38b5-4770-bfbd-00f6373ddb6f"
name	"If1"
2	
parameters	
formFields	
values	
0	
fieldLabel	"What this post is about ?"
placeholder	"e.g Explain about your post ideas"
requiredField	true
1	
fieldLabel	"Input Image"
fieldType	"file"
multipleFiles	false
acceptFileTypes	".jpg, .png"
requiredField	true
2	
fieldLabel	"Image link"
placeholder	"Paste Image address"
requiredField	true
3	
fieldLabel	"Logo Link"
placeholder	"Paste an logo url"
options	{}
type	"n8n-nodes-base.form"
typeVersion	1
position	
0	-1792
1	656
id	"47b617a3-89a3-43de-b22f-3f30bfe169b9"
name	"Form1"
webhookId	"cedf647f-a15c-4957-a11b-832ff2334dd6"
3	
parameters	
method	"POST"
url	"https://openrouter.ai/api/v1/chat/completions"
authentication	"predefinedCredentialType"
nodeCredentialType	"openRouterApi"
sendBody	true
specifyBody	"json"
jsonBody	'={\n  "model": "google/gemini-2.5-flash-image-preview",\n  "messages": [\n    {\n      "role": "user",\n      "content": [\n        {\n          "type": "text",\n          "text": "This is my logo describe it"\n        },\n        {\n          "type": "image_url",\n          "image_url": {\n            "url": "{{ $json.data }}"\n          }\n        }\n      ]\n    }\n  ]\n}\n\n'
options	{}
type	"n8n-nodes-base.httpRequest"
typeVersion	4.3
position	
0	-960
1	656
id	"139474a3-7964-4ed1-84fd-fc42d3406a64"
name	"Image Analyser"
credentials	
openRouterApi	
id	"tnY0BoOuShzsUzmQ"
name	"OpenRouter account 2"
4	
parameters	
promptType	"define"
text	"=Inputs:\nImage description: {{ $json.choices[0].message.content }}\n{{ $json.choices[0].message.content }}\npost description :{{ $('Form1').item.json['What this post is about ?'] }}\n\n"
hasOutputParser	true
options	
systemMessage	'=You are a professional social media automation agent specializing in transforming generic social media templates into branded company posts for Devvloop (devvloop.co.uk).\n\nWHAT YOU MUST DO:\n\nRemove all existing company names, logos, watermarks, URLs, or contact details from the template.\n\nInsert the Devvloop logo in the top-left corner of the design.\nlogo image description : This logo spells out "devvloop" in a stylized, sans-serif font. The first part, "devvl", is in white. The "oo" part is represented by an infinity symbol (∞) that transitions from pink on the left to purple and then dark purple on the right, effectively forming the "loop" shape. The overall design is clean and modern.and ending "p" is in white\n\n\nAt the bottom area, add this contact information clearly and neatly:\n\nwww.devvloop.co.uk (with globe symbol)\n\n+44 07423 134945 (with telephone symbol)\n\nKeep the design modern, clean, and aligned with professional tech/automation branding.\n\nMaintain the layout and colors of the original template unless the user text requires a stronger thematic alignment.\n\nDo not distort the logo. Maintain proper proportions and clarity.\n\nEnsure the output looks like an original branded post, not an edited template. '
type	"@n8n/n8n-nodes-langchain.agent"
typeVersion	3
position	
0	-592
1	752
id	"2dbc5243-9822-4226-bc0a-bb9d7696b20d"
name	"AI Agent"
5	
parameters	
options	{}
type	"@n8n/n8n-nodes-langchain.lmChatOpenRouter"
typeVersion	1
position	
0	-592
1	1008
id	"5325eaad-7035-4f75-a7b3-1942a8543dfc"
name	"OpenRouter Chat Model1"
credentials	
openRouterApi	
id	"tnY0BoOuShzsUzmQ"
name	"OpenRouter account 2"
6	
parameters	
jsonSchemaExample	`{\n\t"design_style": "Diagonal Split — carves the canvas with an energetic diagonal; image on right, text on left; bold geometric accents",\n  "full_prompt": "Create a polished branded social media image for DevvLoop Technologies. Base the layout on a DIAGONAL SPLIT composition: left panel for headline and value copy, right panel for the template visual. Use the uploaded template as background but REMOVE any existing logos, trademarks, URLs or contact info via content-aware fill. Place the provided DevvLoop logo (logo_url) in the top-left with a 4% margin; width = 14% of canvas width, maintain aspect ratio; if logo has white box remove it or place inside a subtle rounded white badge (8px padding). Headline (MAX 2 lines) should appear on the left panel in ALL CAPS using a bold sans-serif (Inter/Roboto/Arial), weight 700, font-size ~10% of canvas height, color = white or brand_color if it meets contrast. Place subheading below the headline in medium weight (500), font-size ~5.5% canvas height, max 3 short lines. Add the promotional offer as a small badge or pill under the subheading (text: 'Free website & automation audit (limited slots)') using weight 600, font-size ~4.5% canvas height. At the bottom-center (or bottom-right if composition requires), add contact line EXACTLY: \\"[email protected]  |  +44 07423 134945\\" in weight 500, font-size ~6.5% canvas height; color = brand_color if provided and contrast >= 4.5:1, else #111827; add a 40% opaque backing rectangle with 6% vertical padding to ensure legibility on complex backgrounds. Keep visual rhythm with diagonal lines and subtle drop shadows; preserve template illustration but desaturate competing colors slightly to emphasize brand. If removing competitor marks leaves artifacts, use 6–12px feathered clone/patch to blend. Ensure safe margins (6% canvas) and mobile legibility. Export two PNGs: final_square.png (1200x1200) and final_linkedin.png (1200x630), optimized and named accordingly."\n  \n}`
type	"@n8n/n8n-nodes-langchain.outputParserStructured"
typeVersion	1.3
position	
0	-448
1	1008
id	"5f71691f-ac55-4ac6-a13b-c4c28015a8dc"
name	"Structured Output Parser2"
7	
parameters	
assignments	
assignments	
0	
id	"1625e6d2-b318-45c6-a664-4ba8e5750bff"
name	"data"
value	"=data:image/jpeg;base64,{{ $json.data }}"
type	"string"
options	{}
type	"n8n-nodes-base.set"
typeVersion	3.4
position	
0	-1216
1	656
id	"7a783bf0-701d-4330-8cb6-c19b2027bc7e"
name	"Logo Edit Fields"
8	
parameters	
operation	"binaryToPropery"
binaryPropertyName	"Input_Image"
options	{}
type	"n8n-nodes-base.extractFromFile"
typeVersion	1.1
position	
0	-1472
1	656
id	"554c5688-4723-4d70-8fb5-a8350a76809d"
name	"Image Extract from File"
9	
parameters	
method	"POST"
url	"https://openrouter.ai/api/v1/chat/completions"
authentication	"predefinedCredentialType"
nodeCredentialType	"openRouterApi"
sendBody	true
specifyBody	"json"
jsonBody	`={\n  "model": "google/gemini-3-pro-image-preview",\n  "modalities": [\n    "image"\n  ],\n  "messages": [\n    {\n      "role": "user",\n      "content": [\n        {\n          "type": "text",\n          "text": {{ JSON.stringify($json.output.full_prompt) }}\n        },\n  \n  \n  \n \n        {\n          "type": "image_url",\n          "image_url": {\n            "url": "{{ $('Form1').item.json['Image link'] }}"\n          }\n  \n  \n        }\n      ]\n    }\n  ]\n}`
options	{}
type	"n8n-nodes-base.httpRequest"
typeVersion	4.3
position	
0	-240
1	400
id	"42117989-e436-49c4-a597-9858bb4e8c89"
name	"HTTP Request"
credentials	
openRouterApi	
id	"tnY0BoOuShzsUzmQ"
name	"OpenRouter account 2"
10	
parameters	
assignments	
assignments	
0	
id	"8ca803c6-c580-4d08-9c16-5eb43f17bea2"
name	"data"
value	"={{ $json.choices[0].message.images[0].image_url.url     .replace(/^data:image\\/[^;]+;base64,/, '') }}"
type	"string"
options	{}
type	"n8n-nodes-base.set"
typeVersion	3.4
position	
0	48
1	400
id	"c750e1fe-a42b-491b-b7ca-d1a9d766d688"
name	"Edit Fields"
11	
parameters	
operation	"toBinary"
sourceProperty	"data"
options	{}
type	"n8n-nodes-base.convertToFile"
typeVersion	1.1
position	
0	336
1	400
id	"748530cf-e65e-4835-b2b0-d1dc2c0ed62b"
name	"Convert to File"
12	
parameters	
name	"=data"
driveId	
__rl	true
mode	"list"
value	"My Drive"
folderId	
__rl	true
value	"1MfGIj5OYLAxP6_QO242iUILzblDkoQ8O"
mode	"list"
cachedResultName	"n8n copy image"
cachedResultUrl	"https://drive.google.com/drive/folders/1MfGIj5OYLAxP6_QO242iUILzblDkoQ8O"
options	{}
type	"n8n-nodes-base.googleDrive"
typeVersion	3
position	
0	816
1	560
id	"60130c5d-6ee3-4ed7-8da6-64126b3be9da"
name	"Upload Image"
credentials	
googleDriveOAuth2Api	
id	"KrOr6ZnjsW5YN64S"
name	"Google Drive account"
13	
parameters	
name	"=data"
driveId	
__rl	true
mode	"list"
value	"My Drive"
folderId	
__rl	true
value	"1MfGIj5OYLAxP6_QO242iUILzblDkoQ8O"
mode	"list"
cachedResultName	"n8n copy image"
cachedResultUrl	"https://drive.google.com/drive/folders/1MfGIj5OYLAxP6_QO242iUILzblDkoQ8O"
options	{}
type	"n8n-nodes-base.googleDrive"
typeVersion	3
position	
0	816
1	400
id	"ec4ac15e-6e19-4dcf-9176-17973d6c8885"
name	"Upload Image1"
credentials	
googleDriveOAuth2Api	
id	"KrOr6ZnjsW5YN64S"
name	"Google Drive account"
14	
parameters	
name	"=data"
driveId	
__rl	true
mode	"list"
value	"My Drive"
folderId	
__rl	true
value	"root"
mode	"list"
cachedResultName	"/ (Root folder)"
cachedResultUrl	"https://drive.google.com/drive"
options	{}
type	"n8n-nodes-base.googleDrive"
typeVersion	3
position	
0	816
1	256
id	"09dca782-ce3e-4574-b281-5ad9dcb73c87"
name	"Upload Image2"
credentials	
googleDriveOAuth2Api	
id	"KrOr6ZnjsW5YN64S"
name	"Google Drive account"
15	
parameters	
modelId	
__rl	true
value	"chatgpt-4o-latest"
mode	"list"
cachedResultName	"CHATGPT-4O-LATEST"
messages	
values	
0	
content	'=You are a senior social media strategist and expert copywriter.\n\nYour task is to write three distinct social media posts based on the provided article summary and — if available — the user’s personal opinion. Each post should be tailored to the tone, audience, and format of a specific platform:\n\nIf the user’s opinion is provided, blend it naturally into the content to add a personal or conversational tone. If the opinion is not provided, write the posts based solely on the summary.\n\n1. Facebook\n\n- Informal, approachable, and community-focused  \n- Use full sentences and a clear explanation of the insight  \n- If user opinion is present, integrate it conversationally  \n- End with a light engagement question or comment prompt  \n- Include up to 2 relevant hashtags  \n\n2. Instagram\n\n- Energetic, visual, and emotionally engaging  \n- Use emojis where appropriate 🎯✨🔥  \n- Use short lines and spacing for mobile readability  \n- If user opinion is provided, include it as a motivational or relatable angle  \n- Add 3–5 hashtags at the end for discoverability  \n\n3. LinkedIn\n\n- Professional, insightful, and concise  \n- Highlight the strategic or business relevance  \n- If a user opinion is available, treat it as a thought-provoking point or reflection\n- Avoid emojis  \n- Conclude with a thoughtful question or call for discussion  \n\n\n\nReturn output in this exact JSON format:\n{\n  "facebook": "...",\n  "instagram": "...",\n  "linkedin": "..."\n}\n'
role	"system"
1	
content	"={{ $json.output.full_prompt }}"
jsonOutput	true
options	{}
type	"@n8n/n8n-nodes-langchain.openAi"
typeVersion	1.8
position	
0	720
1	752
id	"8f0a1a90-fcbc-4753-b5ec-b0049cd8e9b8"
name	"Content Writer"
credentials	
openAiApi	
id	"tIEqFenrn8flEIJo"
name	"OpenAi account"
16	
parameters	
mode	"combine"
combineBy	"combineByPosition"
numberInputs	4
options	{}
type	"n8n-nodes-base.merge"
typeVersion	3.1
position	
0	1552
1	464
id	"2634906c-8ab9-4f02-a35d-3dcde4ba371f"
name	"Merge"
17	
parameters	
operation	"append"
documentId	
__rl	true
value	"1mft9xpu9bZUPcAxQ3ZlwNR58_vvYwcd-A6jBwtu8iVk"
mode	"list"
cachedResultName	"Devvloop Technologies Social Media Post Manager"
cachedResultUrl	"https://docs.google.com/spreadsheets/d/1mft9xpu9bZUPcAxQ3ZlwNR58_vvYwcd-A6jBwtu8iVk/edit?usp=drivesdk"
sheetName	
__rl	true
value	"gid=0"
mode	"list"
cachedResultName	"Social Media Post"
cachedResultUrl	"https://docs.google.com/spreadsheets/d/1mft9xpu9bZUPcAxQ3ZlwNR58_vvYwcd-A6jBwtu8iVk/edit#gid=0"
columns	
mappingMode	"defineBelow"
value	
Status	"Draft"
Niche	"={{ $('Edit Fields').item.json.niche }}"
Idea	"={{ $('Form1').item.json['What this post is about ?'] }}"
Summary	"={{ $('AI Agent').item.json.output.full_prompt }}"
Facebook Copy	"={{ $('Content Writer').item.json.message.content.facebook }}"
Instagram Copy	"={{ $('Content Writer').item.json.message.content.instagram }}"
LinkedIn Copy	"={{ $('Content Writer').item.json.message.content.linkedin }}"
Facebook Image	"={{ $('Upload Image').item.json.webViewLink }}"
Instagram Image	"={{ $('Upload Image1').item.json.webViewLink }}"
LinkedIn Image	"={{ $('Upload Image').item.json.webViewLink }}"
Source Article	"N/A"
matchingColumns	[]
schema	
0	
id	"Niche"
displayName	"Niche"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
1	
id	"Idea"
displayName	"Idea"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
2	
id	"Source Article"
displayName	"Source Article"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	false
3	
id	"Summary"
displayName	"Summary"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
4	
id	"Facebook Copy"
displayName	"Facebook Copy"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
5	
id	"Facebook Image"
displayName	"Facebook Image"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	false
6	
id	"Instagram Copy"
displayName	"Instagram Copy"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
7	
id	"Instagram Image"
displayName	"Instagram Image"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	false
8	
id	"LinkedIn Copy"
displayName	"LinkedIn Copy"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
9	
id	"LinkedIn Image"
displayName	"LinkedIn Image"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	false
10	
id	"Status"
displayName	"Status"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
attemptToConvertTypes	false
convertFieldsToString	false
options	{}
type	"n8n-nodes-base.googleSheets"
typeVersion	4.5
position	
0	2112
1	496
id	"77f8e5dc-505b-444b-81f7-dd4b097592c3"
name	"Update Copy Content1"
credentials	
googleSheetsOAuth2Api	
id	"p8YH5ytG1YERSuzS"
name	"Google Sheets account"
18	
parameters	{}
type	"n8n-nodes-base.limit"
typeVersion	1
position	
0	-1872
1	2720
id	"49a09b8f-3954-41cc-bb2e-01ea1aa62c4c"
name	"Limit1"
19	
parameters	
jsCode	"return{\n  json: {},\n  binary: $('Download Image').item.binary\n}"
type	"n8n-nodes-base.code"
typeVersion	2
position	
0	-976
1	2464
id	"b10919a4-db7b-421e-8d7c-8a18bba08993"
name	"Code3"
20	
parameters	
mode	"combine"
combineBy	"combineAll"
options	{}
type	"n8n-nodes-base.merge"
typeVersion	3.1
position	
0	-704
1	2384
id	"90d37be2-5275-426f-9e4c-1d3b1dc0197c"
name	"Merge3"
21	
parameters	
httpRequestMethod	"POST"
graphApiVersion	"v22.0"
node	"YOUR_PAGE_ID"
edge	"photos"
sendBinaryData	true
binaryPropertyName	"data"
options	
queryParameters	
parameter	
0	
name	"message"
value	"={{ $json['Facebook Copy'] }}"
type	"n8n-nodes-base.facebookGraphApi"
typeVersion	1
position	
0	-464
1	2384
id	"d6aa6480-12c0-410c-9551-20d31dfe0641"
name	"Facebook Publish"
22	
parameters	
assignments	
assignments	
0	
id	"18e18654-1057-4387-a214-cc9f01b5a4af"
name	"Facebook Copy"
value	"={{ $json['Facebook Copy'] }}"
type	"string"
1	
id	"456bfa8f-455d-4ff6-856b-87c1eb75177e"
name	"Facebook Image"
value	"={{ $json['Facebook Image'] }}"
type	"string"
options	{}
type	"n8n-nodes-base.set"
typeVersion	3.4
position	
0	-1600
1	2352
id	"c86a9dc8-dabe-4939-a7aa-831802fe219d"
name	"Facebook"
23	
parameters	
assignments	
assignments	
0	
id	"6a90ed9d-2c6f-4a30-b2d7-edb26accdeb8"
name	"Instagram Copy"
value	"={{ $json['Instagram Copy'] }}"
type	"string"
1	
id	"c982451d-9444-4900-9b22-9018cfc908b6"
name	"Instagram Image"
value	"={{ $json['Instagram Image'] }}"
type	"string"
options	{}
type	"n8n-nodes-base.set"
typeVersion	3.4
position	
0	-1616
1	2720
id	"8ee68b47-9c71-4a8e-86cd-1c4c5b07f61f"
name	"Instagram"
24	
parameters	
assignments	
assignments	
0	
id	"6a90ed9d-2c6f-4a30-b2d7-edb26accdeb8"
name	"LinkedIn Copy"
value	"={{ $json['LinkedIn Copy'] }}"
type	"string"
1	
id	"c982451d-9444-4900-9b22-9018cfc908b6"
name	"LinkedIn Image"
value	"={{ $json['LinkedIn Image'] }}"
type	"string"
options	{}
type	"n8n-nodes-base.set"
typeVersion	3.4
position	
0	-1600
1	3072
id	"a2e0c921-3b2b-43e0-a16e-040869ac5a0f"
name	"LinkedIn"
25	
parameters	
operation	"download"
fileId	
__rl	true
value	"={{ $json['Facebook Image'] }}"
mode	"url"
options	{}
type	"n8n-nodes-base.googleDrive"
typeVersion	3
position	
0	-1280
1	2464
id	"5cd029d3-ccdb-4cb5-a2fc-c0d83a6f9ed1"
name	"Download Image"
credentials	
googleDriveOAuth2Api	
id	"KrOr6ZnjsW5YN64S"
name	"Google Drive account"
26	
parameters	
operation	"update"
documentId	
__rl	true
value	"1BoCbTK-RmbGX75Socok-iWxYol14hwL6v69kVvAyVVo"
mode	"list"
cachedResultName	"Social Media Post Manager"
cachedResultUrl	"https://docs.google.com/spreadsheets/d/1BoCbTK-RmbGX75Socok-iWxYol14hwL6v69kVvAyVVo/edit?usp=drivesdk"
sheetName	
__rl	true
value	"gid=0"
mode	"list"
cachedResultName	"Social Media Post"
cachedResultUrl	"https://docs.google.com/spreadsheets/d/1BoCbTK-RmbGX75Socok-iWxYol14hwL6v69kVvAyVVo/edit#gid=0"
columns	
mappingMode	"defineBelow"
value	
row_number	"={{ $('Limit1').item.json.row_number }}"
Status	"Published"
matchingColumns	
0	"row_number"
schema	
0	
id	"Niche"
displayName	"Niche"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
1	
id	"Idea"
displayName	"Idea"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
2	
id	"Source Article"
displayName	"Source Article"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
3	
id	"Summary"
displayName	"Summary"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
4	
id	"Facebook Copy"
displayName	"Facebook Copy"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
5	
id	"Facebook Image"
displayName	"Facebook Image"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
6	
id	"Instagram Copy"
displayName	"Instagram Copy"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
7	
id	"Instagram Image"
displayName	"Instagram Image"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
8	
id	"LinkedIn Copy"
displayName	"LinkedIn Copy"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
9	
id	"LinkedIn Image"
displayName	"LinkedIn Image"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
removed	true
10	
id	"Status"
displayName	"Status"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
11	
id	"row_number"
displayName	"row_number"
required	false
defaultMatch	false
display	true
type	"string"
canBeUsedToMatch	true
readOnly	true
removed	false
attemptToConvertTypes	false
convertFieldsToString	false
options	{}
type	"n8n-nodes-base.googleSheets"
typeVersion	4.6
position	
0	0
1	2736
id	"81b687ff-e5a8-4121-84c3-69937610443d"
name	"Update Status"
credentials	
googleSheetsOAuth2Api	
id	"p8YH5ytG1YERSuzS"
name	"Google Sheets account"
27	
parameters	
jsCode	"return{\n  json: {},\n  binary: $('Download Image2').item.binary\n}"
type	"n8n-nodes-base.code"
typeVersion	2
position	
0	-960
1	3184
id	"5e21321d-2940-4d43-b584-267149e6c0b0"
name	"Code4"
28	
parameters	
mode	"combine"
combineBy	"combineAll"
options	{}
type	"n8n-nodes-base.merge"
typeVersion	3.1
position	
0	-704
1	3104
id	"be0f9704-2abe-487d-9c0c-9f879717f941"
name	"Merge4"
29	
parameters	
operation	"download"
fileId	
__rl	true
value	"={{ $json['LinkedIn Image'] }}"
mode	"url"
options	{}
type	"n8n-nodes-base.googleDrive"
typeVersion	3
position	
0	-1280
1	3184
id	"72dd33c5-3c8c-4086-beaf-b814071afdbf"
name	"Download Image2"
credentials	
googleDriveOAuth2Api	
id	"KrOr6ZnjsW5YN64S"
name	"Google Drive account"
30	
parameters	
person	"yAUab9C0p8"
text	'={{ $json["LinkedIn Copy"] }}'
shareMediaCategory	"IMAGE"
additionalFields	{}
type	"n8n-nodes-base.linkedIn"
typeVersion	1
position	
0	-464
1	3104
id	"e04307b9-640d-484c-bd4d-683afc2fbc61"
name	"LinkedIn Publish"
31	
parameters	
content	"### Publishing to Facebook"
height	320
width	1460
color	6
type	"n8n-nodes-base.stickyNote"
position	
0	-1696
1	2304
typeVersion	1
id	"d0dbc326-acb7-40c7-a46e-c99035a2510f"
name	"Sticky Note1"
disabled	true
32	
parameters	
content	"### Publishing to Instagram"
height	360
width	1460
color	6
type	"n8n-nodes-base.stickyNote"
position	
0	-1696
1	2640
typeVersion	1
id	"ca753c39-9966-4878-93c4-b21b91864cba"
name	"Sticky Note4"
disabled	true
33	
parameters	
content	"### Publishing to LinkedIn"
height	320
width	1460
color	6
type	"n8n-nodes-base.stickyNote"
position	
0	-1696
1	3024
typeVersion	1
id	"9342cc75-9247-430c-a4e3-fe79fcaf423e"
name	"Sticky Note5"
disabled	true
34	
parameters	
httpRequestMethod	"POST"
graphApiVersion	"v22.0"
node	"YOUR_INSTAGRAM_ID"
edge	"media"
options	
queryParameters	
parameter	
0	
name	"image_url"
value	"={{ $json.image_url }}"
1	
name	"caption"
value	"={{ $json['Instagram Copy'] }}"
type	"n8n-nodes-base.facebookGraphApi"
typeVersion	1
position	
0	-544
1	2736
id	"32dc782c-2d88-4298-ab0f-2e3db4260fe3"
name	"Create IG Container"
35	
parameters	
httpRequestMethod	"POST"
graphApiVersion	"v22.0"
node	"YOUR_INSTAGRAM_ID"
edge	"media_publish"
options	
queryParameters	
parameter	
0	
name	"creation_id"
value	"={{ $json.id }}"
type	"n8n-nodes-base.facebookGraphApi"
typeVersion	1
position	
0	-384
1	2736
id	"d2dcdc8e-be75-4a6c-929d-6d878b4f98d5"
name	"Post to IG"
36	
parameters	
mode	"combine"
combineBy	"combineAll"
options	{}
type	"n8n-nodes-base.merge"
typeVersion	3.1
position	
0	-704
1	2736
id	"477d54be-62aa-4811-a24a-bac1fe5091fa"
name	"Merge5"
37	
parameters	
operation	"download"
fileId	
__rl	true
value	"={{ $json['Instagram Image'] }}"
mode	"url"
options	{}
type	"n8n-nodes-base.googleDrive"
typeVersion	3
position	
0	-1456
1	2816
id	"c8f47c0e-6c1a-419d-8ad8-cc2503504648"
name	"Download Image3"
credentials	
googleDriveOAuth2Api	
id	"KrOr6ZnjsW5YN64S"
name	"Google Drive account"
38	
parameters	
rule	
interval	
0	{}
type	"n8n-nodes-base.scheduleTrigger"
typeVersion	1.2
position	
0	-2976
1	2256
id	"90e3c8d3-77f1-4b04-9940-287d55f23c2b"
name	"Schedule Trigger"
39	
parameters	
jsCode	'return [{\n  json: {\n    image_url: $json.url\n      .replace("?dl=0", "?raw=1")\n      .replace("&dl=0", "&raw=1")\n  }\n}];\n\n'
type	"n8n-nodes-base.code"
typeVersion	2
position	
0	-880
1	2816
id	"4ab3cd55-2663-4818-94dd-30255e6d09c8"
name	"Code2"
40	
parameters	
method	"POST"
url	"https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings"
sendHeaders	true
headerParameters	
parameters	
0	
name	"Authorization"
value	"Bearer YOUR_API_KEY"
1	
name	"Content-Type"
value	"application/json"
sendBody	true
specifyBody	"json"
jsonBody	'={\n  "path": "{{ $json.path_display }}",\n  "settings": {\n    "requested_visibility": "public"\n  }\n}\n'
options	{}
type	"n8n-nodes-base.httpRequest"
typeVersion	4.2
position	
0	-1056
1	2816
id	"68ba1f55-4d7d-44b1-a2aa-3af6c6a24cae"
name	"Create Shared Link"
41	
parameters	
mode	"combine"
combineBy	"combineByPosition"
numberInputs	3
options	{}
type	"n8n-nodes-base.merge"
typeVersion	3.2
position	
0	-160
1	2736
id	"48634104-9378-4634-ac08-e825aa6d352c"
name	"Merge2"
42	
parameters	
documentId	
__rl	true
value	"1BoCbTK-RmbGX75Socok-iWxYol14hwL6v69kVvAyVVo"
mode	"list"
cachedResultName	"Social Media Post Manager"
cachedResultUrl	"https://docs.google.com/spreadsheets/d/1BoCbTK-RmbGX75Socok-iWxYol14hwL6v69kVvAyVVo/edit?usp=drivesdk"
sheetName	
__rl	true
value	"gid=0"
mode	"list"
cachedResultName	"Social Media Post"
cachedResultUrl	"https://docs.google.com/spreadsheets/d/1BoCbTK-RmbGX75Socok-iWxYol14hwL6v69kVvAyVVo/edit#gid=0"
filtersUI	
values	
0	
lookupColumn	"Status"
lookupValue	"Approved"
options	{}
type	"n8n-nodes-base.googleSheets"
typeVersion	4.6
position	
0	-2560
1	2256
id	"c191f071-d56e-4223-a0d6-d34f13e5a145"
name	"Get Copy Contents"
credentials	
googleSheetsOAuth2Api	
id	"p8YH5ytG1YERSuzS"
name	"Google Sheets account"
43	
parameters	
path	'=/instagram_copy_image/{{$binary.data.fileName.replace(/s+/g, "_")}}.png'
binaryData	true
type	"n8n-nodes-base.dropbox"
typeVersion	1
position	
0	-1264
1	2816
id	"ed17379f-0275-48b5-9dc1-698a17f73532"
name	"Upload Image to Dropbox"
pinData	{}
connections	
On form submission1	
main	
0	
0	
node	"If1"
type	"main"
index	0
If1	
main	
0	
0	
node	"Form1"
type	"main"
index	0
1	[]
Form1	
main	
0	
0	
node	"Image Extract from File"
type	"main"
index	0
Image Analyser	
main	
0	
0	
node	"AI Agent"
type	"main"
index	0
OpenRouter Chat Model1	
ai_languageModel	
0	
0	
node	"AI Agent"
type	"ai_languageModel"
index	0
Structured Output Parser2	
ai_outputParser	
0	
0	
node	"AI Agent"
type	"ai_outputParser"
index	0
Logo Edit Fields	
main	
0	
0	
node	"Image Analyser"
type	"main"
index	0
Image Extract from File	
main	
0	
0	
node	"Logo Edit Fields"
type	"main"
index	0
AI Agent	
main	
0	
0	
node	"HTTP Request"
type	"main"
index	0
1	
node	"Content Writer"
type	"main"
index	0
HTTP Request	
main	
0	
0	
node	"Edit Fields"
type	"main"
index	0
Edit Fields	
main	
0	
0	
node	"Convert to File"
type	"main"
index	0
Convert to File	
main	
0	
0	
node	"Upload Image2"
type	"main"
index	0
1	
node	"Upload Image1"
type	"main"
index	0
2	
node	"Upload Image"
type	"main"
index	0
Upload Image2	
main	
0	
0	
node	"Merge"
type	"main"
index	0
Upload Image1	
main	
0	
0	
node	"Merge"
type	"main"
index	1
Upload Image	
main	
0	
0	
node	"Merge"
type	"main"
index	2
Content Writer	
main	
0	
0	
node	"Merge"
type	"main"
index	3
Merge	
main	
0	
0	
node	"Update Copy Content1"
type	"main"
index	0
Limit1	
main	
0	
0	
node	"Facebook"
type	"main"
index	0
1	
node	"Instagram"
type	"main"
index	0
2	
node	"LinkedIn"
type	"main"
index	0
Code3	
main	
0	
0	
node	"Merge3"
type	"main"
index	1
Merge3	
main	
0	
0	
node	"Facebook Publish"
type	"main"
index	0
Facebook Publish	
main	
0	
0	
node	"Merge2"
type	"main"
index	0
Facebook	
main	
0	
0	
node	"Merge3"
type	"main"
index	0
1	
node	"Download Image"
type	"main"
index	0
Instagram	
main	
0	
0	
node	"Download Image3"
type	"main"
index	0
1	
node	"Merge5"
type	"main"
index	0
LinkedIn	
main	
0	
0	
node	"Download Image2"
type	"main"
index	0
1	
node	"Merge4"
type	"main"
index	0
Download Image	
main	
0	
0	
node	"Code3"
type	"main"
index	0
Code4	
main	
0	
0	
node	"Merge4"
type	"main"
index	1
Merge4	
main	
0	
0	
node	"LinkedIn Publish"
type	"main"
index	0
Download Image2	
main	
0	
0	
node	"Code4"
type	"main"
index	0
LinkedIn Publish	
main	
0	
0	
node	"Merge2"
type	"main"
index	2
Create IG Container	
main	
0	
0	
node	"Post to IG"
type	"main"
index	0
Post to IG	
main	
0	
0	
node	"Merge2"
type	"main"
index	1
Merge5	
main	
0	
0	
node	"Create IG Container"
type	"main"
index	0
Download Image3	
main	
0	
0	
node	"Upload Image to Dropbox"
type	"main"
index	0
Schedule Trigger	
main	
0	
0	
node	"Get Copy Contents"
type	"main"
index	0
Code2	
main	
0	
0	
node	"Merge5"
type	"main"
index	1
Create Shared Link	
main	
0	
0	
node	"Code2"
type	"main"
index	0
Merge2	
main	
0	
0	
node	"Update Status"
type	"main"
index	0
Get Copy Contents	
main	
0	
0	
node	"Limit1"
type	"main"
index	0
Upload Image to Dropbox	
main	
0	
0	
node	"Create Shared Link"
type	"main"
index	0
active	false
settings	
executionOrder	"v1"
timezone	"Europe/London"
callerPolicy	"workflowsFromSameOwner"
availableInMCP	false
versionId	"742c98d9-5ad9-46a7-bea7-0cbd8637fd1e"
meta	
templateCredsSetupCompleted	true
instanceId	"733ae2cd13508481ba361b2eee18d67ffd6ec49088c52cc20fe29ee7e5fdd5a9"
id	"Dx9d1q8RMjUC1udX"
tags	[]

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

Hey @Harish_Balasubramani Don’t ask the AI to draw the logo, because it will invent a new one every time. Instead, generate the background image with the AI, then use a different node called “Edit Image” to overlay your exact logo file on top of it in the corner.

Hope this helps!