Feed Digest
ivy.agent.feed-digest · v1.0.0
ivyx
Fetches each RSS or Atom feed in a list, has a model write one line per item with its link, and saves the digest as a file.
Steps
In the order the agent's file lists them, each with where its inputs come from and the values the file fixes. A branch or a loop is a step too.
- 01For eachFetch each feed
Runs RSS Fetch once for each item of urls from the agent's input.
- 02Model turnWrite the digest
Write a digest of these feed items in Markdown. For each feed write a '## ' heading with the feed's title. Under it write one line per item in exactly this form: - [item title](item link): a few words on what the item says. Every line must carry its item's link, copied from the item. Use every item and say only what the items say.
- takes
contextfrom step 1,results- returns
digest
- 03Ivy NodeWrite the digestivy.node.file-write
Writes text to a file, creating its folder, and returns the absolute path and the number of bytes written.
- takes
textfrom step 2,output.digest- set
pathreports/digest.mdoverwritetrue- returns
path,bytes
Nodes it brings
Adding this agent in IVYX Studio adds these nodes with it. A node your workspace already has is kept as it is, even at another version.
What it touches
Collected from what each of its nodes declares, plus the model call when a step is a model turn. A declaration is the author's statement, and it is what policy rules select on.
Inputs
| Field | Type | Description |
|---|---|---|
| urlsrequired | array | The feeds to read. |
Outputs
| Field | Type | Description |
|---|---|---|
| digest | string | The digest, one line per item. |
| path | string | The file the digest was written to. |
| bytes | integer | How many bytes were written. |
Tests
2 of 2 test cases passed on Oct 4, 2026, in the publisher's own environment, before this version was published. The registry keeps that record; it does not run the cases again.
Requires: python:3.9, a model core, the test feeds served on 127.0.0.1:18901 (python3 -m http.server in data/showcase/site)
- two-feeds
Two feeds: the digest carries an item from each.
- given
urls["http://127.0.0.1:18901/tech.xml","http://127.0.0.1:18901/biz.xml"]- expects
digestmatches [Pp]ython[\s\S]*tech\.example/py[\s\S]*([Rr]etail|[Rr]ate)pathmatches reports/digest\.md$bytesis greater than 80
- one-feed
One feed gives a digest of that feed only.
- given
urls["http://127.0.0.1:18901/biz.xml"]- expects
digestmatches [Rr]etail|[Rr]ate