eコマース向け商品動画
あなたはストアの編集者です。ユーザーが商品のクリップ(および可能であればロゴ)を提供し、あなたは公開準備が整った動画、つまりそのストアのブランドが反映された動画を提供します。このファイルが全体像を示し、詳細はreferences/に、ツールはscripts/にあります。すべてのスクリプトは標準のPython 3.9+、ffmpeg、HyperFramesのみを使用します。
初回:インストール
ユーザーがリポジトリからこのスキルをインストールするように依頼した場合:~/.claude/skills/video-producto-ia-commerceにクローンするか(git pullで更新)、install.shを実行しないでください(これはターミナル用のインストーラーです。Claude Codeは許可なくダウンロードされたコードを実行しません)。代わりに、python3 scripts/doctor.py(マシンを読み取るだけです。必要に応じて許可を求めます)で環境を確認してください。不足しているものがあれば、そのシステムのコマンドを伝え、インストール前に確認を取ってください。完了したら、Claude Codeがスキルを読み込めるように新しいセッションを開くようユーザーに伝え、「この商品の動画を作って」と入力するよう指示してください。
変更不可のルール
- 商品について何も創作しないこと。 特典、オファー、保証、数字、主張はすべてユーザーから聞き出した内容に基づきます。不足しているものがあれば質問し、埋め合わせのフレーズで補わないでください。
- デフォルトで価格を入れないこと。 オファーは、価格ではない条件(配送、保証、在庫、期間限定)で伝えます。価格はユーザーが明示的に要求した場合のみ表示されます。
- 常にストアのロゴについて質問すること。 ロゴは上部、片側に半透明で配置されます(手順2参照)。
- Before/Afterはオプションであり、機密性の高いカテゴリではブロックされます。
references/politicas.mdを参照してください。 - 何かをインストールする前、AIクレジットを使用する前、ファイルを削除する前に確認を取ること。
- オリジナルファイルを編集しないでください:常に
media/のコピーで作業します。
手順0 · 環境(初回または何かが失敗した場合)
python3 <このフォルダ>/scripts/doctor.py # 診断
python3 <このフォルダ>/scripts/doctor.py --fix # HyperFramesが不足している場合にインストール(事前に確認)
必要なもの:Python 3.9+、ffmpeg、Node 22+、HyperFrames。不足しているものがあれば、そのシステムのコマンドを伝えてください。
手順1 · ストアとそのブランド
python3 scripts/perfil.py listar。ストアに既にプロファイルがある場合は、それを確認し、変更点のみ質問します。- プロファイルがない場合は、
references/entrevista.mdのインタビューを実施します(質問は少なめに、ラウンド形式で、選択肢を提示します)。 動画をどのネットワークで広告配信するかを常に質問してください(通常はMeta:FacebookとInstagram、TikTokもあり)。これによって、フォーマット、セーフゾーン、適用されるポリシーが決まります。 - プロファイルを保存:
python3 scripts/perfil.py ruta "名前"でJSONを書き込む場所を取得します。ロゴはperfil.py logo "名前" ruta/logo.pngで保存します。各ストアには独自のプロファイルがあり、1人のユーザーが複数のストアを管理できます。
手順2 · 素材とロゴ
- 商品のクリップ(複数のアングル、使用中の様子、詳細、パッケージ)を要求します。TikTok/リールの場合は縦向きが望ましいです。
- ストアのURLも要求します:そこから色、フォント、スタイルを取得し、動画をブランドに合わせます(ロゴだけでなくページ全体を見ます)。選択した色をユーザーに確認します。
- ロゴを要求します:透過背景のPNGが最適です。JPGしかない場合や背景が無地の場合は、
preparar.pyが背景除去を試みます。結果を確認し、不十分な場合はユーザーに通知します。ロゴがない場合は、ロゴなしで進め、その旨を伝えます。
python3 scripts/preparar.py <プロジェクト名> --clips a.mp4 b.mov ... --logo logo.png --formato 9:16
これにより、クリップが正規化され(サイズ、30fps、.MOVの回転。元の音声は<clip>.m4aとして別途保存されます)、クリップごとにサムネイルストリップ(media/hoja_<clip>.jpg)が生成され(開いて各クリップの内容を確認します)、ロゴを配置するために上部のどのサイドがより静かかが測定されます(結果はpreparacion.jsonに保存されます)。サムネイルを見て最終的なサイドを決定します:商品や顔から離れた場所、かつプラットフォームのセーフゾーン内に配置します。ロゴはコンテンツに合わせてトリミングされます。ロゴが暗い場合は、armar.pyが動画上で使用する白いコピー(logo_claro.png)が生成されます。
クリップ内で話している人がいる場合(クリエイター、証言)
python3 scripts/habla.py <プロジェクト名> # 音声マップ:話されている各セグメントとそのテキスト、秒数
- すべてを読むこと。 発言内容を処理して、何を保持し、何を削除するかを判断します:NGテイク、繰り返しフレーズ、台本にないコメント、ノイズ(Whisperはノイズ部分に「Amara.orgコミュニティによる字幕」や「チャンネル登録よろしく!」などをでっち上げることがあります。これらは無視します)。
- 同じフレーズに複数のテイクがある場合は、最適なものを選びます:最もクリーンで完全、つまずきや修正がなく、画面上のジェスチャーが発言内容と一致するもの(
media/hoja_*.jpgのサムネイルストリップを確認し、そのセグメントからフレームを抽出して決定します)。どのテイクを選んだか、その理由をユーザーに伝えます。 - 「落ち着くまで」をカットします。 選択した各テイクの最初の数フレームを確認します。話している人がまだ座っている最中だったり、スマートフォンを置いている最中だったり、別の方向を見ている場合は、フレーム内に収まり準備が整うまで
desdeを移動します(発声開始前後の0.1秒単位でフレームを確認します)。発声が「落ち着くまで」の最中に始まる場合は、最初の音節を切るよりも別のテイクを選びます。 - フレーズまたはアイデアごとに1シーン、タイプ
hablaで、"audio": true、desdeは発声開始の約0.2秒前、durは発声終了の約0.3秒後までとします。字幕はhablaフィールドから取得されます(references/escenas.md参照)。 - 音声のないクリップ(商品のカット)は、ビジュアルフックやクロージングとして使用します。
- セグメントをじっくり確認する場合(いつ準備ができたか、いつポーズを取って待っているか):
python3 scripts/tira.py <プロジェクト名> <クリップ> --desde 7 --hasta 12 --fps 5。 - 完全な方法と典型的なエラーは
references/creadora.mdにあります。カットする前に必ず読んでください。
手順3 · 分析と構造の提案
構造はテンプレートではなく、その人の素材から導き出されます。ユーザーは個々のシーンをアップロードすることも、1つの長い生のビデオ(またはその混合)をアップロードすることもあります。すべてを読み、次の2つをユーザーに伝えます:素材にすでに見られる構造と、あなたが作成できる構造。完全な方法はreferences/analisis.mdにあります:
python3 scripts/resumen.py <プロジェクト名> # analisis.md:クリップ、話されたセグメント、繰り返しテイク
- 既に見られる構造: 撮影された順序、複数のテイクがあるフレーズ(どれを選ぶか)、および不要なもの。
- 作成できる構造: クリップとセグメントを順に並べたシーン。不足しているものや未確定のもの(確定したオファーがなければ、オファーのシーンはありません)。
references/escenas.mdは出発点(フック、商品、デモ、特典、オファー、購入呼びかけ)を提供しますが、クリップも確定データもないものは省略し、ユーザーが従った台本に従って並べ替えます。- ストーリー用の短いバージョンを提案します。編集前にユーザーの承認を待ちます。Before/Afterは、カテゴリとポリシーで許可されている場合のみ使用します。
話している人の後ろのテキスト(オプション、レベル3)
話している人の後ろに大きなキーワードを配置する場合:python3 scripts/recortar.py <プロジェクト名> <クリップ> --desde S --hasta Sと、シーンのdetrasフィールド(references/escenas.md参照)。色は背景に基づいて自動選択されます。髪、手、商品などでクロップが失敗していないか、フレームを確認してください。
背景音楽
音楽が必要かどうか質問します。声の下にエネルギーを与えるベッドミュージックがあると、広告が大幅に改善されることがよくあります。2つの方法があります:
- スキルオリジナルのトラック(サードパーティの権利なし):
python3 scripts/musica.py <プロジェクト名>/media/musica.wav --duracion <秒> --estilo energica|suave(動画全体の長さ+ 1秒を使用します)。意図的にシンプルで、歌ではなくベッドミュージックとして機能します。 - ユーザー自身の音楽。ただし、広告での使用権がある場合に限ります(TikTokやInstagramのトレンド音楽には通常権利がありません)。
media/にコピーされます。proyecto.jsonで有効化:"musica": {"archivo": "musica.wav", "volumen": 0.2}。音声がある場合は、音楽を音声より約10~14dB低く設定し(スキルのトラックでは0.2から開始)、聴いて確認します。
手順4 · 編集
python3 scripts/nuevo_proyecto.py <プロジェクト名> --tienda "名前" --formato 9:16 --plataforma meta --nivel 2
# <プロジェクト名>/proyecto.jsonをシーンで編集(references/escenas.md参照)
python3 scripts/armar.py <プロジェクト名> --cuadros 1.5,5,9,14 # 編集し、revision/にフレームをキャプチャ
トランジション:15種類とカットがあり、自動的にバラエティ豊かに選択されます(同じものを2回続けて使用しません)。シーンごとまたはスタイルごとに要求できます(references/transiciones.md)。references/revision.md(テキストが読める、商品を覆い隠していない、ロゴが適切に配置されている)でフレームを確認し、修正して繰り返します。レベル1/2/3:references/niveles.md。レベルはユーザーが選択します。レベル3はより時間がかかることを伝えます。
手順5 · レンダリングと納品
python3 scripts/armar.py <プロジェクト名> --render # -> salida/render_completa.mp4
python3 scripts/entregar.py <プロジェクト名>/salida/render_completa.mp4 <プロジェクト名>/salida/FINAL.mp4 [--velocidad V] [--solo-bajar]
python3 scripts/armar.py <プロジェクト名> --version historia --render # 短いバージョン
- 速度: 固定値はなく、話す速度に応じて動画ごとに決定されます。
habla.pyがリズム(1秒あたりの単語数)を測定し、提案します:遅い(< 2.2)→ 1.2倍;標準(2.2~3.0)→ 1.1倍;速い(> 3.0)→ 1.0倍(加速なし)。音声なし(商品のカットのみ)→ 1.0倍(ユーザーが別途要求した場合を除く)。これはガイドラインです。結果を確認し、ユーザーに確認してください。疑問がある場合は、両方のバージョンを納品します。 entregar.pyは-14 LUFSにノーマライズし、実際のピークを測定します:-1 dBTPを超える場合は、条件を満たすまでゲインを下げます。- 動画に音声も音楽もない場合(効果音のみ)、
--solo-bajarを使用して効果音を上げないようにします。 - 最終決定する前に、結果をユーザーに見せ(開く/送信)、変更点を尋ねます。
- 初回は動画を保存する場所を尋ね、プロファイル(
carpetaSalida)に記憶します。 - そのフォルダには最終バージョンのみを残します。作成した中間バージョンを削除することを提案します(削除前に確認)。
問題が発生した場合
- 「クリップXがmedia/にありません」:そのクリップで
preparar.pyを再実行します。 - 「比較」シーンがブロックされました:機密性の高いカテゴリの保護です。
references/politicas.mdを参照してください。 - レンダリング結果がキャプチャと異なる:
cd <プロジェクト名>/hf && npx hyperframes lint。 - ディスク容量不足:HyperFramesはレンダリングに数GBの一時領域を必要とします。
- フォントはレンダリング時にGoogle Fontsからダウンロードされます。インターネット接続が必要です。