← Blueprints

BLUEPRINT · hn-keyword-watcher

HN keyword watcher

Tells you when new Hacker News stories mention a keyword. Uses the free HN search API — no credentials beyond your alert webhook. Edit the query in the URL to watch your product, your competitor, or your name.

Runs
every 30 minutes
Leash
required

How it decides

  1. OBSERVE · source rest_api extract
  2. FILTER · gate fast_path_diff
  3. REASON · reason no model
  4. ACT · act notify_webhook ●write_state

● = touches the outside world (leashed by default)

What it costs

No model calls. Free HN search API.

What you'll need

WEBHOOK_URL

Make it yours

Edit the query in the URL to your keyword.

sources.hn.url
https://hn.algolia.com/api/v1/search_by_date?query=claude&tags=story

Full YAML

blueprints/hn-keyword-watcher.yaml
# Watches Hacker News for new stories matching a keyword, via the free Algolia
# search API (no key needed). Edit the `query` in the URL to your keyword.
blueprint:
  id: hn-keyword-watcher
  title: HN keyword watcher
  description: >-
    Tells you when new Hacker News stories mention a keyword. Uses the free
    HN search API — no credentials beyond your alert webhook. Edit the query
    in the URL to watch your product, your competitor, or your name.
config:
  synth:
    name: HN watcher
    goal: Tell me when new Hacker News stories mention my keyword.
    schedule_seconds: 1800
  requires_credentials:
    - WEBHOOK_URL
  sources:
    - id: hn
      primitive: rest_api
      config:
        url: "https://hn.algolia.com/api/v1/search_by_date?query=claude&tags=story"
        items_path: hits
        max_pages: 1
  transforms:
    - id: titles
      primitive: extract
      config:
        items: $sources.hn.items
        field: title
  fast_path:
    primitive: fast_path_diff
    inputs:
      current: $transforms.titles.values
      previous: $state.seen_titles
  actions:
    - if: $fast_path.triggered
      primitive: notify_webhook
      config:
        url: $secrets.WEBHOOK_URL
        body:
          alert: New HN stories for your keyword
          new_titles: $fast_path.diff
    - always: true
      primitive: write_state
      config:
        seen_titles: $transforms.titles.values
        checked_at: $tick.started_at

Install

In the control room

Blueprints → HN keyword 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 hn-keyword-watcher blueprint." It uses caedos_blueprints, then validates, shadows and deploys.