mcpField
S
slack-automation

slack-automation

github.com/sickn33生産性48.8k87 回インストール今日更新
リポジトリ

slack-automation について

slack-automation は、Rube MCP と Composio の Slack ツールキットを通じて Slack ワークスペースの操作を行うスキルです。メッセージ、検索、チャンネル、ユーザー、リアクション、スレッド、予約投稿の手順を案内し、権限と対象範囲の確認も重視します。

主な機能

  1. 01メッセージの送信・編集・予約
  2. 02メッセージ検索とスレッド展開
  3. 03チャンネルとユーザーの特定
  4. 04チャンネルとユーザー一覧の管理
  5. 05メッセージへのリアクション追加・削除

活用シーン

  1. 01チャンネルへの投稿や予約送信
  2. 02メッセージ検索とスレッドの確認
  3. 03ワークスペースのチャンネルやメンバーの照会
  4. 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 サーバーとして追加します。対象アカウントは、返された接続フローを通じて認証し、必要なスコープを許可する必要があります。

  1. RUBE_SEARCH_TOOLS が応答することを確認し、Rube MCP が利用可能であることを確認します
  2. slack ツールキットを指定して RUBE_MANAGE_CONNECTIONS を呼び出します
  3. 接続が ACTIVE でない場合は、返された認証リンクから Slack OAuth を完了します
  4. ワークフローを実行する前に、接続ステータスが ACTIVE と表示されることを確認します

ワークスペースとコミュニケーションの境界

対象のワークスペース、チャンネル、ユーザー、および現在取得済みのツールスキーマを正確に特定してください。読み取りや検索の許可は、投稿、DM、メンション、リアクション、編集、予約投稿の許可を意味するものではありません。これらは、該当するユーザーの指示と閲覧範囲に従ってのみ実行してください。大規模なメンションや、ワークスペースをまたぐ場合および共有チャンネルでの情報公開を事前に確認してください。タイムスタンプは文字列として扱い、範囲を限定してページネーションを行い、非公開の内容は伏せてください。送信結果が不確かな場合は、再試行する前にメッセージ履歴と照合してください。ラッパー固有の markdown_text サポートがあっても、Slack の text/blocks が非推奨になるわけではありません。ブロックの内容には、アクセシブルな代替テキストを含めてください。chat.postMessage を参照してください。

主なワークフロー

1. チャンネルにメッセージを送信する

使用する場面:ユーザーが Slack チャンネルまたは DM へのメッセージ投稿を希望している場合

ツールの呼び出し順序:

  1. SLACK_FIND_CHANNELS - チャンネル名からチャンネル ID を特定します[前提条件]
  2. SLACK_LIST_ALL_CHANNELS - FIND_CHANNELS の結果が空または曖昧な場合の代替手段です[代替手段]
  3. SLACK_FIND_USERS - DM または @メンションの対象ユーザーを特定します[任意]
  4. SLACK_OPEN_DM - ユーザーに直接メッセージを送る場合、DM チャンネルを開くか再利用します[任意]
  5. SLACK_SEND_MESSAGE - 特定したチャンネル ID を使用してメッセージを投稿します[必須]
  6. 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. メッセージと会話を検索する

使用する場面:ユーザーがワークスペース全体から特定のメッセージを検索したい場合

ツールの手順:

  1. SLACK_FIND_CHANNELS - in:#channel を使った範囲指定検索のためにチャンネルを特定します[任意]
  2. SLACK_FIND_USERS - from:@user を使った投稿者フィルターのためにユーザーを特定します[任意]
  3. SLACK_SEARCH_MESSAGES - アクセス可能な会話全体をキーワード検索します[必須]
  4. 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. チャンネルとユーザーを管理する

使用する場面:ユーザーがチャンネル、ユーザー、またはワークスペース情報を一覧表示したい場合

ツールの手順:

  1. SLACK_FETCH_TEAM_INFO - 接続を検証し、ワークスペースの識別情報を取得します[必須]
  2. SLACK_LIST_ALL_CHANNELS - パブリックチャンネルを列挙します[必須]
  3. SLACK_LIST_CONVERSATIONS - プライベートチャンネルと DM も含めます[任意]
  4. SLACK_LIST_ALL_USERS - ワークスペースのメンバーを一覧表示します[必須]
  5. SLACK_RETRIEVE_CONVERSATION_INFORMATION - チャンネルの詳細なメタデータを取得します[任意]
  6. 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. メッセージにリアクションし、スレッドを管理する

使用する場面:ユーザーがリアクションを追加したり、スレッド形式の会話を管理したりしたい場合

ツールの手順:

  1. SLACK_SEARCH_MESSAGES または SLACK_FETCH_CONVERSATION_HISTORY - 対象のメッセージを検索します[前提条件]
  2. SLACK_ADD_REACTION_TO_AN_ITEM - 絵文字のリアクションを追加します[必須]
  3. SLACK_FETCH_ITEM_REACTIONS - メッセージへのリアクションを一覧表示します[任意]
  4. SLACK_REMOVE_REACTION_FROM_ITEM - リアクションを削除します[任意]
  5. SLACK_SEND_MESSAGE - thread_ts を使ってスレッドに返信します[任意]
  6. SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - スレッド全体を読み込みます[任意]

主なパラメーター:

  • channel:メッセージがあるチャンネルの ID
  • timestamp / 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. メッセージを予約する

使用する状況:ユーザーがメッセージの配信予約を希望している場合

ツールの順序:

  1. SLACK_FIND_CHANNELS - チャンネル ID を特定します[前提条件]
  2. SLACK_SCHEDULE_MESSAGE - post_at のタイムスタンプを指定してメッセージを予約します[必須]

主なパラメーター:

  • channel:特定したチャンネル ID
  • post_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_CHANNELSquery
すべてのチャンネルを一覧表示するSLACK_LIST_ALL_CHANNELSlimit, cursor, types
メッセージを送信するSLACK_SEND_MESSAGEchannel, markdown_text
メッセージを編集するSLACK_UPDATES_A_SLACK_MESSAGEchannel, ts, markdown_text
メッセージを検索するSLACK_SEARCH_MESSAGESquery, count, sort
スレッドを取得するSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONchannel, ts
リアクションを追加するSLACK_ADD_REACTION_TO_AN_ITEMchannel, name, timestamp
ユーザーを検索するSLACK_FIND_USERSsearch_query または email
ユーザーを一覧表示するSLACK_LIST_ALL_USERSlimit, cursor
DM を開くSLACK_OPEN_DMユーザー ID
メッセージを予約するSLACK_SCHEDULE_MESSAGEchannel, post_at, text
チャンネル情報を取得するSLACK_RETRIEVE_CONVERSATION_INFORMATIONチャンネル ID
チャンネル履歴を取得するSLACK_FETCH_CONVERSATION_HISTORYchannel, oldest, latest
ワークスペース情報を取得するSLACK_FETCH_TEAM_INFO(なし)

使用する状況

このスキルは、概要で説明されているワークフローやアクションを実行する場合に適しています。

例

ユーザーのリクエスト:

Composio の Slack ツールキットを使って、メッセージの送信、検索、チャンネル管理、リアクションのワークフローなど、Slack ワークスペースの操作を自動化してください。

制限事項

  • このスキルは、タスクが上記の説明の範囲に明確に該当する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント