Claude Codeに頼んだらGmailの振り分け・ラベル付け・返信が全自動になった話【2026年版】
「Gmailの受信トレイを自動で整理して」とClaude Codeに頼んだら、振り分け・ラベル付け・返信下書きまで全自動になった体験談。プロンプト例5つとPythonコードを完全公開。
目次 クリックで開く
毎日2時間のメール処理が10分に。私がClaude Codeに頼んだプロンプト5つと、Claude Codeが生成したコードを完全公開します。
▲ Claude Codeに頼んで自動化したGmailの受信トレイ(実際のスクリーンショット)
「もうメール処理に時間を使いたくない」と思ってClaude Codeに頼んだ
ビジネスパーソンの平均メール処理時間は1日2.6時間(McKinsey調べ)。年間換算で約650時間がメール処理に消えている計算です。
私がClaude Codeにこう頼みました:「Gmailの未読メールを重要度順に並べて、それぞれに返信下書きを作って」。Claude Codeはすぐに動き出し、Gmail APIの認証コードを生成し、メール取得・分析・下書き作成まで全部やってくれました。この記事では私がClaude Codeに入力した実際のプロンプトと、Claude Codeが生成したコードを公開します。
私はClaude Codeにこう頼みました(プロンプト例 その1)
最初のプロンプトです。Gmail APIの設定は事前に済ませておきました(Claude Codeに「Gmail APIの設定方法を教えて」と聞いたら手順を教えてくれました)。
STEP 1
1. 未読メールを最大20件取得する
2. 各メールをClaude APIで分析する(優先度:high/medium/low、カテゴリ:営業/サポート/問い合わせ/ニュースレター)
3. 優先度highのメールに返信下書きを自動生成してGmailの下書きに保存する(送信はしない)
4. 分析結果をターミナルに表示する
認証ファイル:credentials.jsonが同じフォルダにあります。
注意:自動送信は絶対にしないでください。下書き保存のみにしてください。

① 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が生成したコード(全文公開)
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()
ターミナルに表示された実行結果
📬 未読メール 18件を取得しました [1/18] 分析中: 【緊急】田中商事様からのお問い合わせ…
🔴 優先度HIGH → 下書き作成: 18c3f2a9d7…
[2/18] 分析中: 打ち合わせのご依頼について…
🔴 優先度HIGH → 下書き作成: 4a9b1c7e2f…
[3/18] 分析中: 週刊AIニュースレター…
⚪ 優先度LOW → ラベル付与のみ
…
✅ 全メール処理完了。Gmailの下書きを確認してください。
処理時間: 3分41秒 | ラベル付与: 18件 | 下書き作成: 5件
続けてClaude Codeに頼んだこと(プロンプト例 その2〜5)
プロンプト例 その2:カテゴリ別に自動仕分けしてほしい
分類ルール:
– 料金・契約に関する内容 → 「営業部/要対応」ラベル
– 技術・使い方の質問 → 「サポート/要対応」ラベル
– 採用・総務関連 → 「総務/要対応」ラベル
– ニュースレター・DM → 「自動分類/不要」ラベルを付けて既読にする
Claude APIでメール内容を判定してlabel_map辞書を参照し、Gmail APIのmodify()でラベルを付与するコードを追加生成・実行。ニュースレターは自動既読にする処理も含めてくれました。
プロンプト例 その3:アポ依頼への返信を自動化してほしい
来週の空き時間3候補を含む返信下書きを自動生成してください。
カレンダーのAPIも使ってください。
google-api-python-clientのCalendar APIを追加でセットアップし、空き時間取得→候補リスト生成→返信下書き作成のコードをClaude Codeが自動生成。アポ依頼メールへの対応が完全自動化されました。
プロンプト例 その4:チーム全体で共有Gmailを自動化してほしい
このメールアドレスに届くメールを自動分類して、
担当者ごとにSlackで「山田さん、田中商事から問い合わせが来ています」と
メンションで通知するコードも追加してください。
Slack APIのWebhookとGmail APIを組み合わせたコードをClaude Codeが生成。メールの内容を判定して適切な担当者にSlackでメンション通知する仕組みが完成しました。
プロンプト例 その5:5分ごとに自動実行してほしい
新しい未読メールが来たときだけ処理して、処理済みのメールは2回処理しないようにしてください。
scheduleライブラリを使った定期実行コードと、処理済みメールIDをJSONファイルに記録して重複処理を防ぐコードをClaude Codeが自動生成。「crontab -e で 5分おきに実行」の設定コマンドも教えてくれました。
「作成はAI、決定は人間」— Claude Codeに頼む際の安全設計
Claude Codeに頼んでメール自動化を実装する際、誤送信を防ぐ安全設計を必ず実装してもらいましょう。私がClaude Codeに「安全に運用するための仕組みも入れて」と頼んだら、3段階の安全設計を提案・実装してくれました。
下書き専用モード
Claude Codeに「送信はしないで、下書きに保存するだけ」と明示するだけで、drafts().create()のみを使い、messages().send()を実装しないコードを生成します。
信頼度スコア付与
「信頼度が低いものはフラグを立てて」と頼むと、Claude APIの返答に信頼度スコアを含めて、80%未満は警告ラベルを付与するコードをClaude Codeが生成します。
ホワイトリスト自動送信
「登録済みドメインへの定型返信のみ自動送信を許可して」と頼むと、ドメインチェックと信頼度スコアの二重確認コードをClaude Codeが自動生成します。
Aurantが支援した実例:問い合わせ対応時間80%削減
1日200件以上届く商品問い合わせへの対応に、CSチーム3名が毎日6時間を費やしていました。Claude Codeに「問い合わせメールを自動分類してFAQをもとに返信下書きを作るスクリプトを書いて」と頼んだら、Gmail API × Claude APIのコードを生成。CSスタッフの業務が「メールを書く」から「AIの提案を承認する」に変わりました。
よくある質問
関連記事