さくらブログは、管理画面の「新規投稿」で投稿できるようになっている。ところが、書きかけの状態でうっかりブラウザを閉じたりすると、作成途中の文章がきれいさっぱり消えてしまう。当然と言えばそれまでだが、これまではローカルのテキストエディタで文章を作成してアップロードしていたので、不便で仕方がない。そこで、ローカルで作成した文章をスクリプトで自動投稿することを考えた。
情報が今ひとつ断片的だったので、いろいろ探しまわった。次のようにすればいいらしい。
- さくらブログの管理画面の「ブログ一覧」を開く。
- 「投稿ツール用設定」で、ID とパスワードを設定する。(参考:XML-RPC経由の記事投稿を行う際に必要となるブログIDとパスワードの設定方法。ここでは「ブログID」という名前になっているが、全ブログに共通の ID なので、「ユーザーID」と考えた方がよい)
- ブログ名のリンク先 URL を表示すると、"blog_id=......" としてブログIDが記述されているので、これをメモしておく。(これはブログごとの ID なので、本当の「ブログID」)
以上を準備した上で、Ruby で次のように記述する。
require 'xmlrpc/client'
userID = "d-alchemy.sakura.ne.jp" # ユーザーID
password = "some_password" # パスワード
blogID = "123456" # ブログID
title = "タイトル" # タイトル
body = "これが本文です。" # 本文
keywords = "キーワード1,キーワード2" # キーワード
contents = { :title => title, :description => body, :mt_keywords => keywords }
proxy = XMLRPC::Client.new("blog.sakura.ne.jp", "/rpc")
postID = proxy.call("metaWeblog.newPost", blogID, userID, password, contents, 1)
キーワードは指定できるが、タグは指定できないらしい。投稿してから手動でつけるしかない。この仕様はちょっと残念。