Bright Data + Google Gemini for brand sentiment
Brand mentions never show up when you need them. Or they show up as messy, half-scraped text that still needs someone to read everything, interpret tone, and paste a “summary” into a report.
Brand managers feel it first. A marketing analyst ends up doing the same grind for competitor tracking, and PR leads get dragged in when the tone shifts fast. This brand sentiment automation turns scattered mentions into consistent summaries plus sentiment, without living in tabs all day.
You’ll see what the workflow does, what you need to run it, and how it translates into faster alerts and cleaner reporting you can actually trust.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Bright Data + Google Gemini for brand sentiment
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Markdown to Textual Data Ext..", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set URL and Bright Data Zone", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "AI Sentiment Analyzer with t..", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Initiate a Webhook Notificat.."]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Initiate a Webhook Notificat.."]
n6@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model for..", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model for..", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model for..", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Initiate a Webhook Notificat.."]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Perform Bright Data Web Requ.."]
n11@{ icon: "mdi:robot", form: "rounded", label: "Summarize Content", pos: "b", h: 48 }
n12@{ icon: "mdi:code-braces", form: "rounded", label: "Create a binary data for tex..", pos: "b", h: 48 }
n13@{ icon: "mdi:code-braces", form: "rounded", label: "Create a binary data for sen..", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Write the AI Sentiment analy..", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Write the textual file to disk", pos: "b", h: 48 }
n16@{ icon: "mdi:code-braces", form: "rounded", label: "Create a binary data for sum..", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "Write the summary file to disk", pos: "b", h: 48 }
n11 --> n9
n11 --> n16
n2 --> n10
n10 --> n1
n10 --> n11
n16 --> n17
n0 --> n2
n1 --> n3
n1 --> n4
n1 --> n12
n6 -.-> n11
n12 --> n15
n7 -.-> n1
n13 --> n14
n8 -.-> n3
n3 --> n5
n3 --> n13
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1,n3,n11 ai
class n6,n7,n8 aiModel
class n4,n5,n9,n10 api
class n12,n13,n16 code
classDef customIcon fill:none,stroke:none
class n4,n5,n9,n10 customIcon
The Challenge: Turning Brand Mentions Into Actionable Insight
Tracking public brand perception sounds simple until you do it seriously. Mentions are spread across news sites, blogs, review pages, and random corners of the web that don’t play nicely with normal tools. You can scrape, sure, but then you’re stuck with walls of text, weird formatting, and “is this good or bad?” questions that require a human to read context. The worst part is the mental load: you’re constantly worried you missed the one article that will become tomorrow’s customer complaint thread.
It adds up fast. Here’s where it breaks down in real teams.
- Copying links, extracting text, and cleaning it up can take about 10 minutes per mention before you even start analysis.
- Raw scrapes are noisy, which means summaries change depending on who reads them.
- Sentiment calls become subjective (“kinda negative?”), so reporting gets inconsistent across weeks and people.
- By the time you compile a weekly report, the “alert” part is already too late to matter.
The Fix: Automated Extraction + Gemini Summaries + Sentiment
This workflow takes a brand-related URL, pulls the underlying content using Bright Data’s Web Unlocker, cleans it into readable text, then uses Google Gemini to produce two things you can actually use: a clear summary and a sentiment assessment. Instead of dumping raw data into a sheet and hoping someone interprets it correctly, the workflow creates standardized outputs every time. It also sends the results out via webhook, so alerts and downstream workflows (Slack, CRM, dashboards) can react immediately. Finally, it saves the extracted text, summary, and sentiment to files, which gives you a simple audit trail when someone asks, “Where did this come from?”
The workflow starts when you provide a URL and your Bright Data zone settings. Bright Data retrieves the content, then a text conversion step cleans it up for analysis. Gemini generates a condensed summary and sentiment, and the workflow dispatches those results to your chosen endpoint while also storing files for recordkeeping.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you review 20 brand mentions per week from blogs, news, and reviews. Manually, you might spend about 10 minutes extracting and cleaning each page, plus another 5 minutes summarizing and tagging sentiment, so roughly 5 hours weekly. With this workflow, you kick off the run (or feed URLs in), wait for processing, and skim the outputs, which often takes about 30 minutes total for the whole batch. That’s most of an afternoon back, every week, and the output quality is steadier.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Bright Data for Web Unlocker content extraction.
- Google Gemini to generate summaries and sentiment.
- Bright Data Web Unlocker token (get it from Bright Data zone settings).
Skill level: Intermediate. You’ll connect credentials, edit a few fields, and paste in your webhook endpoint.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
URL input and zone setup. You provide the brand-related URL to analyze and confirm the Bright Data Web Unlocker zone name so the workflow knows which scraping configuration to use.
Content extraction that works on “hard” pages. Bright Data pulls the page content even when typical requests get blocked, then the workflow converts the result into cleaner text you can reliably summarize.
Summarization and structured sentiment. Google Gemini generates a condensed summary, and a structured sentiment step extracts a consistent sentiment output you can store, search, or route to alerts.
Alerts plus recordkeeping. Webhook calls send the text, summary, and sentiment to your destination, and the workflow also writes files to disk so you can audit outputs later.
You can easily modify the input source to process a list of URLs from Google Sheets or Excel instead of one-off runs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts manually so you can run and validate the content extraction process on demand.
- Add the Manual Start Trigger node as the workflow trigger.
- Leave the default settings, since this node has no parameters to configure.
- Connect Manual Start Trigger to Assign URL and Zone to begin the execution flow.
Step 2: Connect Bright Data and Set Source Inputs
Set the URL and Bright Data zone, then send a request to fetch the markdown content.
- In Assign URL and Zone, set the url to
https://www.amazon.com/TP-Link-Dual-Band-Archer-BE230-HomeShield/dp/B0DC99N2T8. - Set the zone to
web_unlocker1. - Open Bright Data API Request and set URL to
https://api.brightdata.com/requestand Method toPOST. - Enable Send Body and Send Headers, and set body parameters: zone to
={{ $json.zone }}, url to={{ $json.url }}?product=unlocker&method=api, format toraw, and data_format tomarkdown. - Credential Required: Connect your
httpHeaderAuthcredentials in Bright Data API Request.
Bright Data API Request outputs to both Markdown Text Converter and Condense Content Summary in parallel.
Step 3: Set Up AI Processing for Extraction, Sentiment, and Summary
These nodes transform markdown into text, perform sentiment extraction, and summarize content using Gemini models.
- In Markdown Text Converter, set Text to
=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. {{ $json.data }}. - Ensure Gemini Extraction Model is connected as the language model for Markdown Text Converter and set Model Name to
models/gemini-2.0-flash-exp. - In Structured Sentiment Analysis, set Text to
=Perform the sentiment analysis on the below content and output with the structured information. Here's the content: {{ $('Bright Data API Request').item.json.data }}and keep the manual schema as provided. - Ensure Gemini Sentiment Model is connected as the language model for Structured Sentiment Analysis with Model Name set to
models/gemini-2.0-flash-exp. - In Condense Content Summary, keep Chunking Mode set to
advancedand verify the prompt isWrite a concise summary of the following: "{text}". - Ensure Gemini Summary Model is connected as the language model for Condense Content Summary and set Model Name to
models/gemini-2.0-flash-exp. - Credential Required: Connect your
googlePalmApicredentials in Gemini Extraction Model, Gemini Sentiment Model, and Gemini Summary Model.
Markdown Text Converter outputs to Structured Sentiment Analysis, Send Text Extraction Webhook, and Build Text Binary in parallel.
Structured Sentiment Analysis outputs to both Post Sentiment Webhook and Build Sentiment Binary in parallel.
Condense Content Summary outputs to both Dispatch Summary Webhook and Build Summary Binary in parallel.
Step 4: Configure Webhook Outputs
Send extracted text, sentiment, and summary to external endpoints.
- In Send Text Extraction Webhook, set URL to
https://webhook.site/[YOUR_ID]and enable Send Body. - Set the body parameter summary to
={{ $json.text }}. - In Post Sentiment Webhook, set URL to
https://webhook.site/[YOUR_ID], enable Send Body, and set summary to={{ $json.output }}. - In Dispatch Summary Webhook, set URL to
https://webhook.site/[YOUR_ID], enable Send Body, and set summary to={{ $json.response.text }}.
[YOUR_ID] in all webhook URLs, or requests will fail silently.Step 5: Save Text, Sentiment, and Summary Files
Convert JSON outputs into binary data and write them to local files.
- In Build Text Binary, keep the Function Code as provided to build a base64 file payload.
- Connect Build Text Binary to Write Text File and set File Name to
d:\Brand-Content-Textual.jsonwith Operation set towrite. - In Build Sentiment Binary, keep the Function Code unchanged and connect it to Write Sentiment File.
- In Write Sentiment File, set File Name to
d:\Brand-Content-Sentiment-Analysis.jsonand Operation towrite. - In Build Summary Binary, keep the Function Code unchanged and connect it to Write Summary File.
- In Write Summary File, set File Name to
d:\Brand-Content-Summary.jsonand Operation towrite.
Step 6: Test and Activate Your Workflow
Run a manual test to confirm the parallel outputs and file writes are working correctly.
- Click Execute Workflow and trigger Manual Start Trigger.
- Verify Bright Data API Request returns markdown content and that Markdown Text Converter, Structured Sentiment Analysis, and Condense Content Summary all receive data.
- Confirm the webhooks receive payloads from Send Text Extraction Webhook, Post Sentiment Webhook, and Dispatch Summary Webhook.
- Check the output files created by Write Text File, Write Sentiment File, and Write Summary File.
- Once successful, toggle the workflow to Active for production use.
Watch Out For
- Bright Data credentials can expire or the token might not match the zone you configured. If extraction suddenly fails, check your Web Unlocker token and zone name first in the “Assign URL and Zone” settings.
- If you’re using Wait nodes or external processing, timing can drift. When downstream nodes receive empty text, increase the wait duration or add a simple “no content” check before calling Gemini.
- Gemini prompts are only “okay” out of the box. Add your brand definitions and what you consider negative tone early, otherwise you will keep second-guessing sentiment labels.
Common Questions
Usually in about an hour once your API keys are ready.
Yes. No coding is required, but someone needs to be comfortable pasting API keys and editing a URL and webhook destination.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Bright Data usage and Gemini API costs.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can swap the single-URL input for a Google Sheets or Excel list by feeding rows into the “Assign URL and Zone” step. Most teams customize the Gemini prompts to control summary length, add brand-specific tone labels (trust, excitement, frustration), and output a stricter JSON format for dashboards. If you want different destinations, replace the webhook dispatch nodes with Slack, Gmail, or a database write. The workflow is built for that kind of plug-and-play change, honestly.
Usually it’s an expired or incorrect Web Unlocker bearer token, or the zone name in “Assign URL and Zone” doesn’t match what you created in Bright Data.
On n8n Cloud you’re mainly limited by your plan’s monthly executions, and by Bright Data and Gemini usage limits. If you self-host, executions aren’t capped by n8n, but your server resources still matter. In practice, most teams run this in batches (dozens to a few hundred URLs) and schedule it daily or weekly depending on how “live” they need alerts to be.
Often, yes, because this workflow benefits from richer branching and text-handling without paying extra per “step.” n8n also gives you a self-host option, which is a big deal if you’re processing lots of mentions and don’t want your bill to spike. Zapier or Make can still be fine for a simple “send me an email when X happens” use case, but scraping, cleaning, summarizing, and sentiment is rarely just a two-step job. Another practical point: storing files and keeping an audit trail is straightforward here. Talk to an automation expert if you want help choosing.
Once this is running, the workflow does the repetitive reading and labeling for you. You get faster signal, cleaner outputs, and a lot fewer “did we miss something?” moments.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.