バイブコーディングで作った自作ツール「MailReplyGenerator」——受信メールから返信文をローカルLLMで生成する

ローカルLLMを用いた返信メール作成ツール バイブコーディング実例

なぜ「返信の下書き」を自作ツールにしたか

メールの返信を書くとき、言いたいことは決まっているのに、文体を整えるのに時間がかかる——そんな経験はないでしょうか。特に英語メールや、丁寧さの度合いを揃えたいとき、下書きを一から書くのが負担になります。

一方で、クラウドのAIに本文を投げるのは、機微情報(患者・依頼内容・社内事情) を扱う現場では避けたいところです。

この記事では、ローカルLLM(LM Studioクリップボード往復 だけで、受信メールと「返信の概要」から返信文を生成する小ツールを、バイブコーディングで作った話をまとめます。データを外に送らず、自分用の「返信の下書き支援」として使っている、という実例です。

要点まとめ

  • MailReplyGenerator は、クリップボードの受信メールと「返信の概要」を入力に、LM Studio のローカルLLMで返信文を生成し、クリップボードにコピー するだけのGUIツールです。
  • データをクラウドに送らないため、機微情報を含むメール でも、ローカル環境だけで下書き生成できます。
  • バイブコーディング(Cursor などで対話しながら要件を形にするやり方)で、「返信のたびに文体で悩む」という“最後のひと手間”を自分用に潰した事例として紹介します。
  • 必要なのは LM Studio・Python 環境とクリップボード権限。設定は config.json で管理され、初回起動時に例が作られます。

MailReplyGenerator とは

何ができるか を一言でいうと、次の流れです。

  • クリップボードから受信メールを取得する
  • ユーザーが「返信の概要」を入力する
  • ローカルLLMで返信文を生成する
  • 生成文をクリップボードにコピーする
MailReplyGeneratorのプロセス

あとはメールクライアントに貼り付けて、必要なら編集してから送信する想定です。受信メールの言語(英語/日本語)は自動検出され、ビジネスに適した文体(過剰に丁寧でない)で返信を生成します。

プログラムは 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 と同じく、「毎日当たる手間」を、自分用の型 で自動化している小さいツールです。

具体的な流れ(何をすると何が起きるか)

  1. LM Studio を起動し、使うモデル(例: openai/gpt-oss-20b)をロードして、ローカルサーバーを開始します(通常は http://localhost:1234)。
  2. 返信したいメールを クリップボードにコピー します。
  3. MailReplyGenerator を起動します。起動時にクリップボードから取得されるので、「返信の概要」を入力して「返信生成」をクリックします。
  4. 生成された返信文がクリップボードにコピーされます。メールクライアントに貼り付けて、必要なら編集してから送信します。

GUIの「クリップボードから取得」「クリア」などの操作は、README の「操作ボタン」を参照してください。

運用のポイント・注意

環境 では、LM Studio の起動とモデルのロードを忘れないようにしてください。接続できないときは README のトラブルシューティングを参照します。macOS ではクリップボードへのアクセス権限が必要で、初回時に許可を求めるダイアログが出る想定です。

機微情報 については、処理はローカルのみですが、生成文は必ず目を通してから送信 してください。モデルが説明文などを混ぜることがあるため、不要な部分は手で削ります(README にも記載があります)。

設定config.json で、API の URL・モデル名・タイムアウト・言語検出などを変更できます。初回起動で自動作成され、詳細は config.json.example を参照してください。

明日から試すチェックリスト

  • LM Studio を入れ、使うモデルをロードしてローカルサーバーを起動できる状態にする。
  • MailReplyGenerator の README に従い、pip install -r requirements.txtpython main.py で起動できることを確認する。
  • テスト用の受信メール(機微でないもの)をクリップボードにコピーし、「返信の概要」を短く入力して返信生成 → クリップボードに貼り付けてみる。
  • 実際の運用では「返信の概要」をどう書くとよいか(依頼への対応・日程返答・簡潔な謝辞など)を、自分用にメモしておくと再利用しやすい。

関連記事

免責

本記事は、筆者の環境と運用に基づく一般的な情報です。LM Studio やモデル名・API の仕様はバージョンで変わる可能性があります。公式ドキュメントを参照してください。生成された返信文は必ず内容を確認してから送信してください。機微情報の取り扱いには所属組織の規程に従い、最終責任は利用者にあります。

タイトルとURLをコピーしました