Gmail重要メール監視システム構築:OpenClawで実現する自動トリアージ

はじめに

複数のGoogleアカウントを使い分けていると、重要なメールを見落とすリスクが高まります。この記事では、OpenClawとGmail APIを使って重要メール自動監視システムを構築した経験を共有します。

システム概要

このシステムは以下の機能を持ちます:

  • 複数Googleアカウント対応(クロスリンク・プログラミングスクール)
  • ルールベースの重要度判定(High/Medium/Low/Ignore)
  • SQLiteによる重複検出
  • Cronジョブで15分間隔の自動チェック
  • サイレントモード(重要メールのみ通知)

実装のポイント

Gmail API認証

OAuth2認証を使い、アカウントごとに独立したtokenファイルを管理します。

from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build

SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']

def authenticate_gmail(token_path, credentials_path):
    creds = None
    if os.path.exists(token_path):
        creds = Credentials.from_authorized_user_file(token_path, SCOPES)

    if not creds or not creds.valid:
        flow = InstalledAppFlow.from_client_secrets_file(credentials_path, SCOPES)
        creds = flow.run_local_server(port=0)
        with open(token_path, 'w') as token:
            token.write(creds.to_json())

    return build('gmail', 'v1', credentials=creds)

重要度スコアリング

メールの特徴から重要度を数値化します:

  • Human sender(+20点): 個人からのメール
  • To field(+15点): Toフィールドに自分が含まれる
  • Urgent keywords(+10点): 「至急」「締切」など
  • Attachments(+10点): 添付ファイルあり
def calculate_importance_score(email_data):
    score = 0
    sender = email_data.get('from', '')
    subject = email_data.get('subject', '')

    # Human sender check
    if not is_noreply_sender(sender):
        score += 20

    # Urgent keywords
    urgent_keywords = ['至急', '緊急', '締切', 'URGENT']
    if any(kw in subject for kw in urgent_keywords):
        score += 10

    # Attachments
    if email_data.get('has_attachments'):
        score += 10

    return score

運用での工夫

サイレントモード

Cronジョブで動作する際、すべてのメールを通知すると spam になります。--silent フラグで重要メールのみ出力します。

python3 gmail_watcher.py --check --silent

再通知ロジック

同じメールを何度も通知しないよう、最終通知時刻を記録し、一定時間経過後のみ再通知します。

  • High優先度: 2時間後
  • Medium優先度: 24時間後

結果

64通のメールから7通の重要メールを自動抽出し、フィッシングメール1件も検出しました。15分間隔の自動チェックにより、見落としリスクが大幅に減少しました。

まとめ

Gmail APIとルールベース判定で、実用的なメール監視システムを構築できます。次のフェーズでは、LLM判定やプッシュ通知(Gmail Push API)の導入を検討中です。

関連記事:
– フィッシング検出の実装
– 複数Googleアカウント統合管理
– OpenClaw Cronジョブ活用術