{ "meta": { "instanceId": "1eadd5bc7c3d70c587c28f782511fd898c6bf6d97963d92e836019d2039d1c79" }, "nodes": [ { "id": "578905af-9355-47ba-97c0-05bc9e69876c", "name": "Sticky Note9", "type": "n8n-nodes-base.stickyNote", "position": [ -420, -120 ], "parameters": { "color": 4, "width": 1280, "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=======================================\nBright Data Docs: https://docs.brightdata.com/introduction\n" }, "typeVersion": 1 }, { "id": "b54542b4-0f68-4076-9ae9-817c1aee0c14", "name": "Snapshot Progress", "type": "n8n-nodes-base.httpRequest", "position": [ 2180, 300 ], "parameters": { "url": "=https://api.brightdata.com/datasets/v3/progress/{{ $('HTTP Request- Post API call to Bright Data').item.json.snapshot_id }}", "options": {}, "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "Authorization", "value": "Bearer " } ] } }, "typeVersion": 4.2 }, { "id": "8ffd290a-1cc7-4cc9-86a3-397108f8584b", "name": "Sticky Note10", "type": "n8n-nodes-base.stickyNote", "position": [ 3240, 80 ], "parameters": { "width": 195, "height": 646, "content": "In this workflow, I use Google Sheets to store the results. \n\nYou can use my template to get started faster:\n\n1. [Click on this link to get the template](https://docs.google.com/spreadsheets/d/1Zi758ds2_aWzvbDYqwuGiQNaurLgs-leS9wjLWWlbUU/edit?usp=sharing)\n2. Make a copy of the Sheets\n3. Add the URL to this node \n\n\n" }, "typeVersion": 1 }, { "id": "d564fdb9-06f6-42c4-96d6-9512fa7217ca", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 1200, 380 ], "parameters": { "width": 220, "height": 440, "content": "Add your competitors Trustpilot Link here.\n" }, "typeVersion": 1 }, { "id": "8873b276-72db-42cd-8860-1327714d701b", "name": "On form submission - Discover Jobs", "type": "n8n-nodes-base.formTrigger", "position": [ 1260, 520 ], "webhookId": "8d0269c7-d1fc-45a1-a411-19634a1e0b82", "parameters": { "options": {}, "formTitle": "Please Paste The URL of Your Trustpilot competitor", "formFields": { "values": [ { "fieldLabel": "Competitor TRUSTPILOT URL (include https://www.trsutpilot.com/review/", "placeholder": "https://www.trustpilot.com/review/www.nike.com", "requiredField": true }, { "fieldType": "dropdown", "fieldLabel": "Please select the time frame of reviews you'd like. If it's a big brand go with 30 days", "fieldOptions": { "values": [ { "option": "Last 30 days" }, { "option": "Last 3 months" }, { "option": "Last 6 months" }, { "option": "Last 12 months" } ] } } ] } }, "typeVersion": 2.2 }, { "id": "2396fb4f-e3da-4712-b6b5-93704fa69672", "name": "HTTP Request- Post API call to Bright Data", "type": "n8n-nodes-base.httpRequest", "position": [ 1560, 380 ], "parameters": { "url": "https://api.brightdata.com/datasets/v3/trigger", "method": "POST", "options": {}, "jsonBody": "=[\n {\n \"url\": \"{{ $json['Competitor TRUSTPILOT URL (include https://www.trsutpilot.com/review/'] }}\",\n \"date_posted\": \"{{ $json['Please select the time frame of reviews you\\'d like. If it\\'s a big brand go with 30 days'] }}\"\n }\n]", "sendBody": true, "sendQuery": true, "sendHeaders": true, "specifyBody": "json", "queryParameters": { "parameters": [ { "name": "dataset_id", "value": "gd_lm5zmhwd2sni130p" }, { "name": "include_errors", "value": "true" } ] }, "headerParameters": { "parameters": [ { "name": "Authorization", "value": "Bearer " } ] } }, "typeVersion": 4.2 }, { "id": "c90b0e25-c009-4321-9c38-7ce895d78f3f", "name": "Wait - Polling Bright Data", "type": "n8n-nodes-base.wait", "position": [ 1940, 300 ], "webhookId": "8005a2b3-2195-479e-badb-d90e4240e699", "parameters": { "unit": "minutes", "amount": 2 }, "executeOnce": false, "typeVersion": 1.1 }, { "id": "ac37b7e2-04fb-4f04-96f6-c77aa282dc8e", "name": "If - Checking status of Snapshot - if data is ready or not", "type": "n8n-nodes-base.if", "position": [ 2380, 300 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "7932282b-71bb-4bbb-ab73-4978e554de7e", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.status }}", "rightValue": "running" } ] } }, "typeVersion": 2.2 }, { "id": "572ea592-8fd6-4be5-825b-83b0a7a11556", "name": "HTTP Request - Getting data from Bright Data", "type": "n8n-nodes-base.httpRequest", "position": [ 2660, 320 ], "parameters": { "url": "=https://api.brightdata.com/datasets/v3/snapshot/{{ $('HTTP Request- Post API call to Bright Data').item.json.snapshot_id }}", "options": {}, "sendQuery": true, "sendHeaders": true, "queryParameters": { "parameters": [ { "name": "format", "value": "json" } ] }, "headerParameters": { "parameters": [ { "name": "Authorization", "value": "Bearer " } ] } }, "typeVersion": 4.2 }, { "id": "03c7bfd2-6ae5-4455-8db9-df4858af9417", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 1880, 160 ], "parameters": { "color": 4, "width": 940, "height": 360, "content": "Bright Data Getting Reviews\n" }, "typeVersion": 1 }, { "id": "f68ece0c-6061-4204-8c90-b9dba3dae242", "name": "Basic LLM Chain", "type": "@n8n/n8n-nodes-langchain.chainLlm", "position": [ 4160, 380 ], "parameters": { "text": "=Read the following bad reviews, these are reviews of our competitors:\n{{ $json.Aggregated_reviews }}\n\n---\nAfter reading them, summarize their weakest points.\nDon't mention the competitor name.\n\nWrite 3 different ads copy for our Facebook ads campaign, addressing these concerns", "promptType": "define" }, "typeVersion": 1.6 }, { "id": "d07aa5c9-c0b0-440d-b9a8-21b5be269db3", "name": "OpenAI Chat Model", "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "position": [ 4260, 600 ], "parameters": { "model": { "__rl": true, "mode": "list", "value": "gpt-4o-mini" }, "options": {} }, "credentials": { "openAiApi": { "id": "MX2lQOZcGpmRvdVD", "name": "OpenAi account 2" } }, "typeVersion": 1.2 }, { "id": "0dceb7f9-7133-40cd-87c7-7b786e104a2f", "name": "Send Summary To Marketers", "type": "n8n-nodes-base.gmail", "position": [ 4800, 400 ], "webhookId": "6787416d-689c-46ee-a7b5-97edd1fd1a00", "parameters": { "sendTo": "youremail@gmail.com", "message": "=Based on the following Trustpilot page: \n{{ $('On form submission - Discover Jobs').item.json['Competitor TRUSTPILOT URL (include https://www.trsutpilot.com/review/'] }}\n\nHere is a summary of recent complaints including ideas for ad copy:\n{{ $json.text }}\n-----------------------------\n\nI'm also attaching a break down of all recent complaints {{ $('Aggregating all filtered reviews').item.json.Aggregated_reviews }}\n", "options": {}, "subject": "=Summary of Complaints of competitor: {{ $('On form submission - Discover Jobs').item.json['Competitor TRUSTPILOT URL (include https://www.trsutpilot.com/review/'] }}", "emailType": "text" }, "credentials": { "gmailOAuth2": { "id": "TLJ5oxgGtoxdGOTZ", "name": "Gmail account 2" } }, "typeVersion": 2.1 }, { "id": "14516602-fe16-4a1f-8ada-690a4188429d", "name": "Filtering only bad reviews", "type": "n8n-nodes-base.filter", "position": [ 3520, 380 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "loose" }, "combinator": "or", "conditions": [ { "id": "7aaa3c61-27d5-4165-aaf3-4783d0ef0db0", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.review_rating }}", "rightValue": "1" }, { "id": "7aab561d-2454-4d4b-a5d6-51c0582ea85b", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.review_rating }}", "rightValue": "2" } ] }, "looseTypeValidation": true }, "typeVersion": 2.2 }, { "id": "a93f9763-4eaa-4654-9bb1-93a1c8b468f9", "name": "Aggregating all filtered reviews", "type": "n8n-nodes-base.aggregate", "position": [ 3780, 380 ], "parameters": { "options": {}, "fieldsToAggregate": { "fieldToAggregate": [ { "renameField": true, "outputFieldName": "Aggregated_reviews", "fieldToAggregate": "review_content" } ] } }, "typeVersion": 1 }, { "id": "effec41f-a19f-48c7-a540-ec69968850ee", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 4120, 140 ], "parameters": { "width": 360, "height": 820, "content": "Adjust This Prompt with:\n1. Add info about your company and offer.\n\n2. The template requires the LLM to generate ad copy, but you can change it to any marketing material you'd like.\nExamples:\n- Suggest ideas for FAQ\n- Suggest copy for UGC scripts\n- Suggest copy for Add to cart email flow etc\n\n" }, "typeVersion": 1 }, { "id": "e9bf2453-8f98-4d43-ac0c-f3e4b45787c9", "name": "Google Sheets - Adding All Reviews", "type": "n8n-nodes-base.googleSheets", "position": [ 3280, 380 ], "parameters": { "columns": { "value": {}, "schema": [ { "id": "company_name", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_name", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_id", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_id", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_date", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_date", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_rating", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_rating", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_title", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_title", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_content", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_content", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "is_verified_review", "type": "string", "display": true, "removed": false, "required": false, "displayName": "is_verified_review", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_date_of_experience", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_date_of_experience", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "reviewer_location", "type": "string", "display": true, "removed": false, "required": false, "displayName": "reviewer_location", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "reviews_posted_overall", "type": "string", "display": true, "removed": false, "required": false, "displayName": "reviews_posted_overall", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_replies", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_replies", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_useful_count", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_useful_count", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "reviewer_name", "type": "string", "display": true, "removed": false, "required": false, "displayName": "reviewer_name", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_logo", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_logo", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "url", "type": "string", "display": true, "removed": false, "required": false, "displayName": "url", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_overall_rating", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_overall_rating", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "is_verified_company", "type": "string", "display": true, "removed": false, "required": false, "displayName": "is_verified_company", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_total_reviews", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_total_reviews", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "5_star", "type": "string", "display": true, "removed": false, "required": false, "displayName": "5_star", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "4_star", "type": "string", "display": true, "removed": false, "required": false, "displayName": "4_star", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "3_star", "type": "string", "display": true, "removed": false, "required": false, "displayName": "3_star", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "2_star", "type": "string", "display": true, "removed": false, "required": false, "displayName": "2_star", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "1_star", "type": "string", "display": true, "removed": false, "required": false, "displayName": "1_star", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_about", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_about", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_phone", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_phone", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_location", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_location", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_country", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_country", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "breadcrumbs", "type": "string", "display": true, "removed": false, "required": false, "displayName": "breadcrumbs", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_category", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_category", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_id", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_id", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_website", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_website", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "company_other_categories", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_other_categories", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "review_url", "type": "string", "display": true, "removed": false, "required": false, "displayName": "review_url", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "date_posted", "type": "string", "display": true, "removed": false, "required": false, "displayName": "date_posted", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "timestamp", "type": "string", "display": true, "removed": false, "required": false, "displayName": "timestamp", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "input", "type": "string", "display": true, "removed": false, "required": false, "displayName": "input", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "autoMapInputData", "matchingColumns": [], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "append", "sheetName": { "__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Zi758ds2_aWzvbDYqwuGiQNaurLgs-leS9wjLWWlbUU/edit#gid=0", "cachedResultName": "input" }, "documentId": { "__rl": true, "mode": "list", "value": "1Zi758ds2_aWzvbDYqwuGiQNaurLgs-leS9wjLWWlbUU", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Zi758ds2_aWzvbDYqwuGiQNaurLgs-leS9wjLWWlbUU/edit?usp=drivesdk", "cachedResultName": "NoFluff-N8N-Sheet-Template- Trust PIlot Reviews Scraping WIth Bright Data" } }, "credentials": { "googleSheetsOAuth2Api": { "id": "4RJOMlGAcB9ZoYfm", "name": "Google Sheets account 2" } }, "typeVersion": 4.3, "alwaysOutputData": true }, { "id": "a3911ad6-be39-4bba-9b1c-96c5a7017da4", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -400, 220 ], "parameters": { "width": 860, "height": 380, "content": "### Scrape Trustpilot Reviews Using Bright Data for Winning Ad Insights\n\nThis **n8n workflow** scrapes Trustpilot reviews of a specified competitor using **Bright Data's dataset API**. Users input the competitor's Trustpilot URL and select a timeframe (30 days, 3 months, 6 months, or 12 months) via an n8n form.\n\n**Workflow steps:**\n\n- Sends a request to Bright Data to fetch Trustpilot reviews based on user input.\n- Polls Bright Data until the dataset is ready.\n- Retrieves the reviews and logs them into a Google Sheet.\n- Filters the results to isolate negative reviews (ratings of 1 or 2 stars).\n- Aggregates negative reviews into summarized text.\n- Uses OpenAI's GPT-4o-mini to analyze competitor weaknesses and generate three Facebook ad copy variations addressing these pain points.\n- Emails the summary, including suggested ad copy and aggregated reviews, to the marketing team.\n" }, "typeVersion": 1 } ], "pinData": {}, "connections": { "Basic LLM Chain": { "main": [ [ { "node": "Send Summary To Marketers", "type": "main", "index": 0 } ] ] }, "OpenAI Chat Model": { "ai_languageModel": [ [ { "node": "Basic LLM Chain", "type": "ai_languageModel", "index": 0 } ] ] }, "Snapshot Progress": { "main": [ [ { "node": "If - Checking status of Snapshot - if data is ready or not", "type": "main", "index": 0 } ] ] }, "Filtering only bad reviews": { "main": [ [ { "node": "Aggregating all filtered reviews", "type": "main", "index": 0 } ] ] }, "Wait - Polling Bright Data": { "main": [ [ { "node": "Snapshot Progress", "type": "main", "index": 0 } ] ] }, "Aggregating all filtered reviews": { "main": [ [ { "node": "Basic LLM Chain", "type": "main", "index": 0 } ] ] }, "Google Sheets - Adding All Reviews": { "main": [ [ { "node": "Filtering only bad reviews", "type": "main", "index": 0 } ] ] }, "On form submission - Discover Jobs": { "main": [ [ { "node": "HTTP Request- Post API call to Bright Data", "type": "main", "index": 0 } ] ] }, "HTTP Request- Post API call to Bright Data": { "main": [ [ { "node": "Wait - Polling Bright Data", "type": "main", "index": 0 } ] ] }, "HTTP Request - Getting data from Bright Data": { "main": [ [ { "node": "Google Sheets - Adding All Reviews", "type": "main", "index": 0 } ] ] }, "If - Checking status of Snapshot - if data is ready or not": { "main": [ [ { "node": "Wait - Polling Bright Data", "type": "main", "index": 0 } ], [ { "node": "HTTP Request - Getting data from Bright Data", "type": "main", "index": 0 } ] ] } } }