mcpField
E
email-triage

email-triage

github.com/joelhooks生産性6553 回インストール3 日前に更新
リポジトリ

email-triage について

email-triageは、joelclaw email CLIでFrontの受信トレイを扱うためのスキルです。会話の優先順位付け、スレッドの確認、不要なメールのアーカイブに加え、検索や一括操作の手順も示します。

主な機能

  1. 01受信トレイの会話を検索・絞り込み
  2. 02重要度に応じたメール分類
  3. 03添付ファイルキャッシュ付きのスレッド閲覧
  4. 04IDまたは検索条件で一括アーカイブ
  5. 05Front検索フィルターの参照

活用シーン

  1. 01返信や対応が必要なメールの特定
  2. 02通知や宣伝メールの整理
  3. 03送信者や日付範囲によるメール確認

インストール

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

$npx skills add https://github.com/joelhooks/joelclaw --skill email-triage

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

同梱ファイルagents/openai.yamlassets/small-logo.svg

詳細

メールのトリアージ

Joel のメール受信トレイ(Front)をスキャンし、重要度に応じて会話をトリアージし、不要なメールをアーカイブして、対応が必要な項目を表面化させます。すべての操作には joelclaw email CLI を使用します。

正規のメールインターフェース

  • joelclaw でのメールのトリアージには、Front を正規のインターフェースとして使用します。
  • トリアージに gog gmail は決して使用しないでください。[email protected]、VIP スレッド、すべての受信トレイは Front にあります。
  • gog は Google Workspace の操作(Calendar、Drive、Docs など)に使用し、メールのトリアージには使用しません。

Front 検索 API リファレンス

検索エンドポイントは GET /conversations/search/{url_encoded_query} です。 結果は最終アクティビティの日付順に並びます(変更できません)。

有効な is: ステータス

open、archived、assigned、unassigned、snoozed、trashed、unreplied、waiting、resolved

is:unread はありません。 最後のメッセージが受信メッセージである会話には is:unreplied を使用します。

ステータスの競合(組み合わせ不可):

  • archived ↔ open ↔ trashed ↔ snoozed(相互排他的)
  • assigned ↔ unassigned(相互排他的)
日付フィルター — UNIX タイムスタンプのみ
  • before:<unix_seconds> — このタイムスタンプより前に作成されたメッセージ/コメント
  • after:<unix_seconds> — このタイムスタンプより後に作成されたメッセージ/コメント
  • during:<unix_seconds> — このタイムスタンプと同じ日に作成されたメッセージ/コメント

Front は before:YYYY-MM-DD を受け付けません — 必ず UNIX 秒に変換してください。 CLI の --before フラグと --after フラグは YYYY-MM-DD を受け付け、自動的に変換します。

宛先フィルター
  • from:<handle> — 送信者(メールアドレス、ソーシャルハンドル)
  • to:<handle> — 宛先(to/cc/bcc を含む)
  • cc:<handle>、bcc:<handle> — 特定のフィールド
  • recipient:<handle> — すべての役割(from、to、cc、bcc)
  • 同じ種類のフィルターを複数指定すると OR 条件になります:from:[email protected] from:[email protected] → どちらか
  • 異なる種類のフィルターを指定すると AND 条件になります:from:[email protected] to:[email protected] → 両方
エンティティフィルター(名前ではなく ID を使用)
  • inbox:<inbox_id> — 例:inbox:inb_41w25
  • tag:<tag_id> — 例:tag:tag_13o8r1
  • assignee:<teammate_id> — 例:assignee:tea_hjx3
  • participant:<teammate_id>、author:<teammate_id>、mention:<teammate_id>、commenter:<teammate_id>
  • contact:<contact_id>、link:<link_id>
  • custom_field:"<name>=<value>"
フリーテキスト

単語のみの場合は件名と本文を検索します。フレーズは引用符で囲みます:"exact phrase"。

否定検索なし

Front の検索には 否定検索がありません — -from:、NOT、除外演算子は使用できません。

クエリあたりのフィルターは最大 15 個です。

CLI コマンド

受信トレイをスキャン
joelclaw email inbox                          # default: is:open, 50 results
joelclaw email inbox -n 100                   # more results
joelclaw email inbox -q "is:open is:unreplied"  # awaiting reply
joelclaw email inbox --from [email protected]  # by sender
joelclaw email inbox --before 2026-02-01      # auto-converts to unix ts
joelclaw email inbox --after 2026-01-15       # auto-converts to unix ts
joelclaw email inbox --page-token "TOKEN"     # pagination (from previous response)

フラグは組み合わせて使用できます:

joelclaw email inbox --from [email protected] --after 2026-02-01 -n 20
1 件をアーカイブ
joelclaw email archive --id cnv_xxx
ID を指定して複数件をアーカイブ(高速、並列、バッチ処理)
joelclaw email archive-ids --ids cnv_abc,cnv_def,cnv_ghi

10 件のリクエストを並行して実行します。検索結果のページをトリアージするのに最適です。不要なメールの ID を取得して一気にアーカイブできます。

クエリで一括アーカイブ(デフォルトはドライラン)
joelclaw email archive-bulk -q "is:open from:[email protected]"           # dry run — shows count + sample
joelclaw email archive-bulk -q "is:open from:[email protected]" --confirm  # execute
joelclaw email archive-bulk -q "is:open from:[email protected]" --limit 100 --confirm  # batch size
会話を読む
joelclaw email read --id cnv_xxx
joelclaw email read --id cnv_xxx --refresh   # bypass local cache

joelclaw email read はローカルのスレッドと添付ファイルのキャッシュを使用します(デフォルト TTL:60 分)。キャッシュのパス:~/.cache/joelclaw/email/。キャッシュを迂回し、Front から最新の情報を取得するには --refresh を使用します。

読み取り出力の形式と jq パターン

joelclaw email read の戻り値:

result.conversation: {id, subject, status, from: {name, email}, date, tags}
result.messages[]: {id, from: {name, email}, date, is_inbound, body_preview (or body), attachments[]}
result.attachment_summary: {total, cached, metadata_only, cache_errors}
result.cache: {hit, source, cache_path, age_seconds, ttl_seconds}

メッセージの内容は現在 body_preview に含まれており、body への移行が進行中です。後方互換性のため、どちらも有効なフィールドとして扱ってください。

正しい抽出パターン(現在のフィールド):

joelclaw email read --id cnv_xxx 2>&1 | jq '.result.messages[] | {from: .from.email, date: .date, body: .body_preview}'

後方/前方互換性のある抽出パターン:

joelclaw email read --id cnv_xxx 2>&1 | jq '.result.messages[] | {from: .from.email, date: .date, body: (.body // .body_preview)}'
受信トレイを一覧表示
joelclaw email inboxes

トリアージのワークフロー

1. 受信トレイの状態を読み込む
joelclaw email inbox -n 50

JSON の結果を解析します。各会話には id、subject、from(名前+メールアドレス)、date、status、tags があります。

便利な追加クエリ:

joelclaw email inbox -q "is:open is:unreplied" -n 50   # awaiting reply
joelclaw email inbox --before 2026-01-01 -n 50          # old stuff to clean
joelclaw email inbox --from [email protected]    # CI noise check
2. 推論を使って分類する

各会話を読み、送信者、件名、コンテキストに基づいて判断し、カテゴリを決めてください。ハードコードされたドメイン一覧は使用しないでください。状況に応じて判断してください。

  • 返信が必要 — 返信を期待している実在の人物からのメッセージ。個人的なメッセージを送ってきた同僚、協力者、友人、仕事上の連絡先などです。返信スレッド(Re:)、質問、具体的な会議への招待、依頼がないか確認してください。
  • 後で読む — 保存する価値のある興味深いコンテンツ。Joel が意図的に購読しているニュースレター(The Information、Astral Codex Ten、Lenny's Newsletter)、業界ニュース、技術的な詳細解説などです。
  • 対応が必要 — 返信は不要ですが、対応が必要です。請求書、セキュリティアラート、期限切れ間近のトライアル、税務書類、実際の注文に関する配送状況、RSVP が必要なカレンダー招待などです。
  • アーカイブ — 価値のないもの。マーケティングスパム、販促オファー、一方的な営業メール、重複通知、解決済みのアラート、誰も読まない自動レポート、ベンダーからの追加販売案内などです。
3. トリアージの概要を提示する

Joel 向けに調査結果を整理してください。重要なものから提示してください。

## 🔴 Reply needed (N)
- **Name** — Subject (why it needs a reply)

## ⚡ Actionable (N)
- **Sender** — Subject (what action)

## 📖 Read later (N)
- **Source** — Subject

## 🗑️ Archive candidates (N)
- Count by type (e.g., "14 marketing, 8 CI failures, 5 duplicate notifications")
4. 判断を実行する

不要なメールを最もすばやく処理する方法: ページを確認し、不要なメールの ID を収集して、archive-ids を使用します。

joelclaw email archive-ids --ids cnv_aaa,cnv_bbb,cnv_ccc,cnv_ddd

送信者を基準に整理する場合: from: フィルターを使って archive-bulk を使用します。

joelclaw email archive-bulk -q "is:open from:[email protected]" --limit 100 --confirm

レート制限: Front は約 50 req/s を許容します。大量のメール(200 件超)をアーカイブする場合は、バッチ間に間隔を空けるか、429 エラーが発生することを想定してください。CLI は archive-ids のバッチ処理(同時実行数 10)に対応していますが、archive-bulk はページごとに処理するため、非常に大量のメールでは制限に達する可能性があります。

判断する前に内容を読む:

joelclaw email read --id cnv_xxx

重要なコンテキスト

  • Joel は [email protected]、[email protected]、[email protected]、[email protected]、[email protected]、LinkedIn、DM、Inngest の 8 つの Front 受信トレイを持っています。
  • joelclaw email inboxes を実行すると、ID を含むすべての受信トレイが表示されます。
  • Joel のチームメイト ID:tea_hjx3
  • CLI は secrets lease front_api_token を使って Front API の認証を自動的に処理します。
  • 返信は下書きを作成してから承認を受けてください。直接送信してはいけません。
  • Front の検索結果には最終的に整合性があります。最近アーカイブしたアイテムが、数分間検索結果に表示される場合があります。
  • ページネーション:続きがある場合、レスポンスに next_page_token が含まれます。--page-token で渡してください。
  • 件名の [aih] 接頭辞は、[email protected] Google Group 経由の AI Hero プロジェクトのスレッドを示します。主要な参加者:Alex Hillman([email protected])、Matt Pocock([email protected])、Amy Hoy([email protected])。VIP として扱い、必ず表示し、アーカイブしてはいけません。

「返信が必要」と判断する手がかり

これらはあくまで目安であり、ルールではありません。個々のケースで判断してください。

  • Re: 接頭辞があり、送信者が実在の人物(ボットや noreply ではない)
  • [aih] 接頭辞 — [email protected] 経由の AI Hero のコラボレーション(Alex Hillman、Matt Pocock、Amy Hoy)。VIP:必ず表示し、アーカイブしてはいけません。
  • 件名に直接的な質問が含まれている
  • 既知の連絡先からの会議への招待
  • Joel が最後に送信した後、相手から返信があったスレッド
  • Slack 通知の要約(確認する価値のある見落とした会話が含まれている可能性があります)

「アーカイブ」と判断する手がかり

  • 対応が必要な内容を含まない noreply@、no-reply@、notifications@ からのメール
  • マーケティングメールにありがちな件名:「LAST chance」、「% off」、「deal」、「unlock」、「limited time」
  • 重複した会話(同じ送信者から同じ件名で届いたメール — 最新のものを除き、すべてアーカイブ)
  • 解決済みの監視アラート(件名に RESOLVED が含まれる)
  • 24 時間以上前の CI 失敗通知(古いため、修正済みか、今後対応される見込みがありません)
  • 営業目的の文面を含む、知らない送信者からの一方的な営業メール

よくある不要な送信者(まとめてアーカイブする候補)

これらは過去に送信量が多く、シグナルが少なかった送信者です。from: フィルターを使って archive-bulk を使用してください。

[email protected]        — CI failures, dependabot, PR notifications
[email protected]   — resolved uptime alerts
[email protected]  — neighborhood spam

クエリが想定どおりのメールに一致することを確認するため、必ず最初にドライランを実行してください。

コメント