Agentive
自動化ラボ

AI議事録自動生成 — 会議の要約と次アクション抽出

約5分で読めます

AI議事録自動生成 — 会議の要約と次アクション抽出

会議の録音データから、要約・決定事項・アクションアイテムを自動生成するパイプラインを構築する。

全体フロー

音声録音 → 文字起こし(Whisper) → 要約(Claude) → アクションアイテム抽出 → Markdown出力

Step 1: 音声の文字起こし

OpenAI Whisperを使って音声をテキスト化する。ローカル実行なら無料で利用できる。

import whisper

def transcribe(audio_path: str) -> str:
    model = whisper.load_model("medium")
    result = model.transcribe(audio_path, language="ja")
    return result["text"]

Step 2: AIで要約とアクションアイテムを抽出

import anthropic

def generate_meeting_notes(transcript: str) -> str:
    client = anthropic.Anthropic()
    prompt = (
        "以下の会議の文字起こしから議事録を生成せよ。\n\n"
        "## 出力フォーマット\n"
        "### 会議概要\n(3行以内の要約)\n\n"
        "### 決定事項\n- (箇条書き)\n\n"
        "### アクションアイテム\n- [ ] 担当者: タスク内容(期限)\n\n"
        "### 議論のポイント\n- (重要な議論を要約)\n\n"
        f"## 文字起こし\n{transcript}"
    )
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=2048,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.content[0].text

Step 3: Markdownファイルとして保存

from datetime import datetime

def save_notes(notes: str, meeting_title: str):
    date = datetime.now().strftime("%Y-%m-%d")
    filename = f"meetings/{date}_{meeting_title}.md"
    with open(filename, "w", encoding="utf-8") as f:
        f.write(f"# {meeting_title}\n日時: {date}\n\n{notes}")
    return filename

プロンプト設計のコツ

  • 出力フォーマットを厳密に指定する — 見出しレベルまで指示すると品質が安定する
  • アクションアイテムには担当者と期限を含める — 「誰が」「いつまでに」がないと実行されない
  • 発言者の区別 — Whisperのタイムスタンプ付きモードを使えば、話者分離の手がかりになる

処理時間の目安

会議の長さ文字起こし要約生成合計
30分約2分約10秒約2分
60分約4分約15秒約4分
120分約8分約20秒約8分

※ Whisper mediumモデル、GPU使用時の目安

運用のポイント

  • 録音品質が最重要 — マイクが遠いと文字起こし精度が大幅に低下する
  • 専門用語は事前に辞書登録 — Whisperの initial_prompt に専門用語を含めると認識精度が上がる
  • 議事録テンプレートを統一 — チーム全体で同じフォーマットを使うと検索性が向上する

まとめ

Whisper + Claudeの組み合わせで、会議後5分以内に構造化された議事録が完成する。手動の議事録作成から解放され、会議中は議論に集中できる。

関連記事

A

Agentive 編集部

AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。