ProtectedFetchFetch, with a timeout and a size bound. Overridable for tests.
ProtectedInternalExecutes the feed read.
The action parameters containing:
{ name, url } (or a JSON string of one). Either this
or FeedURLs is requiredRanked articles, plus a per-feed status list
ProtectedNowThe current time. Overridable so tests can pin the clock.
Executes the action with the provided parameters.
The action execution parameters including context
Promise resolving to the action result
Action that reads one or more RSS or Atom feeds and returns their articles, optionally scored and ranked against a keyword list.
Feeds are fetched concurrently and a failing feed does not fail the action: its error is reported in
FeedStatuseswhile the other feeds still return their articles. A feed being unreachable is the normal case at any scale — one dead URL in a list of twenty should not cost the caller the other nineteen.No credential. These are public HTTP endpoints.
Scoring is a keyword-relevance weight (title 3, category 2, description 1) plus a recency decay across the time window, combined as
relevance * 10 + recency * 5so relevance dominates and recency breaks ties. The numeric scores come back on every article rather than being bucketed into labels, because what counts as "high" depends on the caller's corpus, not on this action's batch.Example