Automate Competitor SERP Monitoring With n8n and Claude
Daily-checked, AI-summarized, Slack-delivered. The whole pipeline takes 45 minutes to set up and never asks for your attention again.
If you're SEO-active, you should know within 24 hours when a competitor takes a position you owned. Most teams find out three weeks later when traffic dips. This workflow closes that gap to one morning Slack message.
What you'll build
Cron (daily 6am)
→ Pull keyword list from Google Sheet
→ Scrape SERP for each keyword
→ Compare to yesterday's snapshot
→ If position changed, summarize with Claude
→ Post digest to Slack
Prerequisites
- n8n (self-hosted on a $5 VPS or n8n Cloud)
- A SERP API (SerpApi, ValueSerp, or DataForSEO — about $30/month for 500 daily queries)
- Claude API key
- Slack workspace + incoming webhook
Step 1: Keyword input (5 min)
Create a Google Sheet:
| Keyword | Your URL | Country | |:--------|:---------|:--------| | ai marketing automation | nvm.marketing/automation | UAE | | ... | ... | ... |
Connect n8n's Google Sheets node and read this on each run. Why a sheet: anyone on the team can add/remove keywords without touching n8n.
Step 2: SERP scrape per keyword (10 min)
Loop node → SERP API HTTP request → store top 10 results per keyword in a temp store (Redis, Postgres, or even a JSON file on disk).
Schema for each result:
{
"keyword": "ai marketing automation",
"date": "2026-05-26",
"position": 1,
"url": "competitor.com/page",
"title": "..."
}
Step 3: Diff against yesterday (10 min)
Query yesterday's snapshot. For each keyword:
- Who entered the top 3 that wasn't there yesterday?
- Who fell out of the top 10?
- Did our URL move? Up or down?
- What new title appears for the #1 position?
Drop unchanged keywords entirely. Only changes get to step 4.
Step 4: Claude summarizes (10 min)
Send the diff to Claude with this prompt:
You're an SEO analyst. Given this overnight SERP change report, write a
Slack-ready digest. Constraints:
- Lead with the highest-impact change (we moved, or a new competitor entered)
- One-line per change
- Group by keyword theme if there are many
- Tag any change that needs my attention TODAY with 🚨
- Tag interesting-but-not-urgent with 📌
- Skip anything that's just noise
Diff:
[paste]
Step 5: Post to Slack (5 min)
Slack node, posts to #seo-watch channel at 6:30am. Done.
What I'd add later
- A weekly version that summarizes patterns across 7 days (trend signal, not single-day noise)
- A "competitor profile" version that pulls just one rival's full SERP footprint every Monday
- An auto-create task in Linear/Asana when a 🚨 change appears
Build the base first. Add the extensions only when you've used the base for two weeks and know what you're missing.
Get new tools first
Fresh templates, tools, and automation recipes in your inbox each week. No noise.
More from the playbook
- Multi-channel
Build an AI Ad-Copy A/B Testing Pipeline in 30 Minutes
Claude generates variants. Promptfoo scores them. You ship the winner. End-to-end, no spreadsheets.
- Claude
Set Up Claude Code for a Marketing Team From Scratch
30-minute setup, one config file, and your team has Claude with the right context every time. No more 'paste the brand guidelines again.'
- Image generation
Best AI Image Tools for Ad Creative: Tested for 90 Days
Generated 600 ad creatives across Midjourney, Ideogram, Flux, and DALL-E. Here's which ones survived A/B tests.