OPML listing of my weblog entries

Dave Winer and Robert Scoble would like more blog outputs as OPML. I just put together a Movable Type template to output all of my entries in OPML format complete with top-level categories. I output the resulting file as my index.opml.

Check out my OPML template if you would like to create a OPML output of your Movable Type install. I have not validated the OPML is perfect and valid (but I did e-mail Dave Winer), and I really should have full subcategory traversal. It’s a start.

Update: Dave Winer verified the output is correct and works with his browser.


Commentary on "OPML listing of my weblog entries":

  1. Dave Winer on wrote:

    Hi Niall, thanks for picking up the ball on this!

    I don’t know enough about Movable Type’s template language to know whether this works or not. Can I see the OPML file it generates? I can try running it through my displayer, if it works, then it’s cool.

  2. ahj on wrote:

    Hi Niall-

    Thanks for the great work!

    However, my feed (http://www.andrewjaffe.net/blog/index.opml) doesn’t appear to be valid in the OPML editor. I think it’s due to a line like the following (I can’t quote it exactly since the HTML gets munged; I’ve removed a a less-than followed by “![” before the CDATA)):

    outline text=”CDATA[Yet more on blogging academics…>” type=”link” url=”http://www.andrewjaffe.net/blog/academia/000095.html” created=”Sun, 17 Jul 2005 21:45:55 +0000″

    which appears to be because I have an HTML entity in the title.

  3. Jeremy Zawodny on wrote:

    What is this useful for, exactly?

  4. Phil on wrote:


    Love this. Love it, love it, love it. Have already put it into use on my site, with one small tweak: I altered it so that it produces an outline with subcategories properly filed. This was made in MT 3.2, so YMMV. :)

    Link to the template: http://interalia.org/by-category-with-subcategories.opml.txt

    Link to the produced OPML file: http://interalia.org/index.opml

    (Unfortunately, I also have no way to test if this is valid, so since you seem to have Dave’s ear…)

  5. Murky on wrote:

    All well and good, and I would happily use a new template… but….

    What is OPML actually FOR?

    (Admitting ignorance in the hope of finding out).

  6. Niall Kennedy on wrote:

    I just wanted to show how easy it was to produce something like an OPML file. Dave is working on his OPML Outliner and my new OPML file template might help him out.

  7. Dave Winer on wrote:

    Phil, the Interalia OPML works great.


    Jeremy, you could think of OPML as a way for users to author structures that work like dir.yahoo.com. Its like blogging but for hierarchies of links. Another way of looking at it is that RSS is designed for time-based info, news; and OPML is for structures of information that change less frequently, where what matters is the relationship between ideas.

  8. Richard on wrote:

    Right on, Niall. But I wonder, did you check to see if there was prior art? Granted, yours rightly takes into account weblog categories, since OPML is well-suited to directory-style information.

    Looks like there’s logs of interesting work around OPML these days…

  9. Jason Levine on wrote:

    To me, this is actually an example of the problem with OPML — you had to run it by Dave before you knew if it was valid or not. (Of course, you couldn’t run it through a validator, since the spec doesn’t provide enough information about OPML to be able to build a validator; the only way the term “valid” has any meaning is by whether the spec’s author’s app will read the file.)

    I wish we had learned enough from the past mistakes of bad specs and the resultant crappy interoperability to not be walking out this precarious branch again…

  10. Dave Winer on wrote:

    Jason, he could have tried it out himself in the same apps I did. I was just helping him out.

  11. ahj on wrote:

    Has anyone else run into the CDATA problem (see above)? Under what circumstances does MT use this for the encoding? Is there a way to encode these things so that OPML editors will parse them correctly?

    For what it’s worth, my OPML is valid if I remove the encode_xml=”1″ from the $MTEntryTitle tag… (see http://www.andrewjaffe.net/blog/index.opml).


  12. Jason Levine on wrote:

    So Dave, if it works in the app, it’s valid? The definition of OPML validity is whether your app understands it? This is exactly the problem people have with OPML, that there’s no way for a developer to know if a file is valid based on a spec, but rather has to run every test case they can think of through the popular apps at the time to make sure that it all works. This feels like web developing back in the day of IE 3.0 and Netscape 4.0 — write a document, test it out in all the apps, rewrite it to fix any bugs you found, test it out in the apps again, rewrite it to fix the NEW bugs you created, test it out again… ad infinitum. And as soon as OPMLEditorOfTheDay 2.0 comes out, start all over again!

    What if I write an app that actually enforces one of the most unbelievable parts of the spec — the fact that you define dates based on RFC 822, which mandates two-digit years — and reject all OPML with four-digit years in dates? Would that make the OPML out there all of a sudden no longer OPML? And whose OPML app should be the definitive case test?

  13. James Fee on wrote:

    I just tried the OPML listing in Dave’s OPML Validator and it fails. I’m not sure why other than the Validator seems quite strict.

    Niall Kennedy’s OPML