Member Junction
    Preparing search index...

    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 FeedStatuses while 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 * 5 so 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.

    // Just read a feed
    await runAction({
    ActionName: 'Read RSS Feed',
    Params: [{ Name: 'FeedURLs', Value: 'https://example.org/news/feed.xml' }]
    });

    // Several named feeds, ranked against keywords, last 7 days
    await runAction({
    ActionName: 'Read RSS Feed',
    Params: [
    { Name: 'Feeds', Value: [
    { name: 'Associations Now', url: 'https://associationsnow.com/feed/' },
    { name: 'NonprofitPRO', url: 'https://www.nonprofitpro.com/feed/' }
    ]},
    { Name: 'Keywords', Value: ['membership', 'dues', 'retention'] },
    { Name: 'MaxAgeDays', Value: 7 },
    { Name: 'MaxResults', Value: 25 }
    ]
    });

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    AuthorizesCaller: boolean

    True when the action authorizes its caller itself, so a public entry point such as the RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller must hold, or reads and writes only with the caller's own permissions. Leave it false for an action that acts with more authority than its caller, or that reaches data or sends messages the caller chooses but could not otherwise reach.

    The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.

    Accessors

    • get SupportsAudience(): boolean

      Whether this action can bound what it returns to an audience (RunActionParams.Audience): everyone besides the caller who will see its output, such as the other participants of a shared conversation.

      false by default, and the engine enforces it: when a run's audience adds a reader beyond the caller, ActionEngineServer.RunAction refuses the action with result code AUDIENCE_UNSUPPORTED, without running it. Override to return true only when the action honours the audience in full — every record, snippet and count it returns is something every reader may see (pass the audience to the search engine, check each reader's entitlement to anything it scopes by, and leave out aggregates computed before that filtering).

      Returns boolean

    Methods

    • Executes the feed read.

      Parameters

      • params: RunActionParams

        The action parameters containing:

        • Feeds: Array of { name, url } (or a JSON string of one). Either this or FeedURLs is required
        • FeedURLs: Array or comma-separated string of URLs, named after their host
        • Keywords: Array or comma-separated string. Optional — with none supplied, articles come back ranked purely by recency
        • MaxAgeDays: Age window, default 7. News has a short shelf life
        • MaxResults: Cap on returned articles, default 25
        • IncludeUndated: Keep articles the feed gave no parseable date (default false). They cannot be age-filtered, so this is an explicit choice
        • RequireAllFeeds: Fail the action if any feed failed (default false)

      Returns Promise<ActionResultSimple>

      Ranked articles, plus a per-feed status list