はてなブログAtomPubは、はてなブログで用意されているWeb APIです。
JBS Tech Blogの運用の中で下書き情報をうまく取得できないかと考えていたところ、はてなブログAtomPubが使えそうなことが分かりました。
本記事では、Azure Logic AppsからはてなブログAtomPubを利用する流れについて解説します。
前提
最終的には管理者権限ですべての下書き情報を取得する事も考えていますが、今回はまずは検証として以下の前提としました。
- まずは特定の記事を決め打ちで情報を取る形にする
- ブログオーナーではなく寄稿者のアカウントでまずは試す
- 認証は複雑な設定などが不要なBasic認証を今回は利用する
事前準備
下書き記事の作成
以前公開した記事をコピーし、記事として体裁の整った形で下書き記事を取得できるようにしておきました。
はてなIDのAPIキーの確認
はてなブログAtomPubで利用できる認証方法のうち、今回はBasic認証を利用します。
そのために、事前に、記事寄稿者の「はてなID」のAPIキーを確認しておきます。
APIキーは、アカウント設定から確認可能です。
※ 未発行の場合は必要に応じて発行してください。
仕様と値の確認
まずは、はてなブログAtomPubの仕様を確認し、下書き記事の取得に必要な情報を洗い出します。
下書きか公開かに関わらず、以下のリクエストで取得できることが分かりました。*1
GET https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry/{entry_id}
実際のブログで必要な値を確認します。図のようになります。
各項目の詳細です。
- はてなID
- ブログオーナーの[はてなID]
- 寄稿者のIDではないので、複数人で記事を書いている場合は注意
- ブログID
- はてなブログのID
- 編集画面を開いたときに表示されるもの
- blog.jbs.co.jpのような独自ドメインを使っている場合、独自ドメインではなく、hatenablog.comのものが必要
- entry_id
- 記事毎に設定されている
- 記事編集画面で確認可能
Azure Logic Appsの作成
今回は、ロジックアプリを「消費」で作っています
※ ロジックアプリ自体の作成方法は割愛します。
ロジックアプリデザイナーで、トリガーに「HTTP 要求の受信時」、アクションに「HTTP」を選択し、図のように設定します。
各項目の詳細は以下の通りです。
- 方法
- GET
- URI
- GET https://blog.hatena.ne.jp/{ブログオーナーのはてなID}/{ブログID}/atom/entry/{entry_id}
- 認証の種類
- 基本
- ユーザー名
- 寄稿者自身の「はてなID」
- ブログオーナー以外の場合、GETで利用する「はてなID」と異なる場合があるので注意
- パスワード
- 事前に確認した 寄稿者自身の「はてなID」に紐づいたAPIキー
Azure Logic Appsの実行
実行してみたところ、未公開の記事(下書き)ですが、ちゃんとデータを取得できました。
出力結果を確認してみます。
まず、出力全体はxmlになっていました。名前空間も宣言されていますね。
本文は元々markdown形式で書いていたのですが、contentタグ内ではそのままmarkdown形式で取得している事が分かりました。
一方で、hatena:formatted-contentタグ内では、htmlに変換された形で取得できています。
どちらがいいかはケースバイケースになると思いますが、状況に応じて元のフォーマットも変換後のフォーマットも利用できるというのは便利そうですね。
おわりに
少なくとも、Azure Logic AppsからはてなブログAtomPubを利用して下書き状態の記事内容を取得する事が出来ることは分かりました。
今後、xml形式での出力を解析し、タイトルや本文など、利用したい部分だけ抜き出して利用する方法を調べていきたいと思います。
*1:寄稿者権限の場合は、自分が書いた下書き記事のみ取得可能です
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。
担当記事一覧