Subchapter 8.1
goals.mdMarkdown5 KBView on GitHub
Reference for authoring --goal (all monitors) and --queries (web monitors). Read from SKILL.md when creating or tuning a monitor.
--goalThe 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:
Alert when ... and state the trigger using the user’s wording.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.| 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. |
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.
OpenAI new model release, not tell me when OpenAI releases a new model."Llama 4"); group synonyms with OR (launch OR release OR announcement).--max-results budget without adding coverage.--include-domains / --exclude-domains rather than site: operators in queries.--search-window sets recency — 5m, 15m, 1h, 6h, 24h, 7d (default 24h). Widen it for niche topics that don’t publish often.--max-results caps results per query, 1–50 (default 10).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.