Marketing · 02 · Distribution & channelsLesson 5 of 5
Competitor & market monitoring
- Scrape and monitor competitors ethically
- Get a weekly what-changed brief automatically
Know when they move, without the doomscrolling
What you're building here runs while you sleep: every Monday, a digest of what your real competitors changed last week - pricing, positioning, launches - lands where your team already looks. Without it, competitor awareness means someone notices a pricing change three weeks late because they happened to visit the site. The useful version is boring and systematic: watch a fixed set of pages, diff them against last week, and surface only what changed and matters.
- Pricing pages - the highest-signal page on any competitor's site.
- Homepage and positioning - headline changes mean strategy changes.
- Product or changelog pages - launches and feature framing.
- Customers and case-study pages - who they're winning and which segment they're courting.
- Careers pages - hiring patterns telegraph roadmap quarters early.
The tools: already in Claude Code
You don't need a scraping product for this. Claude Code fetches public web pages natively, converts them to clean text, and saves them as files - which is the entire technical requirement. The skill you build fetches each watched page, saves a dated markdown snapshot in the repo, and diffs it against last week's snapshot. Pages in, files saved, diff out.
Keep the crawl polite and small: a handful of competitors, a few pages each, once a week. That's well inside what any site tolerates from a single visitor, and it's all the frequency strategy signals need.
The competitor-watch skill
Configuration is a file, as always: a small YAML listing who you watch and which pages matter. The skill reads it, crawls, diffs, and writes the digest. Competitor-monitoring skills exist in the open catalogs - install the library's version if one fits, then adapt the watch hints, the politeness rules, and the digest format to yours.
competitors:
- name: acme-agency
pages:
- url: https://acme.example/pricing
watch: pricing, packaging, money-back terms
- url: https://acme.example/
watch: headline, positioning, hero CTA
- name: northstar-consulting
pages:
- url: https://northstar.example/services
watch: service list, new offerings
- url: https://northstar.example/careers
watch: roles posted (roadmap signal)- Create targets.yaml with 3-5 competitors, 2-4 pages each. The watch hints tell the summarizer what counts as signal per page.
- Build the skill: for each target, fetch the page, convert to markdown, save a dated snapshot, and diff against the previous one.
- Summarize with judgment: meaningful changes only - pricing, claims, offers, launches. Explicitly instruct it to ignore cosmetic churn: typo fixes, image swaps, copyright years.
- Write the digest to reports/competitors-<date>.md: change, competitor, evidence (the before/after lines), and a one-line 'so what' each.
- First run is baseline-only - it just captures snapshots. The diffs start being interesting on run two.
Schedule it and route it
A monitor you run by hand is a monitor you stop running. This is the next rung of the ladder: you chatted through the diff once, you encoded it as a skill, and now the skill runs on a schedule without you. Two scheduling paths: a local cron job running the skill headless via claude -p (headless runs start in Manual permission mode, so pass --permission-mode explicitly, and they draw from the same subscription limits as your chat), or Claude Code Routines - scheduled sessions running on Anthropic's cloud on a cron trigger, set up with /schedule and managed with /schedule list. Routines are still a research preview as of September 2026, with a one-hour minimum interval. They survive your laptop being closed, which is exactly what a Monday-morning monitor needs. The cloud path has two requirements the local one gets for free. History: a Routine clones the repo fresh, so last week's snapshots must be committed and pushed before the run has anything to diff against - and the Routine pushes its own results to a claude/ branch by default, so someone merges that branch after each run. Delivery: a Routine sees only your claude.ai connectors, not MCP servers you added locally with claude mcp add, so posting the digest into team chat from the cloud needs a chat connector configured on the account.
- Schedule the weekly run for early Monday, before your team's planning slot.
- If you use a Routine, close the git loop: snapshots committed and pushed before each run, and the claude/ branch it pushes merged after - make that part of the digest owner's Monday job.
- Deliver the digest where people already look - your team chat or the weekly report - not a folder nobody opens. From a cloud Routine, chat delivery means an account-level connector; without one, the digest lands in the repo and the owner forwards it.
- Once a quarter, prune targets.yaml: drop pages that never produced signal, add the competitor that started showing up in deals.
The same machine, daily: a news digest that feeds the backlog
Competitors move weekly; your niche's conversation moves daily. The content engine needs to know what happened this morning, or every draft sounds a week late. Run the same fetch-save-summarize pattern as a daily news skill: a fixed list of sources (the publications, newsletters, forums, and feeds your buyers read), a dated digest written to content/news/YYYY-MM-DD.md, and, the part that makes it pay, 2-3 flagged angles appended to calendar/backlog.md, each with the one thing you own that makes it yours to post.
- For a permanent morning run, use a Routine (cloud, laptop closed, one-hour minimum interval) or local cron.
- For a working session,
/loopis lighter:/loop 1h check the sources in data/news-sources.yaml and append anything new to today's digestre-runs inside your open session. Loops live in your open session and recurring ones expire after 7 days, so they're for a launch week or a conference, not for infrastructure. - Public pages and RSS cost nothing to fetch. A paid scraper for social feeds does cost money, so price it before it's scheduled: per-run cost x runs per month, written in the skill, and the schedule left off until one manual run is checked. A key sitting in your environment is not permission to spend it.
- Keep the digest short enough to read over coffee. Ten items with a one-line 'so what' beats forty links nobody opens.
Do this now
Sources and further reading
Want us to set it up with you, end to end?
Three one-on-one sessions. We train you on your real stack and build your first agents together, until you can run it yourself. You keep everything.