From 0a6662091f45491eebaa55edc98abbba7c5d5d53 Mon Sep 17 00:00:00 2001 From: Eliran Hasin Date: Wed, 27 May 2026 15:12:29 +0300 Subject: [PATCH 1/2] improve image to product --- .../stores/create-product-from-image.md | 129 ++++++++++++------ 1 file changed, 91 insertions(+), 38 deletions(-) diff --git a/skills/wix-manage/references/stores/create-product-from-image.md b/skills/wix-manage/references/stores/create-product-from-image.md index 75f59be1..a1b9223a 100644 --- a/skills/wix-manage/references/stores/create-product-from-image.md +++ b/skills/wix-manage/references/stores/create-product-from-image.md @@ -120,14 +120,34 @@ A concise, appealing product name optimized for e-commerce discoverability. Maxi Example: `"Artisan Stoneware Ceramic Mug"` — not generic names like `"Mug"` or `"Product"`. -### 4b. Product Description -A marketing description of 2-4 sentences. Highlight key features, materials, and use case. Adapt tone to the product type (artisanal for handmade, technical for electronics, warm for home goods). This will be formatted as rich text nodes in V3 STEP 6. +### 4b. Sample Existing Product Tone (silent — no user interaction) -### 4c. Price with Market Range +Before writing the description, check whether the site already has products to match their tone: + +**API Endpoint:** `POST https://www.wixapis.com/stores/v3/products/query` + +```json +{ + "query": { + "paging": { + "limit": 2 + } + } +} +``` + +- If the response contains products with non-empty `description` fields, analyze their writing style (casual, professional, playful, luxury, technical, etc.) and note it as the **site tone**. +- If no products exist or descriptions are empty, use a neutral e-commerce tone. +- This query is best-effort — if it fails, proceed with neutral tone. Do NOT block the flow. + +### 4c. Product Description +A marketing description of 2-4 sentences. Highlight key features, materials, and use case. **Match the site tone detected in 4b** — if the existing products use casual language, write casually; if they use formal/luxury language, match that style. If no site tone was detected, adapt tone to the product type (artisanal for handmade, technical for electronics, warm for home goods). This will be formatted as rich text nodes in V3 STEP 7. + +### 4d. Price with Market Range - Suggest a retail price based on the product type and industry averages. - Also determine an approximate **market range** for annotation (e.g., "avg. market: $28-$42"). This range is shown to the user in V3 STEP 5 but is NOT sent to the API. -### 4d. Info Sections (only if relevant) +### 4e. Info Sections (only if relevant) Based on the product type and what's visible in the image, generate category-specific info sections. **Only include sections that are relevant — omit entirely if not applicable.** | Product Category | Possible Info Sections | @@ -142,26 +162,26 @@ Based on the product type and what's visible in the image, generate category-spe Each info section needs: a `uniqueName` (lowercase-hyphenated, e.g., `"care-instructions"`), a `title` (display name, e.g., `"Care Instructions"`), and a description (2-3 sentences). -### 4e. SEO Meta Description +### 4f. SEO Meta Description A short meta description (120-160 characters) optimized for search. Include the product type, key materials, and primary use case. Example: `"Handcrafted stoneware ceramic mug with a matte glaze finish. Perfect for coffee and tea lovers. Microwave and dishwasher safe."` -### 4f. Suggested Options (from images) +### 4g. Suggested Options (from images) Examine the images for visible product attributes that should become variant options. -**CRITICAL: Do NOT invent attributes.** Only suggest options that are: -- Visually confirmed in the image(s), OR -- Explicitly stated by the user in their text note +**CRITICAL: Do NOT invent or infer attributes.** Only suggest options that meet **one** of these evidence thresholds: +- **Visually confirmed** in the image(s) — you can see distinct values (e.g., two different colors across two images, a size label printed on packaging) +- **Explicitly stated** by the user in their text note (e.g., "available in blue and green", "comes in S, M, L") + +**Do NOT suggest standard industry options based on product category.** For example, do NOT suggest Size: S, M, L, XL, XXL for apparel just because it is a clothing item. If no size information is visible in the image and the user did not mention sizes, report no size options detected. + +**Negative example:** Image shows a single t-shirt with no size labels visible and the user did not mention sizes → do NOT suggest a Size option. Report: "No variant options detected from the image." **Multi-image variant detection:** -- If multiple images show the **same product in different colors** (e.g., one red shirt, one blue shirt), suggest a Color option with those colors as choices. +- If multiple images show the **same product in different colors** (e.g., one red shirt, one blue shirt), suggest a Color option with **only those visible colors** as choices. - If multiple images show the **same product from different angles**, treat them as additional product media — NOT as separate variants. -- If only one image is provided and a color is visible, suggest that single color as a choice and ask the user if the product comes in other colors. - -Common options to detect: -- **Color** — visible color(s) across images -- **Size** — if apparel, footwear, or size-varying product +- If only one image is provided and a distinctive color is visible, suggest that single color as a choice and ask the user if the product comes in other colors. --- @@ -169,26 +189,39 @@ Common options to detect: **You MUST present ALL generated fields to the user and ask for confirmation before proceeding.** -Present a structured review card: +Present a structured review card using the markdown format below. This provides a visual product-card-style layout: -> **Here's what I've generated from your image(s):** -> -> **Name:** [generated name] -> -> **Description:** [generated description text] -> -> **Price:** $[price] *(avg. market: $[low]-$[high])* -> -> **Info Sections:** -> - **[Title 1]:** [summary] -> - **[Title 2]:** [summary] -> -> **SEO Description:** [meta description] -> -> Would you like to: -> - **Refine** — tell me what to change (e.g., "make the description shorter", "the price should be lower") -> - **Regenerate** — I'll start the analysis over, optionally with additional context from you -> - **Approve** — proceed to options and product creation +``` +--- + +### [Product Name] + +**$[price]** · _avg. market: $[low]-$[high]_ + +> [Generated description text — the full 2-4 sentence description] + +--- + +| Detail | Value | +|--------|-------| +| Images | [count] uploaded | +| SEO | [first 60 chars of meta description]… | +| Tone | [Matched from existing site products / Neutral e-commerce] | + +**Info Sections** +- **[Title 1]:** [one-line summary] +- **[Title 2]:** [one-line summary] + +**Detected Options:** [option summary, e.g. "Color: Slate Blue, Terracotta" or "None detected"] + +--- +``` + +After the card, present the action options: + +> 1. **Refine** — tell me what to change (e.g., "make the description shorter", "the price should be lower") +> 2. **Regenerate** — I'll start the analysis over, optionally with additional context from you +> 3. **Approve** — proceed to options and product creation If the user provided a text note that **contradicts** what's visible in the image (e.g., image shows blue but note says "available in red"), ask the user to clarify before proceeding. @@ -198,7 +231,7 @@ If the user provided a text note that **contradicts** what's visible in the imag ## V3 STEP 5: Suggest Options and Ask User (INTERACTIVE) -**Present the detected options from V3 STEP 3f and ask the user if they want to add product options.** +**Present the detected options from V3 STEP 4g and ask the user if they want to add product options.** If options were detected: @@ -214,7 +247,7 @@ If options were detected: If no options were detected: -> I didn't detect any variant attributes from the image(s). Would you like to add product options (such as Size or Color), or should I create a simple product without variants? +> I didn't detect any variant attributes from the image(s). Would you like to add product options, or should I create a simple product without variants? **Wait for user response.** Collect the final list of options and choices based on their answer. @@ -583,7 +616,27 @@ Use this if the user confirmed or provided options in V3 STEP 6. You MUST define } ``` -**On success:** Report to the user the product name, price, options (if any), info sections added, and confirm the product was created with images attached. +**On success:** Present a completion card summarizing what was created: + +``` +--- + +### Product Created + +**[Product Name]** · **$[price]** + +| | | +|---|---| +| Options | [option summary or "None"] | +| Info Sections | [list of section titles] | +| Images | [count] attached | + +**View in dashboard:** `https://manage.wix.com/dashboard/[siteId]/store/products/[productId]` + +--- +``` + +Replace `[siteId]` with the site ID from the MCP context and `[productId]` with the `product.id` from the API response. This link lets the user immediately view and edit the product in the Wix dashboard. **On failure:** Show an error message and offer to retry. Do NOT leave a partially created product. @@ -821,4 +874,4 @@ You called the wrong endpoint for the site's catalog version. Re-run STEP 1 to d - [Create Product (Catalog V1)](https://dev.wix.com/docs/api-reference/business-solutions/stores/skills/create-product-catalog-v1) - [Add Product Media (Catalog V1)](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v1/catalog/add-product-media) - [Upload Media to Wix](https://dev.wix.com/docs/api-reference/assets/media/skills/upload-media-to-wix) -- [Install Wix Apps](https://dev.wix.com/docs/api-reference/business-management/app-installation/skills/install-wix-apps) +- [Install Wix Apps](https://dev.wix.com/docs/api-reference/business-management/app-installation/skills/install-wix-apps) \ No newline at end of file From 837aa069197c5462be3883847b1a8e3a55f34462 Mon Sep 17 00:00:00 2001 From: Eliran Hasin Date: Wed, 10 Jun 2026 16:51:39 +0300 Subject: [PATCH 2/2] added subscription suggestions for relevant products --- .../stores/create-product-from-image.md | 143 ++++++++++++++++++ .../stores/create-product-from-image.md | 142 +++++++++++++++++ 2 files changed, 285 insertions(+) diff --git a/plugins/wix/skills/wix-manage/references/stores/create-product-from-image.md b/plugins/wix/skills/wix-manage/references/stores/create-product-from-image.md index 75f59be1..8651f380 100644 --- a/plugins/wix/skills/wix-manage/references/stores/create-product-from-image.md +++ b/plugins/wix/skills/wix-manage/references/stores/create-product-from-image.md @@ -163,6 +163,30 @@ Common options to detect: - **Color** — visible color(s) across images - **Size** — if apparel, footwear, or size-varying product +### 4g. Subscription Eligibility Detection (silent — no user interaction) + +Based on the product name, description, and image analysis, determine whether this product is **subscription-eligible**. A product qualifies if it is a consumable that gets depleted at a predictable rate — something customers buy repeatedly on a regular schedule. + +**Eligible categories (examples):** +- Food & beverage: coffee beans/pods, tea, protein powder, meal kits +- Supplements & health: vitamins, probiotics, protein supplements +- Pet: pet food, flea/tick treatments, cat litter +- Personal care: skincare routine products, razor blades/cartridges, deodorant, shampoo/conditioner +- Household: cleaning supplies, paper towels, toilet paper, laundry detergent +- Baby: diapers, formula, wipes +- Media: print/digital newspapers, magazines +- Candles (daily-use scented candles with high burn frequency) + +**NOT eligible (do not suggest):** +- Furniture, art, décor (one-time purchase) +- Electronics, tools, appliances +- Standard clothing, apparel, shoes (not subscription-typical) +- Jewelry, watches +- Books (single title), games, toys +- Any unique or collectible item + +Store the result internally as `subscription_eligible: true/false`. If `true`, also note a brief reason (e.g., `"coffee beans — daily consumable"`). No user interaction at this step. + --- ## V3 STEP 4: Present Review Card to User (INTERACTIVE) @@ -185,6 +209,8 @@ Present a structured review card: > > **SEO Description:** [meta description] > +> **Subscription:** [e.g. Monthly · 10% off] or [Not applicable] +> > Would you like to: > - **Refine** — tell me what to change (e.g., "make the description shorter", "the price should be lower") > - **Regenerate** — I'll start the analysis over, optionally with additional context from you @@ -196,6 +222,68 @@ If the user provided a text note that **contradicts** what's visible in the imag --- +## V3 STEP 4.5: Suggest Subscription (INTERACTIVE, conditional) + +> **Run this step ONLY if `subscription_eligible: true` was set in V3 STEP 3 section 4g.** Otherwise skip directly to V3 STEP 5. + +Present a short, non-pushy suggestion card: + +--- + +**This product looks like a great candidate for a subscription plan.** +Customers who subscribe to *[product name]* get auto-refills on a schedule they choose — boosting repeat revenue for you. + +Would you like to add a subscription option? +- **Yes** — set it up now (takes ~30 seconds) +- **No** — create as a one-time purchase only + +--- + +If the user says **No**, proceed directly to V3 STEP 5. + +If the user says **Yes**, ask the following 4 questions (can be presented together as a single form): + +**Q1 — Billing frequency** +> "How often should subscribers be charged and receive this product?" + +| Choice | `frequency` | `interval` | +|--------|------------|-----------| +| Every week | `WEEK` | `1` | +| Every 2 weeks | `WEEK` | `2` | +| Every month *(Recommended)* | `MONTH` | `1` | +| Every 2 months | `MONTH` | `2` | +| Every 3 months | `MONTH` | `3` | +| Every 6 months | `MONTH` | `6` | +| Every year | `YEAR` | `1` | + +**Q2 — Duration** +> "How long should the subscription run?" + +- **Ongoing** — renews automatically until the customer cancels (omit `billingCycles`) +- **Fixed** — ends after N cycles (ask: "How many cycles?") → set `billingCycles: N` + +**Q3 — Subscriber discount (optional incentive)** +> "Would you like to offer a discount to customers who subscribe?" + +- No discount (omit `discount` block) +- **10% off** *(Recommended)* → `type: "PERCENTAGE", amount: 10` +- Custom percentage → ask for value → `type: "PERCENTAGE", amount: [value]` +- Fixed amount off → ask for value → `type: "AMOUNT", amount: [value]` + +**Q4 — Allow one-time purchase alongside subscription** +> "Can customers also buy this product as a one-time purchase (without subscribing)?" + +- **Yes — sell both ways** *(Recommended)* → `allowOneTimePurchases: true` +- No — subscription only → `allowOneTimePurchases: false` + +After collecting the user's answers, show a brief confirmation line before moving on: + +> Subscription plan configured: [e.g. Monthly · Ongoing · 10% off · One-time purchases also allowed] + +Store the collected subscription data for use in V3 STEP 6. + +--- + ## V3 STEP 5: Suggest Options and Ask User (INTERACTIVE) **Present the detected options from V3 STEP 3f and ask the user if they want to add product options.** @@ -226,6 +314,60 @@ If no options were detected: Build the request body with all confirmed fields. The write must be **atomic** — either all fields save or none do. +**If a subscription was configured in V3 STEP 4.5**, include a `subscriptionDetails` block in the product body (see rules below). Otherwise omit it entirely. + +**`subscriptionDetails` rules:** +- `title`: auto-generate from frequency (e.g. `"Monthly Subscription"`, `"Weekly Subscription"`, `"Quarterly Subscription"`) +- `description`: if a discount was set, write a short sentence referencing it (e.g. `"Subscribe and save 10% on every order."`). Omit if no discount. +- `visible`: always `true` +- `frequency` + `interval`: from user's Q1 answer +- `billingCycles`: include only for fixed-duration subscriptions (from Q2). Omit for ongoing. +- `discount`: include only if a discount was chosen (from Q3). Omit the entire block if no discount. +- `allowOneTimePurchases`: from user's Q4 answer + +**Example `subscriptionDetails` block (monthly, ongoing, 10% off, one-time also allowed):** + +```json +"subscriptionDetails": { + "subscriptions": [ + { + "title": "Monthly Subscription", + "description": "Subscribe and save 10% on every order.", + "visible": true, + "frequency": "MONTH", + "interval": 1, + "discount": { + "type": "PERCENTAGE", + "amount": 10 + } + } + ], + "allowOneTimePurchases": true +} +``` + +**Example with fixed duration and flat amount discount (every 2 months, 6 cycles, $5 off, subscription only):** + +```json +"subscriptionDetails": { + "subscriptions": [ + { + "title": "Bi-Monthly Subscription", + "description": "Subscribe and save $5 on every order.", + "visible": true, + "frequency": "MONTH", + "interval": 2, + "billingCycles": 6, + "discount": { + "type": "AMOUNT", + "amount": 5 + } + } + ], + "allowOneTimePurchases": false +} +``` + --- ### Path A: Simple Product (No Options) @@ -597,6 +739,7 @@ Before reporting success to the user, verify ALL of the following: - [ ] V3 STEP 2 completed: User provided 1-3 images, all uploaded to Media Manager with wixstatic.com URLs. - [ ] V3 STEP 3 completed: Images analyzed from user's message, all product fields generated based on what's visible in the image(s). - [ ] V3 STEP 4 completed: User reviewed and approved the generated details. +- [ ] V3 STEP 4.5 completed (if applicable): Subscription eligibility was evaluated. If eligible, user was asked and their choice (Yes/No) was applied before proceeding to STEP 5. - [ ] V3 STEP 5 completed: User confirmed, modified, or skipped product options. - [ ] V3 STEP 6 completed: Product was created via API and you received a product ID. diff --git a/skills/wix-manage/references/stores/create-product-from-image.md b/skills/wix-manage/references/stores/create-product-from-image.md index a1b9223a..4d38168c 100644 --- a/skills/wix-manage/references/stores/create-product-from-image.md +++ b/skills/wix-manage/references/stores/create-product-from-image.md @@ -183,6 +183,30 @@ Examine the images for visible product attributes that should become variant opt - If multiple images show the **same product from different angles**, treat them as additional product media — NOT as separate variants. - If only one image is provided and a distinctive color is visible, suggest that single color as a choice and ask the user if the product comes in other colors. +### 4h. Subscription Eligibility Detection (silent — no user interaction) + +Based on the product name, description, and image analysis, determine whether this product is **subscription-eligible**. A product qualifies if it is a consumable that gets depleted at a predictable rate — something customers buy repeatedly on a regular schedule. + +**Eligible categories (examples):** +- Food & beverage: coffee beans/pods, tea, protein powder, meal kits +- Supplements & health: vitamins, probiotics, protein supplements +- Pet: pet food, flea/tick treatments, cat litter +- Personal care: skincare routine products, razor blades/cartridges, deodorant, shampoo/conditioner +- Household: cleaning supplies, paper towels, toilet paper, laundry detergent +- Baby: diapers, formula, wipes +- Media: print/digital newspapers, magazines +- Candles (daily-use scented candles with high burn frequency) + +**NOT eligible (do not suggest):** +- Furniture, art, décor (one-time purchase) +- Electronics, tools, appliances +- Standard clothing, apparel, shoes (not subscription-typical) +- Jewelry, watches +- Books (single title), games, toys +- Any unique or collectible item + +Store the result internally as `subscription_eligible: true/false`. If `true`, also note a brief reason (e.g., `"coffee beans — daily consumable"`). No user interaction at this step. + --- ## V3 STEP 4: Present Review Card to User (INTERACTIVE) @@ -207,6 +231,7 @@ Present a structured review card using the markdown format below. This provides | Images | [count] uploaded | | SEO | [first 60 chars of meta description]… | | Tone | [Matched from existing site products / Neutral e-commerce] | +| Subscription | [e.g. Monthly · 10% off] or [Not applicable] | **Info Sections** - **[Title 1]:** [one-line summary] @@ -229,6 +254,68 @@ If the user provided a text note that **contradicts** what's visible in the imag --- +## V3 STEP 4.5: Suggest Subscription (INTERACTIVE, conditional) + +> **Run this step ONLY if `subscription_eligible: true` was set in V3 STEP 3 section 4h.** Otherwise skip directly to V3 STEP 5. + +Present a short, non-pushy suggestion card: + +--- + +**This product looks like a great candidate for a subscription plan.** +Customers who subscribe to *[product name]* get auto-refills on a schedule they choose — boosting repeat revenue for you. + +Would you like to add a subscription option? +- **Yes** — set it up now (takes ~30 seconds) +- **No** — create as a one-time purchase only + +--- + +If the user says **No**, proceed directly to V3 STEP 5. + +If the user says **Yes**, ask the following 4 questions (can be presented together as a single form): + +**Q1 — Billing frequency** +> "How often should subscribers be charged and receive this product?" + +| Choice | `frequency` | `interval` | +|--------|------------|-----------| +| Every week | `WEEK` | `1` | +| Every 2 weeks | `WEEK` | `2` | +| Every month *(Recommended)* | `MONTH` | `1` | +| Every 2 months | `MONTH` | `2` | +| Every 3 months | `MONTH` | `3` | +| Every 6 months | `MONTH` | `6` | +| Every year | `YEAR` | `1` | + +**Q2 — Duration** +> "How long should the subscription run?" + +- **Ongoing** — renews automatically until the customer cancels (omit `billingCycles`) +- **Fixed** — ends after N cycles (ask: "How many cycles?") → set `billingCycles: N` + +**Q3 — Subscriber discount (optional incentive)** +> "Would you like to offer a discount to customers who subscribe?" + +- No discount (omit `discount` block) +- **10% off** *(Recommended)* → `type: "PERCENTAGE", amount: 10` +- Custom percentage → ask for value → `type: "PERCENTAGE", amount: [value]` +- Fixed amount off → ask for value → `type: "AMOUNT", amount: [value]` + +**Q4 — Allow one-time purchase alongside subscription** +> "Can customers also buy this product as a one-time purchase (without subscribing)?" + +- **Yes — sell both ways** *(Recommended)* → `allowOneTimePurchases: true` +- No — subscription only → `allowOneTimePurchases: false` + +After collecting the user's answers, show a brief confirmation line before moving on: + +> Subscription plan configured: [e.g. Monthly · Ongoing · 10% off · One-time purchases also allowed] + +Store the collected subscription data for use in V3 STEP 6. + +--- + ## V3 STEP 5: Suggest Options and Ask User (INTERACTIVE) **Present the detected options from V3 STEP 4g and ask the user if they want to add product options.** @@ -259,6 +346,60 @@ If no options were detected: Build the request body with all confirmed fields. The write must be **atomic** — either all fields save or none do. +**If a subscription was configured in V3 STEP 4.5**, include a `subscriptionDetails` block in the product body (see rules below). Otherwise omit it entirely. + +**`subscriptionDetails` rules:** +- `title`: auto-generate from frequency (e.g. `"Monthly Subscription"`, `"Weekly Subscription"`, `"Quarterly Subscription"`) +- `description`: if a discount was set, write a short sentence referencing it (e.g. `"Subscribe and save 10% on every order."`). Omit if no discount. +- `visible`: always `true` +- `frequency` + `interval`: from user's Q1 answer +- `billingCycles`: include only for fixed-duration subscriptions (from Q2). Omit for ongoing. +- `discount`: include only if a discount was chosen (from Q3). Omit the entire block if no discount. +- `allowOneTimePurchases`: from user's Q4 answer + +**Example `subscriptionDetails` block (monthly, ongoing, 10% off, one-time also allowed):** + +```json +"subscriptionDetails": { + "subscriptions": [ + { + "title": "Monthly Subscription", + "description": "Subscribe and save 10% on every order.", + "visible": true, + "frequency": "MONTH", + "interval": 1, + "discount": { + "type": "PERCENTAGE", + "amount": 10 + } + } + ], + "allowOneTimePurchases": true +} +``` + +**Example with fixed duration and flat amount discount (every 2 months, 6 cycles, $5 off, subscription only):** + +```json +"subscriptionDetails": { + "subscriptions": [ + { + "title": "Bi-Monthly Subscription", + "description": "Subscribe and save $5 on every order.", + "visible": true, + "frequency": "MONTH", + "interval": 2, + "billingCycles": 6, + "discount": { + "type": "AMOUNT", + "amount": 5 + } + } + ], + "allowOneTimePurchases": false +} +``` + --- ### Path A: Simple Product (No Options) @@ -650,6 +791,7 @@ Before reporting success to the user, verify ALL of the following: - [ ] V3 STEP 2 completed: User provided 1-3 images, all uploaded to Media Manager with wixstatic.com URLs. - [ ] V3 STEP 3 completed: Images analyzed from user's message, all product fields generated based on what's visible in the image(s). - [ ] V3 STEP 4 completed: User reviewed and approved the generated details. +- [ ] V3 STEP 4.5 completed (if applicable): Subscription eligibility was evaluated. If eligible, user was asked and their choice (Yes/No) was applied before proceeding to STEP 5. - [ ] V3 STEP 5 completed: User confirmed, modified, or skipped product options. - [ ] V3 STEP 6 completed: Product was created via API and you received a product ID.