SE Ranking to Google Sheets, ranked SEO gaps fast
Your “SEO opportunities” live in too many places. SE Ranking reports, a few competitor tabs, a half-finished content calendar, and someone’s notes in Slack. Then Monday hits, and you still can’t answer a simple question: What should we publish next, and why?
This SEO gap automation hits SEO leads first, but content strategists and marketing managers feel it too. It turns competitive data into a ranked list you can actually act on, so you stop guessing and start shipping the right pages.
Below, you’ll see how the workflow pulls AI visibility + keyword gaps from SE Ranking, scores the opportunities, and drops a prioritized backlog into Google Sheets.
The Problem: SEO Gap Research Turns Into Spreadsheet Sprawl
Competitive SEO research is supposed to create clarity. In practice, it creates piles. You check where competitors outrank you, then you cross-reference search volume, then you sanity-check difficulty, then you try to understand if AI search is also favoring them (ChatGPT, Perplexity, Gemini). Somewhere in that mess, good ideas die because they never get prioritized. And frankly, most teams don’t lose because they lack data. They lose because they can’t turn data into a short, confident list.
It adds up fast. Here’s where it breaks down in real life.
- Opportunity research takes a few hours, then goes stale the moment rankings shift.
- AI search visibility gets checked “when we have time,” so it never truly impacts the roadmap.
- Keyword lists get copied around, which means duplicate work and missed context.
- Prioritization becomes opinion-based because you’re not scoring gaps consistently.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: SE Ranking to Google Sheets, ranked SEO gaps fast
flowchart LR
subgraph sg0["Manual Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Configuration", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Your Domain - ChatGPT", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Your Domain - Perplexity", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Your Domain - Gemini", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Wait (Rate Limit)", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Competitor - ChatGPT", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Competitor - Perplexity", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Competitor - Gemini", 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/merge.svg' width='40' height='40' /></div><br/>Merge AI Visibility Data"]
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/code.svg' width='40' height='40' /></div><br/>Calculate AI Gaps"]
n11@{ icon: "mdi:cog", form: "rounded", label: "Competitor Top Prompts", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Competitor Top Keywords", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Competitor Backlink Authority", pos: "b", h: 48 }
n14["<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/code.svg' width='40' height='40' /></div><br/>Extract Top Prompts"]
n15["<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/code.svg' width='40' height='40' /></div><br/>Extract Top Keywords"]
n16@{ icon: "mdi:cog", form: "rounded", label: "Gap Keywords - Full Metrics", pos: "b", h: 48 }
n17["<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/merge.svg' width='40' height='40' /></div><br/>Merge All Intelligence"]
n18["<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/code.svg' width='40' height='40' /></div><br/>Final Opportunity Scoring"]
n19@{ icon: "mdi:database", form: "rounded", label: "Export to Google Sheets", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "Wait (Rate Limit)1", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "Wait (Rate Limit)2", pos: "b", h: 48 }
n22@{ icon: "mdi:cog", form: "rounded", label: "Wait (Rate Limit)3", pos: "b", h: 48 }
n23@{ icon: "mdi:cog", form: "rounded", label: "Wait (Rate Limit)4", pos: "b", h: 48 }
n24@{ icon: "mdi:cog", form: "rounded", label: "Wait (Rate Limit)5", pos: "b", h: 48 }
n25@{ icon: "mdi:cog", form: "rounded", label: "Wait (Rate Limit)6", pos: "b", h: 48 }
n26["<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/merge.svg' width='40' height='40' /></div><br/>Merge All Intelligence1"]
n27["<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/code.svg' width='40' height='40' /></div><br/>Combine Keywords"]
n1 --> n2
n0 --> n1
n27 --> n16
n10 --> n13
n10 --> n25
n5 --> n3
n20 --> n4
n21 --> n6
n22 --> n7
n23 --> n8
n24 --> n12
n25 --> n11
n8 --> n9
n14 --> n26
n6 --> n22
n15 --> n26
n4 --> n21
n2 --> n5
n11 --> n14
n11 --> n24
n17 --> n18
n7 --> n9
n7 --> n23
n12 --> n15
n26 --> n27
n9 --> n10
n3 --> n20
n18 --> n19
n16 --> n17
n13 --> n17
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 n19 database
class n10,n14,n15,n18,n27 code
classDef customIcon fill:none,stroke:none
class n9,n10,n14,n15,n17,n18,n26,n27 customIcon
The Solution: SE Ranking → Scored Gap List in Google Sheets
This workflow turns SE Ranking competitive findings into a ranked, decision-ready backlog inside Google Sheets. You start by setting your domain, your competitor, and a region (like US or UK). The workflow pulls your AI search visibility and your competitor’s visibility across ChatGPT, Perplexity, and Gemini, then compares them to identify where you are losing share. Next, it grabs the competitor’s top prompts and top keywords, pulls in backlink authority signals, and fetches keyword metrics like volume and difficulty for the gaps. Finally, a scoring step prioritizes each opportunity as HIGH, MEDIUM, or LOW and writes the full list to a spreadsheet, complete with recommendations you can hand to a writer.
The workflow begins with a manual trigger (or any trigger you prefer), then runs a series of SE Ranking calls with built-in waits to avoid throttling. After it merges the AI visibility and keyword data, it scores the gaps and exports them to Google Sheets so your content plan has a clear starting point.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you review two competitors every week and you track three AI engines (ChatGPT, Perplexity, Gemini) plus keyword metrics. Manually, that’s often about 2 hours per competitor once you collect exports, clean them up, and argue about priority, so you can burn most of a morning. With this workflow, you trigger a run, wait for the API calls and scoring, and get a ready-to-sort Google Sheet in roughly 10 minutes. That’s several hours back each week, and the output is consistent every time.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- SE Ranking for AI visibility, keyword, and backlink data
- Google Sheets to store and share ranked gaps
- SE Ranking API token (get it from your SE Ranking account API settings)
Skill level: Intermediate. You’ll paste API credentials, edit a configuration node, and map a few fields to your sheet.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You kick it off with a trigger. The workflow includes a manual launch so you can run it on demand during planning, but you can also swap in a schedule or a webhook if you want weekly updates.
Your domain and competitor get set once. A configuration step stores the domain, rival domain, and “source” region. That same config controls thresholds later (for example, where volume is “worth it” for your team).
SE Ranking pulls the competitive inputs. It collects your AI visibility and the competitor’s visibility across ChatGPT, Perplexity, and Gemini, then merges the streams to compute AI opportunity gaps. Wait nodes are used between calls so you don’t trip rate limits when you run bigger comparisons.
Opportunities get enriched, scored, and exported. The workflow retrieves competitor top prompts, top keywords, and backlink power, then fetches volume and difficulty for the final keyword set. A scoring step assigns priority (HIGH, MEDIUM, LOW) and writes the ranked rows into Google Sheets, ready for your backlog.
You can easily modify the region source to match your market (US, UK, DE, FR, and so on) based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Start the workflow with a manual run so you can validate the AI search gap insights before scheduling or production use.
- Add and open Manual Launch Trigger to serve as the workflow entry point.
- Connect Manual Launch Trigger to Set Initial Parameters as shown in the execution flow.
- Verify the execution order in the canvas matches: Manual Launch Trigger → Set Initial Parameters.
Step 2: Connect SE Ranking
This workflow makes extensive use of SE Ranking API calls for AI search statistics, keyword discovery, backlink metrics, and prompt data.
- Open Fetch Own AI Stats GPT and confirm Resource is set to
aiSearchwith expressions like{{ $json.scope }}and{{ $json.your_domain }}. - Repeat for all SE Ranking nodes: Fetch Own AI Stats Perplex, Fetch Own AI Stats Gemini, Fetch Rival AI Stats GPT, Fetch Rival AI Stats Perplex, Fetch Rival AI Stats Gemini, Retrieve Rival Top Prompts, Retrieve Rival Top Keywords, Fetch Rival Backlink Power, and Fetch Gap Keyword Metrics.
- Credential Required: Connect your seRankingApi credentials on each SE Ranking node.
- Confirm the parallel branch behavior: Compute AI Opportunity Gaps outputs to both Fetch Rival Backlink Power and Pause Throttle G in parallel.
Step 3: Set Up Parameter Inputs and Throttling
Define the base inputs used across all requests and keep the throttling sequence intact for stable API responses.
- In Set Initial Parameters, set your_domain to
seranking.com, source tous, scope tobase_domain, and competitor_domain tosemrush.com. - Ensure Fetch Own AI Stats GPT uses the direct expressions from the trigger payload:
{{ $json.scope }},{{ $json.your_domain }}, and{{ $json.source }}. - Confirm the throttling chain: Fetch Own AI Stats GPT → Pause Throttle A → Fetch Own AI Stats Perplex → Pause Throttle B → Fetch Own AI Stats Gemini → Pause Throttle C.
- Check the competitor chain: Fetch Own AI Stats Gemini → Pause Throttle C → Fetch Rival AI Stats GPT → Pause Throttle D → Fetch Rival AI Stats Perplex → Pause Throttle E → Fetch Rival AI Stats Gemini.
Step 4: Set Up Processing and Merging Logic
These nodes calculate AI visibility gaps, parse prompts and keywords, and merge data for final opportunity scoring.
- Verify Combine AI Visibility is set to Mode
combineand Combination ModemergeByPositionto align rival engine responses. - Confirm Compute AI Opportunity Gaps references the prior nodes and returns gap metrics and opportunity scores as defined in its JavaScript.
- Check the prompt branch: Retrieve Rival Top Prompts outputs to both Parse Leading Prompts and Pause Throttle F in parallel, then Pause Throttle F → Retrieve Rival Top Keywords → Parse Leading Keywords.
- Ensure Merge Prompt Keyword Sets receives both Parse Leading Prompts and Parse Leading Keywords, then flows into Assemble Keyword List.
- In Fetch Gap Keyword Metrics, keep Keywords set to
=seoand Source to{{ $('Set Initial Parameters').first().json.source }}. - Confirm Fetch Rival AI Stats Perplex outputs to both Combine AI Visibility and Pause Throttle E in parallel.
- Ensure Unify Insight Streams combines Fetch Gap Keyword Metrics and Fetch Rival Backlink Power before Score Final Opportunities.
Step 5: Configure the Output Destination
Send the final ranked opportunities into Google Sheets for reporting and analysis.
- Open Update Google Spreadsheet and set Operation to
appendOrUpdate. - Set the Document to
[YOUR_ID]and Sheet toSheet1(gid0), matching the node settings. - Credential Required: Connect your googleSheetsOAuth2Api credentials.
- Keep Columns mapping set to
autoMapInputDatato write the fields from Score Final Opportunities automatically.
Step 6: Test and Activate Your Workflow
Run a controlled test to confirm the insights pipeline and sheet update are working before enabling production use.
- Click Execute Workflow from Manual Launch Trigger to run the entire sequence.
- Verify outputs at Compute AI Opportunity Gaps, Assemble Keyword List, and Score Final Opportunities to confirm rankings and opportunity scores are populated.
- Check Update Google Spreadsheet to confirm new rows are appended with fields like
rank,analysis_date, andopportunity_score. - Once validated, switch the workflow to Active to use it in production runs.
Common Gotchas
- SE Ranking credentials can expire or need specific permissions. If things break, check your SE Ranking API token status in your account settings first.
- If you’re using Wait nodes or external processing, timing varies. Bump up the wait duration if downstream scoring nodes run before SE Ranking returns complete datasets.
- Default prompts in AI nodes are generic. Add your brand voice and scoring philosophy early or you will keep second-guessing the recommendations in the sheet.
Frequently Asked Questions
About 30 minutes if your SE Ranking token and Google Sheet are ready.
No. You’ll connect credentials and adjust a few configuration fields in n8n.
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 OpenAI API usage if you keep the AI recommendation step enabled.
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 one of the best tweaks to make. Change the “source” value in the configuration step to match your market (us, uk, de, fr, and so on). You can also adjust the scoring weights and the volume/difficulty thresholds in the code steps so the HIGH/MEDIUM/LOW labels reflect how your team actually prioritizes work.
Most of the time it’s an expired or incorrect API token saved in n8n. Regenerate the token in your SE Ranking account, then update the credential used by the SE Ranking community nodes. If it still fails, check that the account has API access enabled and that you’re not hitting rate limits when comparing large keyword sets.
On n8n Cloud Starter, you’re mainly limited by monthly executions and how often you run the workflow, not by a hard keyword cap. If you self-host, there’s no execution limit (it depends on your server). In practice, most teams start with a few hundred gap keywords per run, then refine filters so the sheet stays readable and fast to act on.
Usually, yes, because this workflow needs branching, merging, waits, and scoring logic that gets awkward (and expensive) in simpler automation tools. n8n also lets you self-host, which matters if you want to run this weekly without watching task limits. Zapier or Make can still work if you only want a basic “pull report, append to sheet” flow and you don’t care about prioritization. The moment you want consistent scoring, plus AI visibility comparisons, you’ll appreciate n8n’s flexibility. Talk to an automation expert if you want help choosing.
Once this is running, you stop treating competitive research like a one-off project. You get a living, ranked list your team can execute on, week after week.
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.