pp-outlook-email について
pp-outlook-email は、Microsoft 365 メールボックスを扱うエージェント向けの CLI スキルです。ローカルストアを使ったフォルダー横断の整理やフォローアップ検出、要約に加え、Microsoft Graph 経由のメール操作も行えます。
主な機能
- 01返信待ちの送信済みメールの検出
- 02送信者別の受信トレイ集計
- 03未読・フラグ付き・対応待ちメールの抽出
- 04メールボックス活動のダイジェスト作成
- 05メールの管理・移動・送信
活用シーン
- 01前回のセッション以降に届いたメールの確認
- 02フォローアップや対応待ちの会話の特定
- 03頻繁に送信する相手の一括アーカイブ計画
- 04メールボックス整理前の大きく古い添付ファイルの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-outlook-emailインストール後、Claude Code で/pp-outlook-emailを入力して読み込まれたか確認します。
詳細
Outlook メール — Printing Press CLI
前提条件:CLI のインストール
このスキルは outlook-email-pp-cli バイナリを使用します。このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。見つからない場合は、まずインストールしてください。
- Printing Press インストーラーを使用してインストールします。macOS/Linux では
$HOME/.local/bin、Windows では%LOCALAPPDATA%\Programs\PrintingPress\binがバイナリのデフォルトのインストール先です。npx -y @mvanhorn/printing-press-library install outlook-email --cli-only - 確認します:
outlook-email-pp-cli --version - 報告されたインストール先ディレクトリが、このスキルを実行するエージェント/ランタイムの
$PATHに含まれていることを確認します。
npx によるインストールに失敗した場合(Node がない、オフラインなど)は、Go を直接インストールしてください(Go 1.26.6 以降が必要です)。
go install github.com/mvanhorn/printing-press-library/library/productivity/outlook-email/cmd/outlook-email-pp-cli@latest
インストール後に --version が「command not found」と報告する場合、ランタイムからバイナリのディレクトリを $PATH 経由で参照できていません。確認に成功するまで、スキルのコマンドを実行しないでください。
この CLI を使用する場面
エージェントが個人用 Microsoft 365 の受信トレイを大規模にトリアージしたり、フォローアップを見つけたり、Copilot ライセンスなしでメールを作成したりする必要がある場合に、この CLI を使用してください。オフラインストアにより、永続化された状態が必要なフォルダー横断・期間横断のクエリ(followup、senders、waiting、digest)が可能になるため、汎用 HTTP よりも適しています。
独自の機能
これらの機能は、この API のほかのツールでは利用できません。
蓄積されていくローカル状態
-
followup— N 日以上前に送信し、相手から返信がないメールを一覧表示します。忘れていたやり取りに決着をつけましょう。営業、PM、採用のワークフローは、フォローアップのタイミングが成否を左右します。エージェントに停滞しているスレッドを見つけてもらう場合に活用してください。
outlook-email-pp-cli followup --days 7 --agent -
senders— 指定期間内の受信トレイを送信者ごとに分類し、件数、未読数、最終受信日時、主なフォルダーを表示します。受信トレイを圧迫している相手を確認できます。一括アーカイブの入力として使ったり、受信トレイルールを決める際に活用したりできます。受信トレイがメールであふれている場合、エージェントはここから整理を始めます。
outlook-email-pp-cli senders --window 30d --min 5 --agent --select sender,count,unread,last_received -
since— 指定したタイムスタンプ以降に届いたメールを、優先/その他、送信者、フォルダーごとに表示します。集中していて見逃した内容を確認するのに最適です。セッションに参加したエージェントが状況を把握するため、最初に実行するべきコマンドです。低コストで構造化されており、エージェント向けに設計されています。
outlook-email-pp-cli since 2h --agent -
flagged— 未完了の期限、期限超過日数、経過日数を含め、フラグ付きメッセージを一覧表示します。Outlook では集約されない、受信トレイゼロを実現するための作業リストです。エージェントの ToDo リストです。返信/転送と組み合わせれば、項目を実際に処理できます。
outlook-email-pp-cli flagged --overdue --agent -
stale-unread— N 日以上前の未読メッセージをフォルダーごとに分類して表示します。サブフォルダーに隠れている未読メールの滞留を見つけます。件数を見る
sendersとは異なり、「未読がどこにたまっているか」に答えます。エージェントがフォルダーを振り分け、一括で既読にする際に役立ちます。outlook-email-pp-cli stale-unread --days 14 --agent -
waiting— 最後のメッセージが自分からではなく、N 日間未読または未返信の会話を表示します。「相手があなたの返事を待っている」作業リストです。followupと対になる機能です。1 日の始めに両方を使えば、すべての未完了スレッドについて、自分側と相手側の状況を確認できます。outlook-email-pp-cli waiting --days 3 --agent -
conversations— メッセージ数、参加者数、未読メッセージの末尾に基づいて会話を順位付けします。注意力を消耗させているスレッドを見つけます。エージェントが次に要約またはミュートするスレッドを判断するのに役立ちます。
outlook-email-pp-cli conversations --top 20 --window 30d --agent -
quiet— 以前は連絡があったものの、N 日間音沙汰のない送信者を表示します。関係の途絶を検知するのに便利です。営業/PM のユースケース:以前はやり取りがあったものの、最近はなくなった顧客やベンダーを見つけます。
outlook-email-pp-cli quiet --baseline 90d --silent 30d --agent -
digest— 1 回で日次サマリーを作成します。受信/送信/未読/フラグ付きの件数、送信者の上位、会話の上位、優先/その他の比率を表示します。cron やスキルのループから実行すれば、10 回以上の Graph 呼び出しを行わずに、Slack 形式の日次サマリーを作成できます。
outlook-email-pp-cli digest --date 2026-05-12 --agent -
attachments-stale— N 日以上前の、指定サイズを超える添付ファイルをサイズ順に並べて表示します。メールボックスの容量制限を解消するための機能です。メールボックスの容量が上限に近い場合、エージェントはまず、古くて大きい添付ファイルを見つける必要があります。このコマンドはその一覧を表示します。
outlook-email-pp-cli attachments-stale --days 90 --min-mb 1 --agent --select sender,received_at,size_mb,name -
dedup— conversation_id、internet_message_id、または正規化した(件名、差出人、宛先)に基づいて、重複している可能性のあるスレッドやメッセージを探します。一括アーカイブを実行する前に、ニュースレターの重複やフォルダー間のコピーを見つけます。
outlook-email-pp-cli dedup --by subject-sender --agent
エージェントネイティブな連携機能
-
bulk-archive— 送信者の一覧またはクエリを読み込み、移動計画を表示し、必要に応じて実行します。デフォルトでは安全に動作し、予期しない処理は行いません。sendersまたはquietと組み合わせて、受信トレイのトリアージを最初から最後まで行えます。エージェントは--executeを指定する前に計画を確認できます。outlook-email-pp-cli bulk-archive --from-senders senders.txt --to-folder Archive --execute
コマンドリファレンス
attachments — 特定のメッセージの添付ファイル
outlook-email-pp-cli attachments get— 添付ファイルを1件取得します(メタデータ +fileAttachmentの base64 コンテンツバイト列)outlook-email-pp-cli attachments list— メッセージの添付ファイルを一覧表示します(デフォルトではメタデータのみ)
categories — メールとカレンダー全体に適用される色カテゴリのマスターリスト
outlook-email-pp-cli categories create— 新しい色カテゴリを作成しますoutlook-email-pp-cli categories delete— 色カテゴリを削除しますoutlook-email-pp-cli categories get— ID でカテゴリを取得しますoutlook-email-pp-cli categories list— 色カテゴリのマスターリストを表示します
folders — メールフォルダーとその階層
outlook-email-pp-cli folders children— 親フォルダーの下にある子フォルダーを一覧表示しますoutlook-email-pp-cli folders create— 最上位のメールフォルダーを作成しますoutlook-email-pp-cli folders create-child— 親フォルダーの下に子フォルダーを作成しますoutlook-email-pp-cli folders delete— メールフォルダーを削除します(内容は「削除済みアイテム」に移動します)outlook-email-pp-cli folders delta— メールフォルダー階層を差分同期しますoutlook-email-pp-cli folders get— ID または既知の名前でメールフォルダーを取得しますoutlook-email-pp-cli folders list— 最上位のメールフォルダーを一覧表示しますoutlook-email-pp-cli folders messages— 特定のフォルダー内のメッセージを一覧表示しますoutlook-email-pp-cli folders update— メールフォルダーの名前を変更します
inference — 「優先」/「その他」の受信トレイ分類の上書き設定
outlook-email-pp-cli inference create-override— 送信者を「優先」または「その他」に固定しますoutlook-email-pp-cli inference delete-override— 送信者の固定を解除しますoutlook-email-pp-cli inference list-overrides— 「優先」または「その他」に固定された送信者を一覧表示します
mailbox-settings — メールボックスレベルの設定:タイムゾーン、言語、署名、自動応答
outlook-email-pp-cli mailbox-settings get— すべてのメールボックス設定を取得しますoutlook-email-pp-cli mailbox-settings update— メールボックス設定を更新します(自動応答、タイムゾーン、勤務時間、言語)
messages — デフォルトのメールボックスにある Outlook メールメッセージ
outlook-email-pp-cli messages copy— メッセージを別のメールフォルダーにコピーしますoutlook-email-pp-cli messages create-draft— 下書きメッセージを作成します(送信せずに保存)outlook-email-pp-cli messages delete— メッセージを削除します(デフォルトでは「削除済みアイテム」に移動します)outlook-email-pp-cli messages delta— 前回の差分トークン以降のメッセージ変更を取得しますoutlook-email-pp-cli messages forward— メッセージを新しい宛先に転送しますoutlook-email-pp-cli messages get— ID でメッセージを取得しますoutlook-email-pp-cli messages list— すべてのフォルダーにあるメッセージを一覧表示しますoutlook-email-pp-cli messages move— メッセージを別のメールフォルダーに移動しますoutlook-email-pp-cli messages reply— メッセージに返信します(元の送信者を使用します)outlook-email-pp-cli messages reply-all— メッセージのすべての宛先に返信しますoutlook-email-pp-cli messages send-draft— 保存済みの下書きメッセージを送信しますoutlook-email-pp-cli messages update— メッセージのフィールドを更新します(isRead、categories、flag、importance、subject、body)
rules — 受信メッセージを自動処理する受信トレイルール
outlook-email-pp-cli rules create— 受信トレイルールを作成しますoutlook-email-pp-cli rules delete— 受信トレイルールを削除しますoutlook-email-pp-cli rules get— 受信トレイルールを1件取得しますoutlook-email-pp-cli rules list— 受信トレイルールを一覧表示しますoutlook-email-pp-cli rules update— 受信トレイルールを更新します
send_mail — 新規メールを一度に送信します(下書きフォルダーを経由しません)
outlook-email-pp-cli send_mail— 下書きに保存せずにメッセージを作成して送信します
適切なコマンドを見つける
やりたいことは分かっていても、どのコマンドを使えばよいか分からない場合は、CLI に直接尋ねてください。
outlook-email-pp-cli which "<capability in your own words>"
which は、自然言語での機能に関する問い合わせを、この CLI の厳選された機能インデックスから最も一致するコマンドに解決します。終了コード 0 は少なくとも 1 つ一致したことを示し、終了コード 2 は確かな一致がないことを示します。その場合は --help を確認するか、より具体的な問い合わせをしてください。
レシピ
朝のキャッチアップ
outlook-email-pp-cli sync && outlook-email-pp-cli since 12h --agent --select sender,subject,inference_classification,received_at
メールボックスを差分同期してから、夜間に届いたものだけを取り出し、エージェントが要約できるようにグループ化します。
フォローアップの確認
outlook-email-pp-cli followup --days 7 --agent --select recipient,subject,sent_at,days_quiet
1 週間以上前に送信し、返信がないメールを確認します。自分で対応を完了させる必要がある未処理のやり取りです。
送信数の多い送信者
outlook-email-pp-cli senders --window 30d --min 10 --agent
過去 30 日間に送信数が最も多かった送信者を表示します。出力を bulk-archive に渡して、整理の計画を立てます。
選択したフィールドだけを含めて返信
outlook-email-pp-cli messages get AAMkAGI2... --agent --select subject,from,body_preview,received_at
深くネストされたメッセージペイロードを、返信の作成前にエージェントが実際に必要とする 4 つのフィールドに絞り込みます。
受信トレイの整理を計画
outlook-email-pp-cli bulk-archive --from-senders senders.txt --to-folder Archive --agent
senders.txt から送信者リスト(1 行に 1 つのアドレス)を読み込み、ローカルストア内の一致するメッセージを特定して、移動計画を出力します。--execute を渡すと、各 ID に対して POST /me/messages/{id}/move を実際に呼び出します。
認証の設定
https://login.microsoftonline.com/common に対する OAuth 2.0 デバイスコードフローを使用します。個人用 MSA(Outlook.com、Hotmail、Live)と職場または学校のアカウントの両方を利用できます。既定のクライアント ID は Microsoft Graph PowerShell アプリのものなので、Azure テナントは不要です。--client-id を指定すれば、独自の Azure AD アプリを使用できます。更新トークンは ~/.config/outlook-email-pp-cli/config.toml に保存されます。auth refresh を実行するか、コマンドによる自動更新を利用してください。
outlook-email-pp-cli doctor を実行して設定を確認してください。
エージェントモード
任意のコマンドに --agent を追加できます。次のオプションに展開されます:--json --compact --no-input --no-color --yes。
-
パイプ可能 — stdout に JSON、stderr にエラーを出力します
-
フィルター可能 —
--selectでフィールドを絞り込めます。ドット区切りのパスはネストされた構造をたどり、配列では各要素を順にたどります。冗長な API でコンテキストを小さく保つうえで重要です。outlook-email-pp-cli attachments list mock-value --agent --select id,name,status -
プレビュー可能 —
--dry-runで、送信せずにリクエストを表示します -
オフラインでも利用可能 — 同期/検索コマンドでは、利用できる場合にローカルの SQLite ストアを使用できます
-
非対話型 — プロンプトは表示されず、すべての入力はフラグで指定します
-
再試行を明示 — 既存の作成対象が成功として扱われるべき場合に限り
--idempotentを使用し、削除対象が見つからない場合に成功として扱われるべき場合に限り--ignore-missingを使用します
レスポンスエンベロープ
ローカルストアまたは API から読み取るコマンドは、出力をデータの出所を示すエンベロープで包みます。
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
データには .results を、データがライブかローカルかを確認するには .meta.source を解析してください。人が読める N results (live) という概要は、stdout が端末の場合に限り stderr に出力されます。パイプやエージェントから利用する場合は、stdout に純粋な JSON が出力されます。
エージェントからのフィードバック
この CLI について気になる点に気付いたら(エージェントが気付いた場合も)、記録してください。
outlook-email-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
outlook-email-pp-cli feedback --stdin < notes.txt
outlook-email-pp-cli feedback list --json --limit 10
記録はローカルの ~/.outlook-email-pp-cli/feedback.jsonl に保存されます。OUTLOOK_EMAIL_FEEDBACK_ENDPOINT が設定されており、かつ --send が渡されている場合、または OUTLOOK_EMAIL_FEEDBACK_AUTO_SEND=true の場合を除き、POST されることはありません。既定の動作はローカルへの保存のみです。
バグ報告ではなく、意外だったことを書いてください。短く、具体的に、1 行で記述します。積み重ねにつながるのは、そうした情報です。
出力の配信
すべてのコマンドで --deliver <sink> を指定できます。出力は stdout に加えて(または stdout の代わりに)指定したシンクに送られるため、エージェントはコマンド結果を手作業でパイプ処理せずに振り分けられます。使用できるシンクは 3 種類です。
| シンク | 動作 |
|---|---|
stdout | 既定。stdout のみに書き込みます |
file:<path> | 出力を <path> にアトミックに書き込みます(tmp + rename) |
webhook:<url> | 出力本文を URL に POST します(--compact の場合は application/json または application/x-ndjson) |
不明なスキームは、使用可能な選択肢を示す構造化エラーとともに拒否されます。Webhook の失敗時は 0 以外の終了コードが返され、stderr に URL と HTTP ステータスが記録されます。
名前付きプロファイル
プロファイルは、保存したフラグ値のセットで、複数回の実行で再利用できます。スケジュールされたエージェントが毎回同じ設定で同じコマンドを呼び出す場合に使用します。これは HeyGen の「Beacon」パターンです。
outlook-email-pp-cli profile save briefing --json
outlook-email-pp-cli --profile briefing attachments list mock-value
outlook-email-pp-cli profile list --json
outlook-email-pp-cli profile show briefing
outlook-email-pp-cli profile delete briefing --yes
明示的に指定したフラグは常にプロファイルの値より優先され、プロファイルの値はデフォルト値より優先されます。agent-context は、使用可能なすべてのプロファイルを available_profiles の下に一覧表示するため、情報を取得するエージェントは実行時にそれらを検出できます。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 2 | 使用方法のエラー(引数が正しくありません) |
| 3 | リソースが見つかりません |
| 4 | 認証が必要です |
| 5 | API エラー(上流の問題) |
| 7 | レート制限中(待ってから再試行してください) |
| 10 | 設定エラー |
引数の解析
$ARGUMENTS を解析します。
- 空、
help、または--help→outlook-email-pp-cli --helpの出力を表示します installで始まる場合 →mcpで終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照します- それ以外 → 直接使用(CLI コマンドとして
--agentを付けて実行します)
MCP サーバーのインストール
この CLI の公開されたパブリックライブラリエントリーまたはビルド済みリリースから MCP バイナリをインストールしてから、登録します。
claude mcp add outlook-email-pp-mcp -- outlook-email-pp-mcp
確認します:claude mcp list
直接使用
- インストール済みか確認します:
which outlook-email-pp-cli見つからない場合は、インストールを提案します(このスキルの冒頭にある前提条件を参照してください)。 - ユーザーのクエリに最適なコマンドを、上記の固有の機能とコマンドリファレンスから選びます。
--agentフラグを付けて実行します:outlook-email-pp-cli <command> [subcommand] [args] --agent- 曖昧な場合は、サブコマンドのヘルプを確認します:
outlook-email-pp-cli <command> --help。