mcpField
G
gmail-label

gmail-label

github.com/aiagentwithdhruv生産性2055 回インストール15 週間前に更新
リポジトリ

gmail-label について

gmail-labelは、受信トレイのメールをAction Required、Waiting On、Referenceに分類し、Gmail APIで一括ラベル付けするスキルです。メールを分割して複数のサブエージェントで並行分類し、結果を統合してからラベルを適用します。

主な機能

  1. 01メールの概要をコンパクトなJSONで取得
  2. 02メールを分割して並行分類
  3. 03メールを3種類のラベルに分類
  4. 04分類済みのチャンクを1つのファイルに統合
  5. 05Gmail APIで分類ラベルを一括適用

活用シーン

  1. 01受信メールを対応区分ごとに整理
  2. 02並行サブエージェントで大量のメールを分類
  3. 03アカウントの受信トレイに一貫したラベルを適用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aiagentwithdhruv/skills --skill gmail-label

インストール後、Claude Code で/gmail-labelを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
gmail_label_apply.py
gmail_label_fetch.py
gmail_label_merge.py
gmail_label_split.py

詳細

Gmail Auto-Label

目標

受信トレイのメールを取得し、並列サブエージェントで「対応が必要」「返信待ち」「参考」に分類して、Gmail API を使って一括でラベルを適用します。

スクリプト

  • ./scripts/gmail_label_fetch.py - メールの概要をコンパクトな JSON として取得します
  • ./scripts/gmail_label_split.py - 並列分類用にメールを N 個のチャンクに分割します
  • ./scripts/gmail_label_merge.py - 分類済みチャンクを単一の labels.json に統合します
  • ./scripts/gmail_label_apply.py - 分類に基づいてラベルを一括適用します

サブエージェント

  • email-classifier — .claude/agents/email-classifier.md で定義されています
  • モデル:Sonnet 4.5(高速でコスト効率のよい分類)
  • 各サブエージェントは 1 つのチャンクを読み込み、分類結果を 1 つのファイルに書き込みます

フロー(並列 — デフォルト)

ステップ 1:メールを取得
python3 .claude/skills/gmail-label/scripts/gmail_label_fetch.py \
  --account ACCOUNT --query "in:inbox" --limit 100 --output .tmp/emails.json
ステップ 2:チャンクに分割
python3 .claude/skills/gmail-label/scripts/gmail_label_split.py \
  --input .tmp/emails.json --chunks 10 --output-dir .tmp/chunks
ステップ 3:並列で分類(サブエージェントを 10 個起動)

バックグラウンドで email-classifier サブエージェントを 10 個起動します。各サブエージェントはチャンクを 1 つ担当します。各サブエージェントは次の処理を行います。

  • .tmp/chunks/chunk_N.json を読み込みます
  • 各メールを分類します
  • .tmp/chunks/classified_N.json に書き込みます

Task ツールで run_in_background: true と model: "sonnet" を指定します。真の並列処理を行うため、10 個すべてを 1 つのメッセージで起動します。

For each chunk 0-9, spawn a Task with:
  subagent_type: "email-classifier"
  model: "sonnet"
  run_in_background: true
  prompt: "Read /absolute/path/.tmp/chunks/chunk_N.json, classify each email, write results to /absolute/path/.tmp/chunks/classified_N.json"

重要:サブエージェントの結果を読み取るために TaskOutput を使用しないでください。 サブエージェントは結果をファイルに書き込むため、メインエージェントが分類データを確認する必要はありません。TaskOutput を読み取るとコンテキストウィンドウが埋まり、大量のバッチ(メール 500 件以上)では「prompt too long」エラーが発生します。

代わりに、ファイルが存在するかどうかを確認します。

# Wait until all classified files exist (timeout after 120s)
for i in $(seq 0 9); do
  while [ ! -f ".tmp/chunks/classified_$i.json" ]; do sleep 2; done
done

その後、ステップ 4(統合)に進みます。

ステップ 4:分類結果を統合
python3 .claude/skills/gmail-label/scripts/gmail_label_merge.py \
  --input-dir .tmp/chunks --output .tmp/labels.json
ステップ 5:ラベルを適用
python3 .claude/skills/gmail-label/scripts/gmail_label_apply.py \
  --account ACCOUNT --input .tmp/labels.json

分類ガイドライン

対応が必要:

  • 確認が必要なセキュリティアラート
  • 期限が迫っているクレジットカードやドメインの更新
  • 質問を含む Slack の @メンション
  • 新しいチームメンバーへの歓迎(Slack の参加通知)
  • 返信が必要なクライアントからのメール
  • ビジネスリスティングの更新(Google Business Profile、Bing Places)
  • Stripe の要対応通知

返信待ち:

  • 返信待ちの営業メール
  • 解決待ちのサポートチケット
  • 送信済みで返信待ちの提案書

参考:

  • マーケティングニュースレター(DigitalMarketer など)
  • 慈善団体/非営利団体のニュースレター(RAPS など)
  • Google Business Profile のパフォーマンスレポート
  • プロモーションの案内(Blinkist、セールなど)
  • プラットフォームの更新通知(Google Play、Apify など)
  • 確認コード(使用済み)
  • 不動産ニュースレター(Westbank など)
  • ゲームアカウントのメール(Riot Games など)
  • 情報提供を目的とするセキュリティアラート(2FA の有効化など)
  • 健康に関する注意喚起
  • 法律/ポリシーの更新通知

アカウントレジストリ

アカウントはワークスペースのルートにある gmail_accounts.json に保存されています。各アカウントには次の項目が必要です。

  • email - Gmail アドレス
  • token_file - OAuth トークンへのパス

新しいアカウントの追加

python3 .claude/skills/gmail-inbox/scripts/gmail_multi_auth.py --account ACCOUNT_NAME --email EMAIL

パフォーマンス

  • 逐次フロー:メール 100 件で約 36 秒(取得 1 秒 + 分類 34 秒 + 適用 1 秒)
  • 並列フロー:メール 100 件で約 30 秒(分類 19 秒 + 統合 1 秒未満 + 適用 約 10 秒)
  • 分類がボトルネックです。サブエージェントを 10 個並列にすることで、34 秒から 19 秒に短縮できます(約 1.8 倍高速化)。
  • エージェントの起動オーバーヘッド(約 4 秒の時間差)が、理論上の性能向上を制限します。
  • Gmail API のスロットリングにより、適用ステップの所要時間は変動する場合があります。

スキーマ

入力
名前型必須説明
accountstringはいレジストリに登録された Gmail アカウント名
querystringいいえGmail の検索クエリ(デフォルト:'in:inbox')
limitintegerいいえ分類するメールの最大数(デフォルト:100)
chunksintegerいいえ並列分類用のチャンク数(デフォルト:10)
出力
名前型説明
labels_appliedobjectカテゴリ別の件数:「対応が必要」「返信待ち」「参考」
認証情報
名前ソース
credentials.jsonファイル
token_*.jsonファイル(自動生成)
組み合わせ可能なスキル

このスキルと連携しやすいスキル:gmail-inbox

コスト

分類には Claude Sonnet API を使用します

コメント