Watches your competitors' changelogs weekly, and uses an LLM to judge which updates actually matter to your product — not just a raw feed of everything they shipped.
Most "competitor tracker" tools dump every changelog entry at you, which quickly becomes noise you stop reading. This workflow is different: it compares each new update against your own product's actual feature list, scores how relevant/threatening it is (1–5), and only surfaces the ones worth your attention.
It checks two kinds of sources — competitors with an RSS/Atom feed, and competitors who only have a plain changelog webpage (handled via LLM-based extraction as a fallback). Either way, nothing gets re-reported twice: a state store remembers what's already been seen, so you only get genuinely new updates each week.
Weekly Trigger
→ Loop each competitor
→ RSS feed? → Read RSS Feed
→ Webpage? → Fetch page → LLM extracts structured updates
→ Compare against last week's saved state (Google Sheets)
→ New items? → LLM scores relevance against YOUR feature list
→ Score ≥ 3? → Save to "flagged updates" sheet
→ Save today's state, move to next competitor
→ Once all competitors are checked: build one digest, send via Telegram
- n8n instance — self-hosted or Cloud
- Google account — for the state-tracking spreadsheet (free)
- OpenRouter API key — free tier available, no credit card required (see below)
- Telegram bot — for receiving the weekly digest
-
Go to sheets.google.com and create a new blank spreadsheet. Name it anything, e.g.
n8n-competitor-watcher-state. -
Create two tabs in that spreadsheet (right-click the tab bar at the bottom → rename, or use the
+button to add a new one). Spelling and capitalization must match exactly:Tab 1:
CompetitorState— Row 1 headers:competitor | lastCheckedDateTab 2:
FlaggedUpdates— Row 1 headers:competitor | title | score | reason | link | scanDate -
Copy the Sheet ID from the spreadsheet's URL:
https://docs.google.com/spreadsheets/d/THIS_PART_IS_YOUR_SHEET_ID/edit -
In n8n, this workflow has 4 separate Google Sheets nodes. Each one needs two things set, not just one:
- Document field → paste your real Sheet ID (replaces
REPLACE_GOOGLE_SHEET_ID) - Sheet Within Document field → click it and select the correct tab from the dropdown that appears — this field does not fill in automatically just because the Document ID is set; it's a separate click every time.
Node name Sheet Within Document → select Look Up Last Checked CompetitorStateUpdate Last-Checked State CompetitorStateSave Flagged Updates FlaggedUpdatesGet This Week's Flagged Updates FlaggedUpdates - Document field → paste your real Sheet ID (replaces
-
Test each node individually with Execute step (not "Execute workflow") after setting it, one at a time — this catches a misconfigured node immediately instead of surfacing four errors at once during a full run.
- Sign up at openrouter.ai — no credit card required
- Generate a key from the Keys page
- Paste it into the
Authorizationheader of both LLM nodes, replacingREPLACE_OPENROUTER_API_KEY - The workflow defaults to free-tier models with automatic fallback — check openrouter.ai/models before your first real run, since the free model lineup rotates and the specific model names in this workflow may need updating
Same as the other workflows in this collection — create a bot via @BotFather, get your chat ID, add both to the "Send Digest" node's credentials and REPLACE_YOUR_TELEGRAM_CHAT_ID.
- "Your Product Context" node — list your product's actual current features. This is what the LLM judges relevance against, so keep it accurate and current.
- "Competitor Watchlist" node — add each competitor with their changelog URL and whether it's
rssorwebpage. For any public GitHub repo,https://github.com/OWNER/REPO/releases.atomalways works as a reliable RSS source for testing.
Once configured, it runs automatically on the weekly schedule. You can also trigger it manually via "Execute workflow" to test the full path end-to-end before trusting the schedule.
| Placeholder | Where | What to put |
|---|---|---|
productName / features |
Your Product Context node | Your product's real current feature list |
| Competitor list | Competitor Watchlist node | Name, changelog URL, and rss/webpage per competitor |
REPLACE_GOOGLE_SHEET_ID |
4 Google Sheets nodes | Your spreadsheet's ID (see Step 1) |
| Google Sheets credential | Same 4 nodes | OAuth connection to your Google account |
REPLACE_OPENROUTER_API_KEY |
2 LLM nodes | Your OpenRouter API key |
REPLACE_YOUR_TELEGRAM_CHAT_ID + credential |
Send Digest node | Your bot token + chat ID |
- Slack/Discord as alternative digest destinations
- Configurable relevance threshold (currently hardcoded at score ≥ 3)
- Auto-detect RSS feed availability instead of manually tagging each competitor
- The webpage-extraction path sends up to 8,000 characters of a competitor's public changelog page to an LLM — no private data involved, but be aware raw page content leaves your machine when using a hosted API
- Free-tier LLM usage may log prompts/completions depending on the model provider — check each model's data policy on OpenRouter if that matters for your use case
- This workflow only reads public changelog pages; it never authenticates as or scrapes behind any competitor's login wall
Part of the n8n_workflows collection. See the root README for the full workflow index, and CONTRIBUTING.md for how to submit changes.