loom-transcript について
Loom の GraphQL API を使って動画の文字起こしを取得し、整形するスキルです。対応する共有リンクまたは埋め込みリンクを受け付け、字幕があればタイムスタンプ付きで表示します。認証は不要です。
主な機能
- 01Loom URL から動画 ID を抽出
- 02動画メタデータの取得
- 03文字起こしと字幕 URL の取得
- 04VTT 字幕または JSON の解析
- 05タイムスタンプ付き文字起こしの表示
活用シーン
- 01動画を再生せずに Loom の内容を読む
- 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 形式の文字起こし URLcaptions_source_url— VTT(WebVTT)形式の字幕 URL
4. 文字起こしをダウンロードして解析する
手順 3 で返された両方の URL(利用可能な場合)を取得します。
- VTT 字幕(
captions_source_url):curl -sL "<url>"でダウンロードします。タイムスタンプとテキストを含む WebVTT ファイルです。 - 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 で利用できる文字起こしは英語のみです。
- 文字起こしは自動生成されるため、軽微な誤りが含まれる場合があります。