塩焼きブログ

塩焼きに関しての研究内容を公開しています

はてなブログのAPI (AtomPub) を利用して自動投稿や複雑なインポートを行う

はてなブログはAtomPubという仕組みによって外部アプリケーションから記事を投稿したり編集したりできる。つまりTwitter APIで外部アプリからツイートするみたいなもん。

私が開発しているCMSはMT形式のエクスポートができなかったし、Markdown記法を継承した独自記法だったのではてなの公式インポート機能ではインポートできない。したがってRubyで記事データをはてな用に加工しながらAtomPub経由でインポートするRubyのコードを書いて一括インポートといった感じで実際に使った。

はてなブログAtomPub - Hatena Developer Center

require 'atomutil'

POST_URI = "https://blog.hatena.ne.jp/hatenaID/example.hatenablog.com/atom/entry"

auth = Atompub::Auth::Wsse.new(
  username: 'hatenaID',
  password: 'はてなのダッシュボード->設定->詳細設定のAtomPubの項にあるAPIキーを入れる'
)
client = Atompub::Client.new(auth: auth)

entry = Atom::Entry.new(
  title: post.title.encode('BINARY', 'BINARY'),
  content: post.content.encode('BINARY', 'BINARY')
)

p client.create_entry(POST_URI, entry);

ただAtomPubも含めてはてなは24時間に100記事までしか投稿できないっぽい。一回で最大100件しか投稿できないので、1000件とかの記事をはてなブログに移行したい人はめんどそうだ。はてなの公式のインポートは無制限とかだったりするかもしれないけど。