feed-contract-monitor

Monitor RSS, Atom, JSON Feed, and website feeds in n8n with persistent state, health evidence, and only-new delivery.

Package Information

Released: 2 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.2

Documentation

n8n RSS, Atom & JSON Feed Monitor

Turn feeds and feed-enabled websites into a stateful change stream. This n8n
community node runs the
RSS, Atom & JSON Feed Monitor
Actor and returns one n8n item for every feed-health record and every new or
changed feed item.

Use it for research alerts, competitor monitoring, release tracking, news
aggregation, literature watches, and AI-agent tools that should see changes
instead of repeatedly processing the same feed history.

Why use it

  • RSS 2.0, RSS 1.0/RDF, Atom 1.0, and JSON Feed 1.0/1.1
  • feed discovery from ordinary website URLs
  • persistent deduplication between scheduled runs
  • ETag and Last-Modified conditional requests
  • deterministic new and changed records
  • feed-health evidence even when no new item appears
  • stable issue codes for malformed, stale, unreachable, or suspicious feeds
  • native n8n AI-tool support with compact, context-efficient results

The node does not scrape linked article pages. It reads public feed content and
declared feed-discovery links only.

Installation

Self-hosted n8n only: this unverified community node isn't available on
n8n Cloud. Install it from Settings → Community nodes in a self-hosted
n8n instance, or install it in the self-hosted n8n directory:

npm install n8n-nodes-feed-contract-monitor

Create an Apify credential using either:

  • an Apify API token; or
  • Apify OAuth when it is available in your n8n environment.

The community node is free. Actor runs use the current pricing shown on the
Actor's Apify Store page.

Quick start

  1. Add a Schedule Trigger.
  2. Add Apify RSS, Atom & JSON Feed Monitor.
  3. Add one or more feed or website URLs.
  4. For alerting without historical noise, select Baseline only for the
    first run. Change it to Emit recent items after the baseline exists.
  5. Keep the same state store and namespace on later runs.
  6. Route records where recordType is feed_item to Slack, email, a database,
    or an AI Agent.

Importable starter workflow:
examples/feed-change-alert.workflow.json.
The matching Creator-ready title, description, and workflow image are in
examples/feed-change-alert.template.md.

Important inputs

Input Purpose
Feed or website URLs Public RSS, Atom, JSON Feed, or pages that declare feeds
Discover feeds from websites Follow standard HTML feed links
First run behavior Emit recent history or create a silent baseline
Content included Metadata, publisher excerpts, or feed-supplied content
Persistent state store Named Apify key-value store shared across runs
State namespace Independent baseline for each workflow or environment
Maximum changed items Bound output and cost per run

Output contract

Each feed check emits a feed_health record. New or corrected entries emit
feed_item records.

{
  "recordType": "feed_item",
  "status": "new",
  "changeType": "new",
  "feedTitle": "Example research feed",
  "feedUrl": "https://example.com/feed.json",
  "title": "A new result",
  "url": "https://example.com/results/123",
  "summary": "Publisher-supplied excerpt",
  "publishedAt": "2026-08-05T10:00:00.000Z",
  "deliveryId": "stable-delivery-id",
  "issues": []
}

Delivery is at least once. Deduplicate downstream retries with deliveryId.
For regular n8n use, enable Simplify to return at most 10 useful fields per
record; the default remains the raw Actor output. For AI-tool use, Output supports
Simplified, Raw, and Selected Fields. Selected-field output always
keeps the record identity fields.

Development

pnpm install --frozen-lockfile
pnpm run lint
pnpm run test
pnpm run typecheck
pnpm run build

The node was generated from the live Actor schema with Apify's official Actor
to n8n tooling, then hardened for correct multi-item output, failed-run
propagation, feed-specific discovery, and compact AI-agent results.

Links

License

MIT

Discussion