New Writer Plugins Using The New SDK

As mentioned, and demonstrated, there is a new SDK for Live Writer and true to form, I have been beavering away with them writing up new plugins. This post will showcase the 6 plugins I’ve written using the new SDK. So let’s jump straight into it.

Emotify Plugin

You might remember that the first plugin I ever wrote for Live Writer was my Insert Emoticon plugin, where you clicked on the insert link on the right, chose your emoticon and put it in your post. Well I always found that to just be tedious and a pain, so with this new SDK, I can now take it one step further. So I have added to the original plugin and now you can simply do a Live Messenger emoticon code in your post The plugin will ask you if you want to emotify your post, or you can set the options to let the plugin do it automatically. This plugin was made using the PublishNotificationHook base class. I must note, this plugin requires .NET 3.5 to run (I wanted to try out some LINQ to XML. Joe is trying to persuade me to create one that is .NET 2.0 friendly, and I’ll try to, but for now, this is .NET 3.5. Would also like to thank Inky for his invaluable help with the regular expressions that do all the gory work. Thanks dude

Now Playing

There are many different plugins that allow you to put what you’re listening to into your blog and I think I’ve used each one, but this is a perfect example of a plugin that could utilise the HeaderFooterSource base class. And that’s exactly what I’ve done. The plugin itself is nothing special, it doesn’t even have its own API, but what it does allow is for you to customize what you want it to say and what parts of the song to show:

Now, a couple of things about this plugin, for it to work, you need to have the Windows Media Player blogging plugin which you can download here for XP or here for Vista. If you’re using iTunes, then you don’t need to install anything else, the plugin will query iTunes itself for the currently playing information.

Capitalize Title

This is a very simple plugin that will check to see if your blog title is using capital letters for the first letter of each word, if this isn’t the case, then it changes that. So a blog title would look like this: A New Blog Post Entry With Capital Letters (rather than: a new blog post entry with capital letters).

Signature Plugin

This plugin is quite unique as it has per blog settings! What this plugin does is uses the HeaderFooterSource and at the end of the blog entry will put a signature (like SL in my case). Now sometimes you want to use different signatures for different blogs (if you have more than one configured), so this plugin allows you to have different signatures for each blog configured!!

Bold Hyperlink Plugin

This was a request from Steve Clayton who wanted all of his hyperlinks to be bold, so that’s what this plugin does. It checks the contents of the blog entry and makes all the hyperlinks in the blog post bold.

Profanity Checker

This plugin was something I discussed with the Writer team as a good example of the PublishNotificationHook base class for checking the contents of a post and cancelling the publish if certain criteria are met. So this allows you to configure what words would cancel a blog post from being published, and just to make sure they can’t easily be changed (say by a child), you have to password protect them


For some of these plugins, they all required some common code, so I have started compiling my own WriterUtilities static class. Now one of the methods you’ll find is a nice little trick for your Writer plugins. In the IPostInfo interface, all the properties (like title, contents, keywords, etc) are read only, so you can’t actually change them using your code. But wait a minute, isn’t that what I’m doing with at least 3 of the above plugins? Yes, yes it is. Using this WriterUtilities class, you can also change it too, but be warned, it is unsupported by Microsoft (and me ). Here is a quick example of how to use the class:

        public override bool OnPrePublish(IWin32Window dialogOwner, 
            IProperties properties, IPublishingContext publishingContext,
            bool publish)
            string newtitle = "My New Title";
            return ScottIsAFool.WriterUtils.ReplaceText(publishingContext.PostInfo,

I also have a another method which returns an array of Blogs configured on the system (which I use for my Signature plugin). I should note that this utilities class is only compatible with the CTP and should not be used in the 1.0 SDK!

Source Code

As always I am making the source code for all these available on CodePlex.

Codeplex page:
Download page:

All of these plugins should be put in c:\program files\windows live\writer\plugins (or the locale/architecture equivalent).


Whilst writing this, I was listening to AerosmithLay It Down

  1. #1 by Steve on June 3, 2008 - 11:43 pm

    more plugin goodness from the plugin King!
    cheers Scott!

  2. #2 by Kelly on December 2, 2008 - 4:30 pm

    Excellent work here. Thank You.

  3. #5 by Unknown on March 9, 2009 - 9:06 am

  4. #6 by Unknown on March 19, 2009 - 5:51 am

  5. #11 by Unknown on April 8, 2009 - 11:01 am

  6. #12 by Unknown on June 17, 2009 - 4:19 am

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: