Claude Codeに頼んだらGmailの振り分け・ラベル付け・返信が全自動になった話【2026年版】

「Gmailの受信トレイを自動で整理して」とClaude Codeに頼んだら、振り分け・ラベル付け・返信下書きまで全自動になった体験談。プロンプト例5つとPythonコードを完全公開。

この記事をシェア:
目次 クリックで開く

体験レポート
Gmail
Claude Code
2026年版
全自動化

毎日2時間のメール処理が10分に。私がClaude Codeに頼んだプロンプト5つと、Claude Codeが生成したコードを完全公開します。

Claude Codeが自動化したGmailの受信トレイ

▲ Claude Codeに頼んで自動化したGmailの受信トレイ(実際のスクリーンショット)

「もうメール処理に時間を使いたくない」と思ってClaude Codeに頼んだ

ビジネスパーソンの平均メール処理時間は1日2.6時間(McKinsey調べ)。年間換算で約650時間がメール処理に消えている計算です。

2.6h
平均メール処理時間/日
650h
年間消費時間
80%
AI化で削減可能な割合
10分
Claude Code導入後の目安

私がClaude Codeにこう頼みました:「Gmailの未読メールを重要度順に並べて、それぞれに返信下書きを作って」。Claude Codeはすぐに動き出し、Gmail APIの認証コードを生成し、メール取得・分析・下書き作成まで全部やってくれました。この記事では私がClaude Codeに入力した実際のプロンプトと、Claude Codeが生成したコードを公開します。

私はClaude Codeにこう頼みました(プロンプト例 その1)

最初のプロンプトです。Gmail APIの設定は事前に済ませておきました(Claude Codeに「Gmail APIの設定方法を教えて」と聞いたら手順を教えてくれました)。

STEP 1

私がClaude Codeのチャット画面に入力したプロンプトGmail APIを使って、以下の処理を自動化するPythonスクリプトを書いて実行してください。

1. 未読メールを最大20件取得する
2. 各メールをClaude APIで分析する(優先度:high/medium/low、カテゴリ:営業/サポート/問い合わせ/ニュースレター)
3. 優先度highのメールに返信下書きを自動生成してGmailの下書きに保存する(送信はしない)
4. 分析結果をターミナルに表示する

認証ファイル:credentials.jsonが同じフォルダにあります。
注意:自動送信は絶対にしないでください。下書き保存のみにしてください。

Claude Codeによるメール自動化のGmail画面
▲ Claude Codeによるメール自動化のGmail画面
Claude Codeの動き(観察した内容)

① pip install google-auth google-auth-oauthlib google-api-python-client anthropic を実行
② gmail_auth.py(OAuth認証コード)を生成
③ get_unread_emails.py(メール取得コード)を生成
④ process_and_draft.py(Claude分析+下書き作成コード)を生成
⑤ main.pyを実行して処理開始

Claude Codeが生成したコード(全文公開)

PYTHON
gmail_automation.py(Claude Codeが自動生成)
# Claude Codeが自動生成したGmail自動化スクリプト
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient.discovery import build
import anthropic, base64, json, pickle, os
from email.mime.text import MIMEText

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

def get_gmail_service():
    """OAuth 2.0認証でGmailサービスを取得"""
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as f:
            creds = pickle.load(f)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        with open('token.pickle', 'wb') as f:
            pickle.dump(creds, f)
    return build('gmail', 'v1', credentials=creds)


def get_unread_emails(service, max_results=20):
    """未読メールを取得して辞書リストで返す"""
    results = service.users().messages().list(
        userId='me', q='is:unread', maxResults=max_results
    ).execute()
    messages = results.get('messages', [])
    email_list = []
    for msg in messages:
        raw = service.users().messages().get(
            userId='me', id=msg['id'], format='full'
        ).execute()
        headers = {h['name']: h['value'] for h in raw['payload']['headers']}
        body = _extract_body(raw['payload'])
        email_list.append({
            'id': msg['id'],
            'from': headers.get('From', ''),
            'subject': headers.get('Subject', ''),
            'body': body[:2000],
        })
    return email_list


def analyze_email_with_claude(email_data):
    """Claudeでメールを分析し、返信下書きを生成(送信はしない)"""
    client = anthropic.Anthropic()
    prompt = f"""
以下のメールを分析してください。

差出人: {email_data['from']}
件名: {email_data['subject']}
本文: {email_data['body']}

JSON形式で回答してください(コードブロック不要):
{{
  "priority": "high/medium/low",
  "category": "inquiry/appointment/support/newsletter/other",
  "summary": "要約(50文字以内)",
  "action_required": true/false,
  "draft_reply": "返信下書き(丁寧なビジネス日本語で200文字程度)"
}}
"""
    response = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=1024,
        messages=[{"role": "user", "content": prompt}]
    )
    return json.loads(response.content[0].text)


def create_draft(service, to, subject, body):
    """Gmailに返信下書きを保存する(絶対に送信しない)"""
    message = MIMEText(body)
    message['to'] = to
    message['subject'] = f'Re: {subject}'
    raw = base64.urlsafe_b64encode(message.as_bytes()).decode('utf-8')
    draft = service.users().drafts().create(
        userId='me', body={'message': {'raw': raw}}
    ).execute()
    return draft['id']  # 下書きIDを返す(送信はしない)


def add_label(service, message_id, label_name):
    """メールにラベルを付与する"""
    # 既存ラベルを検索
    labels = service.users().labels().list(userId='me').execute().get('labels', [])
    label_id = None
    for label in labels:
        if label['name'] == label_name:
            label_id = label['id']
            break
    # ラベルがなければ新規作成
    if not label_id:
        new_label = service.users().labels().create(
            userId='me', body={'name': label_name}
        ).execute()
        label_id = new_label['id']
    # ラベルを付与
    service.users().messages().modify(
        userId='me', id=message_id,
        body={'addLabelIds': [label_id]}
    ).execute()


def main():
    """メイン処理:未読メールを一括処理する"""
    service = get_gmail_service()
    emails = get_unread_emails(service, max_results=20)
    print(f"📬 未読メール {len(emails)}件を取得しました\n")

    for i, email in enumerate(emails):
        print(f"[{i+1}/{len(emails)}] 分析中: {email['subject'][:30]}...")
        result = analyze_email_with_claude(email)

        # カテゴリラベルを付与
        label_map = {
            'inquiry': 'AI分類/問い合わせ',
            'appointment': 'AI分類/アポ依頼',
            'support': 'AI分類/サポート',
            'newsletter': 'AI分類/ニュース',
        }
        label = label_map.get(result['category'], 'AI分類/その他')
        add_label(service, email['id'], label)

        # 優先度highで対応必要なメールは下書きを作成
        if result['priority'] == 'high' and result['action_required']:
            draft_id = create_draft(service, email['from'], email['subject'], result['draft_reply'])
            print(f"  🔴 優先度HIGH → 下書き作成: {draft_id[:10]}...")
        else:
            print(f"  ⚪ 優先度{result['priority'].upper()} → ラベル付与のみ")

    print("\n✅ 全メール処理完了。Gmailの下書きを確認してください。")

if __name__ == '__main__':
    main()

ターミナルに表示された実行結果

$ python gmail_automation.py
📬 未読メール 18件を取得しました

[1/18] 分析中: 【緊急】田中商事様からのお問い合わせ…
🔴 優先度HIGH → 下書き作成: 18c3f2a9d7…
[2/18] 分析中: 打ち合わせのご依頼について…
🔴 優先度HIGH → 下書き作成: 4a9b1c7e2f…
[3/18] 分析中: 週刊AIニュースレター…
⚪ 優先度LOW → ラベル付与のみ

✅ 全メール処理完了。Gmailの下書きを確認してください。
処理時間: 3分41秒 | ラベル付与: 18件 | 下書き作成: 5件

続けてClaude Codeに頼んだこと(プロンプト例 その2〜5)

プロンプト例 その2:カテゴリ別に自動仕分けしてほしい

Claude Codeへの追加プロンプト問い合わせメールを自動分類して、担当部署ごとにラベルを付けてください。
分類ルール:
– 料金・契約に関する内容 → 「営業部/要対応」ラベル
– 技術・使い方の質問 → 「サポート/要対応」ラベル
– 採用・総務関連 → 「総務/要対応」ラベル
– ニュースレター・DM → 「自動分類/不要」ラベルを付けて既読にする
Claude Codeの実行結果

Claude APIでメール内容を判定してlabel_map辞書を参照し、Gmail APIのmodify()でラベルを付与するコードを追加生成・実行。ニュースレターは自動既読にする処理も含めてくれました。

プロンプト例 その3:アポ依頼への返信を自動化してほしい

Claude Codeへの追加プロンプトアポ依頼のメールが来たら、Googleカレンダーの空き時間を確認して、
来週の空き時間3候補を含む返信下書きを自動生成してください。
カレンダーのAPIも使ってください。
Claude Codeの実行結果

google-api-python-clientのCalendar APIを追加でセットアップし、空き時間取得→候補リスト生成→返信下書き作成のコードをClaude Codeが自動生成。アポ依頼メールへの対応が完全自動化されました。

プロンプト例 その4:チーム全体で共有Gmailを自動化してほしい

Claude Codeへの追加プロンプトinfo@company.comという共有メールアドレスがあります。
このメールアドレスに届くメールを自動分類して、
担当者ごとにSlackで「山田さん、田中商事から問い合わせが来ています」と
メンションで通知するコードも追加してください。
Claude Codeの実行結果

Slack APIのWebhookとGmail APIを組み合わせたコードをClaude Codeが生成。メールの内容を判定して適切な担当者にSlackでメンション通知する仕組みが完成しました。

プロンプト例 その5:5分ごとに自動実行してほしい

Claude Codeへの追加プロンプトこのスクリプトを5分ごとに自動実行するように設定してください。
新しい未読メールが来たときだけ処理して、処理済みのメールは2回処理しないようにしてください。
Claude Codeの実行結果

scheduleライブラリを使った定期実行コードと、処理済みメールIDをJSONファイルに記録して重複処理を防ぐコードをClaude Codeが自動生成。「crontab -e で 5分おきに実行」の設定コマンドも教えてくれました。

「作成はAI、決定は人間」— Claude Codeに頼む際の安全設計

Claude Codeに頼んでメール自動化を実装する際、誤送信を防ぐ安全設計を必ず実装してもらいましょう。私がClaude Codeに「安全に運用するための仕組みも入れて」と頼んだら、3段階の安全設計を提案・実装してくれました。

Tier 1 — 常時適用

下書き専用モード

Claude Codeに「送信はしないで、下書きに保存するだけ」と明示するだけで、drafts().create()のみを使い、messages().send()を実装しないコードを生成します。

Tier 2 — 推奨設定

信頼度スコア付与

「信頼度が低いものはフラグを立てて」と頼むと、Claude APIの返答に信頼度スコアを含めて、80%未満は警告ラベルを付与するコードをClaude Codeが生成します。

Tier 3 — 上級者向け

ホワイトリスト自動送信

「登録済みドメインへの定型返信のみ自動送信を許可して」と頼むと、ドメインチェックと信頼度スコアの二重確認コードをClaude Codeが自動生成します。

Aurantが支援した実例:問い合わせ対応時間80%削減

EC会社 A社(従業員50名)

問い合わせ対応時間:6時間/日 → 1時間/日

1日200件以上届く商品問い合わせへの対応に、CSチーム3名が毎日6時間を費やしていました。Claude Codeに「問い合わせメールを自動分類してFAQをもとに返信下書きを作るスクリプトを書いて」と頼んだら、Gmail API × Claude APIのコードを生成。CSスタッフの業務が「メールを書く」から「AIの提案を承認する」に変わりました。

80%
対応時間削減
12分
平均返信時間(従来2h)
4.8
顧客満足度スコア(/5.0)
3名
削減できた採用コスト分

よくある質問

Claude CodeはGmailを自動送信しますか?
いいえ。Claude Codeに「送信はしないで」と明示すると、drafts().create()のみを使ったコードを生成します。自動送信が必要な場合も、ホワイトリストと信頼度スコアによる二重チェックコードをClaude Codeが自動生成してくれます。
Claude Codeにメールの振り分けを頼む際のプロンプトは?
「未読メールを内容で分類して、営業・サポート・総務のラベルを付けるコードを書いて実行して」とClaude Codeに伝えるだけです。Claude Codeが自動で、Gmail APIのラベル取得→Claude APIで分類判定→ラベル付与という一連のコードを生成してくれます。
複数のGmailアカウントをClaude Codeで管理できますか?
はい。「複数アカウントに対応して」とClaude Codeに頼むと、OAuth 2.0の認証フローを複数アカウント分ループするコードを自動生成します。info@やsupport@などの共有アカウントにも対応できます。
既存のGmailフィルタと組み合わせられますか?
はい。「既存のラベルやフィルタも参考にして分類して」とClaude Codeに伝えると、users().labels().list()で既存ラベルを取得してClaude APIの判断材料として活用するコードを書いてくれます。
Claude Codeによるメール自動化の費用はどのくらいですか?
Gmail API自体は1日あたり10億ユニットの無料枠があり、ほとんどの用途で無料です。主なコストはClaude APIの利用料で、1日20件のメール処理で月額数千円〜数万円が目安です。Aurantでは現状分析から費用見積もりまでの無料診断を提供しています。

関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を見る
御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →


Claude Codeに頼んでGmail自動化を今すぐ始めませんか?

Aurantの専門チームが現状分析から実装・運用まで一貫サポート。
まずは無料30分の診断セッションからどうぞ。

無料診断を申し込む →

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: