Mitasu for Home — AI操作ガイド(AIエージェント向け仕様書)
バージョン 2026-08-24(アプリ実装と同期・自動テストで整合性を検証) 使い方: この文書全体を、Shopify Admin API に接続できるAIアシスタント (Claude + Shopifyコネクタ、Claude Code + Shopify MCP、カスタムエージェント等)に 貼り付けてから、商品情報の登録・割り当てを依頼してください。 English version: https://mitasu.tech/ai/home-agent-guide.en.md
このアプリのデータはすべてShopifyのメタフィールド/メタオブジェクトに保存されます
(外部DBなし・namespace は全て home_info)。Admin GraphQL を使えるAIエージェントは、
アプリ管理画面を介さずにテンプレート作成と商品への割り当てを実行できます。
⛔ 最優先の禁止事項 — ストアの商品そのものには絶対に触らない
このガイドが許可する書き込みは、次の2種類だけです。
home_infoメタオブジェクト(テンプレート)の作成・更新- 商品への
home_infoメタフィールドの書き込み(許可キーのみ・後述)
それ以外のストアデータは、読み取り専用として扱ってください。いかなる理由があっても 変更・作成・削除をしてはいけません。
| 操作 | 可否 |
|---|---|
商品の新規作成・複製(productCreate / productDuplicate / productSet) | ❌ 絶対禁止 |
商品の変更(productUpdate — タイトル・説明・価格・画像・タグ・公開状態・カテゴリー・SEO) | ❌ 絶対禁止 |
| バリアントの作成・変更・削除、在庫数・価格の変更 | ❌ 絶対禁止 |
商品の削除・アーカイブ(productDelete) | ❌ 絶対禁止 |
| 注文・顧客・配送・割引・在庫・テーマ・アプリ課金の操作 | ❌ 絶対禁止 |
| 商品の読み取り(id / handle / title / バリアント構成の把握) | ✅ 可 |
metafieldsSet による home_info キーの書き込み(許可キーのみ) | ✅ 可 |
metaobjectCreate / metaobjectUpdate(home_info_* 型) | ✅ 可 |
メタフィールドの書き込みに productUpdate を使わないでください。 必ず
metafieldsSet を使います。productUpdate は商品リソース本体を書き換えるミューテーション
であり、指定しなかったフィールドを意図せず変更してしまう事故が起きます。
アプリ自身もこの規則で動いています。 Mitasu for Home のコードには
productCreate / productUpdate / productDelete の呼び出しが1つも存在しません
(書き込みは metafieldsSet と metaobject* のみ)。エージェントがそれを超えて操作すると、
アプリの想定外の状態になるだけでなく、ストアの売上に直結するデータを壊します。
迷ったら実行しないこと。 「寸法シートを整えるついでに商品説明も直す」「重複していそうな 商品を消す」「画像の順番を入れ替える」といった作業は、たとえ依頼されてもこのガイドの 範囲外です。ストアオーナーに Shopify 管理画面またはアプリの画面で行うよう案内してください。
最も安全なのは次章の CSV 経路です。 CSV 取り込みはアプリが処理するため、 商品本体を書き換える手段がそもそも存在しません。
最重要: 2つの安全な経路
- 【最も安全・推奨】CSV経路 — アプリの「CSV書き出し」→ AIが列を埋める →
「CSV取り込み」(Pro)。名前参照・検証・上限クランプがアプリ側で全部かかる。
列:
title, handle, dimension_sheet, material_profile, sets, room_scenes, faq, assembly_template, delivery_template, cleaning_code, rub_count, comfort_hint(参照はテンプレート名、Q&Aは質問文で指定。複数は|区切り。 空欄の列は変更されない。cleaning_code/rub_countは割り当て済み 素材プロファイルへの商品ごと上書き、comfort_hintはfirm/soft(硬め / 柔らかめ でも可)で商品ごとの座り心地の目安。いずれもアプリが 検証したうえで安全に反映する)。 - 【上級】GraphQL直書き — 本書のスキーマに厳密に従うこと。テンプレート (メタオブジェクト)の作成 + 商品への参照割り当てのみ行い、それ以外のキーには 書かない。
絶対ルール(違反するとストア表示・アプリ管理画面が壊れます)
- 寸法は cm のみで保存(inch は保存しない。表示時にアプリが換算)。重量は kg。
- 書き込みは「テンプレート作成」と「参照(ref)の割り当て」だけ。
商品ごとの上書き・パッチキー —
dimension_override/clearance_note_text/material_override/room_scene_overrides/set_overrides/faq_overrides/assembly_info/delivery_note/delivery_note_text— と、アプリ管理の集計・内部値 —comfort_feedback/return_stats/returns_baseline/review_pending/insights_cache/installed_at/plan/plan_kind/plan_cancel_at/plan_period_end— には絶対に書かない。*_override系はオーナー自身の商品ごと微調整の置き場 なので、必要ならアプリの上書きUIを案内すること。 読み取りたい場合の置き場所(2026-08 に移設済み):comfort_feedbackは$app:votes、return_stats/returns_baseline/review_pendingは$app:internal、planは AppInstallation のアプリデータメタフィールドにあり、home_infoを探しても見つからない。dimension_overrideには2つの形がある。rowsを持つものは寸法シート全体の スナップショット(=その商品はもうシートを見ていない)。row_labels([{from, to?}])は行マップで、その商品が売っている行と呼び名だけを持ち、 数値はシートを見続ける。どちらも書き込み禁止だが、「この商品が売っているサイズ だけ表示したい」と頼まれたら、商品編集の「この商品で表示するサイズ」、または 「まとめて反映」の一括設定を案内すること。 - Shopify標準属性をアプリ側namespaceに複製しない。 素材・色・柄などは Shopify標準のカテゴリーメタフィールド(商品ページで入力)をアプリが 特徴タブに自動表示する。アプリの素材・仕上げプロファイルは、標準属性で 表せないもの(部位別素材・お手入れ・かたさ・耐荷重)の置き場。
- 割り当て上限: セット
set_refs≤ 4 / 部屋置き実例room_scene_refs≤ 4 / Q&Afaq_items≤ 10。セット1件内の商品items≤ 6。 - 作成前に同名テンプレートの有無を必ず検索(重複作成しない)。 テンプレートの削除はアプリUIからのみ(直接deleteすると割り当て・上書きの 後始末が行われない)。
- 破壊的変更(既存refの差し替え・大量更新)の前に現在値を読み、ユーザーに確認する。
metafieldsSetは1回 ≤ 25件。書き込み後はuserErrorsを必ず確認。
データモデル(テンプレート参照 + 商品ごと上書き)
テンプレート = メタオブジェクト(7種・再利用可能)
home_info_dimension_sheet(寸法シート — 主力機能)
| key | type | 許可値・形式 |
|---|---|---|
name | text | 必須。表示名(CSV参照にも使う一意な名前を推奨) |
category | text | sofa / table / desk / chair / bed / mattress / bedding / pillow / shelf / rug / curtain / lighting / kitchen — 表示される寸法列が決まる |
rows | json | サイズ違い1つにつき1行: [{ "size_label": "2人掛け", "measurements": { "width_cm": 150, "depth_cm": 85, "height_cm": 80, "seat_height_cm": 42 } }]。範囲は <key>_max を追加(例 "width_cm": 150, "width_cm_max": 170 → 「150–170」)。使わないキーは省略(省略した列は表示されない) |
packaged | json | 梱包箱・1箱につき1件: [{ "size_label"?, "w_cm", "d_cm", "h_cm", "weight_kg"? }]。搬入経路チェック(本アプリの看板機能)の入力になる。梱包サイズ ≠ 商品サイズ。これが無いと「玄関を通るか」を店頭で判定できないので、分かる場合は必ず入れる |
clearance_note | text | 任意の搬入注記(階段・エレベーター・狭い廊下 など) |
figure_url | text | 店主自身の寸法図の画像URL(Shopifyのファイル)。入れると同梱のカテゴリ図の代わりに表示され、表の A/B/C 列レターは出なくなる(同梱図の線を指す記号のため)。寸法が書き込まれた商品画像・L字ソファなど形が合わない場合に |
standard_sizes | boolean | rows が公表されている規格サイズ表(USマットレス、日本の既製カーテン寸法 など)のときだけ true。通常のサイズ展開は false。管理画面の「寸法値の確認」警告を止めるためのもので、店頭は読まない。規格表では実際に数値が下がる(King 193cm → カリフォルニアキング 183cm、Twin XL 203cm → Full 191cm)ため、正しいデータを誤入力扱いしないようにする |
カテゴリー別の寸法キー(これ以外は表示されない):
| category | 寸法キー |
|---|---|
sofa | width_cm depth_cm height_cm seat_height_cm seat_depth_cm arm_height_cm |
table | width_cm depth_cm height_cm clearance_cm top_thickness_cm(clearance = 床下高 = 膝下有効高) |
chair | width_cm depth_cm height_cm seat_height_cm seat_width_cm seat_depth_cm |
bed | width_cm length_cm height_cm clearance_cm(clearance = 床下高) |
shelf | width_cm depth_cm height_cm inner_width_cm inner_depth_cm |
rug | width_cm length_cm pile_height_cm |
lighting | diameter_cm height_cm cord_length_cm |
bedding | width_cm length_cm mattress_thickness_cm pocket_depth_cm(マチ深さがボックスシーツの合否を決める) |
mattress | width_cm length_cm height_cm(height = 厚み。mattress_thickness_cm は寝具側のキーなので使わない) |
desk | width_cm depth_cm height_cm clearance_cm top_thickness_cm(clearance = 床下高 = 膝下有効高) |
kitchen | width_cm depth_cm height_cm diameter_cm length_cm — 形が多様なので2形状の和集合。丸物は 直径+高さ+長さ(柄)、角物は 幅+奥行+高さ。同梱の寸法図もテンプレートも無い(共通の形が無いため)ので、figure_url に自分の画像を入れるか、表だけで使う |
curtain | width_cm length_cm(length = 丈) |
pillow | width_cm length_cm height_cm(height = 枕の高さ。まくらカバーは空欄でよい) |
home_info_material_profile(素材・仕上げ)
| key | type | 許可値・形式 |
|---|---|---|
name | text | 必須 |
surfaces | json | 部位別リスト: [{ "part", "material", "finish"? }]。part: top / frame / legs / seat / back / cover / upholstery / shade / shelf / drawer。material(正規英語名・綴り厳守): Oak / Walnut / Pine / Beech / Ash / Teak / MDF / Plywood / Veneer / Steel / Stainless_steel / Aluminum / Brass / Rattan / Bamboo / Glass / Marble / Ceramic / Linen / Cotton / Polyester / Leather / Faux_leather / Boucle / Velvet / Concrete。finish: Oiled / Lacquered / Matte / Gloss / Powder-coated / Brushed / Natural / Stained / Painted / Waxed。自由入力も可だが、プリセットは店頭の全言語に自動翻訳される — 優先して使うこと |
care | json | お手入れコードの配列。例 ["wipe_damp","avoid_sunlight"] — 下のコード表を参照 |
firmness | text | 座り心地 1(やわらかい)…5(かため)。座面のない品は空欄 |
weight_capacity_kg | text | 耐荷重 kg。該当しない品は空欄 |
certifications | json | コードの配列: fsc / pefc / greenguard / greenguard_gold / oeko_tex / certipur / c2c / carb2 / jis / sg / bifma |
cleaning_code | text | 張地のクリーニングコード(タグ表記どおり): w / s / ws / x / d(水性のみ/溶剤のみ/どちらも可/掃除機のみ/ドライのみ)。表記が無ければ空欄 |
rub_count | text | 摩耗試験の回数(マーチンデール/Wyzenbeek・ダブルラブ)。例 30000。未試験なら空欄 |
variation_note | text | 個体差の説明(木目・節・色ロット・大理石の模様)— 開梱前に期待値を揃える |
note | text | 素材の自由記述(目安500字): 経年変化(オイル仕上げは飴色に育つ)・数値のかんたんな目安(摩耗5万回=業務用グレード)・質感の物語。店頭ではプロファイルの下に小さな文章として表示 |
home_info_room_scene(部屋置き実例 — Pro): name(必須)/ room_type
(living / dining / bedroom / kids / office / outdoor …)/ room_size_m2 /
photo(写真URL文字列)/ note
home_info_set(セット「部屋を完成させる」 — Pro): name(必須)/ items
(list.product_reference — 商品GID・≤ 6)/ note / image(file_reference —
FilesのGID。無ければ省略)
home_info_faq(Q&A 1組): question(必須)/ answer(必須)
home_info_assembly(組立情報)
| key | type | 許可値・形式 |
|---|---|---|
name | text | 必須 |
info | json | { "required"?, "minutes"?, "people"?, "tools"?, "manual_url"?, "manual_kind"? }。required: true=組立必要・false=完成品でお届け・省略=未設定。minutes/people は正の整数の文字列。tools は配列: コード hex_key / phillips / flathead / mallet / hammer / wrench / power_driver は店頭の全言語に自動翻訳、それ以外は入力どおり表示。manual_url は説明書リンク(公開URL)・manual_kind(pdf / video)で店頭のリンク文言が切り替わる |
home_info_delivery(配送情報 — 表示専用。アプリは注文・送料・配送APIには
一切触れない)
| key | type | 許可値・形式 |
|---|---|---|
name | text | 必須 |
info | json | { "method"?, "setup"?, "stairs"?, "lead_min"?, "lead_max"?, "lead_unit"? }。method: parcel / courier_setup / freight。setup: doorstep / room_of_choice / unpack_setup。stairs: included / on_request / not_available。lead_unit: days(営業日)/ weeks。省略時は weeks。在庫品は営業日、受注生産は週で書くのが一般的。納期はオーナー自身の約束であり運送会社の見積ではない |
note | text | 配送メモ(≤600文字)。オーナーの肉声 — 生成文で上書きしない。info の生JSONを直接編集させずに済むよう独立させたフィールドで、古いレコードは info.note に入っていることがある(読み取りは note を優先) |
商品メタフィールド(割り当て — 書き込み可能なのはこの8つだけ)
| key | type | 内容 |
|---|---|---|
dimension_sheet_ref | metaobject_reference | 寸法シートのGID(単一) |
material_profile_ref | metaobject_reference | 素材プロファイルのGID(単一) |
room_scene_refs | list.metaobject_reference | 部屋置き実例のGID(≤ 4・表示順) |
set_refs | list.metaobject_reference | セットのGID(≤ 4・表示順) |
faq_items | list.metaobject_reference | Q&AのGID(≤ 10・表示順) |
assembly_ref | metaobject_reference | 組立テンプレートのGID(単一) |
delivery_ref | metaobject_reference | 配送テンプレートのGID(単一) |
comfort_hint_override | text | firm / soft(空 = 未設定。実際の投票が貯まればそちらが優先) |
バリアントメタフィールド(書き込み可)
dimension_sheet_ref / material_profile_ref のみ(例: 「ワイド」バリアントに
別シート、革/布バリアントに別プロファイル)。サイズ違いは通常1枚のシートの
行として持つ — そちらを優先。
ストア設定(SHOP所有)— 変更はオーナーにアプリの設定画面を案内
feature_flags(セクションON/OFF)/ section_order / section_titles /
default_unit(cm|inch・編集画面のみ)/ week_start(mon|sun)。読み取りは可。
お手入れコード(home_info_material_profile.care 用)
| グループ | コード |
|---|---|
| 清掃 | wipe_damp wipe_dry mild_detergent no_abrasive professional_clean |
| 保護 | oil_regularly waterproof_spray felt_pads tighten_bolts rotate_cushions |
| 環境 | avoid_sunlight avoid_heat avoid_humidity indoor_only |
| 布類 | cover_washable shade_dry |
推奨ワークフロー(商品分析 → テンプレート作成 → 割り当て)
- 商品を読む — タイトル・説明・タイプ・タグ・標準カテゴリーから家具カテゴリー、 サイズ展開、素材を分類する。
- 既存テンプレートを先に検索 —
metaobjects(type: "...", first: 250)で 名前を確認。合うものは再利用する。 - 足りないテンプレートだけ作成 — 上記スキーマに厳密に従う(特に cm 保存と
packagedの梱包箱。梱包箱が無いと搬入チェックが点灯しない)。 - 割り当て —
metafieldsSetで ref を書く(リスト値は"[\"gid://...\"]"の ようなJSON文字列)。または CSVを生成してオーナーに取り込んでもらう (最も安全な経路)。 - 確認 — アプリの「商品編集」画面の登録済みマークをオーナーに確認してもらう。
GraphQL 例
寸法シートの作成(梱包箱つき)
mutation {
metaobjectCreate(metaobject: {
type: "home_info_dimension_sheet",
fields: [
{ key: "name", value: "ファブリックソファ 2/3人掛け" },
{ key: "category", value: "sofa" },
{ key: "rows", value: "[{\"size_label\":\"2人掛け\",\"measurements\":{\"width_cm\":150,\"depth_cm\":85,\"height_cm\":80,\"seat_height_cm\":42}},{\"size_label\":\"3人掛け\",\"measurements\":{\"width_cm\":190,\"depth_cm\":85,\"height_cm\":80,\"seat_height_cm\":42}}]" },
{ key: "packaged", value: "[{\"size_label\":\"2人掛け\",\"w_cm\":155,\"d_cm\":90,\"h_cm\":75,\"weight_kg\":38}]" },
{ key: "clearance_note", value: "脚は取り外し可能(高さ-11cm)。階段搬入時に有効。" }
]
}) { metaobject { id } userErrors { field message } }
}
商品への割り当て(シート + 素材 + 組立 + Q&A)
mutation {
metafieldsSet(metafields: [
{ ownerId: "gid://shopify/Product/123", namespace: "home_info", key: "dimension_sheet_ref",
type: "metaobject_reference", value: "gid://shopify/Metaobject/456" },
{ ownerId: "gid://shopify/Product/123", namespace: "home_info", key: "material_profile_ref",
type: "metaobject_reference", value: "gid://shopify/Metaobject/789" },
{ ownerId: "gid://shopify/Product/123", namespace: "home_info", key: "assembly_ref",
type: "metaobject_reference", value: "gid://shopify/Metaobject/321" },
{ ownerId: "gid://shopify/Product/123", namespace: "home_info", key: "faq_items",
type: "list.metaobject_reference", value: "[\"gid://shopify/Metaobject/111\",\"gid://shopify/Metaobject/222\"]" }
]) { metafields { key } userErrors { field message } }
}
既存テンプレートの一覧(重複チェック / 割り当て用GID取得)
{ metaobjects(type: "home_info_dimension_sheet", first: 250) {
nodes { id field(key: "name") { value } }
pageInfo { hasNextPage endCursor } } }
トラブルシューティング
UNDEFINED_OBJECT_TYPE/ 定義エラー → オーナーに「設定 → 再チェック」を実行 してもらう(定義は自己修復する)。- 割り当てたのに店頭に出ない → 順に確認: ① Freeプランなのに Pro 機能 (部屋置き実例/セット/実感投票/実感まとめは Pro)ではないか ② 設定でセクションがOFFになっていないか ③ テーマにアプリブロックが 設置されているか。
- 搬入チェックが出ない → 割り当てたシートに
packagedの梱包箱が無いか、 全箱が基準のドア幅を通るため安心の1行表示に切り替わっている(仕様)。基準幅は 設定で選べる(既定 70cm・ほかに 76 / 80 / 90cm)。 - 上限を超えた ref は表示されない — リストは上限内に収めること。