firecrawl-monitor
GitHub监控网页内容变化,支持单页、批量、全站及全网搜索模式。通过定时检查对比页面状态,并在检测到变更或新结果时,通过 Webhook 或邮件发送告警通知。
Trigger Scenarios
Install
npx skills add firecrawl/cli --skill firecrawl-monitor -g -y
SKILL.md
Frontmatter
{
"name": "firecrawl-monitor",
"description": "Alert by webhook\/email on web changes — use for \"monitor\/watch\/track\/alert me when\": recurring checks on known URLs (prefer over repeated one-off scrapes) or web-wide watches for new results (queries + goal).\n",
"allowed-tools": [
"Bash(firecrawl *)",
"Bash(npx firecrawl-cli *)"
]
}
firecrawl monitor
Detect when content on a website changes and get notified by webhook or email. Firecrawl handles fetching, diffing, judging, and notifying server-side. Each page in a check is labeled same, new, changed, removed, or error.
Pick a target mode by what you're watching:
| Mode | Flags | Watches |
|---|---|---|
| Single page | --page <url> |
one URL, for changes |
| URL batch | --scrape-urls <url,url,...> |
several URLs, for changes |
| Whole site | --crawl-url <root-url> |
every page a crawl discovers, for changes |
| Web search | --queries <q,...> + --goal |
the whole web, for new results matching the goal |
The first three watch URLs you already have. Web search runs your queries each check and alerts on results it hasn't seen before (labeled new once, same on later checks); --goal is required with --queries.
Quick start
# Single page, natural-language schedule, email alert
firecrawl monitor create --name "Blog" --schedule "every 30 minutes" \
--goal "Alert when a new blog post is published." \
--page https://example.com/blog \
--email alerts@example.com
# Web monitor — search the whole web for NEW results matching a goal
firecrawl monitor create --name "Competitor launches" --schedule "daily at 9:00" \
--queries "competitor product launch,competitor funding round" \
--goal "Alert when a competitor announces a new product or raises funding." \
--search-window 7d --max-results 20 \
--email alerts@example.com
# Webhook notifications
firecrawl monitor create --name "Docs webhook" --schedule "every 30 minutes" \
--goal "Alert when docs content changes." \
--page https://example.com/docs \
--webhook-url https://example.com/hook \
--webhook-events monitor.page,monitor.check.completed
# Manage and inspect
firecrawl monitor list --limit 20
firecrawl monitor get <monitorId>
firecrawl monitor run <monitorId> # trigger a check now
firecrawl monitor checks <monitorId> # list all checks
firecrawl monitor check <monitorId> <checkId> --page-status changed
firecrawl monitor update <monitorId> --state paused
firecrawl monitor delete <monitorId>
Subcommands: create | list | get | update | delete | run | checks | check. Run firecrawl monitor <subcommand> --help for the full option list.
Done when: create returns a monitor ID and a smoke-test run + check confirms the expected target, state, and notification configuration.
Read goals.md when writing or refining --goal (and --queries for web monitors). Read json-tracking.md when the user cares about specific structured fields (price, headline, stock flag) and wants per-field diffs.
Constraints & tips
- Minimum schedule interval is 5 minutes. Monitoring is not available for zero-data-retention teams.
- Prefer one monitor over repeated one-off scrapes whenever the user wants the same URL checked more than once.
- Silence temporarily with
update --state paused; reservedeletefor monitors that are permanently done. (--stateis an update flag;--statusis the global CLI status flag.) - Filter check pages with
--page-status changed(ornew,removed,error) to skip the noise fromsamepages. firecrawl monitor run <id>triggers a check immediately — useful for smoke-testing a monitor right after creating it.--retention-dayscontrols how long snapshots are kept for diffing. Lower it for high-frequency monitors to save storage.- External email recipients must opt in. First time they're added, Firecrawl sends a confirmation email and they only receive alerts after they confirm. Team-owned addresses are auto-confirmed. Once a recipient unsubscribes, they must be re-added by the owner for a fresh confirmation email.
- On HTTP 429 / rate-limit errors, back off once: wait ~30s and retry once. If it persists, stop, report the rate limit as the blocking reason, and delete any monitors created for this task. Never retry in a loop.
- Monitor-triggered scrapes default
maxAgeto0— every check performs a fresh scrape unlessscrapeOptions.maxAgeis set explicitly in a JSON payload.
See also
- firecrawl-scrape — one-off scrape; escalate to
monitorwhen checks become recurring - firecrawl-crawl — one-off crawl; pair with
--crawl-urlhere for recurring crawl diffs - firecrawl — top-level workflow guide
- firecrawl-build-scrape — building recurring checks into an app instead of running it here
Version History
-
86aaf06
Current 2026-08-27 16:51
重构技能结构,将目标编写和JSON跟踪指南分离至独立文件;优化描述文案,增加完成标准,精简路由逻辑。
-
253abde
2026-08-19 19:06
更新过期的firecrawl-cli链接标签为firecrawl;将skill文件夹重命名为firecrawl以匹配frontmatter名称,修复跨技能链接404问题;澄清认证和API行为说明。
- 6c50c5d 2026-07-24 11:49


