RSS Newsletter Assembly Pack
Pricing
$20.00 / 1,000 results
RSS Newsletter Assembly Pack
Turn RSS feed updates into a clean newsletter package. Select only new items, remove duplicates, and generate newsletter-ready HTML, Markdown, and a downloadable ZIP for review and publishing.
Pricing
$20.00 / 1,000 results
Rating
0.0
(0)
Developer
bread kim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Security
Limited permissionsShare
A private Apify Actor that turns RSS 2.0 or Atom 1.0 XML supplied in the input into a deterministic newsletter pack. It does not fetch feeds or articles, subscribe to sources, schedule runs, rewrite content with AI, or send email.
The intended recurring pipeline is: your authorized HTTP/RSS collector → this Actor → your review/email tool. Free alternatives include the n8n RSS node plus a custom template. This product is useful when you want bounded cross-feed deduplication, caller-owned incremental checkpoints, safe HTML/Markdown, QA evidence, and a reproducible ZIP in one step. Paid demand remains unproven.
Input and output
newsletterTitle and feeds are required. Each feed has a unique id and an xml string—not a URL. See examples/input.json. Optional previous keys suppress already delivered items; include/exclude terms are literal case-insensitive NFC substring matches against title plus plain summary, with exclusion winning. maxItems defaults to 25.
Every valid input produces exactly one default-dataset row identical to OUTPUT, including EMPTY_DIGEST, PARTIAL_DIGEST, and FAILED_FEEDS. Invalid input writes a safe INVALID_INPUT OUTPUT and no dataset row. The main artifact is a fixed eight-file ZIP:
newsletter.htmlandnewsletter.md: escaped, reviewable newsletter copy;digest.json: selected real entries and ordered source feed IDs;next-checkpoint.json: keys owned by the caller;QA.json: counts, feed results, warnings, and provenance;APPLY.md,LICENSES.txt, andMANIFEST.json.
The same files are stored under fixed KVS record names. Excerpts are stripped to plain text and capped at 240 Unicode code points. Article links must be absolute HTTP(S), contain no credentials or explicit port, and look public; links are never fetched or DNS-verified. Relative links are rejected as invalid items because the input contract intentionally has no base URL.
Checkpoint lifecycle
Only selected/delivered candidates are added to the returned checkpoint. Seen, filtered, invalid, duplicate, and maxItems-held-back candidates are not newly added. Persist NEXT_CHECKPOINT.json externally only after your downstream delivery succeeds, then pass its keys into the next run. The Actor is stateless and never overwrites a checkpoint automatically. Retrying identical input produces identical artifact bytes, but the Actor does not claim exactly-once delivery.
Limits
The full JSON input is at most 1 MiB: 1–10 feeds, each XML string at most 100 KiB, at most 100 entries per feed and 1,000 parsed entries total, at most 50 selected items, 5,000 incoming keys, and 6,000 returned keys. Feed nesting is capped at 40 and node count is bounded. DOCTYPE and ENTITY declarations, RDF/JSON Feed/unknown dialects, malformed XML, secrets, unsafe Unicode, unknown input fields, and oversize input are rejected or safely diagnosed as documented in REQUIREMENTS.md.
Local verification
Node 22.23.3 is the pinned container runtime. No credentials are needed for local tests.
npm ci --include=dev --ignore-scriptsnpm run preflightAUTOMATON_CONTAINER_SMOKE=1 node dist/main.js
The Dockerfile is a clean multi-stage build. Per the host execution boundary, this builder did not run Docker; Docker build and disposable no-network container smoke remain mandatory before any upload or deployment. No cloud build, upload, publication, pricing mutation, schedule, or webhook was performed.
Content rights
Use only feeds and newsletter content you are authorized to process. Output intentionally contains titles, links, and short feed-provided excerpts, not full articles or paywalled bodies. Copyright remains with each source. Review source terms and the assembled newsletter before delivery.