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: