An n8n flow that monitors your tracked competitors across pricing pages, blog posts, hiring pages, and G2 reviews; uses Claude to summarize what changed; and posts a weekly digest to a Slack channel your sales team will actually open. No more discovering a competitor’s price cut from a lost-deal Slack thread.
What you’ll need
- n8n (cloud or self-hosted) with HTTP and Schedule triggers
- A list of competitor domains and the pages worth tracking on each
- Claude API key
- A Slack workspace with a competitive-intel channel and an incoming webhook
Setup
- Build the tracked-pages list. A spreadsheet or n8n data table with columns: competitor name, page type (pricing, blog, hiring, reviews), URL, last seen content hash. Twenty to thirty rows is typical.
- Schedule the crawl. n8n Schedule trigger, daily at five am UTC. The flow iterates the page list, fetches each URL, computes a content hash, compares to the previous hash. New hash means changed content.
- Diff and summarize. For each changed page, the flow sends the old and new content to Claude with a prompt: “summarize what changed, in two sentences, focused on what a salesperson should know.” Output goes into a per-competitor summary block.
- Aggregate and post. End of the run, n8n composes one Slack message per competitor with material changes and posts to the channel. Pages with no change are silent; no noise.
- Add a manual trigger. A second flow that lets the sales team request “what is new with Acme” on demand, bypassing the schedule.
How it works
The flow is a classic poll-diff-summarize-fan-out pattern. The polling layer is dumb HTTP fetching. The diff layer is content hashing plus a “is this material” filter (single-character changes get ignored). The summarization layer is Claude with a tight prompt. The fan-out layer is Slack.
The “is this material” filter matters more than it sounds. Pricing pages re-render on every deploy with timestamp differences that are not material. Blog post edits that fix typos are not material. Without this filter, the digest fires every day with nothing actually changed, and the channel gets muted.
Watch-outs
- Robot detection. Aggressive crawling gets blocked. Throttle to one request per page per day, set a real user agent, and respect robots dot txt.
- G2 and review sites. These pages are JS-heavy and often anti-bot. Either pay for a service that handles them or skip those sources.
- Hallucinated changes. Claude will confidently report a change that is not really there if the diff is messy. The prompt includes “if the change is cosmetic or unclear, return NO_CHANGE.”
- Channel noise. Even with filtering, the channel can hit fatigue. Weekly digest beats daily. Hold the cadence.
Stack
- n8n — scheduler, fetcher, diff, fan-out
- Claude — change summarization
- Slack — distribution channel for the sales team