Back to Seaside, it also provides an API to generate RSS. Indeed, that is how this blog's feed is generated:
| doc ctx root rss |
String streamContents: [ :stream |
doc := WAXmlDocument new initializeWithStream: stream codec: nil.
ctx := WARenderContext new document: doc.
root := RRRssRoot new openOn: doc.
rss title: self siteTitle.
rss description: self siteSlogan.
self blog do: [ :ea |
rss item: [
rss title: ea title.
rss author: self siteAuthor.
rss link: self baseUrl, ea blogUrlPath.
rss guid: self baseUrl, ea blogUrlPath.
rss publicationDate: ea timestamp printHttpFormat.
rss description: ea outputHtml ]].
root closeOn: doc ]
Tags: RSS, Seaside