Substack Publication Delta Monitor
Pricing
Pay per usage
Substack Publication Delta Monitor
Pricing
Pay per usage
Rating
0.0
(0)
Developer
andre donda de sa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Monitor official public Substack RSS feeds and receive only meaningful post changes. The first successful run saves a free baseline; later runs emit and bill only new, updated, or removed-from-observed-feed posts.
This is a monitoring product, not an archive or paywall scraper. It uses public RSS only—no article crawling, comments, likes, subscribers, private endpoints, browser, proxy, AI, or authentication.
Quick start
- Add publication home URLs or exact
/feedURLs. - Keep the monitor key unchanged on scheduled runs.
- Run once to create the expected free baseline.
- Schedule the same input to receive later changes.
{ "publicationUrls": ["https://doomberg.substack.com"], "monitorKey": "doomberg-monitor" }
Example output
{ "recordType": "change", "changeType": "updated", "guid": "post-123", "title": "Revised title", "publication": "Example", "previousPost": { "contentHash": "old" }, "currentPost": { "contentHash": "new" } }
Pricing
Provisional pricing is $0.003 per post change. New, updated, and removed-from-observed-feed events are charged. Baselines, unchanged posts, aliases, retries, diagnostics, empty feeds, and failures are free.
Inputs
| Input | Default | Purpose |
|---|---|---|
publicationUrls | [] | Substack publication home pages |
feedUrls | [] | Official feed URLs ending in /feed |
monitorKey | default | Persistent namespace |
maxPublications | 25 | Hard maximum 100 with advanced mode |
maxPostsPerFeed | 20 | Bounded observed feed window |
maxConcurrency | 5 | Concurrent public feeds |
requestTimeoutSecs | 15 | Whole transaction timeout |
maxRequestRetries | 1 | Temporary failure retries |
maxResponseBytes | 2000000 | Streaming limit per feed |
Output
Changes include GUID, title, publication, published/updated dates, author, canonical feed URL, content hash, previous/current records, public provenance, and observation time. Missing source fields remain null. Raw post bodies are neither output nor persisted.
Statuses distinguish complete, empty, partial, and blocked runs. A blocked or invalid feed is never reported as a successful empty result.
Limitations
- Only RSS responses declaring
generator=Substackare accepted. - RSS is a bounded rolling window, not full history.
removed_from_observed_feeddoes not prove deletion, unpublishing, or retraction.- Changing feed depth can create apparent additions or removals; use a new monitor key.
- Custom domains must resolve only to public networks and remain HTTPS through redirects.
- Updated dates remain
nullwhen Substack does not publish one.
Public-data boundary
The Actor reads public /feed responses only. It does not open post pages or bypass paywalls, logins, private publications, or access controls. If reliable operation later requires a proxy, browser, account, or private endpoint, the product must stop instead of bypassing controls.
FAQ
Why was the first run a baseline? Existing posts must be learned before later changes can be detected; they are not billed.
Does it copy post content? No. It stores a normalized SHA-256 hash of the content publicly present in RSS.
Why did a post leave the feed? A rolling feed can push older posts outside the visible window. The Actor deliberately avoids claiming deletion.
Support
Provide the private run URL, feed URL, and diagnostic code. Never send Substack credentials; the Actor cannot use them.
See CHANGELOG.md.