From mobazha
Import products from Shopify, Amazon, Etsy, or CSV into a Mobazha store. Use when the user wants to migrate or copy listings from another platform.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mobazha:product-importThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Import products from Shopify, Amazon, Etsy, and other e-commerce platforms into your Mobazha store.
Import products from Shopify, Amazon, Etsy, and other e-commerce platforms into your Mobazha store.
This skill helps you migrate or copy product listings from existing platforms into Mobazha. Two approaches are available:
If the store is connected via MCP, use the listings_import_json tool for the fastest bulk import:
{
"import_json": "{\"listings\":[...], \"shippingProfiles\":[...]}",
"images_base64": "{\"photo1.jpg\":\"<base64>\",\"photo2.jpg\":\"<base64>\"}"
}
The tool builds a ZIP archive internally and uploads it to POST /v1/listings/import/json.
{
"listings": [
{
"slug": "unique-product-slug",
"title": "Product Name",
"contractType": "PHYSICAL_GOOD",
"price": "29.99",
"pricingCurrency": "USD",
"description": "Product description",
"shortDescription": "Brief summary",
"productType": "Clothing",
"tags": ["tag1", "tag2"],
"condition": "NEW",
"nsfw": false,
"images": ["photo1.jpg", "photo2.jpg"],
"introVideo": "demo.mp4",
"processingTime": "1-3 business days",
"grams": 500,
"quantity": "100",
"shippingProfileId": "Standard Shipping",
"variants": [
{ "selections": {"Color": "Red", "Size": "S"}, "price": "24.99", "quantity": "50", "productID": "SKU-RED-S" },
{ "selections": {"Color": "Blue", "Size": "S"}, "price": "26.99", "quantity": "30", "productID": "SKU-BLU-S" }
]
}
],
"shippingProfiles": [
{
"key": "Standard Shipping",
"name": "Standard Shipping",
"isDefault": true,
"locationGroups": [
{
"id": "lg-worldwide",
"locationIds": [],
"zones": [
{
"id": "z-global",
"name": "Global",
"regions": ["ALL"],
"rates": [
{
"id": "r-standard",
"name": "Standard Shipping",
"price": "599",
"currency": "USD",
"estimatedDelivery": "7-14 business days"
}
]
}
]
}
]
}
],
"collections": [
{
"title": "Summer Collection",
"description": "Best summer products",
"image": "summer-banner.jpg",
"products": ["unique-product-slug"]
}
],
"profile": {
"name": "Store Name",
"about": "Store description",
"shortDescription": "Brief tagline",
"location": "New York, US"
}
}
The locationGroups array follows the Shopify-inspired model:
| Field | Type | Description |
|---|---|---|
locationGroups[].id | string | Unique ID for the location group |
locationGroups[].locationIds | string[] | Linked shipping locations (empty = global) |
locationGroups[].zones[].id | string | Unique ID for the zone |
locationGroups[].zones[].name | string | Display name (e.g., "Global", "Asia") |
locationGroups[].zones[].regions | string[] | ISO country codes, or ["ALL"] for worldwide |
locationGroups[].zones[].rates[].id | string | Unique ID for the rate |
locationGroups[].zones[].rates[].name | string | Rate name (e.g., "Standard Shipping") |
locationGroups[].zones[].rates[].price | string | Price in smallest currency unit (e.g., "599" = $5.99) |
locationGroups[].zones[].rates[].currency | string | Currency code (e.g., "USD") |
locationGroups[].zones[].rates[].estimatedDelivery | string | Delivery estimate (e.g., "7-14 business days") |
Listings reference profiles by shippingProfileId, which matches the key field in the import JSON.
| Type | Notes |
|---|---|
PHYSICAL_GOOD | Requires shippingProfileId matching a profile key |
DIGITAL_GOOD | No shipping needed |
SERVICE | No shipping needed |
CRYPTOCURRENCY | Token/coin listings (supports RWA fields) |
Each variant uses a selections map (not separate name/options fields):
{ "selections": {"Color": "Red", "Size": "M"}, "price": "24.99", "quantity": "50", "productID": "SKU-001" }
Group products into collections by referencing their slugs:
{ "title": "New Arrivals", "products": ["product-slug-1", "product-slug-2"] }
For the complete field reference, see references/mapping.md.
Images referenced in listings[].images must be provided as base64-encoded data in the images_base64 parameter. The filenames must match exactly.
To prepare images:
images_base64 JSON map: {"filename.jpg": "<base64-data>"}For non-MCP contexts (e.g., shell scripts), build a ZIP file manually:
my-import/
├── import.json # Required: product data + shipping profiles + collections
├── images/ # Product images referenced in import.json
│ ├── photo1.jpg
│ ├── photo2.png
│ └── ...
└── videos/ # Optional: intro videos
└── demo.mp4
The JSON file can be named import.json, listings.json, or any .json filename. If it includes a profile section, the store profile is also updated.
curl -X POST "https://your-store.example.com/v1/listings/import/json" \
-H "Authorization: Bearer <token>" \
-F "[email protected]"
{
"data": {
"total": 10,
"created": 8,
"updated": 2,
"failed": 0,
"createdItems": [{ "slug": "product-1", "title": "Product 1" }],
"updatedItems": [{ "slug": "product-2", "title": "Product 2" }],
"errors": []
}
}
Detailed per-platform extraction guides and field mappings are in the references/ directory:
| File | Description |
|---|---|
references/shopify-api.md | Shopify CSV export and Admin API data extraction |
references/amazon-scrape.md | Amazon product page scraping with BeautifulSoup |
references/mapping.md | Universal field mapping table (all platforms → Mobazha) |
| Source | Method | Notes |
|---|---|---|
| Shopify | CSV export or API | See references/shopify-api.md |
| Amazon | Web scraping | See references/amazon-scrape.md |
| Etsy | CSV export or API | Export from Etsy Shop Manager |
| WooCommerce | CSV/JSON export | Export from WooCommerce admin |
| Generic CSV | Manual | Any CSV with title, description, price, images |
references/shopify-api.md for detailsreferences/mapping.md for field mappinglistings.json (include shippingProfiles for physical goods)listings_import_json MCP tool or direct ZIP APIreferences/amazon-scrape.md for scraping code and DOM selectorsreferences/mapping.md_AC_US40_ with _AC_SL1500_)listings_import_json MCP tool or direct ZIP APIImportant: Respect robots.txt and rate limits; use 3-5 second delays between requests; verify pricing before import
For small imports (< 10 products), create listings one at a time via the listings_create MCP tool:
{
"listing_json": "{\"slug\":\"my-product\",\"metadata\":{\"contractType\":\"DIGITAL_GOOD\",...},\"item\":{\"title\":\"...\",\"price\":\"9.99\",...}}"
}
Or via the Admin API:
POST /v1/listings
Content-Type: application/json
Authorization: Bearer <token>
Images must be uploaded first via POST /v1/media/product-images to obtain content hashes. The endpoint accepts a JSON array of {"image": "<base64>", "filename": "photo.jpg"} objects.
If the store is connected via MCP (recommended), authentication is handled automatically through the MCP session token.
For direct API calls, authenticate via OAuth to obtain a Bearer token, then include it in the Authorization header.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub mobazha/mobazha-skills --plugin mobazha