mcpField
L
loom-transcript

loom-transcript

github.com/n8n-io生産性208.9k301 回インストール今日更新
リポジトリ

loom-transcript について

Loom の GraphQL API を使って動画の文字起こしを取得し、整形するスキルです。対応する共有リンクまたは埋め込みリンクを受け付け、字幕があればタイムスタンプ付きで表示します。認証は不要です。

主な機能

  1. 01Loom URL から動画 ID を抽出
  2. 02動画メタデータの取得
  3. 03文字起こしと字幕 URL の取得
  4. 04VTT 字幕または JSON の解析
  5. 05タイムスタンプ付き文字起こしの表示

活用シーン

  1. 01動画を再生せずに Loom の内容を読む
  2. 02文字起こしの時刻から議論箇所を探す

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/n8n-io/n8n --skill loom-transcript

インストール後、Claude Code で/loom-transcriptを入力して読み込まれたか確認します。

詳細

Loom の文字起こし取得ツール

Loom の GraphQL API を使って、Loom 動画の文字起こしを取得します。

手順

Loom の URL:$ARGUMENTS

1. 動画 ID を抽出する

Loom の URL を解析して、32 文字の 16 進数の動画 ID を抽出します。次の URL 形式に対応しています。

  • https://www.loom.com/share/<video-id>
  • https://www.loom.com/embed/<video-id>
  • https://www.loom.com/share/<video-id>?sid=<session-id>

動画 ID は、/share/ または /embed/ の後に続く 32 文字の 16 進数の文字列です。

2. 動画のメタデータを取得する

WebFetch ツールを使って https://www.loom.com/graphql に POST し、動画のタイトルと詳細を取得します。

Bash 経由で次の curl コマンドを実行します。

curl -s 'https://www.loom.com/graphql' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'x-loom-request-source: loom_web_45a5bd4' \
  -H 'apollographql-client-name: web' \
  -H 'apollographql-client-version: 45a5bd4' \
  -d '{
    "operationName": "GetVideoSSR",
    "variables": {"id": "<VIDEO_ID>", "password": null},
    "query": "query GetVideoSSR($id: ID!, $password: String) { getVideo(id: $id, password: $password) { ... on RegularUserVideo { id name description createdAt owner { display_name } } } }"
  }'
3. 文字起こしの URL を取得する

Bash 経由で curl を使い、GraphQL API を呼び出します。

curl -s 'https://www.loom.com/graphql' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'x-loom-request-source: loom_web_45a5bd4' \
  -H 'apollographql-client-name: web' \
  -H 'apollographql-client-version: 45a5bd4' \
  -d '{
    "operationName": "FetchVideoTranscript",
    "variables": {"videoId": "<VIDEO_ID>", "password": null},
    "query": "query FetchVideoTranscript($videoId: ID!, $password: String) { fetchVideoTranscript(videoId: $videoId, password: $password) { ... on VideoTranscriptDetails { id video_id source_url captions_source_url } ... on GenericError { message } } }"
  }'

手順 1 で抽出した実際の動画 ID に <VIDEO_ID> を置き換えます。

レスポンスには次の情報が含まれています。

  • source_url — JSON 形式の文字起こし URL
  • captions_source_url — VTT(WebVTT)形式の字幕 URL
4. 文字起こしをダウンロードして解析する

手順 3 で返された両方の URL(利用可能な場合)を取得します。

  1. VTT 字幕(captions_source_url):curl -sL "<url>" でダウンロードします。タイムスタンプとテキストを含む WebVTT ファイルです。
  2. JSON 形式の文字起こし(source_url):curl -sL "<url>" でダウンロードします。文字起こしのセグメントを含む JSON ファイルです。

適切なタイムスタンプが含まれているため、VTT 字幕を優先して使用します。VTT が利用できない場合は、JSON 形式の文字起こしを使用します。

5. 文字起こしを提示する

文字起こし全文を整形してユーザーに提示します。

動画: [メタデータのタイトル] 投稿者: [所有者名] 日付: [作成日]


0:00 - 文字起こしの最初のセグメント…

0:14 - 文字起こしの 2 番目のセグメント…

(すべてのセグメントについて続けます)


エラー処理

  • GraphQL のレスポンスに GenericError が含まれている場合は、エラーメッセージをユーザーに伝えます。
  • source_url と captions_source_url の両方が null または欠落している場合は、この動画の文字起こしが利用できないことをユーザーに伝えます。
  • 動画 URL が無効であるか、ID を抽出できない場合は、有効な Loom URL をユーザーに求めます。

注意事項

  • 認証や Cookie は不要です。Loom の文字起こし API は公開されています。
  • この API で利用できる文字起こしは英語のみです。
  • 文字起こしは自動生成されるため、軽微な誤りが含まれる場合があります。

コメント