Firecrawl Monitor
FirecrawlOfficialPublished by Firecrawl
- Skill
- Tool integration
- Automation and integrations
- ISC
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The firecrawl-monitor skill provides a structured workflow for tracking changes on specific websites or discovering new content across the web. It automates the process of fetching, diffing, and judging web content based on user-defined goals. Users can monitor individual pages, batches of URLs, entire site structures, or perform broad web searches. Notifications are delivered via email or webhooks, allowing for seamless integration into existing notification pipelines or alerting systems.
What it does
- Monitors single pages, URL batches, or entire websites for content changes.
- Performs web-wide searches for new results based on specific queries and goals.
- Sends automated alerts via email or webhooks when changes or new content are detected.
- Provides granular control over monitoring schedules and retention periods.
- Allows for immediate manual triggering of checks for smoke-testing configurations.
- Supports filtering of results to focus only on specific statuses like changed, new, or removed content.
When to use it
- When you need to track updates on a website repeatedly rather than performing one-off scrapes.
- When you want to be alerted automatically about new product launches or competitor announcements.
- When you need to monitor documentation or specific pages for content modifications.
- When you require a recurring, scheduled process to watch for new web search results matching a specific goal.
Advantages
- Reduces manual effort by automating recurring web surveillance tasks.
- Flexible notification options via email or webhooks integrate easily with other tools.
- Supports complex monitoring modes including whole-site crawls and goal-oriented web searches.
- Provides built-in diffing capabilities to highlight exactly what changed on a page.
- Allows for efficient management of multiple monitors through a simple CLI interface.
Usage examples
- “Monitor https://example.com/blog every 30 minutes and email me when a new post is published.”
- Creates a recurring monitor that checks the blog URL and sends an email alert upon detecting new content.
- “Set up a daily monitor to search the web for new competitor funding announcements.”
- Configures a web-wide search monitor that runs daily and notifies the user of new results matching the specified goal.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/firecrawl/firecrawl-monitor/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip firecrawl-monitor.zip -d .agents/skills
Documentation by Firecrawl
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 [email protected]
# 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 [email protected]
# 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
Each check uses credits for its underlying scrape, crawl, or search, plus optional judging. See Monitoring pricing.
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 recurringfirecrawl-crawl — one-off crawl; pair with
--crawl-urlhere for recurring crawl diffsfirecrawl — top-level workflow guide
firecrawl-build-scrape — building recurring checks into an app instead of running it here
Files
- ATTRIBUTION.mdAdded by AutoGineer862 B
- LICENSELicence file added by AutoGineer735 B
- SKILL.md5.4 KiB
- goals.md4.6 KiB
- json-tracking.md2.5 KiB
goals.md
Writing monitor goals and queries
Reference for authoring --goal (all monitors) and --queries (web monitors). Read from SKILL.md when creating or tuning a monitor.
Writing a good --goal
The goal is what the AI change judge uses to decide whether a page is changed vs same. Convert the user's intent into a concise 2-3 sentence goal:
Start with
Alert when ...and state the trigger using the user's wording.Restate any scope they mentioned: top N, price, role type, region, company, topic, status, or a specific entity.
Add an
Ignore ...sentence only for intent-specific exclusions (e.g. points/comments for rankings, marketing copy for pricing, general company-page updates for job listings). The judge already handles generic noise — whitespace, casing, punctuation, encoding, formatting-only changes, request/session IDs, cache busters, tracking params, generic metadata, and unrelated page chrome — so leave those out.Include only page-specific sections, entities, thresholds, exclusions, or business rules the user actually mentioned.
If the user is vague or asks for "any change", keep the goal broad with no exclusions. If the user mentions noise they do not care about, include that explicitly.
| User says | Good goal |
|---|---|
top 10 hackernews stories | Alert when stories enter, leave, or change rank within the Hacker News top 10. Ignore points, comments, and timestamps. Do not alert on changes outside the top 10. |
pricing changes | Alert when pricing information changes, including prices, plan names, billing periods, tiers, limits, or included features. Ignore unrelated marketing copy. |
new engineering roles | Alert when a new engineering role is posted. Ignore general company-page updates unless they add, remove, or change an engineering role. |
track this page | Alert when substantive visible content on this page changes. |
any change | Alert when any visible page content changes, including copy, numbers, timestamps, counters, links, and layout text. |
Writing good --queries (web monitors)
For a web monitor, queries control recall (what the search retrieves) and the goal controls precision (which results alert). Tune both — a perfect goal can't alert on a result the queries never pulled in, and broad queries with a vague goal produce constant low-value alerts.
Write keywords, not sentences:
OpenAI new model release, nottell me when OpenAI releases a new model.Quote multi-word entities (
"Llama 4"); group synonyms withOR(launch OR release OR announcement).Keep each query tight (~2–6 terms). One broad query usually beats several narrow ones — extra queries split the
--max-resultsbudget without adding coverage.One query per distinct subject. Several facets of one subject = one query; only split for genuinely separate entities (e.g. "OpenAI, Anthropic, and Google").
Restrict or exclude sources with
--include-domains/--exclude-domainsrather thansite:operators in queries.--search-windowsets recency —5m,15m,1h,6h,24h,7d(default24h). Widen it for niche topics that don't publish often.--max-resultscaps results per query, 1–50 (default10).
firecrawl monitor create --name "AI model releases" --schedule "daily at 9:00" \
--queries "new AI model release,frontier model launch" \
--goal "Alert when a major lab releases a new AI model. Ignore tutorials and listicles." \
--search-window 7d --max-results 20 \
--webhook-url https://example.com/hookWhat good looks like: a healthy web monitor mostly returns new: 0 and alerts only on genuinely new, on-goal results. If many retrieved results are off-goal, the queries pull noise the goal rejects — tighten the queries. If a topic returns nothing for long stretches, the queries are too narrow or --search-window too tight — broaden them. If the user dismisses alerts, the goal is too broad — add an intent-specific Ignore .... The aim is high precision with enough recall: every alert worth acting on, nothing real missed.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Firecrawl
- Publisher
- Firecrawl (Official)
- Source
- firecrawl/skills · skills/core/firecrawl-monitor · commit 458d9d0
- Licence
- ISC License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Firecrawl.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download firecrawl-monitor.zip