This workflow corresponds to n8n.io template #13112 — we link there as the canonical source.
This workflow follows the Agent → Googlegemini 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "b8c2ed8a-3ef6-403b-a608-a734e5e80e24",
"name": "Webhook - Receive Form",
"type": "n8n-nodes-base.webhook",
"position": [
2704,
464
],
"parameters": {
"path": "Linkedin-update",
"options": {
"rawBody": true
},
"httpMethod": "POST",
"responseMode": "lastNode"
},
"typeVersion": 1.1
},
{
"id": "e290f1b0-ebb8-4758-a86c-2c7d266374ee",
"name": "Webhook-LinkedIn-post",
"type": "n8n-nodes-base.webhook",
"position": [
2720,
1056
],
"parameters": {
"path": "d01e0a95-5a60-4c9f-9f4e-3e6ef694f402",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "3516b540-1740-4906-86a8-f23ac8081cde",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
3168,
1056
],
"parameters": {
"options": {
"responseCode": 200,
"responseHeaders": {
"entries": [
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Access-Control-Allow-Methods",
"value": "POST, OPTIONS"
},
{
"name": "Access-Control-Allow-Headers",
"value": "Content-Type"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"respondWith": "json",
"responseBody": "{\n \"success\": true,\n \"message\": \"Post received and posted to LinkedIn\"\n}"
},
"typeVersion": 1.4
},
{
"id": "29bef038-9cbc-441f-a1e0-170133028784",
"name": "Respond to Webhook2",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
3504,
336
],
"parameters": {
"options": {
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
},
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}"
},
"typeVersion": 1
},
{
"id": "c4b56266-794a-4ea7-9b0a-ec2657135d0b",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
2928,
736
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b4243d36-854a-47d4-8085-1d0232317cc4",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2000,
192
],
"parameters": {
"width": 592,
"height": 1040,
"content": "## Upload your quote and generate a LinkedIn AI post design with captions\n\n## Watch this tutorial\n@[youtube](T3zXQvoFB6A)\n\n## How it works\n- Upload your quote on the website\n- The webhook reads the data and generates an image and caption using Gemini AI\n- Respond to webhook sends the response to the website, and it's displayed on the page\n- Edit caption to taste and post to LinkedIn\n\n## Setup\n1. Set up HTML website - will attach below\n2. Replace the 2 webhooks in the HTML\n3. Add [Gemini](https://aistudio.google.com/) credential\n4. Add [LinkedIn](https://developer.linkedin.com/) credential\n\n## [Click to get the HTML website](https://drive.google.com/file/d/1JvViq-oNAdZosNOr7S5PfrxgbYcpK1Te/view) \n"
},
"typeVersion": 1
},
{
"id": "e1d7070a-4f4d-4f12-9a53-8a44094820bc",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
2608,
208
],
"parameters": {
"color": 7,
"width": 1152,
"height": 720,
"content": "## 1. Retrieve the data from the website, generate a post image and caption, then send back the results to display on the website"
},
"typeVersion": 1
},
{
"id": "4331f83b-742b-40fb-9af7-bc122b00f9ca",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2608,
944
],
"parameters": {
"color": 7,
"width": 832,
"height": 288,
"content": "## 2. Webhook reads the data and posts to LinkedIn"
},
"typeVersion": 1
},
{
"id": "ee3370a5-71e2-4bce-8314-27e0f04af017",
"name": "Generate post caption",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2928,
576
],
"parameters": {
"text": "=Write a LinkedIn post caption based on this text \"{{ $json.body.quote }}\", making it educative, informative, and engaging while keeping it concise at about 120 to 180 words. Use clear, professional, and natural language with a strong opening sentence that sparks curiosity, briefly explain why the idea matters in a business or professional context, and include one practical insight or takeaway. Avoid em dashes completely, do not use jargon, fluff, or overly technical explanations, maintain a confident but approachable tone, structure the caption in short paragraphs for readability, and end with a thoughtful closing line that encourages reflection without asking multiple questions. Output only the final caption with no extra commentary.",
"options": {},
"promptType": "define"
},
"typeVersion": 3.1
},
{
"id": "c036d9f0-8527-4c53-a4ed-f3616c4a737d",
"name": "Generate post image",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
2976,
304
],
"parameters": {
"prompt": "=Create a modern, minimal but visually fuller illustration inspired by this quote \"{{ $json.body.quote }}\". Generate a unique background color for every output, using rich but professional tones that are not overly bright. Design a concept-driven scene that clearly symbolizes the core message of the quote, with more visual depth through layered elements, soft shapes, subtle gradients, and balanced composition while avoiding clutter. Include a short, impactful quote derived from the text placed prominently in the design using Poppins font only, with clean, bold typography that is easy to read. Maintain a polished, high-quality flat design style suitable for LinkedIn, with strong visual hierarchy, good spacing, and a professional business aesthetic.",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash-image",
"cachedResultName": "models/gemini-2.5-flash-image (Nano Banana)"
},
"options": {},
"resource": "image"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "4a7b177f-6fd2-4db8-8fca-472afc55114e",
"name": "Convert binary to base64",
"type": "n8n-nodes-base.extractFromFile",
"position": [
3264,
304
],
"parameters": {
"options": {},
"operation": "binaryToPropery",
"destinationKey": "image"
},
"typeVersion": 1.1
},
{
"id": "4efa8966-62d4-4159-b3f8-f8d4d5983bbb",
"name": "Combine the branches",
"type": "n8n-nodes-base.merge",
"position": [
3296,
560
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "3c96ba5e-426f-4d2d-816e-6ec928da2df9",
"name": "Set prompt and image",
"type": "n8n-nodes-base.set",
"position": [
3536,
560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9cf7827d-55cd-439a-9d29-c471df686d01",
"name": "image",
"type": "string",
"value": "={{ $json.image }}"
},
{
"id": "9a354897-5632-4fa0-9e35-af9557c8c8b6",
"name": "output",
"type": "string",
"value": "={{ $json.output }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "fb33329b-486f-472c-8d35-6b5e5dcc855c",
"name": "Create Linkedin post",
"type": "n8n-nodes-base.linkedIn",
"position": [
2944,
1056
],
"parameters": {
"postAs": "organization",
"additionalFields": {}
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
}
],
"connections": {
"Generate post image": {
"main": [
[
{
"node": "Convert binary to base64",
"type": "main",
"index": 0
}
]
]
},
"Combine the branches": {
"main": [
[
{
"node": "Set prompt and image",
"type": "main",
"index": 0
}
]
]
},
"Create Linkedin post": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Set prompt and image": {
"main": [
[
{
"node": "Respond to Webhook2",
"type": "main",
"index": 0
}
]
]
},
"Generate post caption": {
"main": [
[
{
"node": "Combine the branches",
"type": "main",
"index": 1
}
]
]
},
"Webhook-LinkedIn-post": {
"main": [
[
{
"node": "Create Linkedin post",
"type": "main",
"index": 0
}
]
]
},
"Webhook - Receive Form": {
"main": [
[
{
"node": "Generate post image",
"type": "main",
"index": 0
},
{
"node": "Generate post caption",
"type": "main",
"index": 0
}
]
]
},
"Convert binary to base64": {
"main": [
[
{
"node": "Combine the branches",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Generate post caption",
"type": "ai_languageModel",
"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.
googlePalmApilinkedInOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Transform your quotes into stunning LinkedIn posts with AI!
Source: https://n8n.io/workflows/13112/ — 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.
CLINICAINTEGRAL_secretary. Uses postgres, mcpClientTool, googleDriveTool, toolWorkflow. Webhook trigger; 89 nodes.
Whatsap Evolution API V2.2.3. Uses httpRequest, redis, toolCalculator, toolWikipedia. Webhook trigger; 38 nodes.
This workflow transforms any PDF legal contract into a detailed AI-powered risk report — in under 5 minutes. Upload a contract, and the system automatically splits it into clauses, analyses each one u
This workflow receives messages and media from WhatsApp via the Evolution API, converts the content into structured inputs, and forwards them to an AI Agent capable of triggering MCP tools to execute
Viral-Post-Rewriter-Gemini. Uses telegram, linkedIn, outputParserStructured, lmChatGoogleGemini. Event-driven trigger; 27 nodes.