James give this a run
<?php
$doing_rss = 1;
require('../wp-inst/wp-blog-header.php');
header('Content-type: text/xml; charset=' . get_settings('blog_charset'), true);
?><?php echo '<?xml version="1.0" encoding="ISO-8859-1"'."?>\n"; ?>
<!-- generator="wordpress/<?php echo $wp_version ?>" -->
<opml version="1.0">
<head>
<title>HR Blogs OPML File</title>
<dateCreated><?php echo gmdate("D, d M Y H:i:s"); ?> GMT</dateCreated>
</head>
<body>
<outline type="text" title="hrblogs.org OPML file">
<?php
// Select Links from the current blog
$blogs = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs ORDER BY blog_id ASC ");
// Now loop througn the links for the current blogs
foreach ($blogs as $blog) {
$blog_id = $blog;
$blog = "wp_".$blog."_options";
$siteurl = $wpdb->get_col("SELECT option_value FROM $blog WHERE option_name='siteurl'");
$blogname = $wpdb->get_col("SELECT option_value FROM $blog WHERE option_name='blogname'");
$last_updated = $wpdb->get_col("SELECT last_updated FROM $wpdb->blogs WHERE blog_id = ".$blog_id);
$siteurl = $siteurl[0];
$blogname = $blogname[0];
$last_updated = $last_updated[0];
$feedurl = $siteurl."feed/";
?>
<outline title="<?php echo $blogname; ?>" type="rss" xmlUrl="<?php echo $feedurl; ?>" htmlUrl="<?php echo $siteurl; ?>" />
<?php
} // end foreach
?>
</outline>
</body>
</opml>
There might be a couple of bugs as it is an extract of the program I am running at http://www.hrblogs.org/opml/opml-blogs.php which is merging a database driven directory of HR blogs I am hacking together.