AutomationFlowsAI & RAG › Scrape Trustpilot Reviews with Scrapegraphai and Openai Reputation Analysis

Scrape Trustpilot Reviews with Scrapegraphai and Openai Reputation Analysis

Original n8n title: Scrape Trustpilot Reviews 📊 with Scrapegraphai and Openai Reputation Analysis

ByDavide Boizza @n3witalia on n8n.io

This workflow automates the collection, analysis, and reporting of Trustpilot reviews for a specific company using ScrapeGraphAI, transforming unstructured customer feedback into structured insights and actionable intelligence.

Event trigger★★★★☆ complexityAI-powered27 nodesHTTP RequestN8N Nodes ScrapegraphaiInformation ExtractorOpenAI ChatSentiment AnalysisGmailChain LlmAgent
AI & RAG Trigger: Event Nodes: 27 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #12654 — we link there as the canonical source.

This workflow follows the Agent → Chainllm 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 →

Download .json
{
  "id": "rt3qTEePnXoU_qo6HjwKu",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automated Trustpilot Review Scraper & Reputation Analysis",
  "tags": [],
  "nodes": [
    {
      "id": "e77fd1b8-81c5-4533-85de-8e819101a152",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        784,
        112
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "recensioni"
      },
      "typeVersion": 1
    },
    {
      "id": "26ce2be6-94ca-4fc5-91f6-28d95d15025c",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -240,
        112
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b419beff-bd05-4c00-9077-7d87bdb7d5d9",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 212,
        "height": 326,
        "content": "## STEP 1 - Setup\nSetup The Trustpilot company identifier and The maximum number of review pages to scrape"
      },
      "typeVersion": 1
    },
    {
      "id": "3de7ad03-1bae-4ecb-a28e-a11d1faabc2b",
      "name": "Set Parameters",
      "type": "n8n-nodes-base.set",
      "position": [
        32,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "556e201d-242a-4c0e-bc13-787c2b60f800",
              "name": "company_id",
              "type": "string",
              "value": "TRUSTPILOT_COMOPANY_ID"
            },
            {
              "id": "a1f239df-df08-41d8-8b78-d6502266a581",
              "name": "max_page",
              "type": "number",
              "value": 2
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1332d8e0-f881-4c27-a865-cbbba0ddb38f",
      "name": "Get reviews",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        272,
        112
      ],
      "parameters": {
        "url": "=https://it.trustpilot.com/review/{{ $json.company_id }}",
        "options": {
          "pagination": {
            "pagination": {
              "parameters": {
                "parameters": [
                  {
                    "name": "page",
                    "value": "={{ $pageCount + 1 }}"
                  }
                ]
              },
              "maxRequests": "={{ $json.max_page }}",
              "requestInterval": 5000,
              "limitPagesFetched": true
            }
          }
        },
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "sort",
              "value": "recency"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "6d222a30-70fe-44aa-8785-1af08f642532",
      "name": "Extract",
      "type": "n8n-nodes-base.html",
      "position": [
        528,
        112
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "recensioni",
              "attribute": "href",
              "cssSelector": "article section a",
              "returnArray": true,
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "32491e2f-4040-4bc0-b7f4-bd30d53eab43",
      "name": "Convert a webpage or article to clean markdown useful for blogs dev docs and more1",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        1536,
        128
      ],
      "parameters": {
        "resource": "markdownify",
        "websiteUrl": "=https://it.trustpilot.com{{ $json.recensioni }}",
        "renderHeavyJs": true
      },
      "credentials": {
        "scrapegraphAIApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "31c50f5b-7c94-4017-94fe-d833efad26ea",
      "name": "Information Extractor1",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1776,
        128
      ],
      "parameters": {
        "text": "=You need to extract the review from the following MD:  {{ $json.result }}",
        "options": {
          "systemPromptTemplate": "You are a review expert. You need to extract only the required information and report it without changing anything.\nAll the required information is in the text."
        },
        "attributes": {
          "attributes": [
            {
              "name": "autore",
              "required": true,
              "description": "Extract the name of the review author"
            },
            {
              "name": "valutazione",
              "type": "number",
              "required": true,
              "description": "Extract the rating given to the review (from 1 to 5)"
            },
            {
              "name": "data",
              "required": true,
              "description": "Extract review date in YYYY-MM-DD format"
            },
            {
              "name": "titolo",
              "required": true,
              "description": "Extract the review title"
            },
            {
              "name": "testo",
              "required": true,
              "description": "Extract the review text"
            },
            {
              "name": "n_recensioni",
              "type": "number",
              "required": true,
              "description": "Extract the total number of reviews made by the user"
            },
            {
              "name": "nazione",
              "required": true,
              "description": "Extract the country of the user who wrote the review. Must be two characters"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ba851d40-841f-4360-902e-43d745b6dc6a",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1760,
        320
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "97fab16c-9a3f-47f8-8434-33a8ee98c5b5",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        992,
        112
      ],
      "parameters": {
        "maxItems": 5
      },
      "typeVersion": 1
    },
    {
      "id": "af2b6abe-838a-4794-9540-6a41ab153f2e",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1200,
        112
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "26df8adf-97c9-4b40-9e7a-a0624d3bd5ee",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2144,
        320
      ],
      "parameters": {
        "model": "gpt-5-mini",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "82c28f28-67c1-4367-bf03-268836248c02",
      "name": "Sentiment Analysis1",
      "type": "@n8n/n8n-nodes-langchain.sentimentAnalysis",
      "position": [
        2160,
        112
      ],
      "parameters": {
        "options": {
          "categories": "Positive, Neutral, Negative",
          "systemPromptTemplate": "You are highly intelligent and accurate sentiment analyzer. Analyze the sentiment of the provided text. Categorize it into one of the following: {categories}. Use the provided formatting instructions. Only output the JSON."
        },
        "inputText": "={{ $json.output.testo }}"
      },
      "typeVersion": 1
    },
    {
      "id": "13ef96b3-192c-44f7-b53b-28cf01630c1c",
      "name": "Set vars for chart",
      "type": "n8n-nodes-base.code",
      "position": [
        1536,
        -336
      ],
      "parameters": {
        "jsCode": "const labels = [];\nconst data = [];\nconst colors = [];\n\nconst sentimentColors = {\n  'Positive': '#4CAF50',\n  'Negative': '#F44336',\n  'Neutral': '#FFC107'\n};\n\nconst sentimentCount = {};\n\nitems.forEach(item => {\n  const sentiment = item.json.sentiment;\n  \n  if (sentimentCount[sentiment]) {\n    sentimentCount[sentiment]++;\n  } else {\n    sentimentCount[sentiment] = 1;\n  }\n});\n\nObject.keys(sentimentCount).forEach(sentiment => {\n  labels.push(sentiment);\n  data.push(sentimentCount[sentiment]);\n  colors.push(sentimentColors[sentiment] || '#9E9E9E'); // colore di default se non trovato\n});\n\nconst chartConfig = {\n  type: \"pie\",\n  data: {\n    labels: labels,\n    datasets: [{\n      data: data,\n      backgroundColor: colors\n    }]\n  },\n  options: {\n    plugins: {\n      title: {\n        display: true,\n        text: \"Sentiment\"\n      },\n      legend: {\n        position: \"bottom\"\n      }\n    }\n  }\n};\n\nreturn [{\n  json: {\n    labels,\n    data,\n    colors,\n    chartConfig: JSON.stringify(chartConfig)\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "3940a3ec-91a6-4061-85cc-773207682cf8",
      "name": "QuickChart",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1904,
        -336
      ],
      "parameters": {
        "url": "https://quickchart.io/chart",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "c",
              "value": "={{ $json.chartConfig }}"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "0e61fba2-693f-402d-a655-9741c444a363",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2560,
        -832
      ],
      "parameters": {
        "sendTo": "YOUR_EMAIL",
        "message": "={{ $json.text }}",
        "options": {},
        "subject": "Company review"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "60c34f57-b19e-423e-bd3e-498b6f43da73",
      "name": "HTML Converter",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2160,
        -832
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=Translate into HTML by analyzing the content. I only need the HTML, not the opening tags \"html\\n and the closing \\n."
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "0d040e6e-346d-49e0-a0da-4709f15d0398",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1472,
        -992
      ],
      "parameters": {
        "color": 7,
        "width": 1376,
        "height": 496,
        "content": "## STEP 4 - AI-Powered Reputation Report\nA specialized AI agent analyzes all reviews at a company level, not product level.\nIt generates a structured management report\nThe report is automatically sent via email to stakeholders."
      },
      "typeVersion": 1
    },
    {
      "id": "c20ce4e3-05b4-43aa-86b1-fcf14e7b3939",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1984,
        -624
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "6bfdeaed-a35c-40bf-a119-8332e8f22b67",
      "name": "Aggregate reviews",
      "type": "n8n-nodes-base.code",
      "position": [
        1552,
        -832
      ],
      "parameters": {
        "jsCode": "const reviews = $input.all().map(item => item.json);\n\nreturn [\n  {\n    json: {\n      reviews,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "054f4156-194f-4c08-b402-d9100e2979e5",
      "name": "Company Reputation Analyst",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1824,
        -832
      ],
      "parameters": {
        "text": "=Reviews: {{JSON.stringify($json.reviews)}}",
        "options": {
          "systemMessage": "=You are a Customer Voice and Company Reputation analyst. \nYour task is to transform a JSON array of Trustpilot reviews into a clear, comprehensive, and actionable report for Management, Marketing, Customer Care, and Product teams.\n\nThe analysis MUST focus on the COMPANY (brand, service, processes, customer experience, support, reliability), NOT on a single product.\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nRULES AND CONSTRAINTS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n\u2022 The input is always an array of JSON objects (reviews).\n\u2022 Each review includes:\n  - review text\n  - sentiment (e.g. Positive, Negative, Neutral)\n  - vote / rating from 1 to 5\n\u2022 The \"review\" field may contain HTML: extract ONLY the plain text (remove tags, line breaks, etc.).\n\u2022 Do NOT invent or infer data that is not explicitly present.\n\u2022 If information is missing or unclear, explicitly state it.\n\u2022 Do NOT show full email addresses or personal data: mask any email if present.\n\u2022 Maintain a professional, readable, action-oriented style.\n\u2022 Avoid unnecessary jargon.\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nREPORT OBJECTIVE\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nThe report must evaluate the COMPANY\u2019S REPUTATION and CUSTOMER EXPERIENCE based on Trustpilot reviews:\n\n1. Provide a concise overview of overall customer sentiment toward the company.\n2. Identify recurring themes related to service quality, support, reliability, communication, pricing, delivery, and trust.\n3. Highlight critical reputational risks and improvement opportunities.\n4. Propose concrete operational and strategic actions with priorities and KPIs.\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nMANDATORY OUTPUT STRUCTURE\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nGenerate the report following EXACTLY this structure and order:\n\n1. Executive Summary\n   \u2022 Total number of reviews\n   \u2022 Sentiment distribution (counts and percentages)\n   \u2022 Predominant sentiment\n   \u2022 Average rating (1\u20135)\n   \u2022 Average intensity (overall average strength + by sentiment)\n   \u2022 Average reliability (overall average confidence + by sentiment)\n   \u2022 3 key insights (bulleted)\n\n2. Quantitative Data (tables or structured lists)\n   \u2022 For each review:\n     - ID (1..N)\n     - Review excerpt (max 120 characters)\n     - Sentiment\n     - Rating (1\u20135)\n\n3. Qualitative Review Analysis\n   \u2022 Recurring negative themes (company-level issues with examples)\n   \u2022 Recurring positive themes (strengths of the company with examples)\n   \u2022 Ambiguities or information gaps (generic, vague, or unclear feedback)\n\n4. Company Diagnosis (what could be causing the feedback)\n   \u2022 Hypotheses on causes of negative feedback (process, support, communication, expectations)\n   \u2022 What the company is doing well\n   \u2022 Risks if no action is taken (reputation, churn, trust, conversion impact)\n\n5. Operational Recommendations (concrete actions)\n   For each recommendation include:\n   \u2022 Proposed action\n   \u2022 Rationale (linked to review themes)\n   \u2022 Expected impact (High / Medium / Low)\n   \u2022 Estimated effort (High / Medium / Low)\n   \u2022 Priority (P0 / P1 / P2)\n   \u2022 How to measure it (suggested KPIs)\n\n6. Inputs for Internal Teams (Backlog Ideas)\n   \u2022 8\u201315 actionable ideas grouped by area:\n     - Customer Support\n     - Operations / Delivery\n     - Communication & Transparency\n     - UX / Digital Experience\n     - Pricing & Policies\n     - Trust & Brand Reputation\n   \u2022 Clearly mark \u201cQuick Wins\u201d (low effort, medium/high impact)\n\n7. Next Steps\n   \u2022 3\u20135 immediate recommended actions\n   \u2022 Additional data needed for deeper analysis (e.g. ticket resolution time, channel, customer type, country, repeat vs new customer)\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nCALCULATION LOGIC (INTERNAL)\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n\u2022 Percentages = (count / total) \u00d7 100 \u2192 round to 1 decimal\n\u2022 Strength and Confidence \u2192 convert to float, show with 2 decimals\n\u2022 Average rating = mean of votes (1\u20135)\n\u2022 Sentiments outside Positive / Negative / Neutral \u2192 classify as \u201cOther\u201d and flag it\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nINPUT HANDLING\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nYou will receive a JSON array of Trustpilot reviews.\nImmediately after receiving the input, generate the report following all rules and the mandatory structure above."
        },
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "08125609-5539-4f53-8597-70465f312525",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -576
      ],
      "parameters": {
        "width": 1136,
        "height": 496,
        "content": "# Automated Trustpilot Review Scraper using ScrapegraphAI & Reputation Analysis \nThis workflow automates the **collection, analysis, and reporting of Trustpilot reviews** for a specific company, transforming unstructured customer feedback into **structured insights and actionable intelligence**.\n\n### **How it works:**\n\nThis workflow automates the full Trustpilot review analysis pipeline \u2014 from data collection to executive reporting. It begins with a manual trigger where users define the target company and number of pages to scrape. Reviews are fetched through HTTP requests with pagination, converted to clean markdown using ScrapegraphAI, and parsed by GPT models to extract structured data such as author, rating, and text. Sentiment is classified as Positive, Neutral, or Negative, then aggregated into a dataset. The workflow generates sentiment charts and a detailed AI-powered reputation report with insights, key themes, and improvement recommendations, which are formatted as HTML and emailed automatically to stakeholders.\n\n\n### **Setup steps:**\n\nSet up required credentials for OpenAI, ScrapegraphAI, and Gmail OAuth2. In the \u201cSet Parameters\u201d node, define the `company_id` (Trustpilot URL) and `max_page` for review scraping. Use the \u201cLimit\u201d node to control the number of reviews per execution to manage cost and rate limits. Configure the \u201cSend a message\u201d node with recipient email and subject details. Optionally, customize the analysis prompt and sentiment categories. Finally, test the workflow, verify successful execution, and check your email for the automatically generated reputation report.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ad1be8ca-4629-41d8-b52d-4acd108bfa3d",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 900,
        "height": 326,
        "content": "## STEP 2 - Automated Review Scraping\nReviews are fetched directly from Trustpilot, ordered by recency. Pagination is handled automatically to respect the configured page limit."
      },
      "typeVersion": 1
    },
    {
      "id": "22e0d4d4-7c4c-4943-a177-20ac566cc07e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1472,
        -16
      ],
      "parameters": {
        "color": 7,
        "width": 1380,
        "height": 502,
        "content": "## STEP 3 - Content Extraction & Sentiment Analysis\nEach review page is converted into clean Markdown, including content rendered via JavaScript.\nEach review\u2019s text is analyzed and classified as Positive, Neutral, or Negative.\nResults are normalized into consistent, machine-readable fields."
      },
      "typeVersion": 1
    },
    {
      "id": "ed6ee1d5-b1a3-47d5-b020-f93253698034",
      "name": "Set fields",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a9fd22c3-89d3-4a86-bf5b-141d78a54078",
              "name": "title",
              "type": "string",
              "value": "={{ $json.output.titolo }}"
            },
            {
              "id": "8646583c-cf48-4490-ad52-a435ebd0a7d2",
              "name": "description",
              "type": "string",
              "value": "={{ $json.output.testo }}"
            },
            {
              "id": "1c07ff1c-7ab2-4527-abfd-ead35a584fcf",
              "name": "vote",
              "type": "number",
              "value": "={{ $json.output.valutazione }}"
            },
            {
              "id": "675abd19-e571-480f-8c49-e7e09bba426f",
              "name": "sentiment",
              "type": "string",
              "value": "={{ $json.sentimentAnalysis.category }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2ad32275-04be-4a5f-b219-a174330c9383",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1472,
        -464
      ],
      "parameters": {
        "color": 7,
        "width": 1376,
        "height": 304,
        "content": "## STEP 5 - Visualization\nA dynamic pie chart is generated using QuickChart for immediate visual insight."
      },
      "typeVersion": 1
    },
    {
      "id": "3b01028f-2d59-4034-aee1-751587534afe",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -816
      ],
      "parameters": {
        "color": 7,
        "width": 736,
        "height": 736,
        "content": "## MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new **YouTube channel**](https://youtube.com/@n3witalia). Here I\u2019ll share videos and Shorts with practical tutorials and **FREE templates for n8n**.\n\n[![image](https://n3wstorage.b-cdn.net/n3witalia/youtube-n8n-cover.jpg)](https://youtube.com/@n3witalia)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "dd4ddb7d-6e9f-4551-8d63-eb4a0d2c9ebe",
  "connections": {
    "Limit": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set fields": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get reviews": {
      "main": [
        [
          {
            "node": "Extract",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML Converter": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Parameters": {
      "main": [
        [
          {
            "node": "Get reviews",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Set vars for chart",
            "type": "main",
            "index": 0
          },
          {
            "node": "Aggregate reviews",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Convert a webpage or article to clean markdown useful for blogs dev docs and more1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate reviews": {
      "main": [
        [
          {
            "node": "Company Reputation Analyst",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Company Reputation Analyst",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "HTML Converter",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Information Extractor1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Sentiment Analysis1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set vars for chart": {
      "main": [
        [
          {
            "node": "QuickChart",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sentiment Analysis1": {
      "main": [
        [
          {
            "node": "Set fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Information Extractor1": {
      "main": [
        [
          {
            "node": "Sentiment Analysis1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Company Reputation Analyst": {
      "main": [
        [
          {
            "node": "HTML Converter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Set Parameters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert a webpage or article to clean markdown useful for blogs dev docs and more1": {
      "main": [
        [
          {
            "node": "Information Extractor1",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow automates the collection, analysis, and reporting of Trustpilot reviews for a specific company using ScrapeGraphAI, transforming unstructured customer feedback into structured insights and actionable intelligence.

Source: https://n8n.io/workflows/12654/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow automates the end-to-end analysis of WooCommerce product reviews, transforming raw customer feedback into actionable product and customer-care insights, and delivering them in a structur

Sentiment Analysis, OpenAI Chat, WooCommerce +4
AI & RAG

Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.

Typeform Trigger, Agent, OpenAI Chat +7
AI & RAG

🤖🧑‍💻 AI Agent for Top n8n Creators Leaderboard Reporting. Uses httpRequest, lmChatOpenAi, executeWorkflowTrigger, toolWorkflow. Event-driven trigger; 49 nodes.

HTTP Request, OpenAI Chat, Execute Workflow Trigger +8
AI & RAG

🤖🧑‍💻 AI Agent for Top n8n Creators Leaderboard Reporting. Uses httpRequest, lmChatOpenAi, executeWorkflowTrigger, toolWorkflow. Event-driven trigger; 49 nodes.

HTTP Request, OpenAI Chat, Execute Workflow Trigger +8
AI & RAG

This n8n workflow is designed to automate the aggregation, processing, and reporting of community statistics related to n8n creators and workflows. Its primary purpose is to generate insightful report

HTTP Request, OpenAI Chat, Execute Workflow Trigger +8