RSS Newsletter Assembly Pack avatar

RSS Newsletter Assembly Pack

Pricing

$20.00 / 1,000 results

Go to Apify Store
RSS Newsletter Assembly Pack

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

bread kim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Categories

Security

Limited permissions

Share

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.html and newsletter.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, and MANIFEST.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-scripts
npm run preflight
AUTOMATON_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.