← ブログに戻る

会議の文字起こしからアクションアイテムと担当者を引き出す

Autorec の組み込み要約プロンプトは、すでに決定事項とアクションアイテムを書き出します。そのプロンプトが何を求めているか、担当者と期限やフォローアップメールを得るために貼り付けて使えるプロンプト 2 つ、そして担当者は誰かが名前を口にしたときにしか出てこない理由を説明します。

黒に近い背景の上で、もつれた光るオレンジ色の会話の糸が細くまとまり、3 枚のチェックリストカードになっていく。各カードの横には小さな人のシルエットがある

あるお客様から、シンプルな質問をいただきました。「アクションポイントと、誰が何を担当するのかが入った短い要約を作るにはどうすればいいですか?」

そのほとんどはデフォルトのままでもう動きますし、残りもテキストボックスに数行書き足すだけです。

組み込みのプロンプトがすでにやっていること

設定を開き、AI要約 セクションを探します。要約プロンプト のボックスには、Autorec がシステムプロンプトとしてモデルに送るテキストがそのまま表示されています。

You are a helpful assistant. Given a meeting transcript, generate a JSON object with two fields: "title" (a descriptive meeting title, max 80 characters) and "summary" (the meeting summary, formatted as: a one-line gist, then a "Decisions" section with bullet points, then an "Action items" section with bullet points including the owner where stated). If a section is empty, omit it. Respond with ONLY the JSON object, no other text.

つまり、一行の要点、決定事項のリスト、そして「発言があれば(where stated)」担当者を添えたアクションアイテムのリストが得られます。タイトルは、ライブラリでの録画の名前になります。決定事項がなかった会議では、そのセクションは水増しされずに省かれます。

AI要約の設定画面。要約プロンプトのボックスが編集モードになっており、デフォルトにリセットのボタンと最大要約長の欄がある

要約は、クラウドでも自分のマシンでも、OpenAI 互換のエンドポイントならどれでも使えます。まだ設定していないなら、ローカル LLM の記事と OpenRouter の設定記事で、よく使われる 2 つの方法を紹介しています。

担当者が抜けることがある理由

Autorec は whisper.cpp で文字起こしをします。Whisper は音声をタイムスタンプ付きのテキストにしますが、誰が話しているかまでは判別せず、Autorec も話者ラベルを付け足しません。文字起こしの行頭に「佐藤:」や「話者 2:」は付きません。

モデルが見るのはそのテキストだけです。担当者の名前を挙げられるのは、言葉の中に名前が出てくるときです。

  • 「佐藤さん、修正した見積もりを金曜までに送ってもらえますか?」からは、担当者(佐藤さん)と期限(金曜)が出てきます。
  • 「誰かドキュメントを更新しないとね」からは、担当者のいないアクションアイテムが出てきます。テキストに担当者がいないからです。
  • 「それ、私がやります」からは、役に立つ情報は何も出てきません。「私」が誰なのか、文字起こしからはわからないからです。

デフォルトのプロンプトが「発言があれば」と言っているのはこのためです。すべての項目に担当者を求めるプロンプトにすると、モデルは推測で埋めようとします。推測された担当者は、空欄よりたちが悪いものです。

対策にお金はかからず、会議の中でできます。仕事を割り振るときに、名前と日付を声に出して言うことです。

「では、移行計画はプリヤさんの担当で、期限は来週の水曜日ということで」

最初の 2 回くらいはぎこちなく感じます。でもそのうち、それが会議の締めくくり方として定着しますし、その場にいる人にとっても担当がはっきりします。

プロンプト 1:アクションアイテムを先頭に、表で

このプロンプトはアクションを先頭に置き、担当者と期限の列を持つ表を求めます。誰も名前が挙がらなかった項目には「担当者未定」と書かせるので、抜けている箇所がひと目でわかります。

あなたは有能なアシスタントです。会議の文字起こしを受け取り、"title"(会議の内容がわかるタイトル、最大 80 文字)と "summary" の 2 つのフィールドを持つ JSON オブジェクトを生成してください。summary は Markdown で、次の順番で書いてください。まず「アクションアイテム」セクションを、タスク・担当者・期限の列を持つ表として書きます。担当者と期限は、文字起こしの中で明言されているものだけを使ってください。文字起こしに名前や日付がない場合は「担当者未定」または「期限なし」と書きます。次に「決定事項」セクションを箇条書きで、続いて「未解決の質問」セクションを箇条書きで書きます。最後に一行の要点で締めくくります。空のセクションは省略してください。名前、日付、タスクを創作しないでください。タイトルと要約は日本語で書いてください。JSON オブジェクトだけを返し、それ以外のテキストは含めないでください。

大事なのは「担当者と期限は、文字起こしの中で明言されているものだけを使ってください」という一文です。これがないと、多くのモデルはもっともらしい推測で表を埋めてしまいます。

プロンプト 2:フォローアップメール

本当に欲しいのが会議後に送るメッセージなら、それを直接頼みましょう。

あなたは有能なアシスタントです。会議の文字起こしを受け取り、"title"(会議の内容がわかるタイトル、最大 80 文字)と "summary" の 2 つのフィールドを持つ JSON オブジェクトを生成してください。summary は、参加者に送る短いフォローアップメールです。2 文で振り返りを書き、次に決定事項を挙げ、続いてアクションアイテムを「名前:タスク(期限)」の形式で挙げてください。名前と日付は、文字起こしの中で実際に言われたものだけを使ってください。最後に、間違いがあれば返信してほしいと一行添えてください。プレーンテキストで書き、Markdown の見出しは使わないでください。タイトルと要約は日本語で書いてください。JSON オブジェクトだけを返し、それ以外のテキストは含めないでください。

送る前に必ず読んでください。モデルは機械による文字起こしをもとに書いていますし、Whisper は名前を聞き間違えることがあります。

JSON の枠組みは残す

どちらのプロンプトも、デフォルトの前半部分、つまり「title と summary の 2 つのフィールドを持つ JSON オブジェクトを生成する」と「JSON オブジェクトだけを返す」を残しています。Autorec はこの形で返ってくることを前提にしており、ライブラリに表示されるのはそのタイトルです。ボックスの下にも、JSON の {title, summary} オブジェクトを求める部分はそのままにしておくよう、ヒントが表示されます。編集するのは summary の中身だけにして、枠組みには手を付けないでください。

仕組みについて、あと 2 点あります。

  • 編集したプロンプトは書いたとおりに送られ、Autorec は何も付け足しません。デフォルトのプロンプトの場合、アプリが英語以外に設定されていると、Autorec が「この言語で書く」という一文を末尾に追加します。日本語で使っていれば、何もしなくても要約は日本語で返ってきます。プロンプトを編集した場合は、言語の指定を自分で入れてください。上の 2 つのプロンプトの「タイトルと要約は日本語で書いてください。」がそれです。Whisper は日本語の会議もそのまま文字起こしできるので、日本語の会議から日本語のアクションアイテムまで一貫して作れます。
  • エディターには デフォルトにリセット があります。組み込みのテキストをボックスに戻すので、いろいろ試しても元のプロンプトを失う心配はありません。

変更を反映するには、下部の 設定を保存 をクリックします。

最大トークン数の設定

プロンプトの下に 最大要約長(トークン) という欄があります。デフォルトは 1000 です。横のヘルプテキストにあるとおり、300 は短い段落、1000 はおよそ 1 ページ分です。Autorec が受け付けるのは 100〜2000 で、範囲外の値はその範囲内に収められます。

これはモデルの返答の長さの上限です。要約が文の途中で止まったり、JSON が閉じずに要約が失敗したりする場合、たいていはこの上限が原因です。次のような場合は上げてください。

  • タスクの多い会議で、表のプロンプトを使うとき
  • フォローアップメールと決定事項の両方を求めるとき
  • 通話が長かったとき:文字起こしは全文がモデルに渡るので、2 時間の会議では 1000 トークンに収まりきらないほどのアクションアイテムが出ることがあります(上限は 2000)
  • 長く冗長な答えを書くモデルを使っているとき

短い要点だけが欲しく、トークン単位で料金を払っているなら、下げてもかまいません。上限を上げても要約が長くなるわけではありません。長さを決めるのはプロンプトです。上限を上げると、モデルの返答が途中で切られなくなるだけです。

過去の録画にも使える

編集したプロンプトは、過去の通話にも使えます。ライブラリから録画を開き、動画の画面で 要約を生成 を押すと、いま保存されているプロンプトでその録画の文字起こしが処理されます。文字起こしがまだない場合や、エンドポイントに API キーが必要なのに設定されていない場合、ボタンはグレーアウトされます。ローカルサーバーにキーは不要です。文字起こし後に自動要約 をオンにしていれば、新しい録画は文字起こしが終わるとすぐに要約されます。

プロンプトを調整するなら、実際の会議を 1 本選び、編集して保存し、要約を生成 を押して結果を読む、を繰り返すのがよいでしょう。たいていは 3〜4 回で十分です。

ライブラリの録画。文字起こしと生成された要約が、要約を生成ボタンの横に表示されている

このスクリーンショットはデモ用の録画なので、文字起こしの行に名前が入っています。実際の文字起こしは、タイムスタンプと話されたままの言葉で、名前は誰かが口にした箇所にしか出てきません。

文字起こしの送り先

Ollama や LM Studio でローカルモデルを使えば、文字起こしはマシンから出ません。クラウドのエンドポイントを使う場合は、要約するときに文字起こしのテキストがそのプロバイダーに送られます。プロバイダーごとに自分で選べることで、クライアントとの通話ではそれが重要になります。選択肢については GDPR の記事と OpenRouter のプライバシー記事で説明しています。

まとめ

  1. 設定 → AI要約 で、上のプロンプトのどちらかを貼り付け、設定を保存を押す。
  2. 出力が途中で切れるなら 最大要約長(トークン) を上げる。
  3. 仕事を割り振るときは、名前と日付を声に出して言う。
  4. 最近の録画で 要約を生成 を押し、結果を比べる。
  5. ほかの人に渡す前に、結果にざっと目を通す。

要約をノートアプリに取り込んでいるなら、Notion と Obsidian の記事で、この Markdown の表に合うテンプレートを紹介しています。

Own your meeting recorder once

Local, private meeting recording for a one-time fee. No monthly bill, no assistant joining your calls.

See pricing

関連記事

ローカル録画、文字起こし、そしてその周辺の自動化についてもっと読む。