This workflow corresponds to n8n.io template #12283 — 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": "tklujyY0Dvaq2KXp",
"name": "AI-Driven Brand Reputation Monitoring and Crisis Detection",
"tags": [],
"nodes": [
{
"id": "298a1f62-ab2c-4b2c-930b-5ff9f8cb90e4",
"name": "Schedule Monitoring",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-448,
384
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 15
}
]
}
},
"typeVersion": 1.3
},
{
"id": "4070599d-577f-4b3e-a37b-6b37e4ef0d11",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
-224,
384
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "brandName",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Your brand name__>"
},
{
"id": "id-2",
"name": "newsApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__News API endpoint URL__>"
},
{
"id": "id-3",
"name": "socialApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Social media API endpoint URL__>"
},
{
"id": "id-4",
"name": "reviewsApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Reviews API endpoint URL__>"
},
{
"id": "id-5",
"name": "forumsApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Forums/Reddit API endpoint URL__>"
},
{
"id": "id-6",
"name": "crisisThreshold",
"type": "number",
"value": 0.7
},
{
"id": "id-7",
"name": "negativeThreshold",
"type": "number",
"value": 0.6
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "d5462008-70c7-4524-af46-94c67b47f464",
"name": "Fetch News Articles",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
176
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.newsApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $('Workflow Configuration').first().json.brandName }}"
},
{
"name": "sortBy",
"value": "publishedAt"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "375759ca-0b33-45b5-b4d4-0e680a2a8f51",
"name": "Fetch Social Media Mentions",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
336
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.socialApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "query",
"value": "={{ $('Workflow Configuration').first().json.brandName }}"
},
{
"name": "type",
"value": "recent"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "e6a1a0a2-d398-48ba-a1b6-e651b44b606a",
"name": "Fetch Online Reviews",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
480
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.reviewsApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "business",
"value": "={{ $('Workflow Configuration').first().json.brandName }}"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "0b6262f8-86a1-41ff-b2a8-030f3b802b9d",
"name": "Fetch Forum Discussions",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
672
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.forumsApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $('Workflow Configuration').first().json.brandName }}"
},
{
"name": "sort",
"value": "new"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "ceee0c32-241a-4ee3-b062-98b767831069",
"name": "Combine All Sources",
"type": "n8n-nodes-base.merge",
"position": [
224,
192
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3.2
},
{
"id": "71d9a108-b2ff-4aac-9aa5-ddb081d48ff2",
"name": "Normalize Data Structure",
"type": "n8n-nodes-base.set",
"position": [
448,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "={{ $json.source || 'unknown' }}"
},
{
"id": "id-2",
"name": "content",
"type": "string",
"value": "={{ $json.text || $json.content || $json.description || $json.body || '' }}"
},
{
"id": "id-3",
"name": "title",
"type": "string",
"value": "={{ $json.title || $json.subject || '' }}"
},
{
"id": "id-4",
"name": "url",
"type": "string",
"value": "={{ $json.url || $json.link || '' }}"
},
{
"id": "id-5",
"name": "publishedAt",
"type": "string",
"value": "={{ $json.publishedAt || $json.created_at || $json.timestamp || new Date().toISOString() }}"
},
{
"id": "id-6",
"name": "author",
"type": "string",
"value": "={{ $json.author || $json.username || 'anonymous' }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "2139a939-c81a-452b-9d79-89995a2b9053",
"name": "Sentiment & Trend Analysis Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
672,
192
],
"parameters": {
"text": "=Analyze the following brand mentions and provide comprehensive insights:\n\n{{ JSON.stringify($input.all()) }}",
"options": {
"systemMessage": "You are an expert brand reputation analyst specializing in sentiment analysis, trend detection, and crisis identification.\n\nYour task is to:\n1. Analyze sentiment for each mention (positive, negative, neutral) with confidence scores\n2. Identify emerging trends, topics, and patterns across all sources\n3. Detect potential PR crises based on:\n - High volume of negative sentiment\n - Rapid spread of negative mentions\n - Mentions of sensitive topics (lawsuits, scandals, safety issues, discrimination)\n - Coordinated negative campaigns\n4. Calculate overall sentiment score and volume metrics\n5. Identify key influencers and high-impact mentions\n6. Provide actionable recommendations for marketing and customer experience teams\n\nReturn structured analysis with clear metrics and insights."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "b0e41626-3495-4dc9-bb73-2f8c0304de12",
"name": "OpenAI GPT-4",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
624,
448
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "gpt-4o"
},
"options": {
"temperature": 0.3
},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "f98df8ba-22a4-4dfc-aaaf-1f1e90f72d10",
"name": "Structured Analysis Output",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
808,
416
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"overallSentiment\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Overall sentiment: positive, negative, or neutral\"\n\t\t},\n\t\t\"sentimentScore\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"description\": \"Sentiment score from -1 (very negative) to 1 (very positive)\"\n\t\t},\n\t\t\"totalMentions\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"description\": \"Total number of mentions analyzed\"\n\t\t},\n\t\t\"positiveMentions\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"description\": \"Count of positive mentions\"\n\t\t},\n\t\t\"negativeMentions\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"description\": \"Count of negative mentions\"\n\t\t},\n\t\t\"neutralMentions\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"description\": \"Count of neutral mentions\"\n\t\t},\n\t\t\"isCrisis\": {\n\t\t\t\"type\": \"boolean\",\n\t\t\t\"description\": \"Whether a potential PR crisis has been detected\"\n\t\t},\n\t\t\"crisisLevel\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Crisis severity: low, medium, high, critical\"\n\t\t},\n\t\t\"crisisReasons\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"description\": \"List of reasons for crisis detection\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t},\n\t\t\"emergingTrends\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"description\": \"List of emerging trends and topics\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t},\n\t\t\"keyInfluencers\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"description\": \"List of influential accounts or sources\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t},\n\t\t\"recommendations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"description\": \"Actionable recommendations for teams\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t},\n\t\t\"topNegativeIssues\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"description\": \"Top negative issues mentioned\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}"
},
"typeVersion": 1.3
},
{
"id": "980ba1c6-95a0-4993-8389-e68727d445e7",
"name": "Check for Crisis",
"type": "n8n-nodes-base.if",
"position": [
1088,
224
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "id-1",
"operator": {
"type": "boolean",
"operation": "true"
},
"leftValue": "={{ $json.isCrisis }}"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "80e374ce-b931-4612-a5a9-7834f73e20e4",
"name": "Send Crisis Alert to Slack",
"type": "n8n-nodes-base.slack",
"position": [
1360,
224
],
"parameters": {
"text": "=\ud83d\udea8 *BRAND REPUTATION CRISIS ALERT* \ud83d\udea8\n\n*Crisis Level:* {{ $json.crisisLevel }}\n*Overall Sentiment:* {{ $json.overallSentiment }} (Score: {{ $json.sentimentScore }})\n*Total Mentions:* {{ $json.totalMentions }}\n*Negative Mentions:* {{ $json.negativeMentions }}\n\n*Crisis Reasons:*\n{{ $json.crisisReasons.map(r => '\u2022 ' + r).join('\\n') }}\n\n*Top Negative Issues:*\n{{ $json.topNegativeIssues.map(i => '\u2022 ' + i).join('\\n') }}\n\n*Recommendations:*\n{{ $json.recommendations.map(r => '\u2022 ' + r).join('\\n') }}\n\n_Immediate action required. Review full dashboard for details._",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "<__PLACEHOLDER_VALUE__Slack channel ID or name__>"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.4
},
{
"id": "b5d3a987-28b9-4282-93e9-56b99f02dab2",
"name": "Send Crisis Alert Email",
"type": "n8n-nodes-base.gmail",
"position": [
1360,
416
],
"parameters": {
"sendTo": "<__PLACEHOLDER_VALUE__Crisis alert email recipients__>",
"message": "=<h2 style=\"color: #d32f2f;\">\ud83d\udea8 BRAND REPUTATION CRISIS ALERT</h2>\n\n<p><strong>Crisis Level:</strong> {{ $json.crisisLevel }}</p>\n<p><strong>Overall Sentiment:</strong> {{ $json.overallSentiment }} (Score: {{ $json.sentimentScore }})</p>\n<p><strong>Total Mentions:</strong> {{ $json.totalMentions }}</p>\n<p><strong>Negative Mentions:</strong> {{ $json.negativeMentions }}</p>\n\n<h3>Crisis Reasons:</h3>\n<ul>\n{{ $json.crisisReasons.map(r => '<li>' + r + '</li>').join('') }}\n</ul>\n\n<h3>Top Negative Issues:</h3>\n<ul>\n{{ $json.topNegativeIssues.map(i => '<li>' + i + '</li>').join('') }}\n</ul>\n\n<h3>Recommendations:</h3>\n<ul>\n{{ $json.recommendations.map(r => '<li>' + r + '</li>').join('') }}\n</ul>\n\n<p><em>Immediate action required. Review full monitoring dashboard for complete details.</em></p>",
"options": {},
"subject": "=\ud83d\udea8 URGENT: Brand Reputation Crisis Detected - {{ $json.crisisLevel }} Level"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "048fee79-03a4-48b0-a683-c5f50c1fd009",
"name": "Log to Monitoring Dashboard",
"type": "n8n-nodes-base.googleSheets",
"position": [
1360,
608
],
"parameters": {
"columns": {
"value": null,
"mappingMode": "autoMapInputData"
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "<__PLACEHOLDER_VALUE__Sheet name for monitoring data__>"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "<__PLACEHOLDER_VALUE__Google Sheets document ID__>"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "598502c3-204c-4358-804e-f06b06355c4a",
"name": "Prepare Dashboard Data",
"type": "n8n-nodes-base.set",
"position": [
1088,
384
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "timestamp",
"type": "string",
"value": "={{ new Date().toISOString() }}"
},
{
"id": "id-2",
"name": "date",
"type": "string",
"value": "={{ new Date().toLocaleDateString() }}"
},
{
"id": "id-3",
"name": "time",
"type": "string",
"value": "={{ new Date().toLocaleTimeString() }}"
},
{
"id": "id-4",
"name": "brandName",
"type": "string",
"value": "={{ $('Workflow Configuration').first().json.brandName }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "5da4965c-a124-4a5e-b57d-a691161cbb04",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-432,
-208
],
"parameters": {
"width": 848,
"height": 224,
"content": "## How It Works\nThis workflow automates brand reputation monitoring by analyzing sentiment across news, social media, reviews, and forums using AI-powered trend detection. Designed for PR teams, brand managers, marketing directors, and crisis communication specialists requiring real-time awareness of reputation threats before they escalate.The template solves the challenge of manually tracking brand mentions across fragmented channels, news outlets, Twitter, Instagram, review sites, Reddit, industry forums, then identifying emerging crises hidden in sentiment shifts and volume spikes.Scheduled execution triggers four parallel HTTP nodes fetching data from news APIs, social media monitoring services, review aggregators, and forum discussion platforms. Merge node combines all sources, then normalization ensures consistent data structure. OpenAI GPT-4 with structured output parsing performs sophisticated sentiment analysis and trend detection "
},
"typeVersion": 1
},
{
"id": "48eb1320-cf6b-4def-9ff5-13150f0bbbcf",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
848,
-288
],
"parameters": {
"color": 3,
"width": 400,
"height": 336,
"content": "## Prerequisites\nOpenAI API key, news monitoring API access\n## Use Cases\nConsumer brands monitoring product launch reception and identifying quality issues early\n## Customization\nModify AI prompts for industry-specific crisis indicators\n## Benefits\nReduces crisis detection time from hours to minutes enabling damage control before viral spread"
},
"typeVersion": 1
},
{
"id": "ac059d01-7eb6-4b3c-952d-36596e915a8e",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
-208
],
"parameters": {
"width": 352,
"height": 272,
"content": "## Setup Steps\n1. Configure HTTP nodes with API credentials for news monitoring service \n2. Add OpenAI API key to Chat Model node for sentiment and trend analysis\n3. Connect Slack workspace and specify crisis response team channel \n4. Integrate Gmail account with PR leadership distribution list \n5. Set up Google Sheets connection and create monitoring dashboard "
},
"typeVersion": 1
},
{
"id": "f13edd3c-8041-4116-b405-2f5406b92704",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
992,
96
],
"parameters": {
"color": 7,
"width": 608,
"height": 752,
"content": "## **Crisis Response**\n**What:** IF node flags high-severity crises, triggering Slack and Gmail alerts \n**Why:** Immediate alerts enable rapid response to prevent reputation damage "
},
"typeVersion": 1
},
{
"id": "e339b31c-2452-4c05-986b-dc4d5b7cd40e",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
96
],
"parameters": {
"color": 7,
"width": 800,
"height": 704,
"content": "## **Analysis & Scoring**\n**What:** Merge combines streams, normalization standardizes data, then GPT-4 analyzes sentiment trends \n**Why:** AI uncovers subtle crisis indicators missed by rule-based systems "
},
"typeVersion": 1
},
{
"id": "2f9a4305-1f4d-4f72-bee3-8d258367d31d",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
96
],
"parameters": {
"color": 7,
"width": 688,
"height": 704,
"content": "## **Data Collection**\n**What:** Schedule triggers monitoring; four HTTP nodes fetch brand mentions from news APIs \n**Why:** Multi-channel collection ensures full coverage of reputation risks "
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "bb7ba338-6609-4142-9086-7b7d362aef2a",
"connections": {
"OpenAI GPT-4": {
"ai_languageModel": [
[
{
"node": "Sentiment & Trend Analysis Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Check for Crisis": {
"main": [
[
{
"node": "Send Crisis Alert to Slack",
"type": "main",
"index": 0
},
{
"node": "Send Crisis Alert Email",
"type": "main",
"index": 0
}
]
]
},
"Combine All Sources": {
"main": [
[
{
"node": "Normalize Data Structure",
"type": "main",
"index": 0
}
]
]
},
"Fetch News Articles": {
"main": [
[
{
"node": "Combine All Sources",
"type": "main",
"index": 0
}
]
]
},
"Schedule Monitoring": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"Prepare Dashboard Data": {
"main": [
[
{
"node": "Log to Monitoring Dashboard",
"type": "main",
"index": 0
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Fetch News Articles",
"type": "main",
"index": 0
},
{
"node": "Fetch Social Media Mentions",
"type": "main",
"index": 0
},
{
"node": "Fetch Online Reviews",
"type": "main",
"index": 0
},
{
"node": "Fetch Forum Discussions",
"type": "main",
"index": 0
}
]
]
},
"Normalize Data Structure": {
"main": [
[
{
"node": "Sentiment & Trend Analysis Agent",
"type": "main",
"index": 0
}
]
]
},
"Structured Analysis Output": {
"ai_outputParser": [
[
{
"node": "Sentiment & Trend Analysis Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Fetch Social Media Mentions": {
"main": [
[
{
"node": "Combine All Sources",
"type": "main",
"index": 1
}
]
]
},
"Sentiment & Trend Analysis Agent": {
"main": [
[
{
"node": "Check for Crisis",
"type": "main",
"index": 0
},
{
"node": "Prepare Dashboard Data",
"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.
gmailOAuth2googleSheetsOAuth2ApiopenAiApislackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates brand reputation monitoring by analyzing sentiment across news, social media, reviews, and forums using AI-powered trend detection. Designed for PR teams, brand managers, marketing directors, and crisis communication specialists requiring real-time…
Source: https://n8n.io/workflows/12283/ — 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 n8n automation workflow automates the creation, scripting, production, and posting of YouTube videos. It leverages AI (OpenAI), image generation (PIAPI), video rendering (Shotstack), and platform
Created by: Peyton Leveillee Last updated: October 2025
SEO Blog Article Generation Workflow. Uses outputParserStructured, httpRequest, agent, lmChatOpenAi. Scheduled trigger; 56 nodes.
This workflow was born out of a very real problem.
This workflow automates end-to-end sustainability lifecycle management for corporate sustainability teams, ESG governance officers, and circular economy programme leads. It addresses the challenge of