Erlang Central

How to setup an RSS feed with Yaws

From ErlangCentral Wiki




How to setup a RSS feed with Yaws


You probably already know how useful RSS is to aggregate information feeds. If you don't, then simply use your Mozilla Firefox browser and go to an RSS-enabled site, e.g Note the little orange icon down in the right corner of the browser window. Click on the icon and add the RSS-feed to you personal toolbar. Then click on your toolbar, on the RSS-bookmark and watch the nice menu of slashdot article-summarys popping up.

The module yaws_rss.erl provides an RSS store/interface so that you can RSS enable your application. It is dead simple to get your RSS feed going, and we will show here how you can do it.

To create a RSS feed.

Make sure your top page has the corresponding link information in the 'head' part as shown in the example below. Don't forget to change the URL ( to point to your own server.

Code listing 1.1: Your top 'index.html'

	      <link rel="alternate" 
		    title="Example RSS" 
		Hello world

The link info above refers to a file rss.yaws which could look something like this:

Code listing 1.2: Your 'rss.yaws' file

	  <rss version="2.0" xmlns:dc="">
	      <title>Exampel RSS feed</title>
		Bla bla....
		out(A) ->
		    case yaws_rss:retrieve(test, xml) of
         		{ok, Xml} ->
		            {html, [Xml]};
         		_ ->
		            {html, ""}

To insert RSS items into the feed from your application, you can write code like:

Code listing 1.3: Adding RSS info from your Erlang code.

	  yaws_rss:insert(test, xml, "Yaws now support RSS feeds.",
	                  "Yaws has now been extended to support....",
	                  "Bill Smith").

First comes the application (RSSid), followed by a tag (these were used in rss.yaws when we retrieved the RSS content). Then follows the Title, Link, Description and Creator.

The idea is that several independent application should be able to use the yaws_rss.erl API without affecting each other. Also, one application may have several RSS feeds (hence the Tag). So in your case you could change the RSSid and Tag to something more suitable.

How to configure Yaws

Inside a <server> block you specify the application you want to produce RSS content. In our example, our application was named: test.

Code listing 1.4: Mandatory configuration

	  <server ....>

            .....other configs here....

	      rss_id = test


Other, non-mandatory, configuration parameters are (with explanation and default values):

Code listing 1.5: Non mandatory configuration

	  <server ....>

            .....other configs here....

	      rss_expire  =  false | days   # expire items, or not (false)
	      rss_days    =  <integer>      # days until expired
	      rss_rm_exp  =  <bool>         # remove expired items (false)
	      rss_max     =  <integer>      # max no.of items stored (infinite)


So for example, by setting the rss_expire to days you can set the number of days items will show up with rss_days. You can also have expired items removed and/or limit the maximum number of items you want to store.

This is it! Your RSS feed is now ready to go. Was this dead simple or not... ;-)

Download xml