mcpField
N
n8n:loom-transcript

n8n:loom-transcript

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

n8n:loom-transcript について

Loom の GraphQL API を使って動画の文字起こしを取得し、提示するエージェントスキルです。動画情報を取得し、利用可能な場合は VTT 字幕を優先して、なければ JSON の文字起こしに切り替えます。

主な機能

  1. 01対応する Loom URL から ID を抽出
  2. 02動画情報と文字起こしリンクの取得
  3. 03タイムスタンプ付き VTT 字幕を優先
  4. 04JSON 文字起こしへのフォールバック
  5. 05無効な URL と文字起こし欠落への対応

活用シーン

  1. 01Loom リンクからタイムスタンプ付き文字起こしを作成
  2. 02動画情報と文字起こしの確認
  3. 03文字起こしがない Loom 動画の報告

インストール

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

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

インストール後、Claude Code で/n8n: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 で利用できる文字起こしは英語のみです。
  • 文字起こしは自動生成されるため、軽微な誤りが含まれる場合があります。

コメント