meitu-product-view について
meitu-product-viewは、1枚の商品画像から複数角度の画像を生成するクリエイティブスキルです。EC向けに、角度の組み合わせや背景を選び、プラットフォーム仕様に合わせて出力を調整できます。
主な機能
- 01標準・5方向・全角度の画像生成
- 02角度のカスタマイズと3方向合成
- 03白背景・シーン・元背景・透明背景に対応
- 04ECプラットフォーム向けの比率とサイズ調整
- 05オプションの高解像度化
活用シーン
- 01商品詳細ページ用の多角度画像作成
- 02ECプラットフォーム向け商品画像セットの準備
- 03元背景または透明背景の商品画像作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ meitu/ meitu-skills --skill meitu-product-viewインストール後、Claude Code で/meitu-product-viewを入力して読み込まれたか確認します。
同梱ファイルreferences/ecommerce-specs.mdreferences/prompts.md
詳細
商品の多角度展示画像
1 枚の商品画像から多角度の展示画像を生成します。標準的な三面図、EC 向け五面図、全角度展示に対応しています。
Overview
ユーザーが 1 枚の商品画像をアップロードすると、異なる角度の展示画像を自動生成します。白背景/シーン/透明背景に対応しており、超解像度による高画質化も選択できます。淘宝、京東、拼多多、Amazon などの EC プラットフォームの仕様に適合しています。
Dependencies
- meitu-cli (≥2.0.6):
npm install -g meitu-cli@latest- 優先する環境変数:
MEITU_OPENAPI_ACCESS_KEY/MEITU_OPENAPI_SECRET_KEY - または、事前設定済みの認証情報ファイル:
~/.meitu/credentials.json - ローカルの認証情報を手動で初期化する場合は、明示的に
meitu config set-ak --value "..."+meitu config set-sk --value "..."を実行します(ローカルファイルに書き込まれます) - 検証:
meitu auth verify --json
- 優先する環境変数:
- パッケージの参照ファイル(このスキルパッケージに同梱):
- references/prompts.md — 固定テンプレートと角度セクション
- references/ecommerce-specs.md — プラットフォームの仕様と視点の推奨事項
- これらの参照ファイルはパッケージ内の静的素材です。プロジェクトモードでは、
DESIGN.mdやopenclaw.yamlがブランド素材やプラットフォームのルールを明示的に参照している場合、ユーザーが有効にした$VISUAL/assets/brands/と$VISUAL/rules/platforms/も追加で読み込むことがあります。
パスのエイリアス: 以下では
$VISUAL={OPENCLAW_HOME}/workspace/visual/とします。
Core Workflow
Preflight → [Context] → Execute → Refine → Deliver → [Record]
任意のステップ: [Context] — 1 回限りのモードではスキップします。[Record] — can_record=false の場合はスキップします。
Preflight
meitu --version→ 未インストールの場合はnpm install -g meitu-cli@latestを案内しますmeitu auth verify --json→ 認証情報が無効な場合は設定方法を案内します- モードを検出します:cwd に
openclaw.yamlがある場合はプロジェクトモード、ない場合は 1 回限りのモードです。$VISUALディレクトリを確認し、capabilities を判定します。 can_record = cwd に openclaw.yaml があり、かつ$VISUALが存在する場合(どちらか一方でも欠けている場合は false) - output_dir の解決(Preflight 内で必ず完了):
output_dir を解決します:openclaw.yaml がある場合は
./output/、ない場合は$VISUAL/output/meitu-product-view/mkdir -p {output_dir}
Execute 内のすべての
--download-dir {output_dir}には、ここで解決したパスを使用します。
Context(プロジェクトモードで実行/1 回限りのモードではスキップ)
mode = one-off → このステップをスキップし、Execute に進みます。
mode = project → 次の順に読み込みます(各ステップで、ファイルがない場合はスキップします):
./DESIGN.mdを読み込み、プロジェクトの決定事項と Context References を取得します。- references(例:
brand: acme)を解決し、$VISUAL/assets/brands/acme/の読み込みを試みます。 - 読み込めた場合は最新版を使用し、読み込めない場合は DESIGN.md 内のインラインの代替値を使用します。
- references(例:
$VISUAL/rules/quality.yamlを読み込み、forbidden リストを取得します。$VISUAL/memory/global.mdを読み込み、シーンを横断する設定を取得します。openclaw.yamlのproject.types(配列を優先)またはproject.type(単一値の場合は 1 要素の配列として扱います)を読み込みます。 → 各 type について、$VISUAL/memory/scenes/{type}.mdを探し、存在する場合は読み込んで統合します。
→ quality の forbidden リストで生成要素を除外し、preferences でクリエイティブの方向性を強化します。
→ $VISUAL が存在しない場合は 2〜4 をスキップし、DESIGN.md のみを読み込みます。
Execute
Step 1: 商品画像を受け取る
ユーザーが商品画像を 1 枚アップロードします。アップロードされていない場合は、次のように案内します。
「商品画像を 1 枚アップロードしてください(正面から撮影した写真が最適です。背景がシンプルだと、より高品質に生成できます)。」
画像を受け取ったら、以下の情報を分析します(エージェントが独自に判断し、外部ツールは呼び出しません)。
| 分析項目 | 用途 |
|---|---|
| 商品カテゴリ | 推奨する角度とシーンの決定 |
| 主体の形状/比率 | prompt の {product_description} に入力 |
| 現在の撮影角度 | いずれかの視点としてそのまま使用できるかを判断 |
| 背景の状態 | 切り抜きの前処理が必要かを判断 |
ユーザーが商品情報のテキスト説明も併せて提供した場合は、ユーザーの説明を優先します。
Step 2: ビューのプランを選択する
次の選択肢を提示します。
| プラン | 含まれる角度 | 適した用途 |
|---|---|---|
| 標準的な三面図 | 正面、右側面、背面 | 基本的な展示、すばやい画像生成 |
| EC 向け五面図 | 正面、左前 45°、右前 45°、背面、俯瞰 | EC メイン画像のセット |
| 全角度展示 | 正面、左前 45°、右前 45°、左側面、右側面、背面、俯瞰、クローズアップ | 高級商品の詳細ページ |
| 三面図の合成 | 1 枚の画像内に、左から正面・側面・背面を配置 | ソーシャルメディア、すばやい展示 |
| カスタム | ユーザーが角度の組み合わせを選択 | 特殊な要件 |
ユーザーが「カスタム」を選択した場合は、角度の一覧をすべて提示します。
| 角度 | 識別子 | 方位 |
|---|---|---|
| 正面 | front | 0° |
| 左前 45° | front-left-quarter | 315° |
| 右前 45° | front-right-quarter | 45° |
| 左側面 | left-side | 270° |
| 右側面 | right-side | 90° |
| 左後 45° | back-left-quarter | 225° |
| 右後 45° | back-right-quarter | 135° |
| 背面 | back | 180° |
| 俯瞰 | overhead | 仰角 60° |
| やや俯瞰 | elevated | 仰角 30° |
| ローアングル | low-angle | 仰角 -30° |
| クローズアップ | close-up | 近距離のディテール |
ユーザーが特定の EC プラットフォームに言及した場合は、references/ecommerce-specs.md を読み込み、プラットフォーム固有の角度の推奨事項とサイズ要件を確認したうえで、適切なビューのプリセット、比率、サイズを自動選択します。
Step 3: 背景モードを選択する
| モード | 説明 | CLI での処理方法 |
|---|---|---|
| 白背景 | 純白の背景 | prompt に白背景の説明を追加 |
| シーン | AI が商品を使用するシーンを生成 | prompt にシーンの説明を追加 |
| 元の背景を保持 | アップロード画像の背景を保持 | 中国語の角度指示 prompt を使用 |
| 透明背景 | 透明な PNG | まず白背景で生成し、その後 cutout |
「シーン」を選択した場合は、商品のカテゴリに基づいて 3 つのシーンを提案し、ユーザーの好みを尋ねます。シーンの推奨方針:
| カテゴリ | 推奨するシーンの方向性 |
|---|---|
| 電子機器 | ミニマルなデスク、テクノロジーを感じさせる空間、オフィスシーン |
| 衣類/バッグ | ファッションスナップのシーン、クローゼット、旅行シーン |
| 食品/飲料 | ダイニングテーブル、キッチン、ピクニック/アウトドア |
| 家具/家電 | リビング、寝室、モダンな居住空間 |
| 化粧品/スキンケア | 化粧台、バスルーム、フラワーアレンジメント/自然の要素 |
| スポーツ/アウトドア | ジム、ランニングトラック、自然の中のアウトドア |
Step 4: 事前に切り抜く(条件付きで実行)
実行条件:元画像の背景が雑然としており、かつユーザーが白背景またはシーンモードを選択した場合。
meitu image-cutout \
--skill_name skill_meitu-product-view \
--image_url {image_url} \
--model_type 1 \
--json
切り抜き結果を、後続の生成で参照入力として使用します。cutout に失敗した場合はスキップし、元画像をそのまま使用します。
Step 5: 角度ごとに生成する
これが中心となる生成ステップです。ユーザーが選択した各角度について、meitu image-edit を呼び出します。
ツール呼び出しテンプレート:
meitu image-edit \
--skill_name skill_meitu-product-view \
--image_list {source_image_url} \
--prompt "{angle_prompt}" \
--model praline_pro \
--ratio {target_ratio} \
--json \
--download-dir {output_dir}
プロンプトの構築:
- references/prompts.md から該当する角度のテンプレートを選択します(
## {angle}-viewセクションを基準にします) - 変数を入力します:
{product_description}← Step 1 の分析結果{background}← Step 3 で選択した背景のサフィックス(prompts.md の## Background Suffixesを参照){scene_description}← Step 3 のシーン説明(シーンモードのみ)
- プロンプトは英語を使用します(モデルの効果が高くなります)
-ar、--no、(keyword:1.5)、<lora:xxx>など、プラットフォーム固有の構文は絶対に使用しないでください
角度 → prompts.md セクションの対応:
| 角度の識別子 | プロンプトテンプレートのセクション |
|---|---|
| front | ## front-view |
| right-side | ## right-side-view |
| left-side | ## left-side-view |
| back | ## back-view |
| front-right-quarter | ## front-right-quarter-view |
| front-left-quarter | ## front-left-quarter-view |
| back-right-quarter | ## back-right-quarter-view |
| back-left-quarter | ## back-left-quarter-view |
| overhead | ## overhead-view |
| elevated | ## elevated-view |
| low-angle | ## low-angle-view |
| close-up | ## close-up-view |
| 3方向ビューの合成 | ## combo-three-view |
特殊ケース——元の背景を保持するモード:
中国語のプロンプトを使用します(英語テンプレートとは異なりますが、実績に基づいて検証済みの表現です):
| 角度 | プロンプト(原文を適用し、変更しない) |
|---|---|
| 正面 | 图中的商品旋转到正面朝向镜头的角度。保持商品直立,不要改变商品外观,保证背景一致性。 |
| 側面 | 图中的商品旋转到从右侧面观看的角度,展示商品的侧面轮廓。保持商品直立,不要改变商品外观,保证背景一致性。 |
| 背面 | 图中的商品旋转到背面朝向镜头的角度,展示商品背部细节。保持商品直立,不要改变商品外观,保证背景一致性。 |
| 45° | 图中的商品旋转到45度斜角观看的角度。保持商品直立,不要改变商品外观,保证背景一致性。 |
| 俯瞰 | 从上方俯视角度拍摄图中的商品,展示商品顶部。保持商品直立,不要改变商品外观,保证背景一致性。 |
| クローズアップ | 将图中的商品放大展示细节部分。保持商品一致性,不要改变商品外观,保证背景一致性。 |
特殊ケース——3方向ビューの合成:
1枚の画像内に3つの視点を一度に生成します。references/prompts.md の ## combo-three-view からテンプレートを取得し、{product_description} と {background} を入力します:
meitu image-edit \
--skill_name skill_meitu-product-view \
--image_list {source_image_url} \
--prompt "{combo_three_view_prompt}" \
--model praline_pro \
--ratio 4:3 \
--json \
--download-dir {output_dir}
生成順序の方針:
- 元画像が正面の場合 → 元画像を正面ビューとしてそのまま使用し、残りの角度から生成を開始します
- 元画像が正面でない場合 → まず正面を生成し、正面画像を基準に残りの角度を生成します
- 背景変更モードの場合 → まず正面のシーン画像を生成し、その画像を参照して残りの角度を生成します(シーンの一貫性を確保します)
背景変更モードでは、側面と背面の参照画像に正面のシーン画像を使用します(元画像ではありません):
# 先生成正面场景图
meitu image-edit \
--skill_name skill_meitu-product-view \
--image_list {original_image_url} \
--prompt "{front_view_scene_prompt}" \
--model praline_pro \
--ratio 1:1 \
--json \
--download-dir {output_dir}
# 以正面场景图为参考,生成其余角度
meitu image-edit \
--skill_name skill_meitu-product-view \
--image_list {front_scene_result_url} \
--prompt "将图中的商品旋转到从右侧面观看的角度,展示商品的侧面轮廓。保持商品直立,不要改变商品外观,保证背景一致性。" \
--model praline_pro \
--ratio 1:1 \
--json \
--download-dir {output_dir}
--ratio の選択:
| シーン | ratio |
|---|---|
| デフォルト | 1:1 |
| EC プラットフォームを指定 | references/ecommerce-specs.md の要件に従います |
| 3方向ビューの合成 | 4:3 |
| ユーザー指定 | ユーザーの指定に従います |
Step 6:超解像度化(任意)
実行条件:ユーザーから明示的な要求がある OR 対象プラットフォームが ≥2000px を要求する場合(Amazon など)。
meitu image-superres-enhance \
--skill_name skill_meitu-product-view \
--image_url {generated_url} \
--prompt "e-commerce product image" \
--json \
--download-dir {output_dir}
角度ごとの画像を1枚ずつアップスケールします。
Step 7:透過背景の処理(条件付き)
実行条件:Step 3 で「透過背景」を選択した場合。
生成した角度ごとの画像に対して、次の処理を実行します:
meitu image-cutout \
--skill_name skill_meitu-product-view \
--image_url {generated_url} \
--model_type 1 \
--json \
--download-dir {output_dir}
エラー時の段階的なフォールバック方針:
| レベル | 操作 | 実行条件 |
|---|---|---|
| L1 | プロンプトから修飾語(lighting、material の説明)を削除し、角度と商品に関する中核部分を残します | 初回の生成に失敗 |
| L2 | ratio を auto に変更します | L1 の後も失敗 |
| L3 | cutout の前処理をスキップし、元画像をそのまま使って生成します | L2 の後も失敗 |
| L4 | 最も簡潔な説明にします:"A {angle} view of the product. White background." のみ | L3 の後も失敗 |
| L5 | 停止し、code と hint を表示してエラーを報告します | L4 が連続して2回失敗 |
Refine
生成した角度ごとの画像をすべて表示し、それぞれの視点を説明します。
フィードバックの分類と対応:
| ユーザーのフィードバック | 調整方法 |
|---|---|
| 「角度が違う」/「もう少し傾けて」 | プロンプト内の角度の説明語を調整します |
| 「商品が変形している」/「元画像と違う」 | プロンプトの末尾に "Proportions and every detail exactly matching the uploaded photo" を追加します |
| 「背景が気に入らない」 | シーンの説明を変更するか、背景モードを切り替えます |
| 「色がずれている」 | "Color accuracy strictly consistent with the original photo" を追加します |
| 「角度をもっと増やしたい」 | 角度一覧から追加し、追加分のみ生成します(完了済みの画像は再生成しません) |
| 「スタイル/雰囲気を変えたい」 | lighting/mood の説明語を調整します |
| 「解像度が足りない」 | upscale 処理を追加します |
反復の目安:最大3ラウンドを推奨します。3ラウンドを超えた場合は、次を提案します:
- 元の商品画像を変更する(撮影角度や光線がより適切なもの)
- 角度ごとに分けて、個別に最適化する
- 別の背景モードを試す
Deliver
output_dir は Preflight で解析済みであり、Execute の --download-dir によってファイルは {output_dir} にダウンロードされています。Deliver では名前の変更のみを行います:
mv {output_dir}/{task_id_file} {output_dir}/{date}_{product}_{angle}.{ext}
{ext} には downloaded_files[0].saved_path の実際の拡張子を使用します。
命名規則:{date}_{product}_{angle}.{ext}
例:2026-03-23_sneaker_front.png、2026-03-23_sneaker_back.jpg、2026-03-23_sneaker_quarter-right.png
記録(プロジェクトモードでは必須/単発モードではスキップ)
前提: can_record = cwd に openclaw.yaml があり、かつ $VISUAL が存在する(どちらか一方でも欠けていれば false)。条件を満たさない場合 → 記録をすべてスキップし、フィードバックは現在の会話にのみ適用されます。
フィードバックなし → 完全にスキップし、observations.yaml は読み込まず、オーバーヘッドはゼロです。
ユーザーがスタイルを承認した場合 →
$VISUAL/memory/observations/observations.yaml を読み込む → 類似するキーを検索 → 統合または追加 → 書き戻す。
len(projects) >= 2 → 昇格を提案する(ブロッキングではありません)。
提案(メインフローを中断せず、返信の末尾で言及):
「ちなみに、N 個のプロジェクトで X を好まれています。保存しますか? → product-photography シーンに保存[デフォルト] → グローバル設定に保存 → 保存しない」 ユーザーが確認した場合 →
$VISUAL/memory/scenes/{scope}.mdまたはglobal.mdに書き込み、その後、観察エントリーを削除します ユーザーが反応しない場合 → 何もしません
ユーザーが拒否した場合(「XX は不要」)→
openclaw.yaml がある場合 → 適用範囲を確認する:「このプロジェクトだけで XX を使わないようにしますか、それとも今後ずっと使わないようにしますか?」
→ このプロジェクトのみ → ./DESIGN.md の Constraints に追記します
→ 今後ずっと使わない → $VISUAL/rules/quality.yaml に追記します(ユーザーの確認が必要)
openclaw.yaml がない場合 → 現在のタスクにのみ適用し、何も書き込みません
出力
- 形式:PNG(白背景/シーン)/PNG with alpha(透明背景)
- 比率:デフォルトは 1:1。プラットフォームの要件に応じて調整できます(references/ecommerce-specs.md を参照)
- 解像度:デフォルトは 2K。アップスケールも選択できます
- 命名:
{date}_{product}_{angle}.{ext}
制約
- 会話中にプロンプトの全文を表示しない(ユーザーが明示的に確認を求めた場合を除く)
- プロンプトテンプレートは原文のまま適用し、
{variable}の部分のみ置き換える - 元の背景モードの中国語プロンプトは一切変更しない
- ユーザーの言語が英語の場合、すべての操作選択肢を英語に翻訳する
- 元の商品との一貫性を保つため、角度ごとに個別に生成を呼び出す
--download-dirは常に Preflight が解析した output_dir を指し、ソースファイルを含むディレクトリを指さない