This workflow corresponds to n8n.io template #5969 — we link there as the canonical source.
This workflow follows the Agent → Gmail 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": "uYgR0foKaUfC5jnc",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "26 Monitor Competitor Product Launches",
"tags": [],
"nodes": [
{
"id": "4a5fffa9-521c-493a-83b1-0dce9f21ad07",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
400,
260
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "811e3e3e-27b0-4a2c-b1ee-423e4945b2a9",
"name": "MCP Client",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
580,
260
],
"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": "1caf6cda-6cdc-4a2a-88be-a19d4ee3db62",
"name": "\u23f0 Daily Check (7AM)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-40,
0
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "8cca72fa-6a09-42b5-93a7-3a5cd166fd5c",
"name": "\ud83d\udee0 Set Scrape Target (Verge Reviews)",
"type": "n8n-nodes-base.set",
"position": [
160,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1b2cc621-f0c5-43e1-bcd4-72850ac2bc57",
"name": "url",
"type": "string",
"value": "https://www.theverge.com/reviews"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "fa11746e-f206-4053-9709-863aa79f968c",
"name": "\ud83e\udd16 Bright Data Scraper Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
440,
0
],
"parameters": {
"text": "=Use Bright Data Web Unlocker to scrape the latest product titles, release dates, and brief summaries from the following url.\n\nURL: {{ $json.url }}",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "db8d08ef-9521-4fc1-a8c9-96a1f848e7db",
"name": "\ud83e\uddfe Split & Format Each Review",
"type": "n8n-nodes-base.code",
"position": [
900,
0
],
"parameters": {
"jsCode": "// Sample input data from previous node\nconst items = $json[\"output\"];\n\n// Emit each review as a single item\nreturn items.map(review => {\n return {\n json: {\n title: review.title,\n url: \"https://www.theverge.com\" + review.url,\n release_date: review.release_date,\n summary: review.summary\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "7d8d4349-8f85-42ce-9bf4-bf44da983838",
"name": "\ud83d\udce4 Email R&D: Product Alerts",
"type": "n8n-nodes-base.gmail",
"position": [
1200,
0
],
"parameters": {
"sendTo": "user@example.com",
"message": "=\ud83d\ude80 New Product Launch Spotted!\n\n\ud83d\udce6 Product: {{ $json.title }}\n\ud83d\uddd3 Release Date: {{ $json.release_date }}\n\ud83d\udcdd Summary: {{ $json.summary }}\n\ud83d\udd17 Read Full Review \u2192 {{ $json.url }}",
"options": {},
"subject": "=\ud83c\udd95 New Product Review: {{ $json.title }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "886e4fd7-d455-4ff8-a1d2-599b36b1de84",
"name": "\ud83d\udcca Log to Google Sheet (Review History)",
"type": "n8n-nodes-base.googleSheets",
"position": [
1400,
0
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $('\ud83e\uddfe Split & Format Each Review').item.json.url }}",
"TItle": "={{ $('\ud83e\uddfe Split & Format Each Review').item.json.title }}",
"Summary": "={{ $('\ud83e\uddfe Split & Format Each Review').item.json.summary }}",
"Release date": "={{ $('\ud83e\uddfe Split & Format Each Review').item.json.release_date }}"
},
"schema": [
{
"id": "TItle",
"type": "string",
"display": true,
"required": false,
"displayName": "TItle",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Release date",
"type": "string",
"display": true,
"required": false,
"displayName": "Release date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"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/1Q6QXNKq7hFBQ18oiJwbhaOGxZqI22-rlL-Wahtxprf4/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Q6QXNKq7hFBQ18oiJwbhaOGxZqI22-rlL-Wahtxprf4",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Q6QXNKq7hFBQ18oiJwbhaOGxZqI22-rlL-Wahtxprf4/edit?usp=drivesdk",
"cachedResultName": "Product Launches"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "49d63a3e-ba19-4832-a3e0-804b0b7cda1f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-1020
],
"parameters": {
"color": 2,
"width": 380,
"height": 1200,
"content": "## \ud83d\udd36 **SECTION 1: Schedule & Scrape Target Configuration**\n\n\ud83e\udde9 **Nodes:**\n\n* \u23f0 `Daily Check (7AM)`\n* \ud83d\udee0 `Set Scrape Target (Verge Reviews)`\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nThis section controls **when** and **what** to scrape.\n\n#### \u23f0 `Schedule Trigger`\n\n* Automatically runs the workflow **every morning at 7AM**.\n* No manual checking needed!\n\n#### \ud83d\udee0 `Edit Fields`\n\n* Sets the target scraping page:\n `https://www.theverge.com/reviews`\n* You can easily switch this to other competitor sites (like TechCrunch or Wired) later.\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nThis is where you **customize your intelligence source**. Just change the URL or keyword once \u2014 no coding needed.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "538873a8-6b8c-4d4c-8f18-76f06608766f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-1260
],
"parameters": {
"color": 3,
"width": 340,
"height": 1440,
"content": "## \ud83e\udd16 **SECTION 2: Agent-Powered Scraping with Bright Data**\n\n\ud83e\udde9 **Node:**\n\n* \ud83e\udd16 `Bright Data Scraper Agent`\n \ud83d\udd17 Sub-nodes:\n* \ud83d\udd2e OpenAI Chat Model\n* \ud83e\udde9 MCP Client (Bright Data Tool)\n* \ud83d\udce6 Structured Output Parser\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nThis is the **heart of the automation** \u2014 using a powerful AI agent connected to Bright Data\u2019s scraping infrastructure.\n\n#### \ud83e\udd16 `AI Agent`\n\n* Uses an **OpenAI agent** that understands your instructions.\n* Connects to **Bright Data MCP** to bypass anti-bot systems and extract clean product data.\n* Scrapes:\n\n * \ud83d\udce6 Product Title\n * \ud83d\udcc5 Release Date\n * \ud83d\udcdd Short Summary\n * \ud83d\udd17 URL (relative, so we'll fix that later)\n\n#### \ud83d\udce6 `Structured Output Parser`\n\n* Parses the AI agent\u2019s response into structured JSON \u2014 ready for automation.\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nEven a beginner can now use **AI + Bright Data** to scrape dynamic sites that normally block scrapers.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "4d739fed-0ccb-4d24-ab57-a15a98cbfcdc",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
820,
-1280
],
"parameters": {
"color": 6,
"width": 260,
"height": 1460,
"content": "## \ud83e\uddfe **SECTION 3: Split & Format Each Review**\n\n\ud83e\udde9 **Node:**\n\n* \ud83e\uddfe `Split & Format Each Review`\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nThis Code Node takes the array of product reviews and **splits them into one item each**.\n\n#### Code Features:\n\n* Converts relative URLs to full links (e.g., `/xyz` \u2192 `https://www.theverge.com/xyz`)\n* Outputs 10 clean JSON objects, one per review.\n\n```javascript\nreturn items.map(review => {\n return {\n json: {\n title: review.title,\n url: \"https://www.theverge.com\" + review.url,\n release_date: review.release_date,\n summary: review.summary\n }\n };\n});\n```\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nThis lets you send **individual emails** and store **individual entries** \u2014 great for reporting, filtering, and team alerts.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "1f97d84b-4459-4ad2-985f-41cf54736d88",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1160,
-1260
],
"parameters": {
"color": 5,
"width": 380,
"height": 1440,
"content": "## \u2709\ufe0f\ud83d\udcca **SECTION 4: Notify & Log the Insights**\n\n\ud83e\udde9 **Nodes:**\n\n* \u2709\ufe0f `Email R&D: Product Alerts`\n* \ud83d\udcc4 `Log to Google Sheet (Review History)`\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nNow that the data is cleaned and structured, we act on it:\n\n#### \u2709\ufe0f Gmail Node\n\n* Sends **one beautiful email per product** to the R\\&D team.\n* Contains:\n\n * Product title\n * Release date\n * Summary\n * Link to full article\n* Uses HTML formatting for clarity.\n\n#### \ud83d\udcc4 Google Sheets Node\n\n* Appends each product to a sheet.\n* Serves as a **history log** to:\n\n * Track past launches\n * Prevent duplicate alerts\n * Enable analysis later\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nYour R\\&D team gets **instant alerts** about what competitors are launching \u2014 and you get a **central record** to refer to anytime.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "63166a87-d9a0-48bf-8e93-e36530596a68",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1620,
-1260
],
"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": "16610325-42f6-4838-83f0-82226303a119",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1780,
-1020
],
"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": "4dc735bf-5798-429b-904a-9819457ce281",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1780,
-680
],
"parameters": {
"color": 4,
"width": 1289,
"height": 3978,
"content": "# \ud83d\udee0\ufe0f Monitor Competitor Product Launches (The Verge)\n\n> \ud83d\udd04 Automated n8n workflow using Bright Data MCP to scrape reviews & notify R\\&D team\n\n---\n\n## \ud83d\udd36 **SECTION 1: Schedule & Scrape Target Configuration**\n\n\ud83e\udde9 **Nodes:**\n\n* \u23f0 `Daily Check (7AM)`\n* \ud83d\udee0 `Set Scrape Target (Verge Reviews)`\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nThis section controls **when** and **what** to scrape.\n\n#### \u23f0 `Schedule Trigger`\n\n* Automatically runs the workflow **every morning at 7AM**.\n* No manual checking needed!\n\n#### \ud83d\udee0 `Edit Fields`\n\n* Sets the target scraping page:\n `https://www.theverge.com/reviews`\n* You can easily switch this to other competitor sites (like TechCrunch or Wired) later.\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nThis is where you **customize your intelligence source**. Just change the URL or keyword once \u2014 no coding needed.\n\n---\n\n## \ud83e\udd16 **SECTION 2: Agent-Powered Scraping with Bright Data**\n\n\ud83e\udde9 **Node:**\n\n* \ud83e\udd16 `Bright Data Scraper Agent`\n \ud83d\udd17 Sub-nodes:\n* \ud83d\udd2e OpenAI Chat Model\n* \ud83e\udde9 MCP Client (Bright Data Tool)\n* \ud83d\udce6 Structured Output Parser\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nThis is the **heart of the automation** \u2014 using a powerful AI agent connected to Bright Data\u2019s scraping infrastructure.\n\n#### \ud83e\udd16 `AI Agent`\n\n* Uses an **OpenAI agent** that understands your instructions.\n* Connects to **Bright Data MCP** to bypass anti-bot systems and extract clean product data.\n* Scrapes:\n\n * \ud83d\udce6 Product Title\n * \ud83d\udcc5 Release Date\n * \ud83d\udcdd Short Summary\n * \ud83d\udd17 URL (relative, so we'll fix that later)\n\n#### \ud83d\udce6 `Structured Output Parser`\n\n* Parses the AI agent\u2019s response into structured JSON \u2014 ready for automation.\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nEven a beginner can now use **AI + Bright Data** to scrape dynamic sites that normally block scrapers.\n\n---\n\n## \ud83e\uddfe **SECTION 3: Split & Format Each Review**\n\n\ud83e\udde9 **Node:**\n\n* \ud83e\uddfe `Split & Format Each Review`\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nThis Code Node takes the array of product reviews and **splits them into one item each**.\n\n#### Code Features:\n\n* Converts relative URLs to full links (e.g., `/xyz` \u2192 `https://www.theverge.com/xyz`)\n* Outputs 10 clean JSON objects, one per review.\n\n```javascript\nreturn items.map(review => {\n return {\n json: {\n title: review.title,\n url: \"https://www.theverge.com\" + review.url,\n release_date: review.release_date,\n summary: review.summary\n }\n };\n});\n```\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nThis lets you send **individual emails** and store **individual entries** \u2014 great for reporting, filtering, and team alerts.\n\n---\n\n## \u2709\ufe0f\ud83d\udcca **SECTION 4: Notify & Log the Insights**\n\n\ud83e\udde9 **Nodes:**\n\n* \u2709\ufe0f `Email R&D: Product Alerts`\n* \ud83d\udcc4 `Log to Google Sheet (Review History)`\n\n---\n\n### \ud83e\udde0 What\u2019s Happening:\n\nNow that the data is cleaned and structured, we act on it:\n\n#### \u2709\ufe0f Gmail Node\n\n* Sends **one beautiful email per product** to the R\\&D team.\n* Contains:\n\n * Product title\n * Release date\n * Summary\n * Link to full article\n* Uses HTML formatting for clarity.\n\n#### \ud83d\udcc4 Google Sheets Node\n\n* Appends each product to a sheet.\n* Serves as a **history log** to:\n\n * Track past launches\n * Prevent duplicate alerts\n * Enable analysis later\n\n---\n\n### \ud83d\udca1 Why it matters:\n\nYour R\\&D team gets **instant alerts** about what competitors are launching \u2014 and you get a **central record** to refer to anytime.\n\n---\n\n## \ud83c\udfaf Final Thoughts\n\nEven if you\u2019re a complete beginner:\n\n* You don\u2019t need to write code (just paste small pieces).\n* You\u2019re scraping dynamic sites legally & cleanly via Bright Data.\n* You\u2019re using AI + n8n to automate competitive intelligence.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "b734d682-96ea-4a55-8bfd-1ee0a54fee25",
"name": "Auto-fixing Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
720,
260
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "12810685-db1c-41b4-a45b-75eb17e62837",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
700,
480
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "76e60d57-1853-45ab-809c-457d8f425765",
"name": "Structured Output Parser1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
860,
480
],
"parameters": {
"jsonSchemaExample": "[\n {\n \"title\": \"The best earbuds we\u2019ve tested for 2025\",\n \"url\": \"https://www.theverge.com/21309820/best-wireless-earbuds\",\n \"release_date\": \"2025-07-04\",\n \"summary\": \"This review highlights the best earbuds from brands like Apple, Bose, Samsung, and Sony, suited for various preferences.\"\n },\n {\n \"title\": \"The Loop Micro is my new favorite bicycle phone mount\",\n \"url\": \"https://www.theverge.com/reviews/697356/loop-micro-best-bike-mount-review\",\n \"release_date\": \"2025-07-04\",\n \"summary\": \"The Loop Micro is praised for its design and functionality, ideally suited for cyclists wanting to mount their phones securely.\"\n },\n {\n \"title\": \"The best robot vacuum and mop to buy right now\",\n \"url\": \"https://www.theverge.com/tech/625409/best-robot-vacuum-mops\",\n \"release_date\": \"2025-07-03\",\n \"summary\": \"A comparison of the top robot vacuum and mop combos available, offering insights on their cleaning capabilities.\"\n },\n {\n \"title\": \"Whoop MG review: a big whoop for a small crowd\",\n \"url\": \"https://www.theverge.com/fitness-tracker-review/696156/whoop-mg-review-wearables-fitness-tracker-health\",\n \"release_date\": \"2025-07-03\",\n \"summary\": \"The Whoop MG wearable is evaluated, targeting athletes specifically, and the review discusses its features and effectiveness.\"\n },\n {\n \"title\": \"Nothing Headphone 1 review: head-turning\",\n \"url\": \"https://www.theverge.com/headphone-review/695609/nothing-headphone-1-review\",\n \"release_date\": \"2025-07-01\",\n \"summary\": \"This review assesses the Nothing Headphone 1, exploring its design and tech, and notes its distinctive style among Bluetooth headphones.\"\n }\n]\n"
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "2c5d01ae-eba8-436c-9982-8c1af7540427",
"connections": {
"MCP Client": {
"ai_tool": [
[
{
"node": "\ud83e\udd16 Bright Data Scraper Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "\ud83e\udd16 Bright Data Scraper Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"\u23f0 Daily Check (7AM)": {
"main": [
[
{
"node": "\ud83d\udee0 Set Scrape Target (Verge Reviews)",
"type": "main",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "\ud83e\udd16 Bright Data Scraper Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser1": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"\ud83d\udce4 Email R&D: Product Alerts": {
"main": [
[
{
"node": "\ud83d\udcca Log to Google Sheet (Review History)",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\udd16 Bright Data Scraper Agent": {
"main": [
[
{
"node": "\ud83e\uddfe Split & Format Each Review",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\uddfe Split & Format Each Review": {
"main": [
[
{
"node": "\ud83d\udce4 Email R&D: Product Alerts",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udee0 Set Scrape Target (Verge Reviews)": {
"main": [
[
{
"node": "\ud83e\udd16 Bright Data Scraper Agent",
"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.
gmailOAuth2googleSheetsOAuth2ApimcpClientApiopenAiApi
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/5969/ — 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.
Note: This template is for self-hosted n8n instances only
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.
This workflow automatically monitors social media advertising performance across platforms to track campaign effectiveness and ROI. It saves you time by eliminating the need to manually check multiple