Communitygithub.com

ahmadrashad1/video

完成した、ナレーション付きのLoom形式スクリーンレコーディング動画(MP4、1080p、Fish Audioによる自作クローンボイス、キャプション、ウェブカムなし)を生成します。WebサイトやWebアプリのデモ、チュートリアル動画の作成に使用します。

video とは?

このスキルは、Claude CodeなどのAIエージェントが、ユーザーの代わりにプロフェッショナルなスクリーンキャプチャ動画を完全自動で制作するためのものです。ユーザーが「/loom:video」コマンドを実行するか、アプリケーションのデモやウォークスルー動画の作成を依頼した際に起動します。ワークフローは、まずFish Audioでユーザー自身の声をクローンし、その声でナレーションを生成します。次に、実際のWebアプリケーションを操作しながら録画を行い、自動でキャプション(字幕)を追加し、最終的に1080pのMP4ファイルとして出力します。本スキルの最大の特徴は、「計画の承認」「破壊的操作の明示」「シークレット情報の秘匿」「実動作の保証」という4つの非交渉ルールに基づき、安全で信頼性の高い動画制作を実現する点です。AIエージェントは、まず詳細な撮影計画(台本、操作手順、期待する結果)を立案し、ユーザーの承認を得た後にのみ録画を開始します。録画中は、パスワードやAPIキーなどの機密情報が画面に映り込まないよう自動的にぼかし処理を施します。もし録画や検証に失敗した場合は、問題を特定して修正し、そのシーンのみを再録画することで、常に実際の動作に基づいた動画を提供します。開発者のデモ動画作成、QAチームのバグレポート、プロダクトマネージャーの機能説明など、様々な場面で活用できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ahmadrashad1/loom-skill/tree/HEAD/skills/video

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ナレーション付きデモ動画

あなたはデモンストレーションの計画と進行を担当します。loom コマンド(本プラグインが有効な間、PATH上にあります)が、ナレーション、録画、レンダリング、検証を処理します。任意のディレクトリから loom … のようにプレーンに実行してください。動画は loom status で表示される録画フォルダ(デフォルトは ~/Videos/loom/<slug>/)に保存されます。以下、このフォルダを <rec> と表記します。

リクエスト: $ARGUMENTS

リクエストが既存の録画のスラッグ(loom status で一覧表示)である場合は、以下の未完了の最初のステップから再開します。未承認の計画は依然として承認が必要です。

絶対的なルール

  1. 未承認の計画を決して録画しないこと。 計画は "approved": false で作成し、ユーザーに提示し、ユーザーが承認する(または確認なしで進めてよいと明示的に述べた場合)まで true に設定しないでください。
  2. 破壊的または不可逆的なアクション(削除、購入、デプロイ、送信、支払い、本番設定の変更)は "destructive": true とマークし、--allow-destructive を渡す前に、この 動画についてユーザーの明示的な許可を得る必要があります。
  3. plan.json やナレーションにシークレットを含めないこと。 入力されるパスワードやトークンは "secret_env": "VAR" を使用します。画面上のキー、メールアドレス、トークン、アカウント番号は "redact"(CSSセレクタ、動画全体でぼかされます)に記述します。~/.config/loom/*.env の内容を決して出力しないでください。
  4. 捏造された映像を使用しないこと。 すべてのシーンは、レコーダーによって実際に実行されなければなりません。シーンが失敗した場合は、計画を修正して再録画してください。決して結果を偽ったり、loom verify が失敗した動画を完成品として提示したりしないでください。
  5. ウェブカムなし、自分の声のみ。 ナレーションは、ユーザー自身の Fish Audio ボイスモデルを使用します。許可なく他人の声を使用したり、提案したりしないでください。

ワークフロー

0. 音声設定(初回実行時)

loom status を実行します。VOICE NOT CONFIGURED と表示された場合は、何よりも先に音声を設定します。/loom:setup スキル(${CLAUDE_PLUGIN_ROOT}/skills/setup/SKILL.md)に従ってください。ユーザーに自分の Fish Audio ボイスモデル ID を尋ねてください。決して発明したり、再利用したりしないでください。今すぐ設定したくない場合は、ロボット的な プレビュー 音声として --provider espeak を使用して続行しても構いません。その際、それがユーザーの声ではないことを明確に伝えてください。

A. 理解

以下を明確にします:どのアプリ/URLか、視聴者が達成すべき成果、対象視聴者、ログインが必要かどうか。これらのいずれかが明らかに不明確な場合は、簡潔な質問を1つ行います。それ以外の場合は、妥当な仮定を立てて作業を進め、その仮定を明示します。

B. 実際のアプリケーションを検査する

loom inspect <url> --out <rec>/<slug>/inspect

スクリーンショット(<rec>/<slug>/inspect/page.png)を読み取り、出力されたセレクタを使用します。デモで訪問するすべてのページ(フローに従って)を検査し、セレクタが推測ではなく実際のものであることを確認します。優先順位は #id、[data-testid=…]、role=button[name="…"]、text=… です。ローカルファイルは file:///… URL として機能します。

C. 計画を書く

${CLAUDE_PLUGIN_ROOT}/skills/video/reference/plan-schema.md に従って <rec>/<slug>/plan.json を作成します。ガイドライン:

  • 4~10シーン。title シーンで始め、短い要約シーンで終えます。
  • ナレーション:一人称、会話形式で、同僚がLoomを録画しているように。各シーン1~3文(約6~20秒)。視聴者が見ているものを それが発生している間に 説明します。セレクタやURLを一字一句読み上げないでください。
  • アクションはそのシーンのナレーションが再生されている間に実行されます。アクションは収まる程度に短く保ってください(音声の1秒あたり約2.6単語)。長いフローはより多くのシーンに分割してください。
  • 状態が変化するすべてのシーンに expect を追加して、失敗を確実に検出します。
  • loom validate <slug> が成功するまで実行します。

計画をユーザーにテーブル(シーン - 画面上で起こること - ナレーション)と、破壊的なもの、必要なシークレット、推定時間とともに提示します。停止して承認を待ちます。承認されたら "approved": true を設定します。

D. ナレーション

loom voice <slug>:クローンされた音声でシーンごとに1つのWAVファイルを作成します(キャッシュされます。変更されたシーンのみ再生成されます)。再生時間が妥当に見えるか確認します。

E. 録画

loom record <slug>(ルール2に従う場合のみ --allow-destructive を追加)。 失敗した場合は、エラーと <rec>/<slug>/raw/failure-<scene>.png を読み、計画内のセレクタ/待機時間を修正し、再実行します。必要に応じてページを再検査します。

F. 生成

loom render <slug>(埋め込みキャプションが必要な場合は --captions burn。デフォルトは埋め込み字幕トラックと subtitles/captions.srt)。

G. 検証(常に)

loom verify <slug> を実行し、その後、Read ツールを使用して <rec>/<slug>/scenes/*.jpg の すべてのサムネイルを確認 します。期待される画面状態が表示されているか、機密情報がぼかされずに残っていないか、エラーページやCookieバナーがコンテンツを覆っていないかを確認します。アクションがナレーションを超えたという警告がある場合は、そのシーンの分割を検討します。必要に応じて修正し、検証に合格するまで必要な手順をやり直します。

H. 報告

<rec>/<slug>/final_video.mp4 へのパス、その長さ、シーンリスト、および注意点(例:プレビュー音声を使用したなど)を報告します。VS Codeの組み込みプレビューはMP4を音声なしで再生することに言及し、通常の動画プレーヤーの使用を推奨します。計画が承認された後のステップD~Gのショートカット:loom run <slug>。

トラブルシューティング

  • loom: command not found → プラグインの bin/ がPATHにありません。代わりに ${CLAUDE_PLUGIN_ROOT}/bin/loom を実行してください。
  • loom needs uv → ユーザーに uv のインストールを伝えてください(コマンドは表示されます)。
  • 要素が見つからない → そのページで loom inspect を再実行し、wait_for を追加してください。
  • Cookie/同意バナー → 最初のシーンで同意ボタンを click するアクションを追加してください。
  • ログイン → secret_env を使用して type します。ユーザーに変数をエクスポートするよう依頼してください。
  • Fish Audio 401 → APIキーが不正です。402 → そのモデルにAPIクレジットがありません。クレジットを追加するか、プラグインのモデル設定を s2.1-pro-free に切り替えることを提案してください。
  • デスクトップ(非ブラウザ)デモ → --recorder obs(OBSが実行中で、WebSocketが有効で、画面キャプチャシーンが設定されている必要があります)。このパスは実験的です。

関連スキル