meitu-stickers について
meitu-stickersは、アップロードした写真から4コマのステッカー画像を作るスキルです。内蔵スタイルとカスタムスタイルに対応し、確認後に4枚へ分割でき、必要に応じてGIFにも変換できます。
主な機能
- 012×2のステッカー画像を生成
- 024種類の内蔵スタイルとカスタムスタイル
- 03複数写真の合成
- 04確認後に4枚のステッカーへ分割
- 05ステッカーをGIFに変換
活用シーン
- 01人物や動物の写真をステッカー化
- 02複数写真の被写体を合成してステッカー作成
- 03ピクセル風やクレイ風のステッカーを試作
- 04選んだステッカーをアニメーションGIF化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ meitu/ meitu-skills --skill meitu-stickersインストール後、Claude Code で/meitu-stickersを入力して読み込まれたか確認します。
同梱ファイルreferences/prompts.md
詳細
Meitu Stickers
概要
ユーザーがアップロードした写真から、複数のスタイルの四分割ステッカー(2x2 grid)を生成し、独立した4枚のステッカーに分割します。指定したステッカーまたはすべてのステッカーを、アニメーション GIF ステッカーに変換することもできます。内蔵の4種類のスタイル(Q版、3D粘土、ピクセルアート、Emoji)と、ユーザー定義のスタイルに対応しています。
依存関係
- tools: meitu-cli — 美図 AI オープンプラットフォーム CLI(画像生成・編集、動画生成、形式変換)
- インストール:
npm install -g meitu-cli@latest(パッケージ名は meitu-cli)
- インストール:
- 認証情報:美図 AI オープンプラットフォームの API 認証情報
- 環境変数:
MEITU_OPENAPI_ACCESS_KEY/MEITU_OPENAPI_SECRET_KEY - または設定ファイル:
~/.meitu/credentials.json - 環境変数を優先:
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
- 環境変数:
- workspace(任意):
{OPENCLAW_HOME}/workspace/visual/- 見つからない場合 → ナレッジの読み込みをすべてスキップします。スキルはこのディレクトリがなくても動作します。
パスの別名: 以下では、
$VISUAL={OPENCLAW_HOME}/workspace/visual/です。
コアワークフロー
Preflight → [Context] → Execute → Refine → Deliver → [Record]
↑ 创意型任务执行 ↑ 项目模式时执行
↑ 工具型任务跳过 ↑ 一次性模式跳过
事前確認
meitu --version→ インストールされていない場合はnpm install -g meitu-cli@latestを案内します。meitu auth verify --json→ 認証情報が無効な場合は設定方法を案内します。- モードを検出します:cwd に
openclaw.yamlがある場合はプロジェクトモード、ない場合は単発モードです。$VISUALディレクトリを確認し、利用可能な機能を特定します。 can_record = cwd に openclaw.yaml があり、かつ$VISUALが存在する場合(どちらか一方でも欠けている場合は false) - output_dir の解決(事前確認中に必ず完了):
output_dir を解決します:openclaw.yaml →
./output/| それ以外 →$VISUAL/output/meitu-stickers/mkdir -p {output_dir}
コンテキスト(クリエイティブなタスクかつプロジェクトモードの場合に実行)
mode = one-off → この手順をスキップし、Execute に進みます。
ユーザーがブランドアセットを指定しており、かつ $VISUAL が存在する場合 → 必要に応じて $VISUAL/assets/ のみを読み込みます。
mode = project → 次の手順を実行します:
./DESIGN.mdを読み込みます。- Context References を抽出します →
$VISUAL/assets/または$VISUAL/rules/のグローバルアセットを読み込み、読み込めない場合は DESIGN.md のインラインの代替値を使用します。 - quality.yaml → global.md → scenes/{type}.md を読み込みます(type は openclaw.yaml の
project.types(配列を優先)またはproject.typeから取得します。どちらもない場合はスキップします)。 → quality の禁止リストに従って生成要素を除外し、preferences に基づいてクリエイティブな方向性を強化します。design が null の場合は、Execute の後に作成します。
実行
入力を分類
| シナリオ | 条件 | アクション |
|---|---|---|
| A — 鮮明な被写体が写った写真 1 枚 | ユーザーが識別可能な被写体(人/動物/キャラクター/建物/製品/食べ物)が写った画像を 1 枚アップロード | → スタイルを選択 |
| B — 複数の写真 | ユーザーが画像を 1 枚より多くアップロード | → 合成 → スタイルを選択 |
| C — すでにスタンプ風 | ユーザーの画像がすでに何らかのスタンプ風 | → スタイルを選択し、仕上げ/編集リクエストとして扱う |
| D — 画像未アップロード | 画像がない | アップロードを促すメッセージを返信(下記参照)し、アップロードを待つ |
シナリオ D の返信: 「写真を 1 枚アップロードしてください。スタンプを作成します〜」 「グループ」「セット」など、複数画像を示すキーワードが含まれる場合は、追加で「複数人で一緒に写った写真にしたい場合は、画像を複数枚選択して一度にアップロードしてくださいね」と案内します。
複数写真の合成(シナリオ B のみ)
meitu text-to-image \
--skill_name skill_meitu-stickers \
--image_list "<image_url_1>" "<image_url_2>" \
--prompt "将多张图片主体物合成一张合照(如第一张照片的人物与第二张照片人物合照),{user_pose_requirement},保持主体物样貌相似度不变,保持图片风格不变" \
--json --download-dir {output_dir}/composite
{user_pose_requirement}:ユーザーがポーズ/交流を指定している場合は追加し、それ以外の場合はこの節を省略します。downloaded_files[0].saved_pathから合成結果を読み込み、Generate Sticker Grid の元画像として使用します。
スタイルを選択
スタイル識別の判断表:
| ユーザーのキーワード | スタイル ID | 説明 |
|---|---|---|
| Q 版、chibi、プリクラ、かわいい Q 版 | chibi | 大きな頭と小さな体、丸みのある顔立ち、誇張された表情 |
| 3D、粘土、clay、粘土細工 | clay | 3D 粘土/プラスチック粘土の質感、柔らかく丸みのある形、マットな質感 |
| ピクセル、pixel、8bit、レトロゲーム | pixel | ピクセルアート風、くっきりしたピクセルの輪郭、限られたカラーパレット |
| emoji、絵文字、丸顔 | emoji | 太い輪郭線、フラットな色使い、シンプルな顔立ち、丸い顔 |
| その他の指定スタイル(「水彩」「サイバーパンク」など) | custom | ユーザーの説明に基づいて prompt を作成 |
| スタイルの指定なし | — | 積極的に質問します(下記参照) |
スタイルの指定がない場合の質問: 「どんなスタイルのスタンプがほしいですか?以下の組み込みスタイルに対応しています: 🎨 Q 版 — 頭が大きくてかわいいスタイル 🧸 3D 粘土 — 立体的な粘土細工風 👾 ピクセル風 — レトロゲーム風 😊 Emoji — 丸顔のフラットスタイル
「水彩風」「サイバーパンク」など、お好きなスタイルを伝えていただくこともできます〜」
スタンプグリッドを生成
Prompt テンプレート: references/prompts.md を参照してください。
- 対応するスタイルの section(
## chibi/## clay/## pixel/## emoji/## custom)を選択します。 ## GRID_CONSTRAINTSをつなげて、生成結果をimage-grid-splitで正しく分割できるようにします。
スタイル → コマンドの判断表:
| スタイル ID | コマンド | 理由 |
|---|---|---|
chibi | text-to-image --image_list | 実写画像を参考にしてアートスタイル化する(頭の大きな Q 版) |
clay | text-to-image --image_list | 実写画像を参考にして 3D 粘土風にする |
pixel | text-to-image --image_list | 実写画像を参考にしてピクセル風にする |
emoji | text-to-image --image_list | 実写画像を参考にしてフラットな絵文字風にする |
custom(画風系:水彩/サイバーパンク/油絵など) | text-to-image --image_list | 2.0.6 では、スタイル化には参考画像を使ったテキストから画像への生成を優先します |
custom(写実系:ポートレート/証明写真など) | text-to-image --image_list | 人物の特徴を維持しつつ、旧式の image-edit スタイルモデルへの依存を避けます |
custom(不確定) | text-to-image --image_list | ルーティングの分岐を減らすため、参考画像を使った生成に統一します |
説明: 現在の CLI は、明示的に高品質な編集を行う経路として
image-edit --model nougatに対応しています。ただし、スタンプのシナリオでは引き続きtext-to-image --image_listを優先します。4 分割のスタンプには、参考画像を使ったテキストから画像への生成経路が適しており、スタイルと構図をより安定して制御できるためです。
生成コマンド:
meitu text-to-image \
--skill_name skill_meitu-stickers \
--image_list "<source_image_url>" \
--ratio 1:1 \
--size 2K \
--prompt "{STYLE_PROMPT} {GRID_CONSTRAINTS}" \
--json --download-dir {output_dir}
{STYLE_PROMPT} はスタイルの種類(chibi / clay / pixel / emoji / custom)を指定します。
エラー時のフォールバック戦略(L1-L5):
| Level | 操作 | 詳細 |
|---|---|---|
| L1 | 優先度の低い修飾語を削除 | スタイル prompt の説明的な修飾(「matte clay texture with subtle highlights」など)を削除し、主要なスタイル語句と GRID_CONSTRAINTS は残します |
| L2 | スタイルの説明を簡略化 | スタイル prompt を 1 文に短縮します。例:chibi → "2x2 grid of chibi stickers from this photo, 4 expressions" + GRID_CONSTRAINTS |
| L3 | 任意の入力を削除 | N/A(元画像は必須入力です) |
| L4 | 必要最小限の要素に絞る | prompt → "2x2 sticker grid, 4 stickers, {style} style, white background, well separated" |
| L5 | エラーを報告して停止 | 2 回連続で失敗した場合、code と hint を添えてユーザーにエラーを報告します |
ユーザーに 4 分割グリッドを表示し、確認を待ってから画像を分割します。 grid-split を直接実行しないでください。 → Refine に進みます
ブラッシュアップ
Phase 1: 4コマグリッドの確認
生成した 2x2 グリッドを表示し、使用したスタイルを説明して、次のように尋ねます: 「こちらが生成した{style_name}スタイルの4コマグリッドのステッカーです。全体の仕上がりはいかがですか?よろしければ、4枚の独立したステッカーに切り分けますね〜」
ユーザーの返信を待ちます:
フィードバックの分類と対応:
| フィードバックの種類 | 例 | 対応方法 |
|---|---|---|
| スタイルの変更 | 「ピクセル風にして」「3Dを試してみて」 | Select Style → Generate Sticker Grid に戻る |
| 表情の調整 | 「2つ目の表情は大げさすぎる」「もっとかわいくして」 | prompt の表情に関する説明を調整 → Generate Sticker Grid |
| スタイルの細部を調整 | 「もう少し鮮やかな色にして」「線を太くして」 | prompt に修飾表現を追加 → Generate Sticker Grid |
| 切り分けの問題 | 「ステッカー同士が近すぎる」「重なっている」 | GRID_CONSTRAINTS の間隔指定を強化 → Generate Sticker Grid |
| 満足 | 「いいよ」「大丈夫」「満足」 | → Phase 2 へ進む |
反復は最大 3 回までを推奨します。それを超えた場合は、方向性の調整や要望の分割を積極的に提案します。
Phase 2: 切り分け + ステッカーの確認
ユーザーが4コマグリッドを確認したら、切り分けを実行します:
meitu image-grid-split --image_url "<grid_image_url>" --json --download-dir {output_dir}/split --skill_name skill_meitu-stickers
image-grid-split が 4 枚未満の画像を返した場合(グリッドの間隔が検出に不十分):
- 間隔をより強調したプロンプトで 2x2 グリッドを再生成します。次の文を追加します:"Ensure each sticker is clearly separated with at least 25% white space between them. Each sticker must be a completely independent illustration with no visual connection to adjacent stickers."
image-grid-splitを再試行します。それでも 4 枚未満の場合は、グリッド画像をそのまま渡し、ユーザーに伝えます。
独立したステッカー 4 枚すべてを一度に表示(すべての画像をダウンロードした後、同じ返信内ですべて表示し、分割して表示しないでください)し、次のように尋ねます: 「切り分けました〜 この中の一部または全部を動くステッカー(GIF)にしますか?番号(例:1、3)を伝えるか、「全部」と言ってください。不要な場合は「満足」と伝えていただければ、保存します〜」
ユーザーの返信を待ちます:
- GIF は不要 → Deliver へ進む
- GIF への変換を指定(1枚/複数/全部)→ GIF 変換を実行(以下)→ 結果を表示 → Deliver へ進む
GIF 変換の手順(1枚ずつ順番に実行):
a. Image to Video:
meitu image-to-video \
--skill_name skill_meitu-stickers \
--image_list "<selected_sticker_url>" \
--prompt "{style_name} character performing a simple animated expression, loopable motion" \
--json \
--download-dir {output_dir}/video
非同期の結果を待ちます(CLI が自動でポーリングし、動画は {output_dir}/video にダウンロードされます)。
b. 動画をユーザーに表示({output_dir}/video にダウンロード済み)。動きのプレビューをユーザーに確認してもらいます。
c. Video to GIF(image-to-video でダウンロードしたローカルの動画ファイルを使用):
meitu video-to-gif --video_url "{output_dir}/video/<video_task_id_file>" --prompt "transparent animated sticker" --json --download-dir {output_dir}/gif --skill_name skill_meitu-stickers
ユーザーが「全部」を選んだ場合は、すべてのステッカーを順番に処理します(1枚ずつ、画像→動画→動画を表示→GIF の順で処理し、その後次へ進みます)。 複数を選んだ場合(例:「1 と 3」)は、指定されたものを順番に処理します。
Deliver
ファイルは output_dir にあります(生成時に --download-dir を使用)。rename するだけです:
mv {output_dir}/split/{task_id_file} {output_dir}/{YYYY-MM-DD}_{style}-sticker-{n}.{ext}
アニメーション GIF → mv {output_dir}/gif/{task_id_file} {output_dir}/{YYYY-MM-DD}_{style}-sticker-{n}-animated.{ext}
Record(プロジェクトモードの場合に実行)
can_record = cwd に openclaw.yaml があり、かつ $VISUAL が存在する(どちらか一方でも欠けている場合は false)→ false の場合はスキップします。一時モードではフィードバックは現在の会話内でのみ有効です。
例外:一時モードでユーザーが同じ好みを繰り返し表明した場合 → Agent MAY $VISUAL/rules/quality.yaml への記録を提案します
ユーザーがスタイルを承認した場合 →
$VISUAL/memory/observations/observations.yaml を読み込む → 類似する key を確認 → 統合または追加 → 書き戻す。
len(projects) >= 2 の場合 → 昇格を提案します(フローを妨げません)。
昇格を妨げずに提案する(主なフローを中断せず、返信の末尾で言及する)→ 承認されたら → 対象に書き込み + observation エントリーを削除
ユーザーが拒否した場合(「XX はやめて」)→ openclaw.yaml がある場合 → 適用範囲を確認 → プロジェクト:./DESIGN.md Constraints/全体:quality.yaml openclaw.yaml がない場合 → 現在のタスクのみ
フィードバックがない場合 → すべてスキップします。
Output
- 独立したステッカー 4 枚(グリッドから切り分け)、スタイルはユーザーの選択に一致
- 任意:動く GIF ステッカー(選択したステッカー)
- ファイル名:
{YYYY-MM-DD}_{style}-sticker-{n}.{ext}(例:2026-03-22_chibi-sticker-1.jpg、2026-03-22_pixel-sticker-3-animated.gif)