Message Assistant
Gmail と Backlog にまたがる未読を、毎朝 Slack の優先度リストに変換する。
このPoCから得た実装知
- 1LLM に渡す前にルールベースでアーカイブ候補を除外すると、API コストと処理時間を削れる
- 2プロンプトインジェクション対策はシステムプロンプトの宣言だけでなく、ローカルの事前スクリーニング(jq フィルタ)と組み合わせて二重に守る
- 33段階バリデーション(スキーマ存在 → 値域 → ID 整合性)を入れると、LLM 出力の形式崩れによる障害を本番前に止められる
- 4priority_rules.json で VIP 送信者・アーカイブパターン・キーワードブーストを外部化すると、ルール変更にコード改修が不要になる
- 5片方のチャネル取得が失敗しても他方で続行する設計が、cron 定期実行での信頼性を担保する
判断材料
- AI 権限レベル
- 任せるAI
- 想定対象部門
- 経営事業責任者プロジェクト管理
- 扱うデータ
- Gmail 受信トレイBacklog 未読通知Slack
- 人間の承認
- 不要(閲覧・通知のみ)
- 失敗時の止め方
- Claude API 分類が失敗した場合、該当メッセージは全件「手動確認」扱いに自動フォールバックする。Gmail ラベル付与は本番実行時のみ適用し、DRY_RUN で副作用なしに事前確認できる
- 導入難易度
- 2 / 5
- 初期導入期間
- セットアップ(認証・ラベル作成)に1〜2時間、cron 設定まで含めて半日
- 必要な社内担当
- Claude API キー保有者Gmail アカウント管理者(gws 認証)Backlog API キー発行者
- 連携対象 SaaS
- GmailBacklogSlack
- 最小構成
- Gmail のみ(Backlog は .env 未設定でスキップ可)
- 横展開先
- メール優先度管理タスク通知集約朝のブリーフィング自動化
このPoCが向いている会社
以下に1つでも当てはまる会社では、効果が大きい。
- Gmail と Backlog を日常的に使い、どちらも未読が積みあがりがちな経営者・事業責任者
- 朝のメールチェックに時間をとられ、本来の意思決定が後回しになっている
- 複数のプロジェクトを並走させており、対応優先度の判断自体が負担になっている
- 自社のルール(VIP 取引先・重要キーワード)に合わせた分類をしたいが、汎用フィルタでは限界がある
経営インパクト
Gmail と Backlog を別々に開き、重要度を自分で判断しながら未読を処理する
Slack DM に P1〜P4 の優先度つきリストが届き、まず何をすべきかがひと目でわかる
- 減ったリスク
- プロンプトインジェクション疑いのメッセージを AI に渡す前に分離し、隔離ラベルを付与する
- 横展開できる型
- チャネル別取得 → 共通スキーマへの正規化 → 注入スクリーニング → ルール事前分類 → LLM 分類 → 通知、というパイプライン構造は Slack・LINE WORKS など別チャネルへの横展開に再利用できる
このデータがあれば、これができる
- ▸Gmail 未読メール(直近 24 時間、最大 50 件)
- ▸P1〜P4 優先度つきブリーフィングを Slack DM に送信
- ▸Gmail に分類ラベルを付与
- ▸Gmail 未読メール
- ▸Backlog 未読通知
- ▸priority_rules.json(VIP 送信者・アーカイブパターン・キーワードブースト)
- ▸ルール自動分類(API 呼び出しスキップ)+ Claude Haiku による残件分類
- ▸P1〜P4 の件数サマリーと詳細を Slack DM に送信
- ▸プロンプトインジェクション疑い件数とその差出人を Slack に表示
- ▸Gmail への分類ラベルおよび処理済みラベルの自動付与
Pain — どんな痛みがあったか
- Gmail と Backlog を朝に順番に開き、何が急ぎかを自分で判断する時間がとられる
- 重要な顧客メールを見落とすリスクが未読件数に比例して高まる
- メルマガや自動通知が重要メールに混ざり、本当に読むべきものが埋もれる
- Backlog の未読通知がどのプロジェクトの何を意味するか、開いて確認するまでわからない
- 対応が必要なアサイン通知と参考情報の通知が混在している
Intent — なぜ作ったか
メール確認を「仕事」と認識していたが、本来の仕事は確認の先にある判断と行動だ。Gmail と Backlog を毎朝まとめて AI に渡し、優先度の判断だけを任せる。自分はリストのトップから順に動けばいい状態をつくる。
最初の1週間でやること
- DRY_RUN モードで実行し、分類結果を標準出力で確認する
- priority_rules.json に自社の VIP 取引先メールアドレスを登録する
- アーカイブさせたいメルマガ送信者を correct.sh --archive で追加する
- cron を平日朝 7 時に設定し、Slack DM でブリーフィングを受け取る
やらないこと
- Gmail への書き込み(送信・削除)は行わない。ラベル付与だけ
- Backlog へは読み取り専用で、チケットの更新は行わない
- AI に渡す前に注入スクリーニングで除外するため、メール本文が LLM に無制限に届く設計にしない
費用対効果の考え方
- 毎朝の Gmail + Backlog チェックにかかる確認・判断時間の削減
- 重要メールの見落とし防止(P1 は即返信・P2 は本日中のアクションが明示される)
- プロンプトインジェクション疑いの自動隔離による誤操作リスクの低減
シェルスクリプト × Claude API で作るマルチチャネル優先度フィルタの実装事例
毎朝の未読チェックを、優先度つきのブリーフィングに変える。インフラは cron とシェルスクリプトだけ。
導入前チェックリスト
商談前に、自社側でこの 4 点を確認しておくと検討がスムーズに進む。
Gmail と Backlog のどちらを使っているか、両方か?
Backlog は .env を空にすればスキップできる。Gmail だけでも動作する
Claude API キーと Slack Incoming Webhook URL を発行できるか?
どちらも必須。Anthropic Console と Slack アプリ管理画面で取得する
macOS に gws(Google Workspace CLI)をインストールし、gmail.modify スコープで認証できるか?
Gmail の未読取得とラベル付与に必要。brew install gws で導入できる
VIP 取引先や優先プロジェクトのパターンを priority_rules.json に登録できる担当者がいるか?
コード変更不要で correct.sh から追加できる