BLUEPRINT · page-change-watcher
Page change watcher
Watches a web page and tells you when it meaningfully changes. Most checks are free — it only reasons when something on the page is different. Ships pointed at the Anthropic newsroom; swap in any page you care about.
- Runs
- every hour
- Leash
- required
How it decides
- OBSERVE · source
dom_scrape - FILTER · gate
fast_path_diff - REASON · reason
llm_reason · standard tieronly when the gate fires - ACT · act
notify_webhook ●write_state
● = touches the outside world (leashed by default)
What it costs
Model only when the page changed · standard tier · ≤ $0.05/day.
Ceiling: budget_usd_per_day: 0.05
What you'll need
WEBHOOK_URL
A model key (Anthropic, OpenAI or xAI) in Settings.
Make it yours
Swap the URL/selector for any page you care about.
-
sources.page.url -
https://www.anthropic.com/news -
sources.page.selectors.headlines -
h1, h2, h3
Full YAML
# Most ticks are a free diff; the LLM only thinks when the
# page actually changed. Swap the URL/selector for any page you care about.
blueprint:
id: page-change-watcher
title: Page change watcher
description: >-
Watches a web page and tells you when it meaningfully changes. Most checks
are free — it only reasons when something on the page is different.
Ships pointed at the Anthropic newsroom; swap in any page you care about.
config:
synth:
name: Page watcher
goal: Tell me when the page I'm watching meaningfully changes.
schedule_seconds: 3600
requires_credentials:
- WEBHOOK_URL
sources:
- id: page
primitive: dom_scrape
config:
url: https://www.anthropic.com/news
selectors:
headlines: "h1, h2, h3"
fast_path:
primitive: fast_path_diff
inputs:
current: $sources.page.headlines
previous: $state.last_headlines
reasoning:
primitive: llm_reason
triggered_by: fast_path
model_tier: standard
budget_usd_per_day: 0.05
output_schema:
is_meaningful: bool
summary: string
confidence: float
actions:
- if: "$reasoning.is_meaningful AND $reasoning.confidence > 0.6"
primitive: notify_webhook
config:
url: $secrets.WEBHOOK_URL
template: "[Page watcher] {summary}"
- always: true
primitive: write_state
config:
last_headlines: $sources.page.headlines
checked_at: $tick.started_at Install
In the control room
Blueprints → Page change watcher → Shadow, then Deploy.
To change something first (see Make it yours): View config, copy the JSON, and paste it into + Install a Synth.
With your AI
Ask: "Clone the page-change-watcher blueprint." It uses caedos_blueprints, then validates, shadows and deploys.