mcpField
S
slack-automation

slack-automation

github.com/davepoon生産性3.7k122 回インストール2 日前に更新
リポジトリ

slack-automation について

slack-automationは、Rube MCP経由でComposioのSlackツールキットを使う自動化スキルです。メッセージ、検索、チャンネル、ユーザー、スレッドなどを操作できます。

主な機能

  1. 01メッセージの送信、編集、予約
  2. 02メッセージ検索とスレッドの取得
  3. 03チャンネル、ユーザー、ワークスペース情報の一覧
  4. 04メッセージへのリアクション追加と削除

活用シーン

  1. 01チャンネルへの投稿や送信予約
  2. 02ワークスペース内のメッセージ検索とスレッド確認
  3. 03ワークスペースのチャンネルとメンバーの一覧
  4. 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 キーは不要です。エンドポイントを追加するだけで利用できます。

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

主なワークフロー

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:プレーンテキストのフォールバック(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. メッセージと会話の検索

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

ツールの手順:

  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: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. メッセージにリアクションし、スレッドを管理する

使用する状況:ユーザーがリアクションの追加やスレッド形式の会話の管理を希望している場合

ツールの順序:

  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 提供

コメント