In my case, n8n on the NAS killed off three separate cloud tools I’d been paying for to handle the repetitive SEO work: rank tracking, GSC reporting, and backlink alerts. But it comes with a data-volume ceiling that, if you don’t know about it before you design your workflows, will cost you hours of frustration.
I’ve been running n8n on my Synology NAS for months now to automate the mechanical parts of SEO: pulling data from GSC, rank tracking, indexation alerts, and competitor monitoring. In this article I’ll walk through the 6 workflows I keep running, how they’re set up, and—above all—where n8n falls down, so you don’t repeat my mistakes.
If you don’t have n8n on your NAS yet, here’s the install guide using Container Manager, no Portainer required.
Why running n8n on a local NAS changes the cost math
The pitch is simple. n8n in the cloud charges per execution. Zapier charges per zap. Make charges per operation. With n8n on your own NAS, the marginal cost of each workflow is zero. The server is already on 24/7, drawing under 20W.
For an SEO running daily GSC reports, rank tracking, and backlink alerts, the savings can add up (a cloud rank tracker runs €25-40/month, backlink alerts another €15-30; n8n on the NAS you already have working for SEO adds nothing on top). But the real cost isn’t the financial one. It’s the maintenance. When something breaks in a critical workflow, you’re the one fixing it. With that clear, these are the workflows that earn the effort.
The 6 active workflows (overview)
| Workflow | Frequency | Input | Output | Key node |
|---|---|---|---|---|
| GSC opportunity report | Weekly | GSC API | Google Sheets + AI summary | HTTP Request + AI Agent |
| Automatic indexation | Daily | Sitemap XML | GSC Indexing API | HTTP Request |
| Daily rank tracking | Daily | DataForSEO API | Google Sheets + alerts | HTTP Request |
| Lost-backlink alerts | Daily | Ahrefs API | Slack / Email | HTTP Request + Filter |
| Competitor change monitoring | Daily | Changedetection.io | Slack / Email | Webhook |
| SEO report distribution | Weekly | Google Sheets | Email + Notion | Code + Gmail + Notion |
Workflow 1 — Weekly GSC opportunity report
What it does: connects to the Google Search Console API, pulls the last 7 days of data (queries, clicks, impressions, average position), and dumps it into a structured spreadsheet. Then an AI Agent node analyzes the sheet and generates a summary of the pages sitting in positions 8-20 with high impressions and low CTR. The most actionable opportunities there are.
Nodes: Schedule Trigger (Monday 8:00) → HTTP Request (GSC API with OAuth) → Google Sheets (dump) → AI Agent (Claude or GPT-4o) → Gmail (summary).
The critical limit: when a site has heavy traffic, a month of data can run past 2,000 rows. At that volume, the AI Agent node can take 15-20 minutes or just hang. The fix is to cap the window at 7 days (~500 rows) and pre-filter for queries with impressions > 50 only. CXL documented exactly this problem in their public build-in-public series on SEO agents with n8n: at 2,000 records the workflow never finished, at 500 it ran in minutes.
The dynamic date parameters I use in the HTTP Request node:
{
"startDate": "{{ $now.minus({days: 7}).format('yyyy-MM-dd') }}",
"endDate": "{{ $now.format('yyyy-MM-dd') }}",
"rowLimit": 500,
"dimensionFilterGroups": []
}Workflow 2 — Automatic indexation from the sitemap
What it does: reads the XML sitemap every 24 hours, compares it against a previous record in Google Sheets to spot new or modified URLs, checks their indexation status via the GSC API, and submits the ones that aren’t indexed yet or have an old crawl date to the Google Indexing API.
Nodes: Schedule Trigger → HTTP Request (sitemap) → XML Parser → Google Sheets (comparison) → HTTP Request (GSC API status) → IF (indexed?) → HTTP Request (Indexing API) → Slack (notification).
Limit to watch: the Google Indexing API allows 200 requests per day per service account. The workflow needs a counter node that stops the requests as you near that limit. Without it, the first run can burn through your quota and leave the rest of the day unprocessed.
When it’s worth it: this one makes sense if you publish often or manage several sites. For a blog putting out 4-5 articles a month, the impact is marginal and the effort to build it doesn’t pay back.
Workflow 3 — Daily rank tracking without Semrush
What it does: queries the DataForSEO API every day with a list of target keywords stored in Google Sheets, gets the current positions in Google Spain, and logs the history. If a keyword drops more than 3 positions versus the day before, it fires an alert to Slack.
Nodes: Schedule Trigger → Google Sheets (keyword list) → HTTP Request (DataForSEO API) → Google Sheets (historical log) → Conditional (drop > 3 positions) → Slack.
The real cost: DataForSEO charges per API query. Tracking 100 keywords daily costs roughly $0.15/day (around $55/year). Substantially less than the cloud alternatives, but not free. If you don’t actually need daily frequency, weekly cuts the cost by 85%.
Free alternative: SerpBear is a self-hosted app you can also install on the NAS. No cost per query, with limits on volume and speed. Enough for mid-sized sites.
Workflow 4 — Lost-backlink alerts
What it does: queries the Ahrefs API daily to catch backlinks lost in the last 24 hours with a Domain Rating > 30, and sends a Slack alert with the details of the lost link and the affected target URL.
Nodes: Schedule Trigger → HTTP Request (Ahrefs API) → Filter (DR > 30) → IF (any new items?) → Slack or Gmail.
The endpoint I use to pull recently lost backlinks:
GET https://api.ahrefs.com/v3/site-explorer/all-backlinks
?select=url_from,url_to,domain_rating_source,date_lost
&where={"and":[
{"field":"date_lost","is":["gte","{{ $now.minus({days:1}).format('yyyy-MM-dd') }}"]},
{"field":"domain_rating_source","is":["gte",30]}
]}
&target=yourdomain.com
&mode=domainA hard requirement with no workaround: you need an Ahrefs subscription with API access. There’s no free equivalent for real-time backlink data. If you don’t have the Ahrefs API, this particular workflow isn’t viable without an alternative data source.
Workflow 5 — Monitoring competitor changes
What it does: monitors changes on key competitor pages (titles, meta descriptions, H1s, prices where relevant) and fires an alert when it detects a meaningful edit.
For this one I use Changedetection.io, also installed on the NAS, as the detection engine. n8n acts as the alert orchestrator: Changedetection.io spots the change and fires a webhook to n8n, which filters, formats, and distributes the notification.
Architecture: Changedetection.io (NAS) → Webhook → n8n → Slack / Email.
What to watch: don’t monitor random competitor pages. Monitor the ones ranking for your target keywords. The ones taking positions off you directly. That granularity is what makes the workflow useful.
False positives: Changedetection.io can fire alerts on minor HTML changes (timestamps, counters, dynamic ads) that aren’t editorial. Set specific CSS selectors (say, just the article block or the h1) to filter the noise. n8n can add a validation step: if the change percentage is under 5%, drop the alert.
Why not do it all in n8n: n8n can HTTP Request URLs and compare HTML, but Changedetection.io has built-in diff visualization, history, and CSS selector management. For serious competitor monitoring, the combination beats n8n alone.
Workflow 6 — Distributing the weekly SEO report
What it does: every Monday at 9:00, n8n opens the GSC + ranking tracking sheet, pulls the weekly swings on the key KPIs (impressions, clicks, average position, URLs with notable changes), and sends them formatted to email and to a Notion database.
Nodes: Schedule Trigger → Google Sheets (the week’s data) → Code node (variation calc) → Gmail + Notion API.
The Code node is where you get real flexibility. Instead of relying on prebuilt integrations, the node’s JavaScript runs the calculations you need and formats the message exactly the way you want it. An example of the percentage-variation calc:
// Code node — weekly variation calc
const current = $input.item.json.clicks_this_week;
const previous = $input.item.json.clicks_last_week;
const variation = previous > 0 ? ((current - previous) / previous * 100).toFixed(1) : 0;
const trend = variation >= 0 ? `+${variation}%` : `${variation}%`;
return {
json: {
...$input.item.json,
clicks_variation: trend,
summary_line: `Clicks: ${current} (${trend} vs last week)`
}
};The limit nobody warns you about: n8n and data volume
The most common mistake when building SEO workflows in n8n is not thinking about data volume before you build. n8n processes data in memory inside the node. If an HTTP Request returns 5,000 rows of GSC data or 10,000 backlinks, the AI Agent node will try to process all of it as context, and either it blows past the model’s token limit or it takes several minutes.
The rules I apply to keep the workflows stable:
- For workflows with an AI Agent: 500 input rows max. Filter before the AI node.
- For pure logging workflows (no AI): no practical limit if the NAS has enough RAM.
- For workflows hitting quota-limited APIs: always add a quota counter node before the calls run.
- For critical workflows: add an Error Trigger node that alerts you if the workflow fails mid-run.
The right question before you design a workflow isn’t “can I connect A to B?” It’s “how many records will this handle once the site grows?”
Where to start
If you’re coming to n8n for SEO from scratch, here’s the order I recommend:
- Install n8n on your NAS (install guide with Container Manager).
- Build the GSC report workflow first. It’s the most direct, needs no paid APIs, and the payoff is immediate.
- Add the automatic indexation workflow if you publish content regularly.
- Bring in rank tracking only once your target keyword list is stable.
- The rest (backlinks, competitors, distribution) add by real need, not for the sake of completeness.
The usual trap is trying to stand up all 6 workflows at once. n8n has a learning curve and the first workflows take longer than you expect. One working well beats six half-built.
Automation in SEO doesn’t replace judgment. It frees up time to apply it where it counts. The workflows described here don’t decide what to optimize; they make the data available when you do. That’s the right split between machine and person.
If you want to see how this fits into a broader AI-driven SEO system, the strategic context is in my piece on SEO with AI.
Frequently asked questions
Do I need to know how to code to use n8n for SEO?
Not for the basic workflows (GSC, indexation, Sheets). The Code JavaScript node is optional and only needed for custom transformations. Most of the workflows here run on visual nodes without writing any code.
Can I use n8n.cloud instead of installing on a NAS?
Yes, but you’ll pay per execution. If you have workflows running daily, the cumulative cost can pass that of a NAS in 12-18 months. The NAS is a fixed cost; n8n.cloud is variable. For low volumes (under 5,000 executions/month), n8n.cloud can be more convenient than maintaining your own infrastructure.
What happens if the NAS shuts down or there’s a power cut?
Scheduled workflows don’t run during downtime and n8n doesn’t retry them automatically. For critical workflows, add an external verification system or consider a UPS (uninterruptible power supply) for the NAS.
Can n8n replace Semrush or Ahrefs?
No. n8n is an orchestrator: it connects APIs and moves data. Semrush and Ahrefs have their own databases (backlink index, search volumes) that you can’t replicate for free. What you can do is use n8n to automate the repetitive tasks you’d otherwise do by hand in those tools, and cut the time spent on mechanical operations.
How much RAM does the NAS need to run these workflows?
With 4 GB of RAM the n8n container runs fine for the workflows described. If you add other services on the same NAS (Changedetection.io, SerpBear, databases), 8 GB is the comfortable minimum. The DS1522+ with 32 GB of RAM handles all these services with room to spare.
Continue reading about SEO & AI

LLM SEO With and Without RAG: A Practitioner’s Guide

NAS for SEO: How I Turn a Synology Into a 24/7 SEO Server

How to Install n8n on a Synology NAS (Container Manager, Step by Step)

AI Agents for SEO: What They Are and How to Build One You Can Trust

How to use AI for SEO: the practical guide

