mcpField
P
product-shots

product-shots

github.com/motifulクリエイティブ・メディア121142 回インストール20 週間前に更新
リポジトリ

product-shots について

product-shotsのビジュアル制作依頼を振り分けるスキルです。回数を制限した質問で意図を明確にし、プラットフォームや業界に合わせたブリーフを作成して、画像生成は行わず専門スキルへ引き継ぎます。

主な機能

  1. 01構造化された意図確認
  2. 02質問は最大5ラウンド
  3. 03プラットフォーム・業界別のビジュアル指針
  4. 04ブリーフへのBrand Kit情報反映
  5. 055つの専門スキルへの振り分け
  6. 06画像を直接生成しない

活用シーン

  1. 01曖昧な依頼からクリエイティブブリーフを作成
  2. 02Amazon商品画像の依頼を専門スキルへ振り分け
  3. 03プラットフォーム別のSNS・広告素材を準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/motiful/product-shots --skill product-shots

インストール後、Claude Code で/product-shotsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
ad-creative-flow.md
brief-output-and-routing.md
clarification-stages.md
defaults-and-state-machine.md
design-element-standards.md
hard-constraints.md
industry-visual-dna.md
platform-visual-dna.md
suggestion-format.md

詳細

Hub

構造化された質問を通じてユーザーの意図を明確にする専門的なデザインガイダンスを提供し、ビジュアル DNA、プロンプトパッチ、業界固有のスタイルルールを盛り込んだ、各プラットフォームですぐに使えるクリエイティブブリーフを作成します。プロダクトショットスキルのエコシステムにおける意図ルーターとして機能し、0〜5ラウンドの確認ループを管理してブリーフを確定し、5つの下流ビジネススキル(product-shots-main-image / product-shots-detail-page / product-shots-multi-angle / product-shots-ad-creative / product-shots-social-post)のいずれかに作業を振り分けます。

エンゲージメントの原則

これらのルールはすべてのセクションに適用されます。実行する前にお読みください。

  1. 確認回数の上限を厳守する — 確認は最大5ラウンドまでとし、brief_completeness > 0.8 になったら早めに終了します。無期限に繰り返してはいけません。
  2. ユーザーと同じ言語を使う — ユーザーの入力から言語を自動検出し、すべての応答で同じ言語を使います。こちらから言語を切り替えてはいけません。
  3. 優先順位に沿って質問する — クリエイティブの方向性をどれだけ変えるかに応じて、「プラットフォーム > スタイルの好み > バリエーション数」の順に質問します。影響の大きい質問を先にします。
  4. 1つの質問につき1つの項目に絞る — 各ラウンドでは、1つの項目だけを質問します。1回のやり取りで複数の質問を連ねてはいけません。
  5. 選択肢には <suggestion> を使う — 提示する各選択肢を <suggestion> タグで囲み、UI 上でクリック可能なチップとして表示されるようにします。これと並行して、ユーザーが自由入力することも可能です。
  6. 振り分け前にビジュアル DNA を注入する — すべてのブリーフには、振り分け前にプラットフォーム用プロンプトパッチ、業界用プロンプトパッチ、スタイル修飾子、統一されたネガティブ制約パッチを含めます。
  7. ネガティブ制約は必須とする — 統一プロンプトパッチ(social media UI, screenshot, watermark, messy background, distorted text, phone frame, app interface)を、生成するすべてのブリーフに必ず追加します。
  8. Hub はルーターであり、生成器ではない — Hub は画像生成ツールを直接呼び出しません。構造化されたブリーフを作成し、下流スキルに振り分けます(適切な専門スキルがない場合は、ブリーフを直接返します)。
  9. 情報がない場合は既定値を適用する — optimization_target=engagement、target_audience=general、variant_count=3、style_direction は業界テーブルから導出、format=platform_default とします。
  10. ブランドキットを主要なアセットとして扱う — ステージ2(ビジュアルアセット)では、ユーザー提供のブランドキット(ファイルパスまたはインラインフィールド)を、製品写真/参考写真とともに受け付けます。詳しくは下記の「§ブランドキットのリファレンス」を参照してください。

実行手順

route_design_request(user_request) → brief + downstream_skill_id

# Step 0 — Pin hard constraints (MUST, before any decision)
load references/hard-constraints.md
    → Negative Constraints prompt patch + 4 forbidden categories
keep these in working context for Step 5 (DNA injection) and Step 7 (route + handoff).

# Step 1 — Initialize Brief State
state = BriefState()
    # Stage 1 fields: platform / format / dimensions / ratio / content_topic
    # Stage 2 fields: visual_assets / asset_urls
    # Stage 3 fields: optimization_target / target_audience
    # Stage 4 fields: style_direction / brand_colors / brand_fonts / brand_logo
    # Derived: industry / asset_type / variant_count / is_promotion / product_category
    # Metadata: round_count / completeness
language = detect_language(user_request)   # zh / en — locks all replies to this language

# Step 2 — Dynamic Clarification Loop (at most 5 rounds)
while state.round_count < 5 AND completeness <= 0.8:
    next_stage = select_next_stage(state)
        # Stage 1: Task Skeleton    → Platform + Asset Type + Topic
        # Stage 2: Visual Assets    → product photo / reference / Brand Kit / none
        # Stage 3: Business Goal    → optimization_target + audience
        # Stage 4: Style & Brand    → style direction + brand constraints
    question, options = generate_question(next_stage, references/clarification-stages.md)
    emit question wrapped in <suggestion> tags          # see references/suggestion-format.md
    state.update(user_answer)
    state.round_count += 1
    completeness = calculate_brief_completeness(state)  # weighted, threshold = 0.8

# Step 3 — Apply Defaults for missing fields
state = apply_defaults(state)
    # see references/defaults-and-state-machine.md §Default Values

# Step 4 — Identify Industry + Asset Type (auto-derive)
state.industry   = identify_industry(state.content_topic)
    # references/industry-visual-dna.md §Industry Matching Logic
state.asset_type = identify_asset_type(user_request, state.platform)
    # references/defaults-and-state-machine.md §Asset Type Identification
    # main_image / secondary_image / aplus / multi_angle / ad / post

# Step 5 — Inject Visual DNA + Negative Constraints
brief = build_brief(state)
brief.prompt          += load_platform_dna(state.platform, user_request).prompt_patches
                            # references/platform-visual-dna.md
brief.prompt          += load_industry_dna(state.content_topic).prompt_patches
                            # references/industry-visual-dna.md
brief.style_modifier   = style_modifier(state.style_direction)
                            # references/design-element-standards.md §Style Modifiers
brief.negative_prompt  = NEGATIVE_CONSTRAINTS.unified_prompt_patch
                            # references/hard-constraints.md
if state.platform == "Google Display":
    brief.negative_prompt += ", text overlay"   # platform-specific extension

# Step 6 — Ad-Creative Special Flow (if asset_type == ad)
if is_ad_creative_flow(user_request, state.asset_type):
    brief = run_ad_creative_flow(user_request, state.asset_type)
        # 6-stage ad questionnaire + AD_BRIEF_TEMPLATE
        # AD_PLATFORM_CONSTRAINTS for Google Display / TikTok / multi-platform

# Step 7 — Route + Handoff
brief.route_to = route_to_next_skill(brief)
                            # references/brief-output-and-routing.md
    # product-shots-main-image / product-shots-detail-page / product-shots-multi-angle / product-shots-ad-creative / product-shots-social-post
emit brief in STANDARD_BRIEF_TEMPLATE (or AD_BRIEF_TEMPLATE if ad flow)
hand off to downstream skill_id

# Self-check gate
audit(brief) →
    assert brief.platform IS NOT NULL
    assert brief.content_topic IS NOT NULL
    assert brief.negative_prompt CONTAINS unified_prompt_patch
    assert brief.route_to IN allowed_targets
    assert response_language == language        # never switch unprompted
    assert no question chain (one dimension per turn)
    if any fail → revise + re-emit; if all pass → deliver Brief and route

モジュールファイルの目次

  • references/hard-constraints.md — 禁止制約。禁止される4つのカテゴリと、統一プロンプトパッチ(19語の文字列)。MUSTレベル。EP Step 0で読み込まれ、引き渡し前に再検証されます。
  • references/clarification-stages.md — 明確化メカニズム+明確化ステートマシン(フィールド一覧、優先順位ロジック、終了条件を含む4つのステージ)。
  • references/platform-visual-dna.md — プラットフォームのビジュアルDNA。Eコマースプラットフォーム(Amazonを主要対象とし、Shopify/AliExpress/TikTok Shop/独立サイトを含む)とソーシャルプラットフォーム(Instagram、X/Twitter、YouTube、LinkedIn、Facebook、TikTok、Pinterest)、およびRedNote/WeChatの条件付き表示ルール。
  • references/industry-visual-dna.md — 業界のビジュアルDNA。7つの業界について、prompt_patches、color_direction、key_avoid、composition_rulesを定義し、業界マッチング用のキーワードテーブルも含みます。
  • references/design-element-standards.md — デザイン要素の標準。テキスト階層+色と構図(6-3-1ルール)+スタイル修飾子。
  • references/ad-creative-flow.md — 広告クリエイティブ専用フロー。トリガー検出、広告の明確化における6段階の優先順位、AD_PLATFORM_CONSTRAINTS、AD_BRIEF_TEMPLATE。
  • references/brief-output-and-routing.md — 標準Brief出力(+Briefテンプレート)とルーティングルール。STANDARD_BRIEF_TEMPLATE、完全性スコアリング、条件付きの5つのルーティング先。
  • references/defaults-and-state-machine.md — デフォルト値+ステートマシンのフィールド一覧(BriefState)+状態遷移。EP Steps 1/3をサポートするモジュール。
  • references/suggestion-format.md — 質問提案の形式+重要な提案。XMLラッパールールと「複数の質問をしない」という指示(全角句読点を維持)。

セクション一覧

Goal
Language Rule
Clarification Mechanism                          → references/clarification-stages.md §Mechanism
Clarification State Machine                      → references/clarification-stages.md §State Machine
   Stage 1: Task Skeleton — Platform + Asset Type + Topic
   Stage 2: Visual Assets — Key Visual Materials
   Stage 3: Business Goal & Audience — Optimization Direction
   Stage 4: Style & Brand Constraints — Visual Style Rules
Platform Visual DNA                              → references/platform-visual-dna.md
Industry Visual DNA                              → references/industry-visual-dna.md
Design Element Standards                         → references/design-element-standards.md
   Text Hierarchy
   Color & Composition
   Style Modifiers
Negative Constraints                             → references/hard-constraints.md
Ad Creative Special Flow                         → references/ad-creative-flow.md
Standard Brief Output                            → references/brief-output-and-routing.md §Brief Output
   Brief Template
Routing Rules                                    → references/brief-output-and-routing.md §Routing
Suggested Question Format                        → references/suggestion-format.md §Question Format
IMPORTANT!Suggestion                             → references/suggestion-format.md §IMPORTANT

目標

商品写真のビジュアル制作依頼に対応する専門的な窓口となります。構造化された0~5ラウンドの対話を通じてユーザーの意図を明確にし、プラットフォーム/業界のビジュアルDNAと禁止制約で依頼内容を充実させたうえで、確定したBriefを最適な下流の業務スキルに振り分けます。Briefはプラットフォームですぐに使える状態で、ビジュアルDNAが反映され、完全性が確認済み(≥ 0.8)であり、ルーティングされている必要があります。

言語ルール

Always respond in the user's language.
Detection: auto_detect_from_user_input
Matching: MUST match user's language in ALL responses
Forbidden: NEVER switch languages proactively

IF user writes in English  THEN respond in English
IF user writes in Chinese  THEN respond in Chinese

重要 — 提案の形式

IMPORTANT!Suggestion: Always use the format <suggestion> to guide the user.
DO NOT ASK several questions!

Example: use the format <suggestion> to provide options like
Amazon (main image / A+ Content) / Instagram (Feed or Story) / TikTok / Facebook /
Pinterest / Other platform.

XML形式:

<suggestion>
  <label>Button text</label>
  <prompt>Message sent when clicked</prompt>
</suggestion>

これはフロントエンドのレンダリング指示です。選択肢のセットは<suggestion>タグで囲み、UI上でクリック可能なチップとして表示されるようにします。

スキル間の注記

Hubは、商品写真スキルエコシステムの意図ルーターです。明確化されたすべてのBriefを、次の下流の業務スキルのいずれかに振り分けます。

下流スキルルーティング条件
product-shots-main-imageEコマースのメイン画像/サブ画像(1:1のカルーセル)— 広告以外
product-shots-detail-pageAmazon A+ Content/21:9のヒーローバナー/3:2のモジュール
product-shots-multi-angleアパレル/アクセサリーのモデルの9アングル一貫性シリーズ
product-shots-ad-creativeasset_type == 'ad' OR is_promotion == True(IG、FB、TikTok、LinkedIn、Google、YouTube、Pinterest、Xが対象)
product-shots-social-postIG/TikTok/FB/Pinterest/RedNote/LinkedIn/X向けのオーガニックなソーシャル投稿 — 広告以外

スキル間の一貫性:

  • ここで定義する7業界のビジュアルDNAは、product-shots-social-post、product-shots-ad-creative、および下流の業務スキルと共有されます。
  • 19語の統一された禁止制約プロンプトパッチは下流に引き継がれます。受け取る側のスキルが継承し、重複して追加することはありません。
  • Brand Kit(Stage 2 Visual Assets)はユーザー提供の入力で、ファイルパスまたはインラインフィールドの形式です。指定されている場合、そのフィールドはBriefに引き継がれ、下流のスキルはbrand_colors/brand_fonts/brand_logoを使用します。仕様の全容は、以下の§Brand Kit Referenceを参照してください。
  • 画像生成バックエンド:下流のスキルでレンダリングの準備が整うと、基盤となるAPI(OmniMaaS/OpenAI/Gemini)を抽象化する、商品写真用の画像生成エンジンproduct-shots-image-genに処理が引き渡されます。

ツール

  • request_feedback — <suggestion> XML 形式を通じて実装されています(明示的な RPC ツール名ではなく、構造化されたチップを介して提供される UX パターンです)。
  • 画像生成は直接呼び出しません。Hub が Brief を作成し、下流のビジネススキルが product-shots-image-gen を呼び出します。

ブランドキットの参照

State Machine のステージ 2(ビジュアルアセット)では、商品写真/参照画像/なしと並ぶ構造化オプションの 1 つとして、ブランドキットを選べます。ブランドキットは、ブランドのビジュアルアイデンティティを記述するユーザー提供のファイル(パス)またはインラインフィールドです。

フィールド必須形式
brand_colors推奨16 進コードまたは名前付きパレット
brand_fonts推奨フォントファミリー名(見出し用 1 種類+本文用 1 種類)
brand_logo推奨ファイルパスまたは URL
brand_voice任意トーンを表す語句(例:「親しみやすい/権威ある」)
sample_assets任意ビジュアルの一貫性を保つための参照画像 1~3 枚

ユーザーがブランドキットを提供すると、Hub はそのフィールドを Brief に引き継ぎ、下流のビジネススキル(product-shots-main-image、product-shots-detail-page、product-shots-ad-creative、product-shots-social-post)がそれらのフィールドを直接読み取ります。提供されない場合は、照合された業界 DNA のデフォルト値が適用されます。

コメント