# website-change

Hash a public page and emit when the hash changes.

Category: Utilities. Allow `example.com`.

Updated 2026-10-17. HTML: https://asipipes.com/pipes-library/website-change

## CLI

```
pipes run examples/website-change.pipe.yaml
```

## MCP call

```json
{
  "name": "pipe__website-change",
  "arguments": {}
}
```

## Pipe file

`examples/website-change.pipe.yaml`

```yaml
pipes: 0
name: website-change
version: 0.1.0
description: Hash a public page and emit when the hash changes.
permissions:
  network: [example.com]
inputs:
  type: object
  properties:
    url:
      type: string
      format: uri
      default: https://example.com/
  required: [url]
outputs:
  type: object
  properties:
    text: { type: string }
    count: { type: integer }
  required: [text, count]
output:
  text: "${steps.format.text}"
  count: "${steps.format.count}"
steps:
  - id: fetch
    block: fetch_http
    with:
      url: "${inputs.url}"
      max_bytes: 200000
    retry: { max: 2, backoff_ms: 400 }
    timeout_ms: 15000
  - id: hashed
    block: hash
    in: "${steps.fetch}"
    with:
      fields: [url, body]
      into: digest
  - id: changed
    block: diff_since_last
    in: "${steps.hashed}"
    with:
      key: [url]
      compare: [digest]
      emit: [added, changed]
      first_run: all
  - id: shaped
    block: map
    in: "${steps.changed}"
    with:
      pick: [url, digest]
  - id: format
    block: format
    in: "${steps.shaped}"
    with:
      header: "Page hash:\n"
      item_template: "- ${item.url} ${item.digest}"
      separator: "\n"
  - id: print
    block: emit_stdout
    in: "${steps.format.text}"
    with: { format: text }
```
