Skip to content
Back to skills

website-monitoring

ASecurity

Creates and manages website-change monitors via the Crawlora API — watch a page for a content change or a sitemap for added/removed URLs, and get a signed webhook the moment something changes. No polling loop or diffing pipeline to run yourself. Use when the user wants to track a competitor's pricing page, watch for new pages on a site, get notified when content changes, or otherwise avoid re-checking a URL by hand.

  • 0 votes
  • 0 copies
  • 0 views
  • Added October 12, 2026
ai-agentsrustgogitapisecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 12, 2026

npx -y skills add Crawlora-org/crawlora-skills --skill website-monitoring --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of website-monitoring?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for website-monitoring
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/crawlora-org-website-monitoring/badge)](https://www.skillsdirectory.com/skills/crawlora-org-website-monitoring)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: website-monitoring
description: Creates and manages website-change monitors via the Crawlora API — watch a page for a content change or a sitemap for added/removed URLs, and get a signed webhook the moment something changes. No polling loop or diffing pipeline to run yourself. Use when the user wants to track a competitor's pricing page, watch for new pages on a site, get notified when content changes, or otherwise avoid re-checking a URL by hand.
---

# Website change monitoring

Create, list, update, and delete monitors that watch a URL (exact content
diff) or a sitemap (added/removed URL tracking) on a schedule, with signed
webhook delivery on change — all as normalized JSON from the Crawlora API,
with no polling loop or diffing logic of your own to write.

## When to use this skill

- "Watch this page and tell me when it changes." / "Track this competitor's
  pricing page."
- "Alert me when new pages get added to this site" (sitemap mode).
- "List my active monitors." / "Pause/update/delete this monitor."
- "Show me this monitor's recent check history" — did it run, did it find a
  change, did the webhook deliver.
- Anything that would otherwise mean writing your own cron job + diffing +
  notification pipeline for "let me know when X changes."

## Setup (one-time)

- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).
- Set `CRAWLORA_API_KEY` in the environment before running the helper.
- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.

## How it works

1. **Create** — `POST /monitors` with `url`, `cadence_minutes` (5 to
   10080, i.e. 5 minutes to 7 days), and optionally `target_type`
   (`page`, the default — exact SHA-256 content-fingerprint diff — or
   `sitemap`, which tracks a sitemap's `<loc>` entries for additions and
   removals, with optional `sitemap.include_patterns`/`exclude_patterns`
   glob filters and `sitemap.max_urls`). Add `notification.webhook_url`
   (must be `https` and resolve to a public address) and an optional
   `notification.webhook_secret` to get a signed delivery on change.
   `notification.events` opts into `change.detected` (default — fires only
   when a check finds a difference) and/or `run.completed` (fires on every
   completed run, a heartbeat for a "last checked" UI).
2. **List / get** — `GET /monitors` lists the caller's own monitors (newest
   first, capped at 100, free to call); `GET /monitors/{id}` fetches one.
3. **Update** — `PATCH /monitors/{id}` partially updates a monitor (free to
   call). Changing `target_type` or `sitemap` resets the stored diff
   baseline (fingerprint, snapshot, or URL set), so the next check starts
   fresh rather than comparing against the old target's state.
4. **Delete** — `DELETE /monitors/{id}` removes a monitor.
5. **Check history** — `GET /monitors/{id}/checks` lists the monitor's most
   recent check runs (newest first, capped at 50), including per-run
   webhook delivery status — use this to debug "why didn't I get notified."
6. **Verify webhook deliveries** — every delivery carries an
   `X-Crawlora-Signature: t=<unix>,v1=<hmac-hex>` header, an HMAC-SHA256
   digest of `"{t}.{rawBody}"` keyed by your `webhook_secret`. Recompute it
   and reject stale timestamps to guard against replay.

Full endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).

## Calling the API

```sh
# Create a page monitor with a webhook:
scripts/crawlora.sh -X POST /monitors '{
  "url": "https://example.com/pricing",
  "cadence_minutes": 60,
  "name": "Pricing page",
  "notification": {"webhook_url": "https://example.com/webhooks/crawlora"}
}' | jq '.'

# Create a sitemap monitor (new/removed pages):
scripts/crawlora.sh -X POST /monitors '{
  "url": "https://example.com/sitemap.xml",
  "target_type": "sitemap",
  "cadence_minutes": 1440
}' | jq '.'

# List monitors:
scripts/crawlora.sh /monitors | jq '.'

# Check one monitor's recent runs:
scripts/crawlora.sh /monitors/mon_abc123/checks | jq '.'

# Pause a monitor:
scripts/crawlora.sh -X PATCH /monitors/mon_abc123 '{"enabled": false}' | jq '.'
```

Use `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.


## Endpoint reference

See [`reference/endpoints.md`](reference/endpoints.md) for every Monitors
endpoint this skill uses (method, path, params, description).

## Examples

- **Competitor pricing watch:** `POST /monitors` on a competitor's pricing
  page with `notification.events: ["change.detected"]`, then poll
  `/monitors/{id}/checks` (or just wait for the webhook) to see when it
  actually changes.
- **New-page discovery:** `target_type: "sitemap"` on a site's sitemap URL
  to get notified when a new product/blog page goes live, without crawling
  the whole site yourself.
- **"Is my monitor actually working?"** — `GET /monitors/{id}/checks` shows
  whether recent runs completed, found a change, and whether the webhook
  delivered — the fastest way to debug a monitor that "should have fired."

## Notes & limits

- **Credits / pay-on-success:** management calls (create, list, get, update,
  delete) are **free**; only checks are billed. Free tier 2,000 credits/mo.
  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).
- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode,
  query-param, or commit it. Always verify the webhook signature before
  trusting a delivery's payload.
- **Public data only** — a monitor watches a publicly-reachable URL; it
  can't authenticate into a page behind a login.
- **`cadence_minutes` range is 5 to 10080** (5 minutes to 7 days) — pick the
  cadence that matches how often the target actually changes; a tighter
  cadence than needed just burns checks faster.
- Every request scopes to the caller's own API key — there's no
  cross-account listing or lookup.

Files in this skill

  • SKILL.md6 KB
  • reference/endpoints.md3.4 KB
  • scripts/crawlora.sh5.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.