This workflow corresponds to n8n.io template #4280 — we link there as the canonical source.
This workflow follows the Chainllm → Chainsummarization 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": "zwjbwtOLKbB9k1df",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "TrustPilot SaaS Product Review Tracker with Bright Data & OpenAI",
"tags": [
{
"id": "Kujft2FOjmOVQAmJ",
"name": "Engineering",
"createdAt": "2025-04-09T01:31:00.558Z",
"updatedAt": "2025-04-09T01:31:00.558Z"
},
{
"id": "ZOwtAMLepQaGW76t",
"name": "Building Blocks",
"createdAt": "2025-04-13T15:23:40.462Z",
"updatedAt": "2025-04-13T15:23:40.462Z"
},
{
"id": "ddPkw7Hg5dZhQu2w",
"name": "AI",
"createdAt": "2025-04-13T05:38:08.053Z",
"updatedAt": "2025-04-13T05:38:08.053Z"
}
],
"nodes": [
{
"id": "61361e03-f532-48ff-bea7-9902ec770ecc",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1700,
-210
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f962255b-66cc-43a6-8d56-ce12905a03cf",
"name": "Set URL and Bright Data Zone",
"type": "n8n-nodes-base.set",
"position": [
-1480,
-210
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "3aedba66-f447-4d7a-93c0-8158c5e795f9",
"name": "url",
"type": "string",
"value": "https://www.trustpilot.com/review/brightdata.com"
},
{
"id": "4e7ee31d-da89-422f-8079-2ff2d357a0ba",
"name": "zone",
"type": "string",
"value": "web_unlocker1"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6b1c8aa5-143f-47cd-acb4-f377fdbb5e66",
"name": "Perform Bright Data Web Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1260,
-210
],
"parameters": {
"url": "https://api.brightdata.com/request",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "zone",
"value": "={{ $json.zone }}"
},
{
"name": "url",
"value": "={{ $json.url }}"
},
{
"name": "format",
"value": "raw"
},
{
"name": "data_format",
"value": "markdown"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "1c6175c1-2378-4c5e-99ea-20f2e3150ae3",
"name": "Markdown to Textual Data Extractor",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-1040,
-210
],
"parameters": {
"text": "=You need to analyze the below markdown and convert to textual data. Please do not output with your own thoughts. Make sure to output with textual data only with no links, scripts, css etc.\n\n{{ $json.data }}",
"messages": {
"messageValues": [
{
"message": "You are a markdown expert"
}
]
},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "d6202509-b9ba-4c34-96b7-c1dde45db533",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1720,
-640
],
"parameters": {
"width": 400,
"height": 320,
"content": "## Note\n\nDeals with the Trust Pilot data extraction and summarization by utilizing the Bright Data Web Unlocker Product.\n\n**Please make sure to set the TrustPilot URL with the Bright Data zone name. Also update the Webhook Notification URL of your interest**"
},
"typeVersion": 1
},
{
"id": "be54db23-e209-4f46-af32-9adb8d19bac9",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1260,
-640
],
"parameters": {
"width": 480,
"height": 320,
"content": "## LLM Usages\n\nOpenAI GPT 4o model is being used.\n\nBasic LLM Chain for converting the markdown to textual content.\n\nInformation Extractor is being used for transforming the markdown to textual content. The Structured Data extraction is also done via the Information Extractor node.\n\nSummarization Chain is being used for creating a summary of the extracted Crunchbase textual content."
},
"typeVersion": 1
},
{
"id": "16abf06e-1974-47c0-9b38-78c58053c54b",
"name": "Structured JSON Data Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-580,
40
],
"parameters": {
"text": "=Extract the review mentioned below\n\n {{ $json.text }}",
"options": {},
"schemaType": "fromJson",
"jsonSchemaExample": "{\n \"@context\": \"https://schema.org\",\n \"@type\": \"Organization\",\n \"name\": \"Bright Data\",\n \"url\": \"https://brightdata.com\",\n \"logo\": \"https://brightdata.com/assets/logo.png\",\n \"sameAs\": [\n \"https://www.trustpilot.com/review/brightdata.com\"\n ],\n \"description\": \"Bright Data, the world's #1 web data platform, simplifies the hard work of collecting & preparing web data through SaaS, providing ethical, high-speed, and compliant proxy solutions.\",\n \"address\": {\n \"@type\": \"PostalAddress\",\n \"streetAddress\": \"4 Hamahshev\",\n \"addressLocality\": \"Netanya\",\n \"postalCode\": \"4250714\",\n \"addressCountry\": \"IL\"\n },\n \"contactPoint\": {\n \"@type\": \"ContactPoint\",\n \"email\": \"user@example.com\",\n \"contactType\": \"Customer Support\",\n \"availableLanguage\": [\"English\"]\n },\n \"aggregateRating\": {\n \"@type\": \"AggregateRating\",\n \"ratingValue\": \"4.3\",\n \"reviewCount\": 831,\n \"bestRating\": \"5\",\n \"worstRating\": \"1\"\n },\n \"review\": [\n {\n \"@type\": \"Review\",\n \"author\": {\n \"@type\": \"Person\",\n \"name\": \"Ranjit Wankhede\"\n },\n \"datePublished\": \"2025-04-29\",\n \"reviewBody\": \"Incredible support and empathy. Shemi truly listened and understood my concerns, which made all the difference. I felt heard and cared for throughout the process. Outstanding service!\",\n \"reviewRating\": {\n \"@type\": \"Rating\",\n \"ratingValue\": \"5\",\n \"bestRating\": \"5\",\n \"worstRating\": \"1\"\n }\n }\n ]\n}\n"
},
"typeVersion": 1
},
{
"id": "7679de49-6ec5-4af2-9203-70e8f6f14f69",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
760,
-440
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "data",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"data"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_nPvcsXmsXJxWgcTjhAinEQ/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1wRJ1tInpPq35WJuKwWaD_nPvcsXmsXJxWgcTjhAinEQ",
"cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_nPvcsXmsXJxWgcTjhAinEQ/edit?usp=drivesdk",
"cachedResultName": "SaaS Product Review"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "e557ffcd-cf51-424c-acf7-3596fb7bb4f5",
"name": "Create a binary data for Structured Data Extract",
"type": "n8n-nodes-base.function",
"position": [
760,
-240
],
"parameters": {
"functionCode": "items[0].binary = {\n data: {\n data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n }\n};\nreturn items;"
},
"typeVersion": 1
},
{
"id": "e1d2fcab-c139-42df-95ca-ae8ab5aa8be2",
"name": "Write the structured content to disk",
"type": "n8n-nodes-base.readWriteFile",
"position": [
980,
-240
],
"parameters": {
"options": {},
"fileName": "=d:\\TrustPilot-StructuredData.json",
"operation": "write"
},
"typeVersion": 1
},
{
"id": "f01185d3-d41e-41a2-94fb-771eaf7d8f42",
"name": "Summarization Chain",
"type": "@n8n/n8n-nodes-langchain.chainSummarization",
"position": [
-460,
-640
],
"parameters": {
"options": {
"summarizationMethodAndPrompts": {
"values": {
"prompt": "Write a concise summary of the following:\n\n\n\"{text}\"\n\n\n",
"combineMapPrompt": "Write a concise summary of the following:\n\n\n\"{text}\"\n"
}
}
},
"chunkingMode": "advanced"
},
"typeVersion": 2
},
{
"id": "4579a12b-e6a7-4adb-8892-0bd3c4009e90",
"name": "Merge the responses",
"type": "n8n-nodes-base.merge",
"position": [
220,
-240
],
"parameters": {},
"typeVersion": 3.1
},
{
"id": "e310c62c-2ba4-4dbf-a47d-11b75e6e0e2c",
"name": "Code to extract the first element",
"type": "n8n-nodes-base.code",
"position": [
-140,
40
],
"parameters": {
"jsCode": "return $input.first().json.output"
},
"typeVersion": 2
},
{
"id": "b784fd99-2016-439d-aff0-f489a0f183af",
"name": "Aggregate the responses",
"type": "n8n-nodes-base.aggregate",
"position": [
440,
-240
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "4ce9f460-0158-4d82-9467-881866e54215",
"name": "Initiate a Webhook Notification for the Structured Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
760,
-40
],
"parameters": {
"url": "https://webhook.site/7b5380a0-0544-48dc-be43-0116cb2d52c2",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "summary",
"value": "={{ $json.data }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "9dd0000c-daaa-4fa7-b3eb-6b389fb86f89",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-540,
-720
],
"parameters": {
"color": 6,
"width": 440,
"height": 460,
"content": "## Summarization"
},
"typeVersion": 1
},
{
"id": "7b6e0751-d6af-4f79-9eb5-f45e1f1452ac",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-660,
-20
],
"parameters": {
"color": 4,
"width": 740,
"height": 420,
"content": "## Structured Data Extract"
},
"typeVersion": 1
},
{
"id": "64723920-d48a-4f60-b3cb-d301afc0f3e0",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
-600
],
"parameters": {
"color": 3,
"width": 1000,
"height": 760,
"content": "## Outbound Data Push\nOutbound data handling by merging, aggregating the data and pushing the same to multiple sources such as Google Sheets, Save to Disk, Webhook Notification"
},
"typeVersion": 1
},
{
"id": "a2f3ac27-3356-418d-96bc-2b14a87b375f",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1720,
-1080
],
"parameters": {
"color": 7,
"width": 400,
"height": 400,
"content": "## Logo\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "9128bb19-6bd1-48bc-8219-fa43e2b86218",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-960,
20
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "ac51c8fe-6441-41ef-b90d-a03e310bd365",
"name": "OpenAI Chat Model for Structured Data",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-500,
260
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "7faf6ec0-2ff6-4f23-9122-5f0333c068b2",
"name": "OpenAI Chat Model for Summarization",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-420,
-420
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "68dc5e3c-3e36-4be6-93b3-ba70613f64c6",
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Markdown to Textual Data Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Merge the responses": {
"main": [
[
{
"node": "Aggregate the responses",
"type": "main",
"index": 0
}
]
]
},
"Summarization Chain": {
"main": [
[
{
"node": "Merge the responses",
"type": "main",
"index": 0
}
]
]
},
"Aggregate the responses": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
},
{
"node": "Initiate a Webhook Notification for the Structured Data",
"type": "main",
"index": 0
},
{
"node": "Create a binary data for Structured Data Extract",
"type": "main",
"index": 0
}
]
]
},
"Set URL and Bright Data Zone": {
"main": [
[
{
"node": "Perform Bright Data Web Request",
"type": "main",
"index": 0
}
]
]
},
"Structured JSON Data Extractor": {
"main": [
[
{
"node": "Code to extract the first element",
"type": "main",
"index": 0
}
]
]
},
"Perform Bright Data Web Request": {
"main": [
[
{
"node": "Markdown to Textual Data Extractor",
"type": "main",
"index": 0
}
]
]
},
"Code to extract the first element": {
"main": [
[
{
"node": "Merge the responses",
"type": "main",
"index": 1
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Set URL and Bright Data Zone",
"type": "main",
"index": 0
}
]
]
},
"Markdown to Textual Data Extractor": {
"main": [
[
{
"node": "Structured JSON Data Extractor",
"type": "main",
"index": 0
},
{
"node": "Summarization Chain",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model for Summarization": {
"ai_languageModel": [
[
{
"node": "Summarization Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model for Structured Data": {
"ai_languageModel": [
[
{
"node": "Structured JSON Data Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create a binary data for Structured Data Extract": {
"main": [
[
{
"node": "Write the structured content to disk",
"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.
googleSheetsOAuth2ApihttpHeaderAuthopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
The TrustPilot SaaS Product Review Tracker is designed for product managers, SaaS growth teams, customer experience analysts, and marketing teams who need to extract, summarize, and analyze customer feedback at scale from TrustPilot.
Source: https://n8n.io/workflows/4280/ — 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.
The Crunchbase B2B Lead Discovery Pipeline is designed for sales teams, B2B marketers, business analysts, and data operations teams who need a reliable way to extract, structure, and summarize company
The Real Estate Intelligence Tracker is a powerful automated workflow designed for real estate analysts, investors, proptech startups, and market researchers who need to collect and analyze structured
This end-to-end AI-powered recruitment automation workflow helps HR and talent acquisition teams automate the complete hiring pipeline—from resume intake and parsing to GPT-4-based evaluation, TA appr
This template is ideal for HR teams, recruiters, staffing agencies, and tech-enabled hiring managers looking to automate the intake, analysis, and shortlisting of job applicants directly from CV submi
What this workflow does: