Sunday, March 25, 2012

How to Move Your Posterous Blog to WordPress or Blogger

This may be premature since the fate of Posterous is still unclear after being bought by Twitter, but I decided given the uncertainty and since moving to Blogger was something I had been considering for a while anyway this was a good time to move everything off of Posterous.

I really do like Posterous and I think they do a lot of things about 1000 times better than any other blogging service. But if nothing else this points out yet again the fact that if you use a service of any kind you're at the mercy of that service or any company who may buy that service, so there's a lot to be said for controlling your own stuff.

As you may have read in the announcement to which I linked above Posterous is saying they'll provide tools to export your content to other services in the coming weeks, but not being one to wait around and see what happens I decided to get a jump on things and move some things to WordPress, and some others to Blogger, so I thought I'd share how I went about doing this and see if maybe there are better ways that I may have missed.

The interesting thing is WordPress is involved as a go-between even if you want to move to Blogger, but here's how I went about moving off of Posterous.

Moving From Posterous to WordPress

WordPress provides a Posterous importer so this is actually pretty easy with a few caveats.

If you have self-hosted WordPress and add the Posterous plugin, it's apparently very common to have it not work. I ran into this with the blog I was trying to move (specifically the ColdFusion Weekly podcast archives) from Posterous to a WordPress install on DreamHost.

Why DreamHost? I've used them in the past (been years though) for side projects now and then and especially for the money I've always had good luck with them, and since they offer unlimited disk space, bandwidth, databases, etc. for $100/yr I figured what the heck. I have a few small sites to move from Posterous to something else and this seemed like a good fit for these sites, especially given that the podcast files take up a chunk of disk space.

After I got DreamHost set up and used their one-click installer to install WordPress, I added the Posterous importer and tried to import the ColdFusion Weekly blog. No dice. I kept getting 403 errors which is apparently very common if you use the Posterous importer plugin on anything but wordpress.com.

The solution is to create a free blog on wordpress.com, run the Posterous importer from there, and then you can export from wordpress.com to WordPress's WXR XML format, and use that to import to your final destination.

Here's the steps:

  1. Create an account on wordpress.com if you don't already have one
  2. Create a new blog (the free one is fine)
  3. Click on "Tools" and then "Import" on the left-hand side
  4. Click on "Posterous" in the list of import tools that comes up
  5. Enter your Posterous login information and the URL for your Posterous site and click submit
  6. Wait :-)
If you have a ton of posts it can take a while to import but they send you an email when it's done.

Once the import to wordpress.com is done, you:
  1. Click on "Tools" and then "Export" on the left-hand side
  2. Leave the "All Content" radio button checked if you want everything (or choose what you want to export) and click "Download Export File"
  3. Go to the WordPress install where you want to import the blog content
  4. Click on "Tools" and then "Import" on the left-hand side
  5. Click on "WordPress"
  6. Select the export file you downloaded from wordpress.com and click "Upload file and import"
Then you're done, with some caveats.

What I ran into with the CF Weekly podcast blog is that Posterous didn't have the podcast files as attachments, so the link to each audio file showed up at the bottom of each post and was still pointing to posterous.com. That's no good.

To resolve that I used Firefox and the DownThemAll plugin to grab all the podcast files, and then SFTPd those up to DreamHost. At that point I did have to go through and add a link to each file in each post. This was relatively time consuming--maybe if Posterous provides real export tools at some point this won't be necessary. Also since WordPress (at least the install on DreamHost) has a file upload size limit of 7MB I had to do this manually and then they don't show up in the WordPress media library, so it was a bit of a hassle.

Main point here is once you import everything make sure and check the URLs for things like images, etc. so that they're not still pointing to Posterous and disappear if/when Posterous goes away or you decide to shut down your Posterous site.

Moving From Posterous to Blogger

Moving from Posterous to Blogger is a very similar situation since as I said to do a bulk import/export, at least from what I can tell, you have to use WordPress as an intermediary. The only other thing with Blogger is that Posterous does let you autopost from Posterous to Blogger so in theory if you set that up you could just auto-post each post from Posterous to Blogger, but note that Blogger does have an hourly limit on that so probably not the best best (not to mention there's no way to auto-post everything at once).

To get a blog from Posterous to blogger I did this:
  1. Follow the steps above to create a new (again, free is fine) blog on wordpress.com and import your Posterous blog to WordPress
  2. Follow the steps above to export and download your WordPress WXR file
So at this point you have your Posterous blog as a WXR file. Blogger doesn't let you import this, but thankfully there's a tool called wordpress2blogger that handles this quite nicely.

If your WXR file is < 1 MB in size (and you don't care about uploading the contents to a third party), you can upload your WXR file directly into wordpress2blogger and this will create and download an XML file that can be imported into Blogger.

If your WXR file is > 1MB in size (which mine for my main blog was), you can grab the code for wordpress2blogger and run it on your local machine. On Linux it wasn't bad to get this up and running at all since all the necessary Python stuff is already installed, but I can't speak to how much of a pain this would be on other platforms. I used the tool running locally on my main blog and it worked great.

Regardless of how you handle this (and there may be other tools out there), once you have your Blogger-format XML file you then:
  1. Log into Blogger and select (or create, if it doesn't exist) the blog to which you want to import your content
  2. Click on "Settings" and then "Other" on the left-hand side
  3. Click on "Import Blog," select your XML file, and hit submit
One thing to note is that at least in the case of a couple of blogs I've done, even though there's a checkbox to automatically publish imported posts, that didn't seem to work for me. So after the import is complete, you may have to go to Blogger's "all posts" page, hit the checkbox at the top of the list to select all your posts, and then click "Publish" to actually publish them.

Caveat here again is to check your asset paths. One of the blogs on which I used this method is the OpenCF Summit blog, and image paths are pointing to wordpress.com. Since that's free I guess it's not a big deal but it's definitely not self-contained so I may go back through and move all this stuff at some point.

Goes to show I should have been using something like S3 for my assets all along. :-)

Other Tools

Hopefully if/when Posterous does shut down they'll make good on their promise to make tools that let you export easily, but I came across another tool that lets you export everything from Posterous as a zip file. I haven't tried it, and it does cost ($9 for a single blog, $14 for multiple blogs under a single account), but this seems like a good way to just grab everything as static HTML so you at least have everything all in one place. I'm probably going to use this on my main blog as a backup even though I already have everything on Blogger (I'm mostly worried about asset paths and losing stuff on Posterous permanently) so if I do I'll follow up and let folks know how that went.

So there you have it. If you're more patient than I you can just wait and see what happens with Posterous, but if like me you want to jump ship now or have been thinking about doing it for a while anyway, these methods work well with the major potential issue being asset paths.

If you have other methods of doing this I'd love to hear them.

4 comments:

Siddharth Menon said...
This comment has been removed by the author.
Siddharth Menon said...

You could also use services like Justmigrate to move in few steps. It is really easy.

Eric said...

Hi Matt,

I found this post after searching for posts about converting Wordpress export files to Blogger import files.

I'm trying to use the same method you did, running wordpress2blogger on a local machine, but I'm encountering Python errors.

I'm using OS X with Python 2.7.2 and have installed the 'Google data Python library'. After I run the './run-appengine.sh wordpress2blogger' script, I can access the web console on localhost:8080, but I'm getting a "ImportError: No module named gdata.service" when I try to actually convert the file.

I got the same error with Linux Mint too.

Your post was really informative and thorough about converting blogs. Any chance you could let me know what I might be doing wrong? Thanks.

This is a sample of my terminal output:

File "/Users/eric/Downloads/google-blog-converters-r89/src/wordpress2blogger/wordpress2blogger.py", line 18, in
import gdata.service
ImportError: No module named gdata.service

Eric said...

Regarding my post above, I figured out how to use the converter scripts.

I didn't want to upload my blog contents to a 3rd party (appspot.com) and was able to do it on my local machine. Thanks!