This workflow corresponds to n8n.io template #6619 — we link there as the canonical source.
This workflow follows the Agent → Google Sheets 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": "089eafd4-4423-4b01-a485-834677db5599",
"name": "Auto-fixing Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
816,
224
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "b2eb7bf1-66e1-4e19-8287-892855249b83",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
816,
432
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0ca67eb7-7184-4345-be33-39c3b2c4bb3d",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1008,
432
],
"parameters": {
"jsonSchemaExample": "{\n \"summary\": \"This LinkedIn post recaps highlights from the FWD: London event. Instead of listing them directly, it encourages viewers to watch a highlight video to experience the energy and insights from the event firsthand.\",\n \"post_intent\": \"Event recap\",\n \"engagement_level\": \"Medium\",\n \"engagement_reason\": \"With 107 likes and 2 comments, the post shows moderate engagement for a brand with over 200,000 followers.\",\n \"audience_insight\": \"The tone is enthusiastic and community-driven, targeting marketers and event attendees interested in industry trends and networking.\",\n \"marketing_takeaway\": \"Use video content with real attendee testimonials to create an authentic event recap that resonates emotionally with the audience.\"\n}\n"
},
"typeVersion": 1.3
},
{
"id": "b86899c5-dee9-4338-83fe-c45c31ed4bce",
"name": "Google Gemini Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
640,
224
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "85f6f87b-068f-4dc2-9c11-63e7ca70495b",
"name": "Start Analysis (Manual Trigger)",
"type": "n8n-nodes-base.manualTrigger",
"position": [
0,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7c8a2664-5cb4-486c-8d30-8249e93160e9",
"name": "Set LinkedIn Post URL",
"type": "n8n-nodes-base.set",
"position": [
192,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c602fcde-572b-43c9-b9e3-bb1ae11d3b22",
"name": "post URL",
"type": "string",
"value": "https://www.linkedin.com/posts/intuitmailchimp_could-we-list-all-the-highlights-from-fwd-activity-7340710211919200257-nX-0?utm_source=share&utm_medium=member_desktop&rcm=ACoAAFdhxw8BWbiroAhA6UhfplFYDs0hSzkiyWU"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "76238a8c-14bb-4f5d-800f-77d1e2e5a277",
"name": "Scrape LinkedIn Post Details",
"type": "@brightdata/n8n-nodes-brightdata.brightData",
"position": [
528,
0
],
"parameters": {
"urls": "=[{\"url\":\"{{ $json[\"post URL\"] }}\"}]",
"resource": "webScrapper",
"dataset_id": {
"__rl": true,
"mode": "list",
"value": "gd_lyy3tktm25m4avu764",
"cachedResultName": "LinkedIn posts"
},
"requestOptions": {}
},
"credentials": {
"brightdataApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "170d8bff-7b8a-4a67-bf89-ad780632bfc4",
"name": "Post Analyzer agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
704,
0
],
"parameters": {
"text": "=You are a social media strategist analyzing LinkedIn posts for competitive intelligence.\n\nHere is the data for one post:\n\nCompany Name: {{ $json.user_id }}\nCompany Profile URL: {{ $json.use_url }}\nFollowers: {{ $json.user_followers }}\n\nPost Title: {{ $json.title }}\nPost Text: {{ $json.post_text }}\nPost URL: {{ $json.url }}\nPosted Date: {{ $json.date_posted }}\n\nLikes: {{ $json.num_likes }}\nComments: {{ $json.num_comments }}\n\nTop Comment:\n\"{{ $json.top_visible_comments[0].comment }}\" by {{ $json.top_visible_comments[0].user_name }} ({{ $json.top_visible_comments[0].user_title }})\n{% endfor %}\n\nNow, please answer the following:\n\n1. Summary: Summarize the content of this post in 2\u20133 sentences.\n2. Post Intent: What is the likely goal of this post? (e.g., product promotion, event recap, employer branding, thought leadership, etc.)\n3. Engagement Analysis: Based on the number of likes and comments, how would you rate the engagement (Low / Medium / High)? Why?\n4. Audience Insight: What can we infer about the company\u2019s target audience or tone of communication from this post?\n5. Marketing Takeaway: What is one actionable idea a competitor brand can learn from this post?\n",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "8d3e1161-812c-40cf-aec5-aacc0b8df594",
"name": "Save Analysis to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1136,
0
],
"parameters": {
"columns": {
"value": {
"Summary": "={{ $json.output.summary }}",
"Post Intent": "={{ $json.output.post_intent }}",
"Audience Insight": "={{ $json.output.audience_insight }}",
"Engagement Level": "={{ $json.output.engagement_level }}",
"Engagement Reason": "={{ $json.output.engagement_reason }}",
"Marketing Takeaway": "={{ $json.output.marketing_takeaway }}"
},
"schema": [
{
"id": "Summary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Post Intent",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Post Intent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Engagement Level",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Engagement Level",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Engagement Reason",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Engagement Reason",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Audience Insight",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Audience Insight",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Marketing Takeaway",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Marketing Takeaway",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1qGGC5ey8UcltA0zCDibxhECutXC9-F7bh_NwtYE4WaM/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1qGGC5ey8UcltA0zCDibxhECutXC9-F7bh_NwtYE4WaM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1qGGC5ey8UcltA0zCDibxhECutXC9-F7bh_NwtYE4WaM/edit?usp=drivesdk",
"cachedResultName": "Competitor's post analyzer"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "de5cdf4d-dcbf-46f3-9319-2bc27bdbd73b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
-944
],
"parameters": {
"color": 5,
"width": 352,
"height": 1136,
"content": "## \ud83d\udfe9 **Section 1: \ud83d\udd17 URL Input & Trigger**\n\n### \ud83c\udf9b\ufe0f Nodes Involved:\n\n* `\u26a1 Start Analysis (Manual Trigger)`\n* `\u270d\ufe0f Set LinkedIn Post URL`\n\n### \ud83e\udde0 What's Happening:\n\nThis section is your **starting point**. The workflow begins when a user manually triggers the automation by clicking a button in n8n. Then, the user **inputs the LinkedIn post URL** they want to analyze.\n\n### \ud83d\udd0d Explanation:\n\n* This trigger node allows anyone (even non-developers) to launch the analysis with **just a click**.\n* The `Set` node is used to **manually insert the LinkedIn post URL** \u2014 the only required input!\n\n### \ud83d\udee0 How Beginners Can Use It:\n\n* You don\u2019t need coding or scraping knowledge.\n* Just copy any public LinkedIn post URL, paste it into the `Set` node, and hit \u201cExecute Workflow.\u201d\n* This makes it perfect for **marketing interns, assistants, or analysts** to run competitive analysis.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "7f46600f-5845-42e7-ab16-11b647e33b0b",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
496,
-1152
],
"parameters": {
"color": 3,
"width": 512,
"height": 1328,
"content": "## \ud83d\udfe8 **Section 2: \ud83e\udde0 Data Extraction + AI Analysis**\n\n### \ud83e\udde9 Nodes Involved:\n\n* `\ud83d\udce6 Scrape LinkedIn Post Details (Bright Data)`\n* `\ud83e\udd16 Analyze Post with AI Agent`\n\n * `\ud83d\udd2e Gemini Model (Chat)`\n * `\ud83e\uddf0 Auto-Fix Output JSON`\n * `\ud83e\uddfe Structured Output Parser`\n\n### \ud83e\udde0 What's Happening:\n\nThis is the **core engine** of the automation. First, Bright Data scrapes all the post content \u2014 including text, comments, engagement stats, and media. Then, an AI agent (powered by Google Gemini) analyzes this post using a smart prompt to return **insightful and structured output**.\n\n### \u2699\ufe0f Step-by-Step:\n\n1. **\ud83d\udd0d Scrape**: Bright Data extracts all key metadata from the LinkedIn post.\n2. **\ud83e\udde0 AI Agent**: The extracted data is passed to an AI model (Gemini), which:\n\n * Summarizes the post\n * Identifies its purpose (event, promotion, etc.)\n * Rates engagement\n * Infers target audience\n * Suggests a marketing takeaway\n3. **\ud83d\udee0 Output Parser**: The response is auto-validated and structured into clean JSON.\n\n### \ud83d\udca1 How Beginners Can Use It:\n\n* Even if you don\u2019t know how AI or APIs work, this section handles all the **complex reasoning**.\n* Just sit back and let AI tell you:\n\n * What your competitors are posting\n * How engaging those posts are\n * What lessons you can learn from them\n* It's perfect for **content strategists, social media teams, or consultants**.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "be30c642-32ec-4257-acf0-9f232cc83e03",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
-928
],
"parameters": {
"color": 6,
"width": 272,
"height": 1104,
"content": "## \ud83d\udfe6 **Section 3: \ud83d\udcca Save to Sheet**\n\n### \ud83d\udcd8 Node Involved:\n\n* `\ud83d\udce4 Save Analysis to Google Sheet`\n\nCopy this spreadsheet:\nhttps://docs.google.com/spreadsheets/d/1EKF6MLQN9suxGDzqlkARkDnSA-x75IpJbB0PXIx_E1Q/edit?usp=sharing\n\n### \ud83e\udde0 What's Happening:\n\nThis final node **stores the AI-generated analysis** in a connected Google Sheet. Each new LinkedIn post you analyze adds a new row \u2014 turning your sheet into a **real-time intelligence database**.\n\n### \ud83d\udcc8 Output Example:\n\n| Company | Post Title | Engagement | Intent | Takeaway |\n| --------- | ---------------------- | ---------- | ----------- | ---------------------------------------------- |\n| Mailchimp | FWD: London Highlights | Medium | Event Recap | Use testimonial videos for better event recall |\n\n### \ud83e\uddfe How Beginners Can Use It:\n\n* All the insights get saved automatically \u2014 **no copy-paste needed**.\n* This sheet can be shared with your marketing team, used in slide decks, or reviewed weekly.\n* It becomes a **live knowledge hub** of what competitors are saying and how well it's working.\n\n"
},
"typeVersion": 1
},
{
"id": "4fbea865-7a0e-426d-896e-a8d9aff74353",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1648,
-560
],
"parameters": {
"color": 4,
"width": 1300,
"height": 320,
"content": "=======================================\n WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n - YouTube: https://www.youtube.com/@YaronBeen/videos\n - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
},
"typeVersion": 1
},
{
"id": "77113e0d-98f4-4426-9d2d-e9822d6b10df",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1648,
-224
],
"parameters": {
"color": 4,
"width": 1289,
"height": 2722,
"content": "## \ud83c\udf1f **LinkedIn Competitive Intelligence Automation**\n\n> Analyze any public LinkedIn post from competitors, influencers, or market leaders using Bright Data + AI \u2014 and store the analysis directly into Google Sheets.\n\n---\n\n## \ud83d\udfe9 **Section 1: \ud83d\udd17 URL Input & Trigger**\n\n### \ud83c\udf9b\ufe0f Nodes Involved:\n\n* `\u26a1 Start Analysis (Manual Trigger)`\n* `\u270d\ufe0f Set LinkedIn Post URL`\n\n### \ud83e\udde0 What's Happening:\n\nThis section is your **starting point**. The workflow begins when a user manually triggers the automation by clicking a button in n8n. Then, the user **inputs the LinkedIn post URL** they want to analyze.\n\n### \ud83d\udd0d Explanation:\n\n* This trigger node allows anyone (even non-developers) to launch the analysis with **just a click**.\n* The `Set` node is used to **manually insert the LinkedIn post URL** \u2014 the only required input!\n\n### \ud83d\udee0 How Beginners Can Use It:\n\n* You don\u2019t need coding or scraping knowledge.\n* Just copy any public LinkedIn post URL, paste it into the `Set` node, and hit \u201cExecute Workflow.\u201d\n* This makes it perfect for **marketing interns, assistants, or analysts** to run competitive analysis.\n\n---\n\n## \ud83d\udfe8 **Section 2: \ud83e\udde0 Data Extraction + AI Analysis**\n\n### \ud83e\udde9 Nodes Involved:\n\n* `\ud83d\udce6 Scrape LinkedIn Post Details (Bright Data)`\n* `\ud83e\udd16 Analyze Post with AI Agent`\n\n * `\ud83d\udd2e Gemini Model (Chat)`\n * `\ud83e\uddf0 Auto-Fix Output JSON`\n * `\ud83e\uddfe Structured Output Parser`\n\n### \ud83e\udde0 What's Happening:\n\nThis is the **core engine** of the automation. First, Bright Data scrapes all the post content \u2014 including text, comments, engagement stats, and media. Then, an AI agent (powered by Google Gemini) analyzes this post using a smart prompt to return **insightful and structured output**.\n\n### \u2699\ufe0f Step-by-Step:\n\n1. **\ud83d\udd0d Scrape**: Bright Data extracts all key metadata from the LinkedIn post.\n2. **\ud83e\udde0 AI Agent**: The extracted data is passed to an AI model (Gemini), which:\n\n * Summarizes the post\n * Identifies its purpose (event, promotion, etc.)\n * Rates engagement\n * Infers target audience\n * Suggests a marketing takeaway\n3. **\ud83d\udee0 Output Parser**: The response is auto-validated and structured into clean JSON.\n\n### \ud83d\udca1 How Beginners Can Use It:\n\n* Even if you don\u2019t know how AI or APIs work, this section handles all the **complex reasoning**.\n* Just sit back and let AI tell you:\n\n * What your competitors are posting\n * How engaging those posts are\n * What lessons you can learn from them\n* It's perfect for **content strategists, social media teams, or consultants**.\n\n---\n\n## \ud83d\udfe6 **Section 3: \ud83d\udcca Save to Sheet**\n\n### \ud83d\udcd8 Node Involved:\n\n* `\ud83d\udce4 Save Analysis to Google Sheet`\n\n### \ud83e\udde0 What's Happening:\n\nThis final node **stores the AI-generated analysis** in a connected Google Sheet. Each new LinkedIn post you analyze adds a new row \u2014 turning your sheet into a **real-time intelligence database**.\n\n### \ud83d\udcc8 Output Example:\n\n| Company | Post Title | Engagement | Intent | Takeaway |\n| --------- | ---------------------- | ---------- | ----------- | ---------------------------------------------- |\n| Mailchimp | FWD: London Highlights | Medium | Event Recap | Use testimonial videos for better event recall |\n\n### \ud83e\uddfe How Beginners Can Use It:\n\n* All the insights get saved automatically \u2014 **no copy-paste needed**.\n* This sheet can be shared with your marketing team, used in slide decks, or reviewed weekly.\n* It becomes a **live knowledge hub** of what competitors are saying and how well it's working.\n\n---\n\n## \u2705 **Final Benefits**\n\n\u2728 **For Agencies / Consultants**\nOffer LinkedIn post benchmarking as a service.\n\n\ud83d\udcca **For Marketing Teams**\nUnderstand what kind of content performs well.\n\n\ud83d\udcda **For Beginners**\nRun complex AI + scraping analysis without writing a single line of code.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "91600209-67e6-4f17-bb39-f88b807a3ed5",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1392,
-928
],
"parameters": {
"color": 7,
"width": 380,
"height": 240,
"content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
},
"typeVersion": 1
}
],
"connections": {
"Post Analyzer agent": {
"main": [
[
{
"node": "Save Analysis to Google Sheet",
"type": "main",
"index": 0
}
]
]
},
"Set LinkedIn Post URL": {
"main": [
[
{
"node": "Scrape LinkedIn Post Details",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "Post Analyzer agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "Post Analyzer agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Scrape LinkedIn Post Details": {
"main": [
[
{
"node": "Post Analyzer agent",
"type": "main",
"index": 0
}
]
]
},
"Start Analysis (Manual Trigger)": {
"main": [
[
{
"node": "Set LinkedIn Post URL",
"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.
brightdataApigoogleApigooglePalmApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
markdownThis workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Source: https://n8n.io/workflows/6619/ — 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 workflow automatically analyzes Reddit comments to understand public sentiment and community reactions. It saves you hours of manual reading by using AI to classify comments as positive, negative
This Shopify AI automation is an advanced n8n-powered workflow that transforms Shopify product collections into SEO-optimized blog articles with images, while maintaining full visibility and control t
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
🔀 Context switch kills the habit: Because bookkeeping lives outside the apps you use every day, you postpone it → forget to log. 🧱 High input friction: You’re forced to fill rigid fields (amount/categ
(From Shopify product to SEO-optimized blog post — fully automated)