WebloggerMode (weblogger.el) is an Emacs package that allows you to post to one of the following blog sites from emacs:

This package is primarily written by MarkHershberger. It was developed from BloggerMode (blogger.el).


WebloggerMode requires Lisp:xml-rpc.el .

Download location

The current version (1.4.5, released on 2010-03-11) is available at https://launchpad.net/weblogger-el


From comments in the source, here are some docs:

;; in .emacs file:
;; (load-file "weblogger.el")

 M-x weblogger-setup-weblog
 M-x weblogger-start-entry

;; C-x C-s    -- post-and-publish current buffer to the weblog.
;;               Calling weblogger-publish-entry with an prefix argument
;;               (i.e. C-u C-x C-s) will prompt for which weblog
;;               to use.
;; C-c C-c    -- save as draft and bury the buffer.
;; C-c C-n    -- post (but not publish) the current entry and
;;               load the next entry.
;; C-c C-p    -- post (but not publish) the current entry and
;;               load the previous entry.
;; C-c C-k    -- delete the current entry.
;; M-g        -- synchronise weblogger.el's idea of the entries available
;;               with the weblog server.
;; C-c C-t m  -- edit the main template.
;; C-c C-t a  -- edit the Archive Index template
;; C-c C-s s  -- Change the server being used.
;; C-c C-s w  -- Change the weblog.
;; C-c C-s u  -- Change the user (re-login).


If you run into a bug in WebloggerMode, please report it using Savannah or M-x weblogger-submit-bug-report but make sure that I (MarkHershberger) know about it. Another good way to get support is to join the Emacs Weblogs mailing list (https://savannah.nongnu.org/mail/?group=emacsweblogs). Posting rants and fixes on various blogs across the Internet won’t get your problem fixed. (2010-03-09 – MarkHershberger)

After getting WebloggerMode, the user should either run

    M-x weblogger-setup-weblog RET

or define ‘weblogger-config-alist’ manually to define the blogs (s)he wishes to post to.

You’ll need the “Server Endpoint”. Here are the values for various popular weblogging platforms:

  Blogger.com: http://www.blogger.com/api
  Wordpress: http://BLOG-URL/xmlrpc.php (For http://hexmode.wordpress.com/, this is http://hexmode.wordpress.com/xmlrpc.php.  For a blog hosted at http://example.com/weblog/ it would be http://example.com/weblog/xmlrpc.php)
  LiveJournal: http://www.livejournal.com/interface/blogger/
  OpenWeblog: http://www.openweblog.com/interface/blogger/
  MovableType: http://CGI-URL/mt-xmlrpc.cgi.  If your CGI root is http://www.example.com/cgi-bin/mt/ then the Server Endpoint would be http://www.example.com/cgi-bin/mt/mt-xmlrpc.cgi.
  Drupal: Enable the Blogger API and use http://DRUPAL-URL/xmlrpc.php (like Wordpress).

I’ve played around with this and find it to be functional for WordPress. Posts made are in raw HTML, allowing for links and <!--more--> parsing without a hitch during posting (but not during editing; see below). Categories (via “Keywords”) also worked fairly well.

It’s worth noting, however, that the full API isn’t implemented (no comments), and there are still gremlins and undocumented dependencies in this package. For example, I use SSL encryption (via self-signed and/or CACert), which caused all sorts of annoying terminal beeps and Lisp errors during parsing. After a little experimentation and log reading, I discovered that only GnuTLS (gnutls-cli) was implemented functionally for my purposes, as an external dependency.

That said, I found this package to be quite functional after getting over those hurdles, posting to my blog nicely and cleanly in HTML. The gnus-style posting is much appreciated.

I also fixed up handling of <!--more--> tag functionality (in WordPress) and added the Keywords header to new entries by default. You can find my changes over at weblogger.el. Feel free to drop me a line on whether they work for you. :) – Tom Robinson

I’m using version 1.4.3, with Emacs 23.1, Drupal 6.13 and Slackware 13.0. In spite of some odd behavior (e.g., <title> tags end up displayed as part of the post and I have to delete them manually when I revise), it’s a very useful addition to emacs. I had problems getting it to work initially but solved them by updating an old copy of xml-rpc.el.

It’s worth noting, as usage quirks, that if you’re revising an entry and do C-x C-s (“save”) the entry revises, while if you do C-c C-c (“send”) it will create a new entry. The new entry won’t be published, even if publication is the default setting for new entries, until you fetch and save it again. --JimKalb

I made a patch(http://rix3.8.je/blog/2009/12/16/emacs%e7%9a%84weblogger1-4-4%e7%9a%84wordpress-patch/) about 1.4.4 for wordpress(2.8.6) like Tom Robinson, fixed the Categories bug and date bug(for me). At least, it worked very well for me. --rix

I have applied rix’s patch to 1.4.4 and posting to my Wordpress blog is good except for one thing - all my posts are 5 hours early. Is this a weird interaction between the Date string (which contains -0500, since I’m in the Eastern TZ) and the API? If I post from weblogger.el at 1pm, the post on the web says it was posted at 8am on the blog. If I fix the posting time via the web interface to be 1pm and use weblogger-fetch-entries, it shows 8am in the date string of the fetched entry. --duckpuppy

I have made a patch to both weblogger.el and xml-rpc.el, to make it work with M$ Windows Live space which is basically metaWeblog, with some quirks in its xml content. You can get my code at http://windows-config.googlecode.com/svn/trunk/.emacs_d/weblogger, both .el files under there (this abused personal google code project is not meant to fork weblogger.el or any other OSS software, it’s only for my own convenience). --baohaojun