This workflow corresponds to n8n.io template #5951 — 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 →
{
"id": "Kw6CPl5oArWJBG0E",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "8 Track Brand Mentions Across Platforms",
"tags": [],
"nodes": [
{
"id": "6f0fed2a-cd9b-472e-b541-321c4e43f12b",
"name": "\ud83d\ude80 Start Workflow (Manual Trigger)",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-340,
-80
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c9195c44-551e-440e-a191-80801c17cbbb",
"name": "\ud83d\udcdd Define Medium Blog URL",
"type": "n8n-nodes-base.set",
"position": [
-120,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5ce0f046-dd35-47d3-96a1-845a179f7949",
"name": "blogURL",
"type": "string",
"value": "https://medium.com/gitconnected/why-openai-suddenly-erased-jony-ive-from-their-website-5d6f431e5297"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "00f42b47-ced0-4d28-919b-6b1f9b05e210",
"name": "\ud83e\udd16 Agent: Scrape Medium Blog (OpenAI Mentions)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
180,
-80
],
"parameters": {
"text": "=scrape the below medium blog URL and do setimant analysis:\n{{ $json.blogURL }}",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "c15a7aa3-4ec6-442b-859d-db32655ec08e",
"name": "\ud83e\udde0 Chat Reasoning Engine",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
140,
140
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "2948ad8b-b41b-4405-98e8-7af70cf4cbde",
"name": "\ud83c\udf10 Bright Data Tool",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
300,
220
],
"parameters": {
"toolName": "scrape_as_markdown",
"operation": "executeTool",
"toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0dec0fe8-a2db-4862-b3f5-243d059066c5",
"name": "\ud83d\udce5 Save Results to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
760,
-80
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $('\ud83d\udcdd Define Medium Blog URL').item.json.blogURL }}",
"Title": "={{ $json.output.title }}",
"Author": "={{ $json.output.author }}",
"Platform": "={{ $json.output.platform }}",
"Sentiment": "={{ $json.output.sentiment }}",
"Content Summary": "={{ $json.output['content summary'] }}"
},
"schema": [
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Platform",
"type": "string",
"display": true,
"required": false,
"displayName": "Platform",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Author",
"type": "string",
"display": true,
"required": false,
"displayName": "Author",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Content Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sentiment",
"type": "string",
"display": true,
"required": false,
"displayName": "Sentiment",
"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/1XxLjaMa4vLqSV6bf0Fq1vreOJX6Os_uUCW0PrUK3UWE/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1XxLjaMa4vLqSV6bf0Fq1vreOJX6Os_uUCW0PrUK3UWE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XxLjaMa4vLqSV6bf0Fq1vreOJX6Os_uUCW0PrUK3UWE/edit?usp=drivesdk",
"cachedResultName": "brand sentiment analysis"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "ccc265dd-b894-4f2c-87d9-13e704ede0f8",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-380,
-820
],
"parameters": {
"color": 6,
"width": 420,
"height": 960,
"content": "## \ud83d\udd39 SECTION 1: Start the Workflow & Provide Input\n\n\ud83e\udde9 Nodes:\n\n* \ud83d\udd18 When clicking 'Execute workflow' \u2192 \u2705 Renamed: Start Manually\n* \ud83d\udcdd Edit Fields (Manual Input) \u2192 \u2705 Renamed: Set Medium Blog URL\n\n\ud83d\udca1 What This Does:\nYou start the workflow manually and provide the blog post URL from Medium. This is done using a simple field, so no coding is needed.\n\n\ud83d\udccc Example:\nYou paste a Medium blog URL like:\n\n```\nhttps://medium.com/some-author/the-future-of-openai-in-ai-innovation-abc123\n```\n\n\ud83d\udd0d Why It\u2019s Useful:\n\n* \ud83e\udde0 You can analyze any blog post from Medium.\n* \ud83e\uddd1\u200d\ud83d\udcbc Great for researchers, marketers, or founders tracking OpenAI mentions in the blogosphere.\n\n\ud83c\udfaf Beginner Tip:\nJust click \u25b6 Execute, then paste your Medium URL when prompted!\n\n"
},
"typeVersion": 1
},
{
"id": "77163aaf-9a40-42b5-86ce-81933f8de5aa",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
100,
-980
],
"parameters": {
"width": 460,
"height": 1400,
"content": "## \ud83e\udd16 SECTION 2: AI Agent Fetches & Filters Content\n\n\ud83e\udde9 Main Node:\n\n* \ud83e\udd16 AI Agent \u2192 \u2705 Renamed: Scrape Blog for OpenAI Mentions\n\n\ud83d\udd27 Sub-Nodes Connected:\n\n* \ud83e\udde0 OpenAI Chat Model \u2192 Processes your goal (e.g., \u201cFind OpenAI mentions\u201d)\n* \ud83c\udf10 MCP Client (Tool: scrape\\_as\\_markdown) \u2192 Actually visits and scrapes the Medium post\n* \ud83e\uddfe Structured Output Parser \u2192 Formats the scraped content into clean, structured data\n\n\ud83d\udca1 What This Does:\nThis is the powerhouse of your workflow! Here's what happens:\n\n1. The AI Agent receives your input (blog URL and goal).\n2. It activates a special scraping tool via Bright Data MCP called scrape\\_as\\_markdown.\n3. The AI intelligently finds paragraphs or sections that mention OpenAI.\n4. The result is then parsed into structured, easy-to-read text.\n\n\ud83d\udd0d Why It\u2019s Useful:\n\n* \ud83d\udd2c No more reading entire blogs manually\u2014get only the content that matters.\n* \ud83e\udde0 Uses ChatGPT to understand meaning, not just raw keyword match.\n* \ud83d\udd75\ufe0f Perfect for media monitoring, market research, and trend tracking.\n\n\ud83c\udfaf Beginner Tip:\nYou don\u2019t need to worry about scraping or code. The AI + MCP handle everything behind the scenes!\n"
},
"typeVersion": 1
},
{
"id": "a291820d-69b5-450a-a588-d4ef3a75090d",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-740
],
"parameters": {
"color": 3,
"width": 360,
"height": 860,
"content": "## \ud83d\udcca SECTION 3: Store the Results in Google Sheets\n\n\ud83e\udde9 Node:\n\n* \ud83d\udcc4 Google Sheets (Append Row) \u2192 \u2705 Renamed: Save to Google Sheets\n\n\ud83d\udca1 What This Does:\nOnce the filtered and formatted content is ready, it is automatically saved into your connected Google Sheet.\n\n\ud83d\udccc What Gets Saved:\n\n* Blog title or URL\n* Extracted paragraphs that mention OpenAI\n* (Optional) Date or time for historical tracking\n\n\ud83d\udcca Why It\u2019s Useful:\n\n* \ud83d\udcc1 Centralized content in one place\n* \ud83d\udcc8 Enables easy data tracking, comparison, or sharing\n* \u2705 Great for building automated research reports\n\n\ud83c\udfaf Beginner Tip:\nYou can open the Google Sheet any time to view the results \u2014 no export needed!\n\n\n"
},
"typeVersion": 1
},
{
"id": "46d528b4-e68e-4f42-92cc-ec75d582348f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2360,
-1260
],
"parameters": {
"color": 4,
"width": 1300,
"height": 2220,
"content": "# \ud83e\udde0Track Brand Mentions Across Platforms\n\nThis automation scrapes a Medium blog post (you provide the URL) and pulls out content that mentions OpenAI, then stores it into Google Sheets.\n\nLet\u2019s break it down by sections \u2b07\ufe0f\n\n---\n\n## \ud83d\udd39 SECTION 1: Start the Workflow & Provide Input\n\n\ud83e\udde9 Nodes:\n\n* \ud83d\udd18 When clicking 'Execute workflow' \u2192 \u2705 Renamed: Start Manually\n* \ud83d\udcdd Edit Fields (Manual Input) \u2192 \u2705 Renamed: Set Medium Blog URL\n\n\ud83d\udca1 What This Does:\nYou start the workflow manually and provide the blog post URL from Medium. This is done using a simple field, so no coding is needed.\n\n\ud83d\udccc Example:\nYou paste a Medium blog URL like:\n\n```\nhttps://medium.com/some-author/the-future-of-openai-in-ai-innovation-abc123\n```\n\n\ud83d\udd0d Why It\u2019s Useful:\n\n* \ud83e\udde0 You can analyze any blog post from Medium.\n* \ud83e\uddd1\u200d\ud83d\udcbc Great for researchers, marketers, or founders tracking OpenAI mentions in the blogosphere.\n\n\ud83c\udfaf Beginner Tip:\nJust click \u25b6 Execute, then paste your Medium URL when prompted!\n\n---\n\n## \ud83e\udd16 SECTION 2: AI Agent Fetches & Filters Content\n\n\ud83e\udde9 Main Node:\n\n* \ud83e\udd16 AI Agent \u2192 \u2705 Renamed: Scrape Blog for OpenAI Mentions\n\n\ud83d\udd27 Sub-Nodes Connected:\n\n* \ud83e\udde0 OpenAI Chat Model \u2192 Processes your goal (e.g., \u201cFind OpenAI mentions\u201d)\n* \ud83c\udf10 MCP Client (Tool: scrape\\_as\\_markdown) \u2192 Actually visits and scrapes the Medium post\n* \ud83e\uddfe Structured Output Parser \u2192 Formats the scraped content into clean, structured data\n\n\ud83d\udca1 What This Does:\nThis is the powerhouse of your workflow! Here's what happens:\n\n1. The AI Agent receives your input (blog URL and goal).\n2. It activates a special scraping tool via Bright Data MCP called scrape\\_as\\_markdown.\n3. The AI intelligently finds paragraphs or sections that mention OpenAI.\n4. The result is then parsed into structured, easy-to-read text.\n\n\ud83d\udd0d Why It\u2019s Useful:\n\n* \ud83d\udd2c No more reading entire blogs manually\u2014get only the content that matters.\n* \ud83e\udde0 Uses ChatGPT to understand meaning, not just raw keyword match.\n* \ud83d\udd75\ufe0f Perfect for media monitoring, market research, and trend tracking.\n\n\ud83c\udfaf Beginner Tip:\nYou don\u2019t need to worry about scraping or code. The AI + MCP handle everything behind the scenes!\n\n---\n\n## \ud83d\udcca SECTION 3: Store the Results in Google Sheets\n\n\ud83e\udde9 Node:\n\n* \ud83d\udcc4 Google Sheets (Append Row) \u2192 \u2705 Renamed: Save to Google Sheets\n\n\ud83d\udca1 What This Does:\nOnce the filtered and formatted content is ready, it is automatically saved into your connected Google Sheet.\n\n\ud83d\udccc What Gets Saved:\n\n* Blog title or URL\n* Extracted paragraphs that mention OpenAI\n* (Optional) Date or time for historical tracking\n\n\ud83d\udcca Why It\u2019s Useful:\n\n* \ud83d\udcc1 Centralized content in one place\n* \ud83d\udcc8 Enables easy data tracking, comparison, or sharing\n* \u2705 Great for building automated research reports\n\n\ud83c\udfaf Beginner Tip:\nYou can open the Google Sheet any time to view the results \u2014 no export needed!\n\n---\n\n## \u2705 Summary: Why This Workflow Rocks\n\n| Feature | Benefit |\n| ------------------------- | ----------------------------------- |\n| \ud83d\udd17 Input Any Blog | Works on any Medium URL |\n| \ud83e\udde0 AI + Bright Data MCP | Smart & human-like scraping |\n| \ud83d\udd0e Focused on \u201cOpenAI\u201d | Filters only relevant content |\n| \ud83d\udcca Saves to Google Sheets | Easy analysis, no manual copy/paste |\n\n\n"
},
"typeVersion": 1
},
{
"id": "ec93ef06-2418-4677-bb49-332d308b7506",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2360,
-1620
],
"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": "d33d3c54-def3-4bc7-869d-85707bdb4106",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1080,
-740
],
"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
},
{
"id": "01b7e9dd-992f-463f-819a-7c9e36a219d4",
"name": "Auto-fixing Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
400,
160
],
"parameters": {
"options": {
"prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:"
}
},
"typeVersion": 1
},
{
"id": "7a9c56b5-5d2a-478d-b3fc-61e5e4f7526e",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
440,
360
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "e193f7ea-5ff7-4b9a-816d-3e9a58043ce3",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
600,
340
],
"parameters": {
"jsonSchemaExample": "{\n \"platform\": \"Blog\",\n \"author\": \"Sam Enfield\",\n \"title\": \"Why OpenAI Suddenly Erased Jony Ive from their Website\",\n \"content summary\": \"The article discusses a vanished partnership between OpenAI and Jony Ive, Apple's legendary designer behind iconic products like the iMac, iPod, iPhone, iPad, and Apple Watch. The collaboration aimed to create a sleek, intuitive AI consumer device dubbed the \\\"iPhone of artificial intelligence,\\\" backed by billions in funding and design philosophy from Apple. However, all traces of this collaboration suddenly disappeared online\u2014blog posts, announcement videos, promotional pages, and introductions were deleted or wiped clean. The article reveals that this abrupt removal is linked to a trademark lawsuit that emerged, reshaping the future of AI.\",\n \"sentiment\": \"Negative\"\n}\n"
},
"typeVersion": 1.3
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "05587a39-880b-47c6-ba10-78aa1462d36c",
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"\ud83c\udf10 Bright Data Tool": {
"ai_tool": [
[
{
"node": "\ud83e\udd16 Agent: Scrape Medium Blog (OpenAI Mentions)",
"type": "ai_tool",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "\ud83e\udd16 Agent: Scrape Medium Blog (OpenAI Mentions)",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"\ud83e\udde0 Chat Reasoning Engine": {
"ai_languageModel": [
[
{
"node": "\ud83e\udd16 Agent: Scrape Medium Blog (OpenAI Mentions)",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"\ud83d\udcdd Define Medium Blog URL": {
"main": [
[
{
"node": "\ud83e\udd16 Agent: Scrape Medium Blog (OpenAI Mentions)",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\ude80 Start Workflow (Manual Trigger)": {
"main": [
[
{
"node": "\ud83d\udcdd Define Medium Blog URL",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\udd16 Agent: Scrape Medium Blog (OpenAI Mentions)": {
"main": [
[
{
"node": "\ud83d\udce5 Save Results to Google Sheets",
"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.
googleSheetsOAuth2ApimcpClientApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Source: https://n8n.io/workflows/5951/ — 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 monitors competitor social media engagement on LinkedIn to track their content performance and posting strategies. It saves you time by eliminating the need to manually che
This workflow automatically identifies and tracks backlink opportunities by analyzing competitor link profiles and finding potential linking websites. It saves you time by eliminating the need to manu
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.