Slack CLI で Slack API を効率的に操作する実践テクニック

Slack CLI で Slack API を効率的に操作する実践テクニック

Slack CLI の slack api コマンドを活用した実用的なユースケースを紹介します。変数による動的メソッド呼び出しやプロジェクト移動による自動トークン切り替え等で開発効率が向上します。
2026.08.30

Slack CLI に slack api コマンドが追加され、任意の Slack API メソッドをターミナルから直接呼び出せるようになりました[1]

本記事では、API を CLI から呼べることを活かした実用的なユースケースをご紹介します。

なお、slack api を使うまでのセットアップはこちらの記事をご参照ください。

https://dev.classmethod.jp/articles/slack-cli-slack-api/

JSON ファイルを引数として渡す

Block Kit の blocks を含むペイロードは長いので、扱いやすくするためにファイルに切り出したい場面があります。シェルのコマンド置換でファイルの内容を渡してみましょう。

$ cat message.json
{
  "channel": "C0123456789",
  "text": "Hello",
  "blocks": [
    { "type": "section", "text": { "type": "mrkdwn", "text": "*Hello*" } }
  ]
}
 
$ slack api chat.postMessage --json "$(cat message.json)"

json ファイルからペイロードを渡す

jq とシェルのループで繰り返し実行する

出力が JSON 形式なので、そのまま jq に渡せます。以下はチャンネル一覧から ID と名前だけを抜き出す例です。

$ slack api conversations.list --app A0123456789 team_id=T0123456789 \
    | jq -r '.channels[] | "\(.id)\t\(.name)"'
C0123456789	general
C0123456780	random

さらに、同じコマンドを複数パターンで確認したい場合、シェルのループでまとめて実行できます。

for text in "plain text" "*bold*" "<@U0123456789>" "<https://example.com|link>"; do
  slack api chat.postMessage --app A0123456789 channel=C0123456789 text="$text" \
    | jq -r '.ok'
done

markdown のパターン検証

メソッドを差し替えて呼び出す

slack api はメソッド名を位置引数として受け取るので、シェルの変数で差し替えられます。例として、アプリに付与済みのスコープで何が呼べるか確認してみます。

for method in auth.test conversations.list users.list team.info; do
  printf '%s\t' "$method"
  slack api "$method" --app A0123456789 team_id=T0123456789 \
    | jq -r 'if .ok then "ok" else "\(.error)\t\(.needed // "-")" end'
done
auth.test	ok
conversations.list	ok
users.list	missing_scope	users:read
team.info	missing_scope	team:read

このように、マニフェストに追加すべきスコープをまとめて確認できます。

curl で同じことをすると、メソッド名を URL に組み込む必要があります。変数展開で書けなくはありませんが、ヘッダーとトークンの指定も毎回付いて回るため、ここまで簡単にはなりません。

プロジェクトを移動するとトークンが切り替わる

トークンはプロジェクト内のアプリから解決されるため、別のアプリで試したいときはディレクトリを移動するだけで済みます。

curl の場合は環境変数のトークンを入れ替えることになります。入れ替えを忘れて別のワークスペースへ投稿してしまう、という間違いが起きません。

まとめ

出力を扱う部分は両者でほぼ同じで、差が出るのはリクエストの組み立てにかかる手間の部分です。
1 回だけ実行するのであれば大きな差はありませんが、プロジェクトやパラメータを変えて何度も呼びたい場合、手順の複雑さが変わってきます。

Slack API の挙動を確認する機会が多い方は、ぜひ一度試してみてください。

脚注
  1. Slack CLI v4.1.0 のリリースノート。https://docs.slack.dev/changelog/2026/05/19/slack-cli/ ↩︎

この記事をシェアする

関連記事