Bright Data + Google Sheets: meta tags done right
Writing titles and meta descriptions “from scratch” sounds fine until you’re doing it for 20 pages, under a deadline, while guessing what Google is rewarding right now. You end up flipping between SERPs, competitor pages, and a spreadsheet, then still second-guessing every character.
This is where Bright Data meta automation helps. SEO leads feel it first, but content managers and small agency owners get dragged into the same loop. You feed a keyword list from Google Sheets and get back draft titles and meta descriptions based on what’s actually ranking.
Below is how the workflow runs, what results to expect, and what you need to set it up without turning your week into a SERP-copying marathon.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Bright Data + Google Sheets: meta tags done right
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1["<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/>Fetch Google Search Results .."]
n2@{ icon: "mdi:database", form: "rounded", label: "Get Keywords", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Generate New title and metad..", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "meta structure", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Create new meta and Structure", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "set keyword", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map out keyword", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing1", pos: "b", h: 48 }
n9 --> n1
n2 --> n3
n7 --> n8
n3 --> n9
n3 --> n3
n10 --> n5
n4 -.-> n5
n6 -.-> n5
n1 --> n10
n1 --> n11
n0 --> n2
n5 --> n7
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 n5,n6 ai
class n4 aiModel
class n2,n8 database
class n1 api
classDef customIcon fill:none,stroke:none
class n1 customIcon
The Problem: Meta tags take forever (and they’re inconsistent)
If you’re trying to rank for a keyword, you can’t just “write a decent title” and hope. You need to see what the top results are doing, spot patterns (length, angle, modifiers, freshness cues), then translate that into something unique for your page. Manually, it becomes a messy process: copy 10 titles into a doc, skim a few descriptions, lose track of which keyword you’re on, then start over for the next row in your sheet. It’s slow, and honestly, it’s mentally tiring.
The friction compounds. Especially once you’re doing this at scale.
- Pulling the top 10 results for every keyword turns into an hour of tab-hopping.
- Titles end up written in different “voices,” so your site looks stitched together.
- Small errors sneak in, like mixing the wrong SERP notes with the wrong keyword row.
- When rankings shift, you rarely re-check patterns because it takes too long.
The Solution: Bright Data SERP pulls + AI drafting inside Google Sheets
This workflow starts with the simplest input possible: a list of keywords in Google Sheets. When you run it in n8n, it loops through each keyword, calls Bright Data’s SERP API to fetch Google results as JSON, then extracts the fields that matter for meta work (the titles and snippets you see in the SERP). From there, an AI agent analyzes those top-ranking patterns and generates a draft title and meta description tailored to your keyword. Finally, the workflow writes the outputs back into a “meta sheet,” so you can review, tweak, and publish without copying anything by hand.
The workflow starts when you manually run it in n8n. Google Sheets provides the keyword rows, Bright Data returns the top results, and the AI agent turns that competitive snapshot into drafts you can actually use. Your spreadsheet becomes the control panel and the output file.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 30 keywords to optimize this week. Manually, you’ll usually check the top 10 results per keyword and copy notes into a sheet, which is maybe 5 minutes per keyword if you’re moving fast. That’s about 2.5 hours just collecting SERP context, before you even draft anything. With this workflow, you kick it off once, wait for the Bright Data calls and AI drafting to run (often around 20–30 minutes total for a list that size), and your sheet fills with drafts you can review in one pass. It’s not magic, but it’s a lot less grind.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store keywords and outputs.
- Bright Data SERP API to fetch Google results as JSON.
- Google Gemini API key (get it from Google AI Studio / Google Cloud credentials).
Skill level: Intermediate. You’ll connect accounts, set API headers, and edit a couple of fields in nodes (no coding, but you should be comfortable following setup steps).
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You run it manually when you’re ready. The workflow uses a Manual Launch Trigger, which is perfect for SEO work because you usually want to review the sheet first, then generate drafts in a batch.
Keywords are pulled from Google Sheets and queued up. n8n reads your keyword rows, then iterates through them in batches so you can process a list without crashing into rate limits immediately.
Bright Data fetches live SERP results. For each keyword, the HTTP request calls Bright Data’s SERP API and returns Google results as JSON. A quick “map” step extracts the useful fields and ignores the rest. There’s also a fallback path so the workflow doesn’t fall over if a response is empty.
An AI agent generates meta tag drafts and writes them back. The agent analyzes the top titles and snippets, then outputs a structured result (title + meta description) that gets assembled into clean columns and pushed into your output sheet.
You can easily modify the prompt and output columns to match your brand rules and page types. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts on demand and pulls keywords from a Google Sheet when you manually execute it.
- Add and open Manual Launch Trigger to confirm it is the starting node.
- Connect Manual Launch Trigger to Retrieve Keyword List.
Step 2: Connect Google Sheets
These nodes read the keyword list and write the optimized metadata back to the same sheet.
- Open Retrieve Keyword List and select the spreadsheet Document with
[YOUR_ID]and Sheet Name set toKeywords to Track. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Keyword List.
- Open Update Meta Sheet and confirm Operation is set to
appendOrUpdate, and the same Document and Sheet Name are selected. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Meta Sheet.
Step 3: Configure Record Iteration and SERP Input Mapping
Each keyword row is processed in batches, and inputs are prepared for the SERP request.
- Open Iterate Records to keep the default batch settings, then connect it to Assign Search Inputs and back to itself for looping.
- In Assign Search Inputs, map fields using expressions: set search_term to
{{ $json.Keyword }}and country code to{{ $json['country code'] }}. - Confirm the execution flow: Retrieve Keyword List → Iterate Records → Assign Search Inputs.
Step 4: Configure the SERP Request and Mapping
This section queries Bright Data’s SERP API and shapes the response for the AI prompt.
- Open Request SERP JSON and set URL to
https://api.brightdata.com/requestand Method toPOST. - In Request SERP JSON, confirm body parameters: zone =
serp_api1, url ==https://www.google.com/search?q={{ $json.search_term .replaceAll(" ", "+")}}&start=0&brd_json=1, country ={{ $json['country code'] }}, and format =raw. - Set query parameter async to
trueand header Accept toapplication/json. - Credential Required: Connect your httpHeaderAuth credentials in Request SERP JSON.
- In Map SERP Fields, set titlesDescriptions to
{{ $json.organic.map(item => ({ title: item.title, description: item.description })) }}, paaQuestions to{{ $json.people_also_ask.map(item => item.question )}}, and search_term to{{ $('Assign Search Inputs').item.json.search_term }}. - Note the error branch from Request SERP JSON connects to Fallback No-Op for safe failure handling.
Step 5: Set Up AI Processing for Metadata Generation
The AI agent uses Gemini to craft SEO-optimized titles and meta descriptions based on the SERP analysis.
- Open Craft SEO Titles and keep the Prompt text as provided, including the input placeholders for keyword, SERP results, and PAA questions.
- Ensure Gemini Chat Engine is connected as the language model for Craft SEO Titles.
- Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine.
- Confirm Structured Result Parser is connected as the output parser for Craft SEO Titles, using the provided JSON schema example.
Step 6: Configure Output Mapping and Sheet Update
Combine AI outputs with the original keyword and push results back to the sheet.
- Open Assemble Meta Fields and map outputs using expressions: Keyword =
{{ $('Iterate Records').item.json.search_term }}, intent ={{ $json.output.intent }}, dominant_patterns - meta_structure ={{ $json.output.dominant_patterns.meta_structure }}, dominant_patterns - title_structure ={{ $json.output.dominant_patterns.title_structure }}, optimized_title ={{ $json.output.optimized_title }}, optimized_meta ={{ $json.output.optimized_meta }}, and cta ={{ $json.output.cta }}. - Connect Assemble Meta Fields to Update Meta Sheet to write results back into the sheet.
Test and Activate Your Workflow
Validate each step with a manual run before turning it into a repeatable process.
- Click Execute Workflow from Manual Launch Trigger to run a test.
- Confirm that Retrieve Keyword List returns rows and that Request SERP JSON returns results (or routes failures to Fallback No-Op).
- Verify that Craft SEO Titles produces a structured JSON response and that Assemble Meta Fields maps values correctly.
- Check Update Meta Sheet to ensure rows are appended or updated based on the Keyword match.
- Once validated, set the workflow to Active for production use.
Common Gotchas
- Bright Data credentials can expire or need specific permissions. If things break, check the Bright Data zone settings and your “Bright data API” header credential in n8n first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30 minutes once you have your Bright Data and Gemini credentials.
No. You’ll mostly copy credentials into n8n and adjust a couple of fields in the HTTP request and AI prompt.
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 SERP API usage plus 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.
Yes, but do it in the AI agent prompt and the “Assemble Meta Fields” mapping. Common tweaks include separate prompts for product pages vs. blog posts, adding brand rules (must include a modifier like “2026”), and enforcing a title format like “Primary Keyword | Brand”.
Usually it’s the Bright Data API header credential not matching what the HTTP Request node expects, or the zone name being wrong. Re-check the “Request SERP JSON” node headers, then confirm the zone you created under Bright Data’s SERP API settings. If it worked yesterday and fails today, regenerate the credential and update it in n8n. Rate limits can also show up as empty or partial JSON responses, which then makes the AI step look “broken” even though the real issue is upstream.
If you self-host n8n, there’s no execution limit (it mainly depends on your server and API rate limits). On n8n Cloud, the practical limit depends on your plan’s monthly executions and how many keywords you run per batch. In real use, most teams start with 20–100 keywords at a time, then scale once they’ve dialed in prompts and costs.
Often, yes, because this kind of workflow needs looping through rows, mapping JSON cleanly, and handling fallbacks when a SERP response is incomplete. n8n is also easier to self-host, which matters when you’re running larger keyword lists and don’t want per-task pricing surprises. Zapier or Make can still work if your list is small and you’re fine with a simpler “fetch → write” flow, but the moment you want structured parsing and better control, n8n tends to feel less cramped. Talk to an automation expert if you want a quick recommendation based on your volume.
You’re still in control of the final copy, which is the point. But the workflow does the repetitive SERP pulling and first-draft work so you can spend your time on decisions, not copying snippets into a spreadsheet.
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.