Webhook

はてなブログでは、記事や固定ページの投稿・更新に応じて外部サービスと連携するWebhook機能が利用できます。

Webhook機能は「はてなブログPro」「はてなブログBusiness」「はてなブログ for DevBlog」「はてなCMS」など、はてなブログの有料プランに加入しているブログで利用できます。

Webhook機能とは

Webhookを設定すると、以下の操作が行われた際に指定したURLに対してHTTP POSTリクエストが発行されます。リクエストボディには操作や記事や固定ページ自体に関する情報を含めることができます。

  • ブログでの記事の新規作成・更新・予約投稿の実行・差し替え予約の実行・下書きに戻す操作
  • ブログでの固定ページの新規作成・更新・予約投稿の実行・差し替え予約の実行・下書きに戻す操作

Webhook機能の設定

ブログごとの管理画面で「詳細設定」ページの「Webhook」欄を設定することでWebhook機能が利用できます。設定可能な項目は次のとおりです。

Webhook機能はそのブログのオーナーのみが設定可能です。

Webhook送信先URL

記事・固定ページに関する操作が行われた際にHTTPリクエストを発行する対象のURLを指定します。

HTTPリクエストヘッダー

発行されるHTTPリクエストに対してブログごとのHTTPリクエストヘッダーを設定可能です。「Name」欄にはフィールド名を、「Value」欄には値を設定してください。

リクエストボディ

発行されるHTTPリクエストのリクエストボディを設定可能です。リクエストボディでは以下の変数を利用可能です。

変数 挿入される値
{blog_host} ブログのURL
{publication_id} 記事・固定ページのID
{publication_type} 記事のときentry、固定ページのときpage
{publication_url} 記事及び固定ページのURL
{publication_new_status} 記事・固定ページの公開状態。公開状態のときpublic、下書き状態の時draft
{publication_old_status} 対象の操作の前の記事・固定ページの公開状態。記事が新規作成されている場合は空文字列
{user} 操作を行ったユーザのはてなID
{timestamp} 操作を行ったUNIX時刻

設定例

記事・固定ページの操作に応じて特定のGitHubリポジトリに対してリポジトリディスパッチイベントを発行し、GitHub Actionsを実行するには次のように設定します。

GitHub Actionsの挙動を保証するものではありません。

GitHubでの設定

  • 通知先のGitHubリポジトリに.github/workflows/repository-dispatch-example.yamlという名前で以下のようなYAMLファイルを配置しておく
name: Repository Dispatch Example
on: repository_dispatch
jobs:
 test:
 runs-on: ubuntu-latest
 steps:
 - name: Event Information
 run: |
 echo "Event is '${{ github.event.action }}'" 
 echo "Message is '${{ toJSON(github.event.client_payload) }}'"

ブログのWebhookの設定

  • Webhook送信先URLをhttps://api.github.com/repos/OWNER/REPO/dispatchesとする(OWNER, REPOの部分は個別のGitHubリポジトリに合わせて設定する)
  • HTTPリクエストヘッダーをNameAuthorizationValueはそのリポジトリにアクセス可能なGitHubのパーソナルアクセストークンの値となるように設定する
  • リクエストボディを以下のようにする
{
 "event_type": "hatenablog_webhook",
 "client_payload": {
 "blog_host": "{blog_host}",
 "publication_id": "{publication_id}",
 "publication_type": "{publication_type}",
 "publication_url": "{publication_url}",
 "publication_new_status": "{publication_new_status}",
 "publication_old_status": "{publication_old_status}",
 "user": "{user}",
 "timestamp": "{timestamp}"
 }
}
Webhookの設定例のスクリーンショット

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です 読者をやめる 読者になる 読者になる

AltStyle によって変換されたページ (->オリジナル) /