π Monitor competitor SEO changes with CustomJS Scraper, Google Sheets & Slack alerts
β‘ 237 views Β· π Market Research & Insights
π‘ Pro Tip β HTTP Request scraping tends to break when sites update their markup. If youβre scraping a major platform, check if ScraperNode covers it β it has maintained scrapers for LinkedIn, Instagram, TikTok, YouTube, and 20+ other platforms that return structured data.
Description
> β οΈ Notice:
> Community nodes like @custom-js/n8n-nodes-pdf-toolkit can only be installed on self-hosted instances of n8n.
Screenshot from 20250911 001042.png
This n8n workflow demonstrates how to monitor competitor websites for SEO changes by scraping content and updating a Google Sheet. It uses the Scraper node from customjs.space to extract HTML content and parse key SEO elements like title, <h1>, <h2>, and meta description.
What this workflow does
- Reads a list of competitor websites from a Google Sheet.
- Uses the CustomJS Scraper node to fetch raw HTML for each website.
- Extracts important SEO data:
- Page
title <h1>headings<h2>headings- Meta description
- Page
- Updates the Google Sheet with the latest scraped values and a timestamp.
- Compares the new values with the previous ones:
- If changes are detected, a Slack notification is sent.
Requirements
- Self-hosted n8n instance.
- CustomJS API key for the Scraper node.
- A Google Sheet containing competitor website URLs.
- Slack workspace (optional, for notifications).
Workflow Steps
-
Schedule Trigger
Runs automatically (weekly by default, adjustable as needed). -
Google Sheets β Get Competitor URLs
Reads competitor website URLs from the configured sheet. -
CustomJS Scraper β Fetch HTML
- Inputs each website URL.
- Returns raw HTML text for analysis.
-
Code β Extract SEO Elements
Parses the HTML to extract:- Title
- H1s
- H2s
- Meta description
-
Google Sheets β Update SEO Data
Updates the sheet with the new SEO data and a current date. -
If β Check for SEO Changes
Compares old vs. new values. -
Slack Notification β Alert on Changes
Sends a message to Slack when updates are detected.
Usage
-
Get API key from CustomJS
- Sign up on the CustomJS platform.
- Navigate to your profile page.
- Click βShowβ to reveal your API key.
-
Set Credentials for CustomJS API in n8n
- Copy your API key into a new
CustomJScredential.
- Copy your API key into a new
-
Prepare your Google Sheet
- Create a sheet with a column named Websites.
- Enter competitor URLs (must start with
https://).
-
Run or schedule the workflow
- The workflow will scrape competitor sites, update the sheet, and notify you of any SEO changes.
Example Output
Google Sheet after update:
| Websites | Title | Meta Description | H1s | H2s | Date |
|---|---|---|---|---|---|
| https://example.com | Example Title | Example meta description | Example H1 Heading | Example H2s | 2025-09-07 12:00:00 |
Slack Notification Example
> β οΈ Competitor SEO Change Detected!
Website: https://example.com
Title
- Old: Example Title
- New: New Example Title
Meta Description
- Old: Example meta description
- New: Updated example meta description
H1s
- Old: Example Heading
- New: Updated Heading
H2s
- Old: Example Subheading
- New: Updated Subheading
Date: 2025-09-07 12:00:00
Customization Tips
- Change scraping frequency in the Schedule Trigger (daily, weekly, etc.).
- Track additional elements by extending the regex in the Code Node.
- Send alerts to other platforms (e.g., Email, Microsoft Teams, Discord) by swapping the Slack node.
- Store results in a database instead of Google Sheets if long-term history is required.
π Nodes Used
Google Sheets, Slack, Schedule Trigger
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File