なぜ「返信の下書き」を自作ツールにしたか
メールの返信を書くとき、言いたいことは決まっているのに、文体を整えるのに時間がかかる——そんな経験はないでしょうか。特に英語メールや、丁寧さの度合いを揃えたいとき、下書きを一から書くのが負担になります。
一方で、クラウドのAIに本文を投げるのは、機微情報(患者・依頼内容・社内事情) を扱う現場では避けたいところです。
この記事では、ローカルLLM(LM Studio) と クリップボード往復 だけで、受信メールと「返信の概要」から返信文を生成する小ツールを、バイブコーディングで作った話をまとめます。データを外に送らず、自分用の「返信の下書き支援」として使っている、という実例です。
要点まとめ
- MailReplyGenerator は、クリップボードの受信メールと「返信の概要」を入力に、LM Studio のローカルLLMで返信文を生成し、クリップボードにコピー するだけのGUIツールです。
- データをクラウドに送らないため、機微情報を含むメール でも、ローカル環境だけで下書き生成できます。
- バイブコーディング(Cursor などで対話しながら要件を形にするやり方)で、「返信のたびに文体で悩む」という“最後のひと手間”を自分用に潰した事例として紹介します。
- 必要なのは LM Studio・Python 環境とクリップボード権限。設定は
config.jsonで管理され、初回起動時に例が作られます。
MailReplyGenerator とは
何ができるか を一言でいうと、次の流れです。
- クリップボードから受信メールを取得する
- ユーザーが「返信の概要」を入力する
- ローカルLLMで返信文を生成する
- 生成文をクリップボードにコピーする

あとはメールクライアントに貼り付けて、必要なら編集してから送信する想定です。受信メールの言語(英語/日本語)は自動検出され、ビジネスに適した文体(過剰に丁寧でない)で返信を生成します。
プログラムは GitHub(khndmkt-crypto/MailReplyGenerator) で公開しています。使用方法についてはGitHub上のREADMEを見ていただくこととして、ここでは、なぜ自作したか・どこが効くか を中心に書きます。
困りごとと「テーラーメイド」の位置づけ
返信の内容は頭の中で決まっているのに、文章に起こすのに時間がかかる——特に多言語や丁寧さの調整が面倒、というのが今回のプログラムを作るモチベーションとなりました。そのため、「受信したメール本文」と「こちらの返信の概要」を入力し、言語や文体を調整した返信文を作成する、というのが今回のプログラム自作の目標です。
この返信文を作成するには生成AIを使用する必要があります。しかし、メールには一部機微情報が含まれる可能性が高くなります。そうなると、ChatGPT等のクラウドAIにメール本文を入力するには問題があります。
そこで、メールの内容をクラウドAIのサーバーにアップロードせずに済むよう、ローカルLLMを用いて返信を作成することとしました。

あとは入力する「メール本文」および「返信の概要」と、出力される「返信文」の受け渡しをスムーズにできればOKです。
そこで、メール本文はクリップボードにあることを前提とし、返信の概要を入力するGUIを用意し、返信文はクリップボードに出力することにしました。既存のメールワークフローを変えずに、下書き生成だけを差し込める形です。Mail2Notion と同様、「入口・出口を自分用に決めた小ツール」として位置づけています。
バイブコーディングで「返信生成」を作った
ということで、こんな要件をCursorに伝えてプログラムを作成してみました。
「受信メール+返信の概要 → 返信文」という 要件がはっきりしている ので、プロンプト・GUI・クリップボード連携を対話しながら詰めていきやすかったです。既存の LM Studio(OpenAI互換API)をそのまま使えたので、新規のインフラをほとんど増やさず に済みました。

失敗しやすいポイント(LM Studio 未起動・モデル未ロード・クリップボード権限)は、README のトラブルシューティングにまとめてあります。運用で困ったときの参照として役立っています。RSS週次要約や Mail2Notion と同じく、「毎日当たる手間」を、自分用の型 で自動化している小さいツールです。
具体的な流れ(何をすると何が起きるか)
- LM Studio を起動し、使うモデル(例: openai/gpt-oss-20b)をロードして、ローカルサーバーを開始します(通常は http://localhost:1234)。
- 返信したいメールを クリップボードにコピー します。
- MailReplyGenerator を起動します。起動時にクリップボードから取得されるので、「返信の概要」を入力して「返信生成」をクリックします。
- 生成された返信文がクリップボードにコピーされます。メールクライアントに貼り付けて、必要なら編集してから送信します。
GUIの「クリップボードから取得」「クリア」などの操作は、README の「操作ボタン」を参照してください。
運用のポイント・注意
環境 では、LM Studio の起動とモデルのロードを忘れないようにしてください。接続できないときは README のトラブルシューティングを参照します。macOS ではクリップボードへのアクセス権限が必要で、初回時に許可を求めるダイアログが出る想定です。
機微情報 については、処理はローカルのみですが、生成文は必ず目を通してから送信 してください。モデルが説明文などを混ぜることがあるため、不要な部分は手で削ります(README にも記載があります)。
設定 は config.json で、API の URL・モデル名・タイムアウト・言語検出などを変更できます。初回起動で自動作成され、詳細は config.json.example を参照してください。
明日から試すチェックリスト
- LM Studio を入れ、使うモデルをロードしてローカルサーバーを起動できる状態にする。
- MailReplyGenerator の README に従い、
pip install -r requirements.txtとpython main.pyで起動できることを確認する。 - テスト用の受信メール(機微でないもの)をクリップボードにコピーし、「返信の概要」を短く入力して返信生成 → クリップボードに貼り付けてみる。
- 実際の運用では「返信の概要」をどう書くとよいか(依頼への対応・日程返答・簡潔な謝辞など)を、自分用にメモしておくと再利用しやすい。
関連記事
- Cursorでバイブコーディング:テーラーメイド自動化「Mail2Notion」で依頼メールを案件DBに集約する(メールを入口にした自作自動化の別事例。Notion への登録と添付整理)
- AIとの対話で「RSS週次要約」ツールを作った:設計からlaunchdまで一気に形にした記録(バイブコーディングで週次ダイジェストツールを作った記録。同じ「対話で形にする」流れ)
- AIで作業を自動化する際の3つのポイント — イメージ・言語化・微調整(自動化を続けるための考え方。小さいツールで”最後のひと手間”を潰す話と繋がる)
- AIに依頼する仕事は「できないこと」ではなく「手間の肩代わり」と捉える(何をAI=ここではローカルLLMに任せるかの線引き。返信下書きは「依頼する」例の一つ)
免責
本記事は、筆者の環境と運用に基づく一般的な情報です。LM Studio やモデル名・API の仕様はバージョンで変わる可能性があります。公式ドキュメントを参照してください。生成された返信文は必ず内容を確認してから送信してください。機微情報の取り扱いには所属組織の規程に従い、最終責任は利用者にあります。
