slack-automation について
slack-automationは、Rube MCP経由でComposioのSlackツールキットを使う自動化スキルです。メッセージ、検索、チャンネル、ユーザー、スレッドなどを操作できます。
主な機能
- 01メッセージの送信、編集、予約
- 02メッセージ検索とスレッドの取得
- 03チャンネル、ユーザー、ワークスペース情報の一覧
- 04メッセージへのリアクション追加と削除
活用シーン
- 01チャンネルへの投稿や送信予約
- 02ワークスペース内のメッセージ検索とスレッド確認
- 03ワークスペースのチャンネルとメンバーの一覧
- 04メッセージへのリアクションやスレッド返信
MCP 対応
Rube MCPを介してComposioのSlackツールキットにアクセスします。ワークフローの前にツールの検索と有効なSlack接続が必要です。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill slack-automationインストール後、Claude Code で/slack-automationを入力して読み込まれたか確認します。
詳細
Rube MCP による Slack の自動化
Composio の Slack ツールキットを通じて、メッセージの送信、検索、チャンネル管理、リアクションのワークフローなど、Slack ワークスペースの操作を自動化します。
ツールキットのドキュメント:composio.dev/toolkits/slack
前提条件
- Rube MCP が接続されていること(RUBE_SEARCH_TOOLS が利用可能)
RUBE_MANAGE_CONNECTIONSでslackツールキットを使った Slack 接続が有効であること- 現在のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出してください
セットアップ
Rube MCP の取得:クライアント設定で https://rube.app/mcp を MCP サーバーとして追加してください。API キーは不要です。エンドポイントを追加するだけで利用できます。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを検証しますslackツールキットを指定してRUBE_MANAGE_CONNECTIONSを呼び出します- 接続が ACTIVE でない場合は、返された認証リンクから Slack OAuth を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE であることを確認します
主なワークフロー
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:プレーンテキストのフォールバック(markdown_text の使用が推奨されているため非推奨)thread_ts:スレッド内で返信する親メッセージのタイムスタンプblocks:Block Kit のレイアウトブロック(非推奨。markdown_text を使用してください)
注意点:
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:1ページあたりの結果数(デフォルト値は状況によって異なります。大規模なワークスペースでは明示的に設定してください)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 提供