Web Monitor
Monitor web pages for changes, price drops, stock availability, and custom conditions. Use when a user asks to watch/track/monitor a URL, get notified about...
jakes420
@jakes420
What This Skill Does
Monitors web pages for content changes, price drops, stock availability, and custom conditions. Supports smart URL detection, change summaries, visual diffs, price history, webhooks, and JS rendering via Playwright.
Replaces manual page checking and browser extensions by providing a programmable CLI that watches any URL and alerts on specific conditions.
When to Use It
- Track a product page for price drops below a target amount
- Get notified when an out-of-stock item becomes available again
- Monitor a news or blog page for new content or updates
- Watch a competitor's pricing page for changes over time
- Set up alerts for custom conditions like a CSS selector matching a value
- Check all active monitors at once and review change summaries
Install
$ openclaw skills install @jakes420/web-monitor-proWeb Monitor Pro
Watch any web page. Know when it changes.
Quick Start
python3 scripts/monitor.py quickstart # shows suggestions + engine status
python3 scripts/monitor.py watch "https://example.com/product"
python3 scripts/monitor.py check
First Run
Use quickstart on first run. It:
- Creates the data directory
- Checks which fetch engines are available (curl, cloudscraper, playwright)
- Returns suggestions for popular monitoring scenarios (price drops, restocks, page changes, sales)
- Lists available templates
- Shows tips for missing engines
The agent can use this info to ask the user what they want to monitor and set it up for them.
What It Does
- Monitors web pages for content changes, price drops, and restocks
- Smart change summaries ("Price dropped from $389 to $331, 15% off")
- Visual side-by-side diffs showing exactly what changed
- Price history tracking with trends and sparklines
- Price comparison across multiple stores
- Templates for common setups (price drop, restock, sale)
- JS rendering via Playwright for dynamic sites
- Webhooks to Slack, Discord, or any endpoint
- Groups, notes, snapshots, exports
- No API keys. Data in
~/.web-monitor/. Usescurlby default.
Smart Watch
The easiest way to start. Point it at a URL and it figures out the rest.
python3 scripts/monitor.py watch "https://example.com/product"
It detects whether it's a product page (sets up price monitoring), a stock page (watches availability), or a regular page (tracks content). No flags needed.
Add options if you want more control:
python3 scripts/monitor.py watch "https://example.com" --group wishlist
python3 scripts/monitor.py watch "https://example.com" --browser --webhook "https://hooks.slack.com/..."
Adding Monitors
When you want full control, use add:
python3 scripts/monitor.py add "https://example.com/product" \
--label "Cool Gadget" \
--condition "price below 500" \
--interval 360 \
--group "wishlist" \
--priority high \
--target 3000 \
--browser \
--webhook "https://hooks.slack.com/..."
All options (work with both add and watch):
--label/-lname for the monitor--selector/-sCSS selector to focus on (#price,.stock-status)--condition/-cwhen to alert (see Condition Syntax below)--interval/-icheck interval in minutes (default: 360)--group/-gcategory name ("wishlist", "work")--priority/-phigh, medium, or low (default: medium)--target/-tprice target number--browser/-buse Playwright for JS-rendered pages--webhook/-wwebhook URL, repeatable for multiple endpoints
Checking Monitors
python3 scripts/monitor.py check # check all
python3 scripts/monitor.py check --id 3 # check one
python3 scripts/monitor.py check --verbose # include content preview
Returns status (changed/unchanged), condition info, price data, and a human-readable change summary. Examples of what summaries look like:
- "Price dropped from $389 to $331 (15% off). Lowest price in 30 days."
- "Back in stock! Was out of stock for 3 days."
- "New content: 'Breaking news: AI model achieves...'"
When changes are detected, an HTML diff is auto-generated. The path appears in the diff_path field.
Dashboard
Everything at a glance.
python3 scripts/monitor.py dashboard
python3 scripts/monitor.py dashboard --whatsapp
Shows status icons, last check time, days monitored, current prices, target progress, and browser/webhook config. Groups monitors by category.
Price Trends
python3 scripts/monitor.py trend 3
python3 scripts/monitor.py trend 3 --days 30
Shows direction (rising/dropping/stable), min/max/avg with dates, target progress, and a sparkline.
Price Comparison
Compare prices across stores in a group:
python3 scripts/monitor.py compare mygroup
python3 scripts/monitor.py compare --all
Shows cheapest to most expensive, price history, and the best deal as a percentage below average.
Add a competitor to an existing monitor:
python3 scripts/monitor.py add-competitor 3 "https://competitor.com/same-product"
Creates a new monitor in the same group with the same condition.
Templates
Pre-built setups for common patterns. Skip the manual config.
python3 scripts/monitor.py template list
python3 scripts/monitor.py template use price-drop "https://example.com/product"
python3 scripts/monitor.py template use restock "https://example.com/product"
python3 scripts/monitor.py template use sale "https://example.com/deals"
Available templates:
price-dropwatches for price decreases, snapshots current price as baselinerestocklooks for "in stock", "available", "add to cart"content-updatetracks page changes with smart diffsalewatches for "sale", "discount", "% off"new-releasewatches for new items or versions
Each one pre-configures the condition, interval, and priority.
Managing Monitors
python3 scripts/monitor.py list # all monitors
python3 scripts/monitor.py list --group wishlist # filter by group
python3 scripts/monitor.py pause 3 # skip during checks
python3 scripts/monitor.py resume 3 # re-enable
python3 scripts/monitor.py remove 3 # delete
Notes and Snapshots
Attach notes to any monitor:
python3 scripts/monitor.py note 3 "waiting for Black Friday"
python3 scripts/monitor.py notes 3
Take a manual snapshot:
python3 scripts/monitor.py snapshot 3
python3 scripts/monitor.py snapshot 3 --note "price before sale"
View history:
python3 scripts/monitor.py history 3
python3 scripts/monitor.py history 3 --limit 10
Visual Diffs
Side-by-side HTML comparison. Old on the left, new on the right. Green for additions, red for removals, yellow for changes.
python3 scripts/monitor.py diff 3
python3 scripts/monitor.py screenshot 3
diff generates the comparison and opens it in your browser. screenshot saves the current content for future diffing.
Reports
Weekly summary, formatted for WhatsApp:
python3 scripts/monitor.py report
Groups
python3 scripts/monitor.py groups
Lists all groups with monitor counts.
Engines and Cloudflare Support
The monitor uses a fetch engine to grab page content. By default (--engine auto), it tries engines in order until one works:
- curl -- fast, no dependencies, works on most sites
- cloudscraper -- handles Cloudflare JS challenges without a full browser
- playwright -- full headless browser for JS-heavy SPAs
Check what's available on your system:
python3 scripts/monitor.py engines
Force a specific engine:
python3 scripts/monitor.py watch "https://example.com" --engine cloudscraper
python3 scripts/monitor.py add "https://example.com" --engine browser
Install cloudscraper (recommended for Cloudflare-protected e-commerce sites):
pip3 install cloudscraper
The engine preference is saved per monitor. You can mix engines across monitors.
JS Rendering
Sites like Amazon, Best Buy, and most SPAs load content with JavaScript. Default curl fetching won't see it. Add --browser to use Playwright's headless Chromium:
python3 scripts/monitor.py watch "https://amazon.com/dp/B0EXAMPLE" --browser
If Playwright isn't installed, it falls back to curl and warns you. Install with:
pip3 install playwright && python3 -m playwright install chromium
Webhooks
Fire a JSON POST when conditions are met or content changes:
python3 scripts/monitor.py add "https://example.com" --webhook "https://hooks.slack.com/services/..."
Use --webhook multiple times for multiple endpoints. The payload includes monitor_id, label, url, event details (status, condition_met, change_summary, current_price), and timestamp.
Webhooks fire during check whenever something triggers.
Export and Import
python3 scripts/monitor.py export > monitors.json
python3 scripts/monitor.py import monitors.json
Import skips duplicates by URL.
GUI Console
python3 scripts/monitor.py gui
Opens ~/.web-monitor/console.html in your browser. Single self-contained HTML file. Shows all monitors, price trends, alert history, groups, and templates. Dark/light mode, filtering, sorting, sparklines. No external dependencies.
Add --no-open to generate without launching.
Condition Syntax
price below 500orprice < 500alerts when price drops below thresholdprice above 1000orprice > 1000alerts when price exceeds thresholdcontains 'in stock'alerts when text appears on pagenot contains 'out of stock'alerts when text disappears
Priority Levels
- high fires an immediate alert
- medium is the default
- low gets batched into digests
Automation with Cron
Set up a cron job to check monitors regularly:
Task: Check all web monitors. Run: python3 <skill_dir>/scripts/monitor.py check
Report any monitors where status is "changed" or "condition_met" is true.
If nothing changed, stay silent.
Recommended schedule: every 6 hours (0 */6 * * *). For weekly reports, run report on Mondays.
Feedback
python3 scripts/monitor.py feedback "your message"
python3 scripts/monitor.py feedback --bug "something broke"
python3 scripts/monitor.py feedback --idea "wouldn't it be cool if..."
python3 scripts/monitor.py debug
Tips
watchis almost always the right starting point. Useaddonly when you need specific conditions.--selectorreduces noise. If you only care about the price, point it at#priceinstead of the whole page.- Group related monitors, then use
compareto find the best deal across stores. - Up to 50 snapshots per monitor are kept. Content is capped at 10KB per snapshot.
- Price targets show progress in both
dashboardandcheckoutput. snapshot --notebefore a sale event gives you a clean baseline to diff against.- For JS-heavy sites,
--browseris not optional. It's required. - Combine webhooks with Slack or Discord for real-time alerts without polling.
Top skills in this category
Crypto Whale Monitor
@waleolapoMonitors large cryptocurrency wallet balances (whales) on-chain using Web3 RPC to detect potential market-moving activity. Can read from `references/wallets....
mt5-httpapi
@psyb0tHTTP client for a user-deployed mt5-httpapi MetaTrader 5 bridge. Use ONLY when the user has explicitly installed and configured mt5-httpapi AND provided MT5_API_URL. Read endpoints (account, symbols, rates, ticks, server-side technical-analysis enrichment via the wickworks sidecar, history, backtest report fetching) are safe to invoke. Trade-mutating endpoints on /orders and /positions require explicit per-action confirmation showing symbol, side, volume, and SL/TP; terminal shutdown/restart also require explicit confirmation naming the target terminal and operation. Never invoke mutations on inferred intent. Do not use this skill for generic market-data, charting, or trading questions where the user hasn't named mt5-httpapi.
PC Build Assistant
@gongyu0918-debugUse for budget desktop PC build planning and recommendations, PC hardware DIY, upgrades, configuration completion, compatibility checks, hardware guidance, local LLM GPU/VRAM/RAM sizing, and gaming, streaming, creator, aesthetic, compact or ITX builds. Bundled prices are China-market CNY references; explicit user overlays keep currencies separate. 中文支持预算装机、装机 DIY、整机推荐、旧机升级、配置补全、搭配或兼容检查、硬件问答,以及游戏直播、生产力、本地 AI、外观海景房和紧凑或 ITX 主机。 Do not use for laptops, server procurement, ordering or payment, remote control, security isolation, or standalone software, game or agent tutorials.
PC Build Assistant
@gongyu0918-debugUse for budget desktop PC build planning and recommendations, PC hardware DIY, upgrades, configuration completion, compatibility checks, hardware guidance, local LLM GPU/VRAM/RAM sizing, and gaming, streaming, creator, aesthetic, compact or ITX builds. Bundled prices are China-market CNY references; explicit user overlays keep currencies separate. 中文支持预算装机、装机 DIY、整机推荐、旧机升级、配置补全、搭配或兼容检查、硬件问答,以及游戏直播、生产力、本地 AI、外观海景房和紧凑或 ITX 主机。 Do not use for laptops, server procurement, ordering or payment, remote control, security isolation, or standalone software, game or agent tutorials.
API Gateway
@byungkyuCall third-party APIs through the Maton gateway, which injects the credential for an app the user has already connected. Use this skill when the user names a connected app and a concrete action in it - read a mailbox, query a CRM, file an issue, update a spreadsheet, run a query through a connected