Org mode でブログを書きたい
例によって org2blog もすでに MELPA レポジトリに入っているので、前回説明した straight.el と use-package の組み合わせで手軽にインストールできる…はずなのだが、残念ながら若干の小細工が必要だ。
org2blog のインストール
さて、org2blog そのものには特に問題ないのだが、org2blog が中で使っている xml-rpc-el
の現在のバージョンには若干問題があり、日本語のような Unicode キャラクタを含むリクエストがエラーになってしまう。そこで、早速前回紹介した straight.el の出番となる。直したバージョンを自分の Github レポジトリで公開している人がいるので、オフィシャルではなくそちらを使ってインストールするわけだ。具体的には、org2blog に関する記述の前に、init.el に
(straight-use-package '(xml-rpc-el :type git :host github :repo "grettke/xml-rpc-el")) (use-package xml-rpc :defer t )
などと書くだけでよい。
org2blog そのものの設定は、最小限で
(use-package org2blog :after org :defer t :config (setq org2blog/wp-blog-alist `(("myblog" :url "https://www.yourwordpresshost.com/xmlrpc.php" :username ,(car (auth-source-user-and-password "myblog")) :password ,(cadr (auth-source-user-and-password "myblog")) ) )) (setq org2blog/wp-buffer-template "#+TITLE: #+CATEGORY: #+TAGS: #+OPTIONS: #+PERMALINK: \n") )
こんな感じになるだろうか。 細かい説明は不要だと思うが、 wp-blog-alist
には当然複数のブログを設定することもできる。
auth-source を用いた認証
machine myblog login WordPressのユーザ名 password WordPressのパスワード
などと書いた上で、
$ gpg -c .authinfo
と GnuPG で暗号化して ~/.authinfo.gpg
として置いておけばよい。あとは、 必要なときに auth-source
が pinentry のようなパスフレーズ入力ダイアログを呼び出すので、そこから復号化できる。GPG は、Windows でも gpg4win などをインストールすれば普通に使えるだろう。org2blog を毎回使うわけではないのに起動時に毎回 GPG のパスフレーズを聞いてきて面倒くさいという場合は、上記の例のように (use-package org2blog)
に :defer t
を指定してやれば、必要なときまで読み込みが遅延されるので、パスフレーズ入力用ダイアログも org2blog の起動時に呼び出されるようになる。
org2blog でブログを書く
M-x org2blog/wp-login
を実行すると、Wordpress にログインして準備完了となる。あとは、 M-x org2blog/wp-new-entry
を実行するとドラフトバッファが準備される。このドラフトのひな形を指定しているのが org2blog/wp-buffer-template
だ。Org mode は、ファイル(というかバッファ)に #+FOO: bar
という形式で書くことで、ファイル毎に細かく設定を変える仕組みがあるのだが(詳しくはThe Org Manual: In-buffer settingを参照)、ここではWordpressの記事のタイトルやパーマリンクを指定するのに使われている。 #+DATE:
を使えば公開日時も指定できる。
ここまで来れば、後は Org 記法で記事を書くだけだ。書くにあたって記法に全く制限はなく、リンクを張ればリンクとして扱われるし、画像ファイルへリンクを張れば自動的にアップロードされる。書き終わったら、 M-x org2blog/wp-post-buffer
でドラフトがサーバに送られ、希望すればウェブブラウザを呼び出してプレビューも見られる。もちろんいきなり公開することも可能だ。
ちなみに一度サーバに記事が送られると、ドラフトバッファには先ほどの In-buffer setting の一つとして #+POSTID: 数字
という行が追記される。これがあれば、Emacs 側で追記や編集をした上でまた M-x org2blog/wp-post-buffer
を実行すれば、記事がダブることなくちゃんとサーバ側も変更に追従してアップデートされるのである。他にも、サブツリー単位で送信したり MathJax を用いた数式を書いたりといろいろなことが出来るのだが、細かいコマンド等は org2blog の Gihub レポジトリにある説明を参照してほしい。
いずれにせよ、org2blog を使うと WordPress のウェブインターフェースからちまちまパーマリンクやらタグやらを入力する必要がなくなり、まあ大したことではないのだが、気分的には大変楽である。Wordpress をお使いならぜひお試しください。