メインコンテンツへスキップ

概要

最終手段。 トランスクリプトはトークンを大量に消費します(1 時間の会議で 30K トークンを超えることがあります)。まず search_notes をお試しください。通常 10 倍コンパクトで同等に有用な、整理されたドキュメント(ワンページャー、カスタム)を返します。このツールは、直接引用のために正確に書き起こされた言葉が必要な場合にのみ使用してください。
破壊的変更 (2026-05-06)。 レスポンスの形が話者帰属セグメントを中心に統一されました。transcriptionparagraphs[].texthasDiarizationtotalParagraphs の各フィールドは削除されました。各段落は {content, speaker} を持つ segments[] 配列を公開するようになりました。speaker は diarization データが利用可能な場合は {label, name}、そうでない場合は null です。新しい形から古いフィールドを再構成する方法については、下記の Migration セクションをご覧ください。
get_note_transcript は、ノートのトランスクリプト全文を話者帰属セグメントの段落として、ノートのメタデータとともに返します。ノートに diarization データがあるかどうかにかかわらず形は一様です。各段落は segments[] 配列を持ち、各セグメントは content 文字列と speaker オブジェクト(または null)を持ちます。contentspeaker.name はどちらも MCP レイヤーで HTML が除去されます。 主なユースケース:
  • 会議で話された言葉を正確に引用する。
  • 誰が何を言ったかを把握する。セグメントごとの speaker フィールドは、このツールの主なユースケースです。
  • 構造化された paragraphs 配列を使って、トランスクリプトを時間範囲で切り出す。
  • ドキュメントでは必要な言い回しが捉えられていないときに、会話のコンテキストを分析する。
主な特長:
  • 一様な形: diarization の有無にかかわらず、各段落は segments[] を含みます。
  • 話者情報: diarization が存在する場合 segment.speaker{label, name}、そうでない場合は null
  • MCP レイヤーで HTML 除去済み(contentspeaker.name の両方がサニタイズされます)。

パラメータ

ParameterTypeRequiredDescription
noteGuidstringYesノートの一意な識別子

noteGuid (required)

取得するノートの一意な識別子です。 例:
{
  "noteGuid": "abc-123-def"
}
ノート GUID の取得方法:
  1. list_notes(軽量)を使って、フォルダ・日付・キーワードから候補を見つけます。
  2. 結果の noteGuid を使用します。コンテキスト用にドキュメントの内容も必要な場合は、まず search_notes で取得してください。話された言葉そのものが必要なときにのみ、このツールにフォールバックします。

レスポンス形式

成功レスポンス — Diarization 済みノート

ノートに diarization データがある場合、段落には 1 つ以上のセグメントが含まれ、各セグメントの speakerlabel(エンジンが割り当て、ノート内で安定)と name(解決された人物名、話者が未マッピングの場合は null)を持つオブジェクトになります。
{
  "noteGuid": "abc-123-def",
  "title": "Weekly Team Meeting",
  "participants": ["Alice Kim", "Bob Park"],
  "createdAt": "2024-01-15T10:30:00Z",
  "recordingDurationSeconds": 3625,
  "paragraphs": [
    {
      "timeFrom": "2024-01-15T10:30:05Z",
      "timeTo":   "2024-01-15T10:30:18Z",
      "segments": [
        {
          "content": "Let's start with the project update.",
          "speaker": { "label": "SPEAKER_0", "name": "Alice Kim" }
        },
        {
          "content": "Sure, I've completed the migration.",
          "speaker": { "label": "SPEAKER_1", "name": "Bob Park" }
        }
      ]
    }
  ]
}

成功レスポンス — Diarization なしのノート

ノートに diarization データがない場合、各段落は speakernull の単一セグメントに集約されます。それ以外の形は同一なので、呼び出し元は分岐なしに paragraphs[].segments[] を反復処理できます。
{
  "noteGuid": "abc-123-def",
  "title": "Solo Voice Memo",
  "participants": ["Alice Kim"],
  "createdAt": "2024-01-15T10:30:00Z",
  "recordingDurationSeconds": 120,
  "paragraphs": [
    {
      "timeFrom": "2024-01-15T10:30:05Z",
      "timeTo":   "2024-01-15T10:30:18Z",
      "segments": [
        {
          "content": "Reminder to send the contract by Friday.",
          "speaker": null
        }
      ]
    }
  ]
}
フィールドの説明:
FieldTypeDescription
noteGuidstringノートの一意な識別子。
titlestringノートのタイトル。
participantsstring[]参加者名(名前が利用できない場合はメールアドレス)。
createdAtstringISO 8601 形式の作成タイムスタンプ。
recordingDurationSecondsnumber録音の長さ(秒)。
paragraphs[]array構造化された段落。各段落は、1 つ以上の話者帰属セグメントを含む時間で区切られたまとまりです。
paragraphs[].timeFromstring | nullISO 8601 形式の段落の開始時刻。
paragraphs[].timeTostring | nullISO 8601 形式の段落の終了時刻。
paragraphs[].segments[]array段落の話者帰属スライス。段落が返される場合は常に空ではありません(空のセグメントや空の段落は除外されます)。
paragraphs[].segments[].contentstringセグメントの HTML 除去済みプレーンテキストコンテンツ。
paragraphs[].segments[].speakerobject | nulldiarization データが利用可能な場合は {label, name}、そうでない場合は null
paragraphs[].segments[].speaker.labelstringdiarization エンジンのラベル(例: SPEAKER_0)。単一のノート内で安定しています。
paragraphs[].segments[].speaker.namestring | nullユーザーが話者をマッピングした場合の解決された人物名、そうでない場合は null

Migration

2026-05-06 より前のレスポンスは、transcription(結合された文字列)、paragraphs[].text(段落ごとのプレーンテキスト)、hasDiarizationtotalParagraphs を持っていました。これら 4 つはすべてなくなりました。新しい形から再構成できます。
// Reconstruct the old `paragraphs[].text` field.
const text = paragraph.segments.map(s => s.content).join(" ");

// Reconstruct the old `transcription` joined string.
const transcription = response.paragraphs
  .map(p => {
    const ts = p.timeFrom ? `[${p.timeFrom.slice(11, 19)}] ` : "";
    return ts + p.segments.map(s => s.content).join(" ");
  })
  .join("\n");

// Reconstruct the old `hasDiarization` flag.
const hasDiarization = response.paragraphs.some(p =>
  p.segments.some(s => s.speaker !== null)
);

// Reconstruct the old `totalParagraphs` count.
const totalParagraphs = response.paragraphs.length;
「誰が何を言ったか」が必要な場合は、segments[].speaker を直接読んでください。これがこのツールの新しい主なユースケースです。

使用例

例 1: 基本的な使い方

AI リクエスト:
Show me the full transcript of meeting abc-123-def
MCP 呼び出し:
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_note_transcript",
    "arguments": {
      "noteGuid": "abc-123-def"
    }
  },
  "id": 1
}
レスポンス:
{
  "jsonrpc": "2.0",
  "result": {
    "noteGuid": "abc-123-def",
    "title": "Q4 Marketing Strategy Meeting",
    "participants": ["Sarah Kim", "John Park"],
    "createdAt": "2025-11-10T10:00:00Z",
    "recordingDurationSeconds": 3625,
    "paragraphs": [
      {
        "timeFrom": "2025-11-10T10:00:05Z",
        "timeTo":   "2025-11-10T10:00:18Z",
        "segments": [
          {
            "content": "Welcome to the Q4 marketing strategy meeting.",
            "speaker": { "label": "SPEAKER_0", "name": "Sarah Kim" }
          }
        ]
      },
      {
        "timeFrom": "2025-11-10T10:00:18Z",
        "timeTo":   "2025-11-10T10:00:42Z",
        "segments": [
          {
            "content": "Thanks. Let me present our website analytics.",
            "speaker": { "label": "SPEAKER_1", "name": "John Park" }
          }
        ]
      }
    ]
  },
  "id": 1
}

例 2: 段階的開示パターン

ステップ 1: 検索
Find recent marketing meetings
search_notes を使用 - 高速(~1 秒、~100 トークン) ステップ 2: 要約
What was discussed in meeting abc-123-def?
get_note(include: ['summary']) を使用 - 中程度(~2 秒、~500 トークン) ステップ 3: トランスクリプト全文(必要な場合のみ)
Show me the exact conversation about budget allocation
get_note_transcript を使用 - 低速(~5 秒、~4,000 トークン)

トークン使用量

一般的な会議(1 時間): ~3,000-5,000 トークン 2026-05-06 より前の形と比べて、単一話者のノートは約 30% 削減されます。冗長な transcription 結合文字列が出力されなくなったためです。複数話者(diarization 済み)のノートはおおむね同等です。セグメントごとの speaker メタデータが古い transcription ペイロードを置き換えており、セグメントのコンテンツは古い text フィールドが持っていたものと同じデータです。 比較(3 階層の探索):
ToolToken UsageWhen to Use
list_notesノートあたり ~50 トークンどのノートが存在するかを見つける(メタデータのみ)
search_notesノートあたり ~1,500 トークントピックの背後にあるコンテンツを読む(ドキュメントを返す)
get_note_transcript1 時間あたり ~3,000-5,000 トークン最終手段 — 引用のために話された言葉そのもの
get_note(include: ['summary'])~200-800 トークン1 つのノートの素早い AI 要約
get_note(include: ['documents'])~300-2,000 トークン特定の生成ドキュメント
トークンの節約まず search_notes をお試しください。そのドキュメント出力は生のトランスクリプトより通常 10 倍コンパクトで、「チームは何を決めたのか」という質問のほとんどに答えられます。言葉そのものが本当に必要なときにのみ get_note_transcript を使ってください。

ベストプラクティス

必ずこの順序に従ってください。
  1. list_notes — どのノートが存在するかを見つける(ノートあたり ~50 トークン)
  2. search_notes — 一致したトピックのドキュメントを読む(ノートあたり ~1,500 トークン)
  3. get_note_transcript — 言葉そのものが必要な場合のみ(1 時間あたり ~4,000 トークン)
「何を決めたのか」という質問のほとんどはステップ 2 で止まります。これにより、いきなりトランスクリプトに飛ぶ場合と比べて最大 90% のトークンを節約できます。
次の場合にトランスクリプト全文を使用してください。
  • 正確な引用や発言を見つける
  • 詳細な会話の流れを分析する
  • 完全なコンテキストを理解する
  • 特定の議論を参照する
  • 誰が何を言ったかを把握するsegments[].speaker フィールドにより、これがこのツールの主なユースケースになります。
次の場合にはトランスクリプトを使わないでください。
  • 素早い概要(代わりに get_note(include: ['summary']) を使用)
  • アクションアイテム(get_note(include: ['documents']) を使用)
  • 一般的な理解(get_note(include: ['summary']) を使用)
非常に長い会議(2 時間以上)の場合:
  • 5,000-10,000 トークンを見込んでください
  • タイムアウト(60 秒)が発生することがあります
  • まず要約経由で特定のセクションを要求することを検討してください
  • トランスクリプト全文を読み込む前に、要約を使って関連部分を特定してください

よくあるエラー

ノート GUID がない

解決方法: noteGuid パラメータを指定してください。

ノートが見つからない

考えられる原因:
  • ノートが存在しない
  • ノートが削除された
  • このノートへのアクセス権がない
解決方法: search_notes を使ってノート GUID を確認してください。

リクエストのタイムアウト

原因:
  • 非常に長い会議トランスクリプト(2 時間以上)
  • サーバー負荷
解決方法:
  1. 代わりに get_note(include: ['summary']) を使用してください
  2. 少し待ってから再試行してください
  3. 問題が解決しない場合はサポートにお問い合わせください

パフォーマンス

レスポンス時間:
Meeting LengthTokensResponse Time
30 分~1,500~2 秒
1 時間~3,000~3 秒
2 時間~6,000~5 秒
3 時間以上~9,000+~8 秒(タイムアウトの可能性あり)
キャッシュの動作トランスクリプトは 15 分間キャッシュされます。同じノートに対する以降のリクエストはより高速になります。