mcpField
J
json-prompting-for-nano-banana

json-prompting-for-nano-banana

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

json-prompting-for-nano-banana について

json-prompting-for-nano-bananaは、画像の要望をNano Banana Pro(Gemini 3 Pro Image)向けの構造化JSON仕様に変換するスキルです。マーケティング画像、UIモックアップ、図、データ可視化、SNS画像の制御された生成や部分的な修正に対応します。

主な機能

  1. 01要望を5種類のJSONスキーマに分類
  2. 02安定した識別子でシーン要素を表現
  3. 03レイアウト・スタイル・制約の指定
  4. 04対象を絞った編集とビジュアル案の作成
  5. 05参照関係を検証したJSONの生成

活用シーン

  1. 01ブランド制約を含む商品画像の仕様作成
  2. 02画面とコンポーネントを含むUIモックアップの指定
  3. 03フロー図やアーキテクチャ図の記述
  4. 04正確な数値のグラフや指定サイズのSNS画像の作成

インストール

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

$npx skills add https://github.com/jawhnycooke/claude-code-nano-banana --skill json-prompting-for-nano-banana

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

詳細

Nano Banana Pro 向け JSON プロンプト

このスキルは、自然言語による説明を、Nano Banana Pro(Gemini 3 Pro Image)での画像生成を精密に制御するための構造化 JSON スキーマに変換します。

このスキルを使用する場面

次のようなことをユーザーが求めている場合に、このスキルを使用します。

  • 正確な製品仕様に基づいてマーケティング画像を作成する(製品写真、ヒーロー画像)
  • 定義済みのレイアウト、コンポーネント、カラーパレットを使ってUI モックアップをデザインする
  • プロセスの流れが明確なインフォグラフィックや図を作成する
  • 数値やグラフの精度が重要なデータビジュアライゼーションを生成する
  • プラットフォーム固有の寸法やテキストオーバーレイを使用したソーシャルメディア用画像を作成する
  • 再現性のある画像を生成する(同じ仕様なら同じ結果)
  • 他の要素をすべて再生成せずに、特定の要素を反復調整する
  • 複数回の画像生成にわたってブランドの一貫性を保つ

次の場合は、このスキルを使用しないでください。

  • ユーザーが、予想外の結果を楽しむクリエイティブな試行を求めている
  • ユーザーが雰囲気重視のプロンプトを好む
  • シンプルな自然言語のプロンプトで十分である
  • ユーザーが、まだ実際に何を求めているかを定義していない

中心となるコンセプト:ハンドル

JSON プロンプトの強みは、ハンドルという概念にあります。重要な要素にはそれぞれ、安定した識別子を設定します。

  • 対象を絞った編集:他の要素に影響を与えず、背景だけ、または照明だけを変更する
  • カメラの移動:同じシーンで、視点を変える
  • テーマのバリエーション:同じ構成で、ビジュアルスタイルを変える
  • A/B テスト:変数が一つだけ異なる 2 つのバージョンを比較する

5 種類のスキーマ

1. マーケティング画像(marketing_image)

製品写真、ヒーロー画像、ブランド写真、広告ビジュアル向けです。

主なセクション:

  • subject:製品の種類、名前、バリエーション、物理的な特性(仕上げ、寸法)
  • props:数や位置を指定した、前景・中景・背景のオブジェクト
  • environment:表面素材、背景色やテクスチャ、雰囲気やムード
  • camera:角度、フレーミング、焦点距離、被写界深度
  • lighting:キーライト、フィルライト、リムライト、色温度
  • brand:ロゴ素材、主要色、変更禁止項目
  • controls:反復調整時に変更できる項目とできない項目
2. UI/UX(ui_builder)

アプリ画面、ダッシュボード、ウェブサイト、インターフェイスのモックアップ向けです。

主なセクション:

  • app:プラットフォーム(Web/モバイル/デスクトップ)、忠実度、ビューポート、テーマ
  • tokens:色(16 進数値)、タイポグラフィ、角丸、間隔のスケール
  • screens:ID、名前、役割、レイアウトコンテナを持つ画面の配列
  • components:画面への割り当て、コンテナ内の配置、プロパティを指定した UI 要素
  • constraints:レイアウトの固定、テーマの固定、コンテンツの固定
3. 図(diagram_spec)

フローチャート、アーキテクチャ図、プロセスマップ、システムの可視化向けです。

主なセクション:

  • canvas:寸法、単位、フローの方向
  • semantics:図の種類、主要な関係、スイムレーン
  • nodes:ID、ラベル、役割、位置、スタイルを持つノードの配列
  • edges:ラベルや矢印のスタイルを指定した、ノード間の接続
  • groups:ノードを整理するためのスイムレーンやクラスター
  • constraints:レイアウトの固定、自動ルーティングの許可設定
4. データビジュアライゼーション(data_viz)

数値の正確さが重要なチャート、グラフ、統計用グラフィック向けです。

主なセクション:

  • chart_type:棒、折れ線、円、散布図、面、ツリーマップ、ヒートマップ
  • data_series[]:ラベルと値を持つデータポイントの配列
  • axes:X 軸と Y 軸の設定(ラベル、最小値/最大値、単位、グリッド線)
  • annotations:吹き出し、トレンドライン、データラベル、ハイライト
  • style:色、フォント、凡例の位置
  • constraints:指定どおりに正確に表示する必要があるデータ値
5. ソーシャルメディアグラフィック(social_graphic)

テキストオーバーレイやブランド要素を含む、プラットフォームに合わせたソーシャルコンテンツ用です。

主なセクション:

  • platform:対象プラットフォーム(instagram_post、instagram_story、twitter_card、linkedin_post、youtube_thumbnail)
  • dimensions:プラットフォームに基づいて自動設定、またはカスタム設定
  • background:単色、グラデーション、画像、またはパターン
  • text_layers[]:見出し、小見出し、本文、CTA。それぞれの配置とスタイルを指定
  • brand:ロゴの配置、色、フォント
  • style:ビジュアルのトーン(ミニマル、大胆、遊び心のある、プロフェッショナル)

翻訳者のワークフロー

ステップ 1:意図を分類する

ユーザーの説明から、対象となるスキーマを判断します。

ユーザーが話している内容...使用するスキーマ
製品写真、ヒーロー画像、ブランド写真、キャンペーンmarketing_image
画面、ボタン、ダッシュボード、アプリ、ナビゲーション、モックアップui_builder
フロー、プロセス、システム、ノード、ボックスと矢印diagram_spec
チャート、グラフ、データ、統計、指標、数値data_viz
Instagram、Twitter、LinkedIn、ソーシャル投稿、サムネイルsocial_graphic

曖昧な場合は、意図を明確にするための短い質問を 1~2 件行います。

ステップ 2:要件を収集する

マーケティング画像の場合:

  • 主な被写体(製品の種類、名前、サイズ)
  • 小道具(配置場所:前景、ベースの周囲、背景)
  • 環境(表面、背景、雰囲気)
  • カメラのアングルとフレーミング
  • 照明の方向と強さ
  • ブランドに関する制約(ロゴ、色、変更できない要素)

UI/UX の場合:

  • プラットフォーム(ウェブ、モバイル、デスクトップ)
  • 画面の数とそれぞれの役割
  • レイアウト領域(上部ナビゲーション、サイドバー、コンテンツ)
  • 主なコンポーネント(チャート、テーブル、フォーム、カード)
  • 配色またはブランドガイドライン

図の場合:

  • 図の種類(フローチャート、アーキテクチャ、スイムレーン、マインドマップ)
  • 主なノード/ステップ
  • 接続とラベル
  • グループまたはレーン
  • フローの方向

データビジュアライゼーションの場合:

  • チャートの種類(棒、折れ線、円、散布図など)
  • 実際の値を含むデータ系列
  • 軸ラベルと範囲
  • 注釈や吹き出し
  • 正確な数値を出力に表示する必要があるかどうか

ソーシャルグラフィックの場合:

  • 対象プラットフォーム(寸法を決定)
  • 背景のスタイル(単色、グラデーション、画像)
  • テキスト内容(見出し、小見出し、CTA)
  • ブランド要素(ロゴ、色)
  • ビジュアルのスタイル/雰囲気
ステップ 3:JSON を生成する

適切なルートキーを使用して、完全な JSON オブジェクトを構築します。次の点を確認してください。

  • すべての ID が一意である
  • すべての参照が有効である
  • 必須フィールドが入力されている
  • 出力が有効な JSON である(コメントや末尾のカンマがない)
ステップ 4:次の手順を案内する

ユーザーに次の手順を伝えます。

  1. JSON を確認し、意図が反映されていることを確かめる
  2. JSON 全体をコピーする
  3. Nano Banana Pro(「Thinking」モデルを搭載した Gemini アプリ、または Google AI Studio)を開く
  4. 次の指示を添えて貼り付ける:「この仕様を忠実度の高い画像としてレンダリングしてください」
  5. 特定のフィールドを変更して再レンダリングし、繰り返し調整する

共通値リファレンス

カメラアングル: front、three_quarter_front、three_quarter_back、side、top_down、low_angle、overhead

フレーミング: extreme_close_up、close_up、medium_close、medium、medium_wide、wide

照明の強さ: very_low、low、medium、high、very_high

照明の方向: left、right、front、back、top、three_quarter_left、three_quarter_right

表面素材: glossy、matte、marble、wood、concrete、fabric、metal、glass

UI の忠実度: wireframe、low-fi、mid-fi、hi-fi

UI プラットフォーム: web、mobile、tablet、desktop

図の種類: flowchart、architecture、sequence、swimlane、mindmap、org_chart

ノードの役割: start、end、process、decision、database、actor、note

チャートの種類: bar、horizontal_bar、line、area、pie、donut、scatter、bubble、treemap、heatmap、radar

ソーシャルプラットフォーム: instagram_post (1080x1080)、instagram_story (1080x1920)、twitter_card (1200x675)、linkedin_post (1200x627)、youtube_thumbnail (1280x720)、facebook_post (1200x630)

テキストの位置: top_left、top_center、top_right、center_left、center、center_right、bottom_left、bottom_center、bottom_right


スキーマの完全な例

マーケティング画像の例

リクエスト:「Aurora Lime というライム味の炭酸水ブランドのヒーローショット。反射面の上に置かれた12オンス缶の周りにライムの輪切りと氷。暗いティール色の背景、ドラマチックなサイドライティング。」

出力:

{
  "marketing_image": {
    "meta": {
      "spec_version": "1.0.0",
      "title": "Aurora Lime Hero Can Shot",
      "campaign": "aurora_lime_launch",
      "brand_name": "Aurora Lime",
      "usage_context": "web"
    },
    "subject": {
      "type": "product_can",
      "name": "Aurora Lime Seltzer",
      "variant": "Original Lime",
      "physical_properties": {
        "volume_oz": 12,
        "dimensions": "standard 12oz beverage can",
        "finish": "matte"
      }
    },
    "props": {
      "foreground": [
        {
          "type": "lime_slice",
          "count": 3,
          "position": "front_left",
          "notes": "fresh lime slices, visible pulp and rind"
        }
      ],
      "midground": [
        {
          "type": "ice_cube",
          "count": 12,
          "position": "around_base",
          "notes": "partially melted, small reflections"
        }
      ],
      "background": []
    },
    "environment": {
      "surface": {
        "material": "glossy",
        "reflection_strength": 0.7
      },
      "background": {
        "color": "#003b47",
        "texture": "smooth",
        "effect": "bokeh_soft"
      },
      "atmosphere": {
        "mood": "refreshing, premium, night-time bar feel",
        "keywords": ["sparkling", "cool", "luminous", "evening"]
      }
    },
    "camera": {
      "angle": "three_quarter_front",
      "framing": "medium_close",
      "focal_length_mm": 50,
      "depth_of_field": "medium"
    },
    "lighting": {
      "key_light_direction": "right",
      "key_light_intensity": "high",
      "fill_light_direction": "left",
      "fill_light_intensity": "low",
      "rim_light": false,
      "color_temperature": "neutral"
    },
    "brand": {
      "logo_asset": "aurora_lime_logo.png",
      "primary_colors": ["#00ffc2", "#003b47"],
      "must_match_assets": ["aurora_lime_logo.png"],
      "forbidden_changes": [
        "do_not_change_logo",
        "do_not_change_brand_name"
      ]
    },
    "controls": {
      "lock_subject_geometry": true,
      "lock_logo_and_label": true,
      "allow_background_variation": false,
      "allow_prop_relayout": "small_only"
    }
  }
}
UI/UX の例

リクエスト:「ウェブ向けのマーケティング分析ダッシュボード。ライトテーマに青のアクセント。KPI カード、トラフィックチャート、キャンペーンテーブルを備えたメインダッシュボード。ロゴ付きの上部ナビゲーションと左サイドバー。」

出力:

{
  "ui_builder": {
    "meta": {
      "spec_version": "1.0.0",
      "name": "Acme Analytics Dashboard",
      "description": "Marketing analytics dashboard",
      "author": "",
      "tags": ["analytics", "marketing", "dashboard"]
    },
    "app": {
      "platform": "web",
      "fidelity": "hi-fi",
      "viewport": {
        "width": 1440,
        "height": 900
      },
      "theme": "light"
    },
    "tokens": {
      "color": {
        "primary": "#2563EB",
        "background": "#F9FAFB",
        "surface": "#FFFFFF",
        "accent": "#10B981"
      },
      "typography": {
        "font_family": "system_sans",
        "headline_size": 20,
        "body_size": 14
      },
      "radius": {
        "sm": 4,
        "md": 8,
        "lg": 12
      },
      "spacing_scale": [0, 4, 8, 12, 16, 24, 32]
    },
    "screens": [
      {
        "id": "screen_dashboard",
        "name": "Dashboard",
        "role": "primary",
        "layout": {
          "containers": [
            {
              "id": "container_top_nav",
              "type": "stack",
              "subtype": "horizontal",
              "region": "top_nav",
              "children": ["comp_logo", "comp_avatar"]
            },
            {
              "id": "container_sidebar",
              "type": "stack",
              "subtype": "vertical",
              "region": "sidebar",
              "children": ["comp_nav_list"]
            },
            {
              "id": "container_content",
              "type": "grid",
              "subtype": "column",
              "region": "main_content",
              "children": ["comp_kpi_grid", "comp_traffic_chart", "comp_campaigns_table"]
            }
          ]
        }
      }
    ],
    "components": [
      {
        "id": "comp_logo",
        "screen_id": "screen_dashboard",
        "container_id": "container_top_nav",
        "component_type": "logo",
        "props": {"text": "Acme Analytics"},
        "data_binding": null
      },
      {
        "id": "comp_nav_list",
        "screen_id": "screen_dashboard",
        "container_id": "container_sidebar",
        "component_type": "nav_list",
        "props": {
          "items": [
            {"label": "Overview", "icon": "home", "active": true},
            {"label": "Channels", "icon": "bar_chart"},
            {"label": "Settings", "icon": "gear"}
          ]
        },
        "data_binding": null
      },
      {
        "id": "comp_kpi_grid",
        "screen_id": "screen_dashboard",
        "container_id": "container_content",
        "component_type": "kpi_grid",
        "props": {
          "columns": 3,
          "cards": [
            {"label": "Sessions", "value": "124,983"},
            {"label": "Signups", "value": "3,942"},
            {"label": "Conversion", "value": "3.2%"}
          ]
        },
        "data_binding": null
      },
      {
        "id": "comp_traffic_chart",
        "screen_id": "screen_dashboard",
        "container_id": "container_content",
        "component_type": "line_chart",
        "props": {"title": "Daily Traffic (Last 30 Days)"},
        "data_binding": null
      },
      {
        "id": "comp_campaigns_table",
        "screen_id": "screen_dashboard",
        "container_id": "container_content",
        "component_type": "data_table",
        "props": {
          "title": "Active Campaigns",
          "columns": ["Campaign", "Spend", "Clicks", "CPC"]
        },
        "data_binding": null
      }
    ],
    "constraints": {
      "layout_lock": true,
      "theme_lock": false,
      "content_lock": false
    }
  }
}
図の例

リクエスト:「ユーザー登録を示すフローチャート:ランディングページ、登録フォーム、メールアドレス確認の判断、確認メール、アカウントの有効化。左から右へ。」

出力:

{
  "diagram_spec": {
    "meta": {
      "spec_version": "1.0.0",
      "title": "User Signup Flow",
      "description": "End-to-end signup process",
      "author": "",
      "tags": ["signup", "user-flow"]
    },
    "canvas": {
      "width": 1920,
      "height": 600,
      "unit": "px",
      "direction": "left_to_right"
    },
    "semantics": {
      "diagram_type": "flowchart",
      "primary_relationship": "control_flow",
      "swimlanes": []
    },
    "nodes": [
      {
        "id": "node_start",
        "label": "Start",
        "role": "start",
        "lane": null,
        "group_id": null,
        "position": {"x": 50, "y": 260},
        "size": {"width": 80, "height": 80},
        "style": {
          "shape": "ellipse",
          "fill_color": "#10B981",
          "border_color": "#059669"
        },
        "data": {}
      },
      {
        "id": "node_landing",
        "label": "Visit Landing Page",
        "role": "process",
        "lane": null,
        "group_id": null,
        "position": {"x": 200, "y": 250},
        "size": {"width": 180, "height": 100},
        "style": {
          "shape": "rectangle",
          "fill_color": "#FFFFFF",
          "border_color": "#111827"
        },
        "data": {}
      },
      {
        "id": "node_signup_form",
        "label": "Complete Signup Form",
        "role": "process",
        "lane": null,
        "group_id": null,
        "position": {"x": 450, "y": 250},
        "size": {"width": 180, "height": 100},
        "style": {
          "shape": "rectangle",
          "fill_color": "#FFFFFF",
          "border_color": "#111827"
        },
        "data": {}
      },
      {
        "id": "node_email_valid",
        "label": "Email Valid?",
        "role": "decision",
        "lane": null,
        "group_id": null,
        "position": {"x": 700, "y": 250},
        "size": {"width": 120, "height": 100},
        "style": {
          "shape": "diamond",
          "fill_color": "#FEF3C7",
          "border_color": "#D97706"
        },
        "data": {}
      },
      {
        "id": "node_send_verification",
        "label": "Send Verification Email",
        "role": "process",
        "lane": null,
        "group_id": null,
        "position": {"x": 900, "y": 250},
        "size": {"width": 180, "height": 100},
        "style": {
          "shape": "rectangle",
          "fill_color": "#FFFFFF",
          "border_color": "#111827"
        },
        "data": {}
      },
      {
        "id": "node_activate",
        "label": "Activate Account",
        "role": "process",
        "lane": null,
        "group_id": null,
        "position": {"x": 1150, "y": 250},
        "size": {"width": 180, "height": 100},
        "style": {
          "shape": "rectangle",
          "fill_color": "#D1FAE5",
          "border_color": "#059669"
        },
        "data": {}
      },
      {
        "id": "node_end",
        "label": "End",
        "role": "end",
        "lane": null,
        "group_id": null,
        "position": {"x": 1400, "y": 260},
        "size": {"width": 80, "height": 80},
        "style": {
          "shape": "ellipse",
          "fill_color": "#111827",
          "border_color": "#111827"
        },
        "data": {}
      }
    ],
    "edges": [
      {"id": "edge_1", "from": "node_start", "to": "node_landing", "label": "", "style": {"line_type": "straight", "arrowhead": "standard"}},
      {"id": "edge_2", "from": "node_landing", "to": "node_signup_form", "label": "", "style": {"line_type": "straight", "arrowhead": "standard"}},
      {"id": "edge_3", "from": "node_signup_form", "to": "node_email_valid", "label": "", "style": {"line_type": "straight", "arrowhead": "standard"}},
      {"id": "edge_4", "from": "node_email_valid", "to": "node_send_verification", "label": "Yes", "style": {"line_type": "straight", "arrowhead": "standard"}},
      {"id": "edge_5", "from": "node_email_valid", "to": "node_signup_form", "label": "No", "style": {"line_type": "orthogonal", "arrowhead": "standard"}},
      {"id": "edge_6", "from": "node_send_verification", "to": "node_activate", "label": "", "style": {"line_type": "straight", "arrowhead": "standard"}},
      {"id": "edge_7", "from": "node_activate", "to": "node_end", "label": "", "style": {"line_type": "straight", "arrowhead": "standard"}}
    ],
    "groups": [],
    "legend": {
      "items": [
        {"label": "Process", "shape": "rectangle", "fill_color": "#FFFFFF"},
        {"label": "Decision", "shape": "diamond", "fill_color": "#FEF3C7"},
        {"label": "Success", "shape": "rectangle", "fill_color": "#D1FAE5"}
      ]
    },
    "constraints": {
      "layout_lock": false,
      "allow_auto_routing": true
    }
  }
}
例4:データ可視化(四半期売上チャート)
{
  "data_viz": {
    "meta": {
      "spec_version": "1.0.0",
      "title": "Q4 2024 Revenue by Region",
      "description": "Bar chart comparing regional revenue performance",
      "author": "Finance Team"
    },
    "chart_type": "bar",
    "orientation": "vertical",
    "canvas": {
      "width": 1200,
      "height": 800,
      "background_color": "#FFFFFF"
    },
    "data_series": [
      {
        "id": "revenue_q4",
        "label": "Q4 2024 Revenue",
        "color": "#2563EB",
        "data_points": [
          {"label": "North America", "value": 4250000},
          {"label": "Europe", "value": 3180000},
          {"label": "Asia Pacific", "value": 2890000},
          {"label": "Latin America", "value": 1420000},
          {"label": "Middle East", "value": 890000}
        ]
      },
      {
        "id": "revenue_q3",
        "label": "Q3 2024 Revenue",
        "color": "#93C5FD",
        "data_points": [
          {"label": "North America", "value": 3950000},
          {"label": "Europe", "value": 2980000},
          {"label": "Asia Pacific", "value": 2650000},
          {"label": "Latin America", "value": 1280000},
          {"label": "Middle East", "value": 750000}
        ]
      }
    ],
    "axes": {
      "x_axis": {
        "label": "Region",
        "show_gridlines": false
      },
      "y_axis": {
        "label": "Revenue (USD)",
        "min": 0,
        "max": 5000000,
        "format": "currency_millions",
        "show_gridlines": true,
        "gridline_color": "#E5E7EB"
      }
    },
    "annotations": [
      {
        "type": "data_label",
        "show": true,
        "position": "above",
        "format": "$X.XM"
      },
      {
        "type": "callout",
        "target_series": "revenue_q4",
        "target_point": "North America",
        "text": "+7.6% vs Q3",
        "style": "badge_green"
      }
    ],
    "legend": {
      "position": "top_right",
      "orientation": "horizontal"
    },
    "style": {
      "font_family": "Inter",
      "title_size": 24,
      "label_size": 12,
      "bar_width": 0.35,
      "bar_gap": 0.1,
      "corner_radius": 4
    },
    "constraints": {
      "data_lock": true,
      "exact_values": [4250000, 3180000, 2890000, 1420000, 890000],
      "allow_style_changes": true
    }
  }
}
例5:ソーシャルメディア用グラフィック(Instagram 投稿)
{
  "social_graphic": {
    "meta": {
      "spec_version": "1.0.0",
      "title": "Product Launch Announcement",
      "campaign": "spring_2025_launch",
      "brand_name": "Acme Tech"
    },
    "platform": "instagram_post",
    "dimensions": {
      "width": 1080,
      "height": 1080,
      "unit": "px"
    },
    "background": {
      "type": "gradient",
      "gradient": {
        "direction": "diagonal_bottom_right",
        "colors": ["#1E3A8A", "#7C3AED", "#EC4899"]
      },
      "overlay": {
        "type": "noise",
        "opacity": 0.05
      }
    },
    "text_layers": [
      {
        "id": "headline",
        "content": "Introducing AcmePod Pro",
        "position": "center",
        "offset_y": -120,
        "style": {
          "font_family": "Montserrat",
          "font_weight": "bold",
          "font_size": 64,
          "color": "#FFFFFF",
          "text_align": "center",
          "max_width": 900,
          "line_height": 1.1
        }
      },
      {
        "id": "subhead",
        "content": "Sound reimagined. Silence perfected.",
        "position": "center",
        "offset_y": 0,
        "style": {
          "font_family": "Montserrat",
          "font_weight": "medium",
          "font_size": 28,
          "color": "#E0E7FF",
          "text_align": "center",
          "max_width": 800
        }
      },
      {
        "id": "cta",
        "content": "Available March 15 →",
        "position": "bottom_center",
        "offset_y": -80,
        "style": {
          "font_family": "Montserrat",
          "font_weight": "semibold",
          "font_size": 22,
          "color": "#FFFFFF",
          "background_color": "rgba(255,255,255,0.15)",
          "padding": "12px 24px",
          "border_radius": 24,
          "text_align": "center"
        }
      }
    ],
    "visual_elements": [
      {
        "id": "product_image",
        "type": "image_placeholder",
        "position": "center",
        "offset_y": 100,
        "size": {"width": 400, "height": 400},
        "description": "AcmePod Pro earbuds in floating arrangement",
        "effects": ["drop_shadow", "subtle_glow"]
      }
    ],
    "brand": {
      "logo": {
        "asset": "acme_logo_white.png",
        "position": "top_center",
        "offset_y": 60,
        "size": {"width": 120, "height": 40}
      },
      "primary_colors": ["#1E3A8A", "#7C3AED"],
      "fonts": ["Montserrat"]
    },
    "style": {
      "mood": "premium",
      "keywords": ["modern", "sleek", "bold", "tech"]
    },
    "constraints": {
      "lock_text_content": true,
      "lock_brand_elements": true,
      "allow_color_variation": false,
      "allow_layout_adjustment": "minor"
    }
  }
}

反復パターン

ユーザーが基本となる JSON 仕様を用意したら、範囲を限定した変更を案内します。

照明のみを変更(マーケティング)

lighting セクションのみを変更します。それ以外はすべて固定します。

カメラアングルのみを変更(マーケティング)

camera.angle と、必要に応じて camera.focal_length_mm のみを変更します。

テーマの変更(UI)

レイアウトとコンポーネントはそのままに、トークンの色を変更します。

コンポーネントの追加(UI)

有効な screen_id と container_id を指定して、components 配列に新しいオブジェクトを追加します。

データ値の更新(データ可視化)

チャートの構造とスタイルはそのままに、data_series[].data_points の値を変更します。

チャートの種類を変更(データ可視化)

データと軸を維持したまま、chart_type を "bar" から "line" または "area" に変更します。

プラットフォームに合わせてサイズ変更(ソーシャル)

platform の値を変更すると、寸法が自動調整されます。テキストレイヤーの位置を調整する必要がある場合があります。

配色を変更(ソーシャル)

新しい雰囲気に合わせて、background.gradient.colors と対応するテキストの色を変更します。


バージョン履歴

  • v1.1.0 (2025-12-05):data_viz と social_graphic のスキーマタイプを追加
  • v1.0.0 (2025-12-05):3種類のスキーマ(marketing_image、ui_builder、diagram_spec)で初回リリース

コメント