woodmart-mcp について
woodmart-mcpは、WoodMartをMCP adapter経由で操作するためのスキルです。ライブの能力情報に基づく操作と、対象を絞った編集やキュー書き込みの手順を重視しています。
主な機能
- 01能力の検出と説明の確認
- 02サイトコンテンツの検索と管理
- 03Gutenbergブロックの読み取りと編集
- 04テーマ設定とレイアウトの管理
- 05キュー書き込みの完了手順
活用シーン
- 01ページ全体を作り直さず指定箇所を編集
- 02ブロックの説明に沿ったページやレイアウトの作成
- 03キューに入ったブロック変更の確認と完了
MCP 対応
wood MCP adapterを使って能力を検出し、スキーマを確認して実行します。リクエストを適切なadapter能力へ振り分ける手順も示します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ xtemos/ woodmart-skill --skill woodmart-mcpインストール後、Claude Code で/woodmart-mcpを入力して読み込まれたか確認します。
詳細
MCP の機能を使用した WoodMart の操作
最新の機能ドキュメントを使用する
すべての操作は wood MCP アダプターを通じて実行します。最新の機能一覧を確認するには mcp-adapter-discover-abilities を使用し、書き込み機能を初めて使用する前、またはパラメーターが不明な場合は mcp-adapter-get-ability-info を使用してください。最新の説明、入力スキーマ、レスポンスフィールド、警告、user_instruction を信頼できる情報源として扱い、記憶しているパラメーター一覧に頼らないでください。
mcp-adapter-execute-ability に ability_name と parameters を指定して、機能を実行します。
ルーティング
| 意図 | 最初に使用するもの |
|---|---|
| ページ、投稿、商品、ポートフォリオプロジェクト、HTML ブロックを検索する | woodmart/search-content |
| ページ、投稿、ポートフォリオプロジェクト、HTML ブロックを作成する | woodmart/create-content |
| コンテンツの名前変更、公開、スラッグ変更、親の変更を行う | woodmart/update-content |
| 対象のブロックツリーを読み取る | woodmart/gutenberg-get-content |
| 空ではない対象のブロックを変更する | woodmart/gutenberg-edit-blocks |
| 空の対象に入力する、または意図的に全体を再構築する | woodmart/gutenberg-add-pending-change |
| ブロックとその属性を確認する | woodmart/gutenberg-list-blocks、続いて woodmart/gutenberg-describe-block |
| デモのセクションまたはページを再利用する | woodmart/gutenberg-search-templates、続いて woodmart/gutenberg-get-template |
| テーマ設定を読み取る、または変更する | woodmart/list-theme-settings、続いて woodmart/get-theme-setting |
| Header Builder のロゴを置き換える | woodmart/replace-header-logo |
| レイアウトを確認、作成、割り当てる | woodmart/list-layout-types、続いて該当するレイアウト機能 |
search-content の id、または list-layouts のレイアウトの target_id は、Gutenberg 機能で使用する target_id です。
ブロック書き込みのルール
これらのルールは、違反するとコンテンツやスタイルが気づかないうちに失われる可能性があるため、必ず守ってください。
- 一部だけ変更するために、対象全体を再構築してはいけません。
gutenberg-get-contentで読み取り、変更する操作と属性キーだけを送信してgutenberg-edit-blocksを使用してください。これには「ページ上のテキストをすべて更新する」といったリクエストも含まれます。変更しないブロックと属性は省略してください。 gutenberg-add-pending-changeは、対象が空の場合、またはユーザーが対象全体の置き換え/再構築を明示的に依頼した場合にのみ使用してください。- テキストとコンテンツは、
gutenberg-describe-blockのcontentAttributeが示す属性に記述してください。コンテンツを更新する際にinnerHTMLを手書きしてはいけません。既存のinnerHTMLは、エージェントが保持するコンテンツの往復処理用データ、または意図的に挿入するためにそのまま提供されたマークアップです。 - 安定した
blockId値を持ち、ID で指定できるのはwd/*ブロックだけです。コアブロックは引き継がれますが、個別に更新、削除、移動したり、アンカーとして使用したりすることはできません。 wd/*ブロックを作成または挿入する際は、attributes.blockIdを省略してください。正規化によって自動的に作成されます。gutenberg-get-contentからコピーした ID は操作セレクターまたはアンカーとしてのみ使用してください。ID を新たに作成、コピー、再利用したり、更新時のattributes内に送信したりしてはいけません。- 編集時には、最新の
gutenberg-get-contentレスポンスからexpected_content_hashを渡してください。競合が発生した場合は、対象を読み直し、新しいツリーに基づいて意図する操作を組み立て直してください。
意図的に全体を置き換えることで、登録済みブロック以外のクラシック/フリーフォームコンテンツにも影響する可能性がある場合は、まず include_raw_content: true を指定して読み取ってください。指定しないと、そのコンテンツは block_spec で表現できません。この制限を回避するために全体置き換えを使用してはいけません。
書き込み方法の選択
Existing blocks?
├── no → create-content with block_spec, or gutenberg-add-pending-change
└── yes → Explicit full rebuild requested?
├── no → gutenberg-edit-blocks
└── yes → gutenberg-add-pending-change
テキストを編集する場合、コンテンツ属性がまだ分からなければブロックの詳細を確認し、その属性だけを更新してください。
{
"target_id": 123,
"expected_content_hash": "...",
"operations": [
{ "op": "update", "blockId": "a1b2", "attributes": { "content": "New heading" } }
]
}
ゼロから作成する
gutenberg-list-blocksを使用し、作成する各ブロックについてgutenberg-describe-blockを実行します。- スタイル設定が必要な場合に限り、参照されている
styleGroupsまたはcompositesをgutenberg-describe-attribute-groupで取得します。 - 返された
composition、nesting、conventions、サンプル、単位、レスポンシブ属性、データリゾルバーに関するヒントに従います。ブロック属性やサイト固有の ID を独自に作成しないでください。 - レイアウトの場合は、該当するタイプの
block_categoriesをlist-layout-typesから取得し、gutenberg-list-blocksに渡します。 - 要求されたセクションやページに合う場合は、ライブラリのテンプレートを優先します。返された
block_specを使用してください。デモ画像は最終処理時にローカライズされます。
最終処理
ブロックコンテンツの書き込みはすべてキューに登録され、バッチがfinalizedになるまで公開されません。
メタデータ、テーマ設定、ヘッダーロゴ、定義済みレイアウト、レイアウト条件の書き込みは、ブロックキューを使用しません。
- キューの応答にある
user_instructionに従います。ユーザーに、wp-adminでWoodMart → Tools → AI Block Queueを開いたままにするよう依頼してください。 - バッチがまだ下書きであると応答に示されている場合は、
gutenberg-enable-finalizationを呼び出します。block_specを指定したcreate-contentまたはcreate-layoutは、バッチをすでに準備完了にするため、再度有効化しないでください。 finalized、failed、またはconflictedになるまで、gutenberg-get-pending-batchをポーリングします。conflictedの場合は、対象を再読み込みし、現在のコンテンツに対して編集をやり直します。
対象ごとにアクティブな保留中の変更は1つだけにできます。置き換えをキューに登録する前に、不要になった未確定のバッチをgutenberg-delete-pending-batchでキャンセルしてください。
即時書き込みと報告
コンテンツメタデータ
update-contentはメタデータを即時に変更し、ブロックは変更しません。
- 公開は外部に表示されます。ユーザーから依頼された場合、または明示的に確認された場合に限り、
status: "publish"を設定します。 - 公開済みコンテンツのスラッグまたは親を変更すると、公開 URL が変わります。ユーザーが URL の変更を明示的に依頼していない限り、確認を得てください。
- 応答の
warnings、実際のafter.slug、結果の URL を読み取り、伝えてください。公開済みの階層ページには、WordPress の旧スラッグリダイレクトが適用されません。以前の URL は404になる可能性があります。 - ゴミ箱への移動やコンテンツ削除の機能はありません。ブロックコンテンツを空にして削除を装わないでください。
テーマ設定とロゴ
list-theme-settingsでテーマ設定 ID を確認します。推測しないでください。- 書き込みの直前に
get-theme-settingで完全なディスクリプターを読み込みます。writable、value_format、options、current_value、has_preset_overridesを確認してください。 update-theme-settingはベースレイヤーに書き込みます。プリセットの上書きが表示値を決定している場合があります。その場合は、やみくもに再試行せず、その旨を報告してください。replace-header-logoには、メディアライブラリに既存の画像attachment_idが必要で、保存済みのすべてのヘッダーが更新されます。ヘッダーごとのステータスとtotalsを読み取り、すべて成功したと断言せず、スキップまたは失敗したヘッダーを報告してください。
レイアウト
list-layout-typesから開始します。ローカルの列挙値を使わず、そこにある最新のtype、block_categories、predefined、condition_typesデータを使用します。- 既存レイアウトのブロックを編集するには、その
target_idに対してGutenbergの機能を使用します。コンテンツを変更するだけのためにレイアウトを作り直さないでください。 set-layout-conditionsは条件セット全体を置き換えます。維持する条件はすべて送信してください。[]を指定すると、レイアウトの割り当てが解除されます。- 各条件は、選択したレイアウトタイプの
condition_typesエントリーと、そのquery_kind(none、scalar、array、number_range)に基づいて作成します。 is_assignedはMCPのリクエストコンテキストに依存します。保存済みのconditionsを確認し、is_assignedがfalseであることだけを理由に書き換えないでください。
ポートフォリオとサイト固有の ID
ポートフォリオプロジェクトは投稿タイプ portfolio のコンテンツです。検索または作成し、ページと同じように Gutenberg ブロックを編集してください。single_portfolio と portfolio_archive は、プロジェクトやアーカイブの表示方法を制御するレイアウトです。ポートフォリオコンテンツを利用するには、Portfolio テーマオプションを有効にする必要があります。
商品、カテゴリー、タクソノミー、メディア、投稿、テンプレートの ID を決して作り出さないでください。該当するライブクエリ/検索機能を使って解決するか、明示的な ID が不要な場合は動的ブロッククエリを使用してください。