Google Sheets + Gemini: smarter hashtag sets, fast
You shouldn’t have to “research hashtags” like it’s a separate job. But somehow it turns into 30 tabs, a half-finished notes doc, and that sinking feeling that you’re still guessing.
This is the kind of mess that slows down social media managers first, then agency owners and brand-side marketers right after. With Gemini hashtag automation, you can generate on-brand, trend-aware hashtag sets and drop them into Google Sheets automatically, so posting stops being a scavenger hunt.
You’ll see what the workflow does, the results to expect, and what you need to run it reliably for one brand or many.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Sheets + Gemini: smarter hashtag sets, fast
flowchart LR
subgraph sg0["Beauty Brand Hashtag Form Flow"]
direction LR
n0["<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/form.svg' width='40' height='40' /></div><br/>Beauty Brand Hashtag Form"]
n1@{ icon: "mdi:robot", form: "rounded", label: "Generate Beauty Hashtags", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model for Hashtags", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Parse Hashtag Output", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Save Hashtags to Sheet", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n6["<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/>Scrape Skincare Website"]
n7@{ icon: "mdi:robot", form: "rounded", label: "Analyze Website Content", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Get Trending Platform Hashtags", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model for Trending", pos: "b", h: 48 }
n10@{ icon: "mdi:wrench", form: "rounded", label: "SerpAPI Search Tool", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "Parse Hashtag Output1", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n10 -.-> n8
n3 -.-> n1
n11 -.-> n8
n7 --> n1
n6 --> n7
n1 --> n8
n5 -.-> n3
n0 --> n6
n2 -.-> n1
n9 -.-> n8
n12 -.-> n11
n8 --> n4
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,n7,n8,n11 ai
class n2,n5,n9,n12 aiModel
class n10 ai
class n4 database
class n6 api
classDef customIcon fill:none,stroke:none
class n0,n6 customIcon
The Problem: Hashtags Are Still Treated Like Busywork
Hashtags look simple until you’re responsible for consistency across weeks of posts, multiple platforms, and maybe a few different client brands. You can’t just reuse the same set forever (reach drops), and you can’t improvise every time without drifting off-brand. The real pain is the context switching: you check a website to remember positioning, scan competitors, search trends, then stitch something together and hope it’s not full of banned or irrelevant tags. Do that a few times a week and it becomes hours of “important” work that doesn’t feel like progress.
It adds up fast. Here’s where it breaks down.
- Every post starts from a blank page, so you keep re-learning the brand’s voice and audience.
- Trend research is scattered, which means you miss what’s currently getting traction on each platform.
- Teams copy-paste from old captions and accidentally ship irrelevant hashtags for new launches.
- There’s no central library in Google Sheets, so nobody knows what was used, when, or why.
The Solution: Website-Aware, Trend-Enriched Hashtags Saved to Sheets
This n8n workflow starts with a simple form where you enter a brand name and website URL (plus any extra details you want it to consider). It then pulls the site’s public content via HTTP request, so the automation can “read the room” before generating anything. Gemini analyzes the site, extracts positioning and tone, and uses that context to draft structured hashtag sets that fit the brand and audience. Next, it enriches those hashtags with live trend research using SerpAPI, so you’re not relying on stale assumptions. Finally, it logs the finished, platform-ready hashtag sets into Google Sheets, creating a searchable library you can reuse and iterate over.
The workflow begins when someone submits the intake form. Gemini turns the website into brand context, generates hashtag ideas, then checks trends and refines the final sets. Google Sheets becomes the destination, so your team can open one place and copy ready tags.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you manage 6 beauty and skincare clients and you build hashtags for 3 posts per client each week. Manually, if you spend maybe 10 minutes reviewing the site, 10 minutes trend-checking, and 5 minutes assembling tags, that’s about 25 minutes per post, or roughly 7–8 hours weekly. With this workflow, you submit the form in about 2 minutes, then wait a few minutes for scraping, Gemini generation, and trend lookup before it lands in Google Sheets. That turns an afternoon of research into a quick intake and a copy/paste moment.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for storing a hashtag library.
- Google Gemini API to analyze sites and draft hashtags.
- SerpAPI key (get it from your SerpAPI dashboard).
Skill level: Intermediate. You’ll connect accounts, add API keys, and test with a couple real brand URLs.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Brand intake triggers the run. Someone fills out the Brand Hashtag Intake Form with a website URL and brand details, and n8n kicks off the workflow immediately.
The website gets pulled for real context. An HTTP request fetches the public HTML from the site, which is usually enough for text-rich pages like “About,” “Products,” and landing pages. If the site is mostly images or locked behind scripts, you’ll want to point the form at a better URL.
Gemini turns that content into hashtags. The workflow evaluates the site content, composes brand-aligned hashtag sets, then uses structured output parsing so the result is clean data (not a messy blob of text).
Trends are added and everything is logged. SerpAPI helps retrieve current trend signals per platform, the workflow merges that into the final suggestions, then appends a new row in Google Sheets so your library grows over time.
You can easily modify how many hashtags are generated to fit each platform’s style. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
Set up the intake form that starts the workflow and collects brand details for hashtag generation.
- Add the Brand Hashtag Intake Form trigger node.
- Set Form Title to
Beauty Brand Hashtag Generator. - Set Form Description to
Generate trending hashtags for your beauty brand. - Add fields exactly as labeled: Skincare Brand Website URL, Brand Name, Product Category (e.g., skincare, makeup, haircare), Target Audience, Brand Tone (e.g., luxury, natural, playful), and Number of Hashtags (5-10) with Default Value
10.
Skincare Brand Website URL exactly, because Fetch Brand Website HTML references it in an expression.Step 2: Fetch Brand Website Content
Pull the brand’s website HTML so the AI can analyze positioning and messaging.
- Add the Fetch Brand Website HTML node and connect it after Brand Hashtag Intake Form.
- Set URL to
={{ $json['Skincare Brand Website URL'] }}. - Enable Send Headers and add headers: User-Agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36, Accepttext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, and Accept-Languageen-US,en;q=0.9. - In Options, allow unauthorized certs if needed to avoid blocked HTTPS responses.
Step 3: Set Up AI Analysis and Hashtag Generation
Analyze the website content and generate structured brand hashtags. The execution flow is Fetch Brand Website HTML → Evaluate Site Content → Compose Brand Hashtags.
- Add Evaluate Site Content and connect it after Fetch Brand Website HTML.
- Credential Required: Connect your googlePalmApi credentials in Evaluate Site Content.
- Confirm Evaluate Site Content is set to output JSON and uses the form inputs and scraped content in its prompt.
- Add Compose Brand Hashtags and connect it after Evaluate Site Content.
- Set Text to the full prompt including expressions like
{{ $('Brand Hashtag Intake Form').item.json.num_hashtags || 10 }}and{{ $json.content.parts[0].text }}. - Ensure Gemini Hashtag Model is connected as the language model for Compose Brand Hashtags. Credential Required: Connect your googlePalmApi credentials in Gemini Hashtag Model.
- Ensure Interpret Hashtag JSON is connected as the output parser for Compose Brand Hashtags. Gemini Parser Model is connected as its language model—add credentials to Gemini Parser Model, not the parser itself. Credential Required: Connect your googlePalmApi credentials.
Step 4: Retrieve Platform Trends with Search Tooling
Augment the generated hashtags with current trends by platform using a search tool and a second parser chain.
- Add Retrieve Platform Trends and connect it after Compose Brand Hashtags.
- Set Text to the prompt that includes
{{ JSON.stringify($json.output.hashtags, null, 2) }}and{{ $now.format('dd MMMM yyyy') }}. - Ensure Gemini Trends Model is connected as the language model for Retrieve Platform Trends. Credential Required: Connect your googlePalmApi credentials in Gemini Trends Model.
- Ensure SerpAPI Trend Lookup is connected as the AI tool for Retrieve Platform Trends. Credential Required: Connect your serpApi credentials in SerpAPI Trend Lookup.
- Ensure Interpret Trend JSON is connected as the output parser. Add credentials to Gemini Trend Parser (the language model for the parser), not the parser itself. Credential Required: Connect your googlePalmApi credentials.
Step 5: Configure Output to Google Sheets
Append the finalized hashtags and brand details into a Google Sheet. The execution flow is Retrieve Platform Trends → Append Hashtags to Sheet.
- Add Append Hashtags to Sheet and connect it after Retrieve Platform Trends.
- Credential Required: Connect your googleSheetsOAuth2Api credentials.
- Set Operation to
append. - Select the spreadsheet in Document (replace
[YOUR_ID]with your file) and set Sheet Name toSheet1. - Map columns using expressions: Hashtags
={{ $json.output.hashtags.map(h => h.hashtag).join(', ') }}, Brand Name={{ $('Brand Hashtag Intake Form').item.json['Brand Name'] }}, Generated At={{ $('Brand Hashtag Intake Form').item.json.submittedAt.toDateTime().format("dd MMM yyyy HH 'hours' mm 'minutes'") }}, and Product Category={{ $('Brand Hashtag Intake Form').item.json['Product Category (e.g., skincare, makeup, haircare)'] }}.
Step 6: Test and Activate Your Workflow
Run a manual test to verify the full chain from intake to Google Sheets output.
- Click Execute Workflow and submit the Brand Hashtag Intake Form with a real brand URL and details.
- Confirm Fetch Brand Website HTML retrieves HTML and Evaluate Site Content returns a valid JSON analysis.
- Verify Compose Brand Hashtags outputs structured hashtags and Retrieve Platform Trends returns platform trend lists.
- Check the Google Sheet to ensure Append Hashtags to Sheet adds a new row with formatted fields.
- Once successful, toggle the workflow to Active to enable ongoing form submissions.
Common Gotchas
- Google Sheets credentials can expire or need specific permissions. If things break, check the n8n credential tester and your Google account access 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–60 minutes if your API keys are ready.
No. You will mostly connect accounts and paste API keys into n8n credentials.
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 Gemini API usage plus SerpAPI costs for trend lookups.
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, and it’s honestly one of the best uses of this setup. You’ll keep the same flow (form intake → website scrape → Gemini analysis → trend enrichment → Google Sheets), then adjust the prompt used in the Compose Brand Hashtags step to match your industry, audience, and compliance needs. Common tweaks include changing the number of hashtags, adding a “banned terms” list, and generating separate sets per platform (Instagram vs. LinkedIn usually needs different vibes). If you support multiple clients, add a required “Client name” field in the form and use it as a column in the Sheet.
Usually it’s expired Google credentials or the connected account doesn’t have edit access to the target spreadsheet. Reconnect Google Sheets in n8n, then confirm the Sheet ID and tab name match exactly. If you’re running this for a team, make sure the spreadsheet is owned or shared in a way that won’t get revoked later.
A lot. The practical limit usually comes from your n8n plan executions and your Gemini/SerpAPI usage, not the workflow itself.
For this kind of workflow, n8n is typically a better fit because you can combine scraping, AI steps, structured output parsing, and branching without paying extra for every little formatter step. Self-hosting also matters if you’re running this for many clients and don’t want to think about execution caps. Zapier or Make can still work, but the trend-enrichment and “clean JSON into Sheets” part tends to get fiddly fast. If you just want a simple “generate tags from a prompt” automation, those tools may feel simpler at first. Talk to an automation expert if you want help picking the right setup.
Once this is running, hashtag research stops being a recurring project. You’ll open Google Sheets, grab a fresh set, and get back to the work that actually moves the brand.
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.