slack-automation について
slack-automation は、Rube MCP と Composio の Slack ツールキットを通じて Slack ワークスペースの操作を行うスキルです。メッセージ、検索、チャンネル、ユーザー、リアクション、スレッド、予約投稿の手順を案内し、権限と対象範囲の確認も重視します。
主な機能
- 01メッセージの送信・編集・予約
- 02メッセージ検索とスレッド展開
- 03チャンネルとユーザーの特定
- 04チャンネルとユーザー一覧の管理
- 05メッセージへのリアクション追加・削除
活用シーン
- 01チャンネルへの投稿や予約送信
- 02メッセージ検索とスレッドの確認
- 03ワークスペースのチャンネルやメンバーの照会
- 04特定メッセージへのリアクション
MCP 対応
このスキルは https://rube.app/mcp に追加する Rube MCP 経由で Composio の Slack ツールキットにアクセスします。ワークフローの前に最新のツールスキーマを確認し、Slack の認証接続を完了する必要があります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill slack-automationインストール後、Claude Code で/slack-automationを入力して読み込まれたか確認します。
詳細
Rube MCP による Slack の自動化
Composio の Slack ツールキットを通じて、メッセージ送信、検索、チャンネル管理、リアクションのワークフローなど、Slack ワークスペースの操作を自動化します。
前提条件
- Rube MCP に接続済みであること(
RUBE_SEARCH_TOOLSを利用可能) slackツールキットを指定したRUBE_MANAGE_CONNECTIONSによる、有効な Slack 接続があること- 現在のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出すこと
セットアップ
Rube MCP を入手する:クライアントの設定で https://rube.app/mcp を MCP サーバーとして追加します。対象アカウントは、返された接続フローを通じて認証し、必要なスコープを許可する必要があります。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを確認しますslackツールキットを指定してRUBE_MANAGE_CONNECTIONSを呼び出します- 接続が ACTIVE でない場合は、返された認証リンクから Slack OAuth を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE と表示されることを確認します
ワークスペースとコミュニケーションの境界
対象のワークスペース、チャンネル、ユーザー、および現在取得済みのツールスキーマを正確に特定してください。読み取りや検索の許可は、投稿、DM、メンション、リアクション、編集、予約投稿の許可を意味するものではありません。これらは、該当するユーザーの指示と閲覧範囲に従ってのみ実行してください。大規模なメンションや、ワークスペースをまたぐ場合および共有チャンネルでの情報公開を事前に確認してください。タイムスタンプは文字列として扱い、範囲を限定してページネーションを行い、非公開の内容は伏せてください。送信結果が不確かな場合は、再試行する前にメッセージ履歴と照合してください。ラッパー固有の markdown_text サポートがあっても、Slack の text/blocks が非推奨になるわけではありません。ブロックの内容には、アクセシブルな代替テキストを含めてください。chat.postMessage を参照してください。
主なワークフロー
1. チャンネルにメッセージを送信する
使用する場面:ユーザーが Slack チャンネルまたは DM へのメッセージ投稿を希望している場合
ツールの呼び出し順序:
SLACK_FIND_CHANNELS- チャンネル名からチャンネル ID を特定します[前提条件]SLACK_LIST_ALL_CHANNELS- FIND_CHANNELS の結果が空または曖昧な場合の代替手段です[代替手段]SLACK_FIND_USERS- DM または @メンションの対象ユーザーを特定します[任意]SLACK_OPEN_DM- ユーザーに直接メッセージを送る場合、DM チャンネルを開くか再利用します[任意]SLACK_SEND_MESSAGE- 特定したチャンネル ID を使用してメッセージを投稿します[必須]SLACK_UPDATES_A_SLACK_MESSAGE- 修正が必要な場合、投稿したメッセージを編集します[任意]
主なパラメーター:
channel:チャンネル ID または名前(#接頭辞なし)markdown_text:書式付きメッセージに推奨されるフィールド(見出し、太字、斜体、コードブロックに対応)text:Slack のフォールバック/アクセシビリティ用テキスト。非推奨と決めつけず、アダプターのスキーマを確認してくださいthread_ts:スレッドで返信する親メッセージのタイムスタンプblocks:対応している場合に使用する Block Kit のレイアウトブロック。Slack では一般に非推奨ではありません
注意点:
SLACK_FIND_CHANNELSにはqueryパラメーターが必須です。指定しないと「Invalid request data provided」エラーが発生しますSLACK_SEND_MESSAGEには、有効なチャンネルと、markdown_text/text/blocks/attachments のいずれかが必須です- 無効なブロックのペイロードは error=invalid_blocks を返します(最大 50 ブロック)
thread_tsを省略すると、返信はスレッドではなくトップレベルの投稿になります- 編集やスレッド操作に備えて、SEND_MESSAGE の
response.data.channelとresponse.data.message.tsを保存してください
2. メッセージと会話を検索する
使用する場面:ユーザーがワークスペース全体から特定のメッセージを検索したい場合
ツールの手順:
SLACK_FIND_CHANNELS-in:#channelを使った範囲指定検索のためにチャンネルを特定します[任意]SLACK_FIND_USERS-from:@userを使った投稿者フィルターのためにユーザーを特定します[任意]SLACK_SEARCH_MESSAGES- アクセス可能な会話全体をキーワード検索します[必須]SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION- 関連する検索結果のスレッドを展開します[必須]
主なパラメーター:
query:修飾子(in:#channel、from:@user、before:YYYY-MM-DD、after:YYYY-MM-DD、has:link、has:file)を使用できる検索文字列count:ページあたりの検索結果数(最大 100)、または auto_paginate=true の場合は合計件数sort:'score'(関連度順)または 'timestamp'(時系列順)sort_dir:'asc' または 'desc'
注意事項:
queryが未指定または空の場合、検証に失敗しますok=trueでも検索結果がない場合があります(response.data.messages.total=0)- 一致した内容は
response.data.messages.matchesにあります(response.data_preview.messages.matchesにもある場合があります) match.textが空または切り詰められている場合があります。重要な情報がmatches[].attachments[]に含まれていることがあります- FETCH_MESSAGE_THREAD によるスレッドの展開は、
response.data.has_more=trueの場合に切り詰められることがあります。response_metadata.next_cursorを使ってページネーションしてください
3. チャンネルとユーザーを管理する
使用する場面:ユーザーがチャンネル、ユーザー、またはワークスペース情報を一覧表示したい場合
ツールの手順:
SLACK_FETCH_TEAM_INFO- 接続を検証し、ワークスペースの識別情報を取得します[必須]SLACK_LIST_ALL_CHANNELS- パブリックチャンネルを列挙します[必須]SLACK_LIST_CONVERSATIONS- プライベートチャンネルと DM も含めます[任意]SLACK_LIST_ALL_USERS- ワークスペースのメンバーを一覧表示します[必須]SLACK_RETRIEVE_CONVERSATION_INFORMATION- チャンネルの詳細なメタデータを取得します[任意]SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONS- ユーザーグループを一覧表示します[任意]
主なパラメーター:
cursor:response_metadata.next_cursorのページネーションカーソルlimit:ページあたりの検索結果数(デフォルト値は状況により異なります。大規模なワークスペースでは明示的に設定してください)types:チャンネルタイプのフィルター('public_channel'、'private_channel'、'im'、'mpim')
注意事項:
- ワークスペースのメタデータは最上位ではなく、
response.data.teamの下にあります SLACK_LIST_ALL_CHANNELSが返すのはパブリックチャンネルのみです。プライベートチャンネルや IM も含めるには、SLACK_LIST_CONVERSATIONSを使ってくださいSLACK_LIST_ALL_USERSは HTTP 429 のレート制限に達することがあります。Retry-After ヘッダーに従ってくださいresponse_metadata.next_cursorが空になるまで、必ずページネーションしてください。idによって重複を除去してください
4. メッセージにリアクションし、スレッドを管理する
使用する場面:ユーザーがリアクションを追加したり、スレッド形式の会話を管理したりしたい場合
ツールの手順:
SLACK_SEARCH_MESSAGESまたはSLACK_FETCH_CONVERSATION_HISTORY- 対象のメッセージを検索します[前提条件]SLACK_ADD_REACTION_TO_AN_ITEM- 絵文字のリアクションを追加します[必須]SLACK_FETCH_ITEM_REACTIONS- メッセージへのリアクションを一覧表示します[任意]SLACK_REMOVE_REACTION_FROM_ITEM- リアクションを削除します[任意]SLACK_SEND_MESSAGE-thread_tsを使ってスレッドに返信します[任意]SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION- スレッド全体を読み込みます[任意]
主なパラメーター:
channel:メッセージがあるチャンネルの IDtimestamp/ts:メッセージのタイムスタンプ(一意の識別子。例:'1234567890.123456')name:コロンを付けない絵文字名(例:'thumbsup'、'wave::skin-tone-3')thread_ts:スレッド返信の親メッセージのタイムスタンプ
注意事項:
- リアクションには、チャンネル ID とメッセージのタイムスタンプの正確な組み合わせが必要です
- 絵文字名には、コロンを付けない Slack の命名規則を使います
SLACK_FETCH_CONVERSATION_HISTORYが返すのはチャンネルのメインタイムラインのみで、スレッド内の返信は返しません- スレッド内の返信を取得するには、親メッセージの
thread_tsを指定してSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONを使ってください
5. メッセージを予約する
使用する状況:ユーザーがメッセージの配信予約を希望している場合
ツールの順序:
SLACK_FIND_CHANNELS- チャンネル ID を特定します[前提条件]SLACK_SCHEDULE_MESSAGE-post_atのタイムスタンプを指定してメッセージを予約します[必須]
主なパラメーター:
channel:特定したチャンネル IDpost_at:配信日時を示す Unix タイムスタンプ(最大 120 日先まで)text/blocks:メッセージの内容
注意点:
- 予約できるのは最大 120 日先までです
post_atには ISO 8601 形式ではなく、Unix タイムスタンプを指定する必要があります
よくあるパターン
ID の特定
操作を行う前に、必ず表示名を ID に変換してください:
- チャンネル名 -> チャンネル ID:
queryパラメーターを指定してSLACK_FIND_CHANNELSを使用します - ユーザー名 -> ユーザー ID:
search_queryまたはemailを指定してSLACK_FIND_USERSを使用します - DM チャンネル:特定したユーザー ID を指定して
SLACK_OPEN_DMを使用します
ページネーション
ほとんどのリストエンドポイントでは、カーソルベースのページネーションが使われます:
response_metadata.next_cursorが空になるまでページを取得します- 安定したページ取得のため、
limitの値を明示的に設定します(例:100〜200) - ページをまたいだ結果は
idで重複を除去します
メッセージの書式設定
- 書式付きメッセージでは、
textやblocksよりもmarkdown_textを優先します - ユーザーへのメンションには
<@USER_ID>形式を使用します(@username は使用しません) markdown_textでの改行には\nを使用します
既知の注意点
- チャンネルの特定:チャンネルがプライベートで、ボットが招待されていない場合、
SLACK_FIND_CHANNELSの結果が空になることがあります - レート制限:
SLACK_LIST_ALL_USERSなどのリストエンドポイントで HTTP 429 が返されることがあります。Retry-After ヘッダーに従ってください - ネストされたレスポンス:ラップされた実行では、結果が
response.data.results[0].response.dataの下にネストされている場合があります - スレッドとチャンネル:
SLACK_FETCH_CONVERSATION_HISTORYが返すのはメインのタイムラインのみです。スレッドの返信にはSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONを使用します - メッセージの編集:
channelと元のメッセージのtsの両方が必要です。これらは SEND_MESSAGE のレスポンスから保存してください - 検索の遅延:投稿直後のメッセージは、すぐには検索結果に表示されない場合があります
- スコープの制限:OAuth スコープが不足していると 403 エラーが発生することがあります。
SLACK_GET_APP_PERMISSION_SCOPESで確認してください
クイックリファレンス
| タスク | ツールスラッグ | 主なパラメーター |
|---|---|---|
| チャンネルを検索する | SLACK_FIND_CHANNELS | query |
| すべてのチャンネルを一覧表示する | SLACK_LIST_ALL_CHANNELS | limit, cursor, types |
| メッセージを送信する | SLACK_SEND_MESSAGE | channel, markdown_text |
| メッセージを編集する | SLACK_UPDATES_A_SLACK_MESSAGE | channel, ts, markdown_text |
| メッセージを検索する | SLACK_SEARCH_MESSAGES | query, count, sort |
| スレッドを取得する | SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION | channel, ts |
| リアクションを追加する | SLACK_ADD_REACTION_TO_AN_ITEM | channel, name, timestamp |
| ユーザーを検索する | SLACK_FIND_USERS | search_query または email |
| ユーザーを一覧表示する | SLACK_LIST_ALL_USERS | limit, cursor |
| DM を開く | SLACK_OPEN_DM | ユーザー ID |
| メッセージを予約する | SLACK_SCHEDULE_MESSAGE | channel, post_at, text |
| チャンネル情報を取得する | SLACK_RETRIEVE_CONVERSATION_INFORMATION | チャンネル ID |
| チャンネル履歴を取得する | SLACK_FETCH_CONVERSATION_HISTORY | channel, oldest, latest |
| ワークスペース情報を取得する | SLACK_FETCH_TEAM_INFO | (なし) |
使用する状況
このスキルは、概要で説明されているワークフローやアクションを実行する場合に適しています。
例
ユーザーのリクエスト:
Composio の Slack ツールキットを使って、メッセージの送信、検索、チャンネル管理、リアクションのワークフローなど、Slack ワークスペースの操作を自動化してください。
制限事項
- このスキルは、タスクが上記の説明の範囲に明確に該当する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。