slack について
Bun から Slack REST API を利用して Slack データを操作するスキルです。メッセージの読み取りや検索、ファイル操作、ワークスペース情報の確認、投稿に対応し、トークンやスコープも確認します。
主な機能
- 01Bun で Slack Web API を呼び出し
- 02Slack データの読み取りと検索
- 03メッセージ投稿とファイル操作
- 04ユーザー、チャンネル、チームの確認
- 05トークン、スコープ、ページネーションの確認
活用シーン
- 01Slack の会話を検索または要約
- 02指定チャンネルへのメッセージ投稿
- 03Slack ファイルのアップロードや確認
- 04Slack API オートメーションの構築やデバッグ
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ superwall/ agent-skills --skill slackインストール後、Claude Code で/slackを入力して読み込まれたか確認します。
詳細
slack
Slack からの読み取り、Slack への投稿、Slack ファイルのアップロードまたはダウンロード、Slack のユーザー/チャンネル/チームの確認、その他の Slack データとのやり取りが必要なタスクでは、このスキルを使用します。
使用する場面
- Slack のチャンネル、グループ、メンション、メッセージ、ユーザー、チーム、ファイルの読み取り、検索、要約、確認をユーザーが依頼した場合。
- Slack メッセージの送信、下書き作成、投稿をユーザーが依頼した場合。
- Slack ファイルのアップロード、取得、確認をユーザーが依頼した場合。
- Slack REST API を使用する Slack 自動化の構築やデバッグをユーザーが依頼した場合。
手順
Bun から Slack REST API を直接使用します。
-
Slack API を呼び出す前に、環境内に
SLACK_BOT_TOKENがあるか確認します。SLACK_BOT_TOKENが未設定または空の場合は処理を中止し、https://superwall.ai/integrations で Slack を設定するようユーザーに伝えます。- ユーザーにチャットへトークンを貼り付けるよう求めないでください。
-
Bun の組み込み
fetchを使って Slack Web API エンドポイントを呼び出します。Authorization: Bearer ${process.env.SLACK_BOT_TOKEN}を指定してトークンを送信します。- エンドポイントでマルチパートフォームデータが必要な場合を除き、JSON リクエストには
Content-Type: application/json; charset=utf-8を指定します。 - HTTP ステータスと Slack の JSON
okフィールドの両方を確認します。 - Slack API のエラーは、メソッド名と
errorの値を示して報告します。
-
Slack の操作には、タスクに特化した小規模な Bun スクリプトを優先して使用します。
const token = process.env.SLACK_BOT_TOKEN;
if (!token) {
throw new Error(
"SLACK_BOT_TOKEN is not set. Set up Slack at https://superwall.ai/integrations."
);
}
async function slack(method: string, body: Record<string, unknown> = {}) {
const response = await fetch(`https://slack.com/api/${method}`, {
method: "POST",
headers: {
authorization: `Bearer ${token}`,
"content-type": "application/json; charset=utf-8",
},
body: JSON.stringify(body),
});
const data = await response.json();
if (!response.ok || !data.ok) {
throw new Error(`${method} failed: ${data.error ?? response.statusText}`);
}
return data;
}
-
レスポンスに
response_metadata.next_cursorが含まれる場合は、Slack のカーソルページネーションを使用します。- 読み取り時のページサイズは控えめにします。
next_cursorがない、または空になったら終了します。
-
以下のボットスコープが最低限利用可能であるものとして扱います。
{
"scopes": {
"bot": [
"app_mentions:read",
"channels:read",
"channels:history",
"chat:write",
"chat:write.public",
"files:write",
"files:read",
"team:read",
"users:read",
"groups:history"
]
}
}
-
スコープは今後追加される可能性があります。
- スコープの利用可否が重要な場合は、操作が不可能だと判断する前に、Slack API でアプリに現在利用可能なスコープを確認します。
- API が不足しているスコープを報告した場合は、Slack が必要とする正確なスコープと、それを必要とする操作を明示します。
-
タスクに応じて、一般的な Slack Web API メソッドを使用します。
- トークンの検証とワークスペース/アプリのコンテキストの特定には
auth.testを使用します。 - スコープで許可されたパブリックチャンネルとプライベートチャンネルの一覧表示には
conversations.listを使用します。 - チャンネルまたはグループの履歴の読み取りには
conversations.historyを使用します。 - メッセージの送信には
chat.postMessageを使用します。 - ユーザーの確認には
users.listまたはusers.infoを使用します。 - ワークスペースの詳細の確認には
team.infoを使用します。 - ファイルの操作には
files.uploadV2、files.infoおよび関連するファイルメソッドを使用します。
- トークンの検証とワークスペース/アプリのコンテキストの特定には
-
書き込み操作には注意してください。
- メッセージの送信やファイルのアップロードでは、ユーザーが送信先のチャンネル/ユーザーと内容をすでに明示している場合を除き、それらを確認します。
- 明示的に依頼されていない限り、コンテンツの削除、上書き、または広範な一斉配信を行わないでください。
コメント
Markdown 対応