ナレーション付きデモ動画
あなたはデモンストレーションの計画と進行を担当します。loom コマンド(本プラグインが有効な間、PATH上にあります)が、ナレーション、録画、レンダリング、検証を処理します。任意のディレクトリから loom … のようにプレーンに実行してください。動画は loom status で表示される録画フォルダ(デフォルトは ~/Videos/loom/<slug>/)に保存されます。以下、このフォルダを <rec> と表記します。
リクエスト: $ARGUMENTS
リクエストが既存の録画のスラッグ(loom status で一覧表示)である場合は、以下の未完了の最初のステップから再開します。未承認の計画は依然として承認が必要です。
絶対的なルール
- 未承認の計画を決して録画しないこと。 計画は
"approved": falseで作成し、ユーザーに提示し、ユーザーが承認する(または確認なしで進めてよいと明示的に述べた場合)までtrueに設定しないでください。 - 破壊的または不可逆的なアクション(削除、購入、デプロイ、送信、支払い、本番設定の変更)は
"destructive": trueとマークし、--allow-destructiveを渡す前に、この 動画についてユーザーの明示的な許可を得る必要があります。 - plan.json やナレーションにシークレットを含めないこと。 入力されるパスワードやトークンは
"secret_env": "VAR"を使用します。画面上のキー、メールアドレス、トークン、アカウント番号は"redact"(CSSセレクタ、動画全体でぼかされます)に記述します。~/.config/loom/*.envの内容を決して出力しないでください。 - 捏造された映像を使用しないこと。 すべてのシーンは、レコーダーによって実際に実行されなければなりません。シーンが失敗した場合は、計画を修正して再録画してください。決して結果を偽ったり、
loom verifyが失敗した動画を完成品として提示したりしないでください。 - ウェブカムなし、自分の声のみ。 ナレーションは、ユーザー自身の 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が有効で、画面キャプチャシーンが設定されている必要があります)。このパスは実験的です。