uraniacast_opml — A feed importer/exporter for/from uraniacast.


uraniacast_opml [-1SDG] mode directory


uraniacast_opml is able to create an OPML file from its subscription feeds or vice-versa—create a configuration file suitable for uraniacast from the OPML file.

Think of OPML files as the format used to move feed subscription lists from one feed reader to another.

Every feed in uraniacast is transformed to an outline in OPML. And every outline will be represented as 1 feed in uraniacast configuration file.

Outlines in OPML files can be nested. In such case some outlines are not feeds but something like group names. uraniacast_opml fully supports them, prudently transforming, for example:

set feed(comp.this_developers_life) {
  url {...}


<outline text="comp">
  <outline text="comp.this_developers_life" xmlUrl=.../>

or the other way around. We use ‘.’ (dot) character to represent the hierarchy in uraniacast.


uraniacast_opml cat operate in 2 modes: import & export. For any mode you’re also required to give a path value to your uraniacast configuration directory. This is usually ~/.uraniacast.

The result is allways printed to stdout (e.g. uraniacast_opml will newer touch your current uraniacast configuration).

In the import mode, the OPML feed is expected from stdin.

The options below are marked either as (E) or (I) for export and import modes correspondingly.

(E) Generate OPML version 1.0 instead of 2.0.
(E) Don’t insert <createdDate> tag in an OPML file.
(E) Don’t insert a generator identifier into the OPML file.
(I) Don’t skip outlines of such feeds that already exists in our configuration file.


0 on success or >= 1 if en error occurs.


Import feeds.xml file and print the result to stdout:

% uraniacast_opml import ~/.uraniacast < feeds.xml

Export our feeds:

% uraniacast_opml export ~/.uraniacast


If your feeds in OPML file were titled in non-ASCII locale, their names will be replaced with series of ‘_’ (underscore) characters.

uraniacast_opml replaces in outlines all non A-Za-z0-9_ characters with ‘_’ and removes all spaces. This occasionally leads to name collisions.




Alexander Gromnitsky <>.