Skill Description
This skill is used to convert 1688 products into corresponding product data for the Russian e-commerce platform Ozon, producing JSON structured data that can be used to operate Ozon's listing API. Afterward, use Ozon's open platform interface to upload the product information to the Ozon platform and query the upload result. It can list 1688 products to Ozon, publish them on Ozon, upload them to Ozon, list on Ozon, Ozon product publishing, Ozon product upload, query Ozon upload results, listing, 1688 product listing.
Trigger words: upload to Ozon, list on Ozon, Ozon product publishing, Ozon product upload, query Ozon upload results, listing, 1688 product listing.
When to Use
When the user says they need to list products to Ozon, publish them on Ozon, upload them to Ozon, Ozon product publishing, Ozon product upload, query Ozon upload results, listing, 1688 product listing, etc.
Prerequisite Configuration (Must Be Completed First)
⚠️ Before using this SKILL, the following parameters must be configured first; otherwise, the listing process will fail.
| Environment Variable | Description | Required | How to Obtain |
|---|---|---|---|
OZON_API_KEY |
API Key for the Ozon seller backend | ✅ Required | In Ozon seller backend → Generate in API settings |
OZON_CLIENT_ID |
Client ID for the Ozon seller backend | ✅ Required | In Ozon seller backend → View in API settings |
OZON_CURRENCY |
Currency code, which must match the currency set in the Ozon personal center | ✅ Required (default RUB) |
RUB(ruble) or CNY(renminbi), a currency mismatch will cause an API error |
ALPHASHOP_ACCESS_KEY |
AlphaShop API Access Key (used for image translation) | ✅ Required | You can visit 1688-AlphaShop (Aoxia) to apply for https://www.alphashop.cn/seller-center/apikey-management and log in directly with 1688/Taobao/Alipay/mobile phone |
ALPHASHOP_SECRET_KEY |
AlphaShop API Secret Key (used for image translation) | ✅ Required | You can visit 1688-AlphaShop (Aoxia) to apply for https://www.alphashop.cn/seller-center/apikey-management and log in directly with 1688/Taobao/Alipay/mobile phone |
If the user has not provided these parameters,you must first ask the user to obtain them before continuing the operation。
⚠️ AlphaShop API arrears handling: If an arrears/insufficient balance-related error is returned when calling the AlphaShop API,you must immediately interrupt the current process, prompt the user to go to https://www.alphashop.cn/seller-center/home/api-list to purchase credits before continuing the operation.
Configuration Method
Ozon key configuration file location:~/.openclaw/skillconfig/1688-Product-to-Ozon/ozon_config.json
{
"OZON_API_KEY": "your-api-key",
"OZON_CLIENT_ID": "your-client-id",
"OZON_CURRENCY": "CNY"
}
AlphaShop KeyConfigure in OpenClaw config:
{
skills: {
entries: {
"1688-Product-to-Ozon": {
env: {
ALPHASHOP_ACCESS_KEY: "YOUR_AK",
ALPHASHOP_SECRET_KEY: "YOUR_SK"
}
}
}
}
}
Core Features
1. 1688 to Ozon category mapping
- Call the 1688 OpenClaw API to obtain the Ozon category corresponding to the product
- Input: 1688 product category ID, obtained from the structured information, prioritizing the value of thirdCategoryId; if there is none, obtain the value of categoryId. What is passed should be the category value!! It is a number.
- Output: the corresponding Ozon category information
2. Get Ozon category attribute requirements
- Query the Ozon API to get all attribute requirements for the target category
- Input: Ozon category ID (multiple separated by commas), user authentication information (OZON_API_KEY, OZON_CLIENT_ID)
- Output: attribute list and detailed requirements
- Note: directly use the externalCategoryId obtained in the previous step. This value generally has two parts separated by a comma; do not take only one of them as the category ID
3 Query the selectable values of dictionary attributes (must be executed)
- After obtaining the category attribute list, for all
dictionary_id > 0attributes, you must first query the dictionary value list for that attribute - Do not guess or manually write dictionary_value_id; it must be obtained by querying through a script, otherwise it will cause
error_attribute_values_out_of_rangeerrors
Workflow:
- First use
queryOzonProperties.pyto get the attribute list - Filter out all
dictionary_id > 0attributes - For each dictionary attribute, use
queryDictionaryValues.pyto query the selectable values - Obtain the correct
idvalue from the returned result (i.e.dictionary_value_id), and fill it into the product data
Use the queryDictionaryValues.py script to query dictionary values:
# 搜索模式 - 根据关键词搜索匹配的字典值(推荐,更精准)
python queryDictionaryValues.py \
--attribute_id 85 \
--description_category_id 17028922 \
--type_id 91565 \
--search "Нет бренда"
# 列表模式 - 列出所有可选值(当不确定关键词时使用)
python queryDictionaryValues.py \
--attribute_id 85 \
--description_category_id 17028922 \
--type_id 91565 \
--limit 50
Parameter description:
--attribute_id: attribute ID (taken from the attribute list obtained in Step 2)--description_category_id: description category ID (taken from the category mapping result)--type_id: type ID (taken from the category mapping result)--search: search keyword (optional, use Russian; if not provided, all values will be listed)--limit: return count limit (default 50)
Output format: JSON array, each element contains id(i.e. dictionary_value_id) and value
- Common attributes that need to be queried: brand (85/31), type (8229), color (10096), size (4295), gender (9163), material, season, etc.
4. Product data structure conversion
- This step is very important; you must use the data produced by the above two capabilities!!!
- The AI large model receives 1688 product information and Ozon attribute requirements
- Intelligently map and convert product attributes
- Input: Ozon category attribute requirements, 1688 product data (JSON format),dictionary values found in Step 2.5
- Output: product structure conforming to the Ozon listing structure (JSON format)
Ozon structure requirements
This is an Ozon structure example. You need to generate Ozon product data according to this structural specification and strictly maintain this data structure
{
"items": [
{
"attributes": [
{
"complex_id": 0,
"id": 5076,
"values": [
{
"dictionary_value_id": 971082156,
"value": "麦克风架"
}
]
},
{
"complex_id": 0,
"id": 9048,
"values": [
{
"value": "一套X3NFC保护膜。 深色棉质"
}
]
},
{
"complex_id": 0,
"id": 8229,
"values": [
{
"dictionary_value_id": 95911,
"value": "一套X3NFC保护膜。深色棉质"
}
]
},
{
"complex_id": 0,
"id": 85,
"values": [
{
"dictionary_value_id": 5060050,
"value": "Samsung"
}
]
},
{
"complex_id": 0,
"id": 10096,
"values": [
{
"dictionary_value_id": 61576,
"value": "灰色的"
}
]
}
],
"barcode": "112772873170",
"description_category_id": 17028922,
"new_description_category_id": 0,
"color_image": "",
"complex_attributes": [],
"currency_code": "RUB",
"depth": 10,
"dimension_unit": "mm",
"height": 250,
"images": [
"https://example.com/translated_image_2.jpg",
"https://example.com/translated_image_3.jpg",
"https://example.com/translated_image_4.jpg"
],
"images360": [],
"name": "一套X3NFC的保护膜。深色棉质",
"offer_id": "143210608",
"old_price": "1100",
"pdf_list": [],
"price": "1000",
"primary_image": "https://example.com/translated_image_1.jpg",
"promotions": [
{
"operation": "UNKNOWN",
"type": "REVIEWS_PROMO"
}
],
"type_id": 91565,
"vat": "0",
"weight": 100,
"weight_unit": "g",
"width": 150
}
]
}
Customization rules
- The title must be translated into Russian! The title must be translated into Russian! The title must be translated into Russian!
- items represents the SKU list, corresponding one-to-one with 1688 SKUs
- The value of vat is fixed at 0
- Generation rule for offer_id: use the 1688 SKU_ID
- The "22390" attribute represents the Ozon model. A 1688 product has multiple SKUs, so these SKUs all belong to the same model in Ozon, and the value is the 1688 product ID (itemId). Note: in some categories this attribute ID may be "8292" (merged into one card), with the same function; just fill in the 1688 product ID
- attributes represents the attribute list, which needs to be generated according to the "Ozon category attribute requirements" obtained in the previous steps. Prioritize required attributes, and "4191" (product description) must also be filled in. On the premise of ensuring correctness, fill in as many attributes as possible (including non-required ones); any attribute that can be extracted or inferred from the 1688 product data should be filled in.
- For weight, pay attention to the unit; convert all to grams (g) for processing.
- The length unit (dimension_unit) is fixed to mm for processing; 1688 data is all in cm.
- All values that are not numbers or unit types need to be translated into Russian, such as the product title.
- The attribute "23487" has a fixed value of China.
- For the attribute "9048", use a randomly generated number as the item number; one 1688 product uses the same value.
- The attribute "4389" has a fixed value of China.
- The brand attribute has a fixed value of "Нет бренда", and dictionary_value_id is 126745801 (note: it is not "Без бренда"; Ozon's no-brand value is "Нет бренда"). The brand attribute ID may differ under different categories (commonly 85 or 31); refer to the attribute list obtained in Step 2.
- The parameter vendor_value is fixed to "Нет бренда".
- The attribute "4191" is the product description/description and must be filled in! Based on information such as the 1688 product title, attributes, and material, generate a Russian product description copy, highlight the selling points (material, function, applicable scenarios, etc.), and fill it into the value of this attribute.
Suggested pricing logic
The pricing rules take priority based on your rules. If no pricing rule is specified, the following pricing logic will be used. Configure this price into price, and leave old_price empty:
Price according to the currency configured in your OZON_CURRENCY, and ultimately determine the selling price of this product on Ozon; all pricing must use the price of the 1688 SKU.
Pricing logic when the currency is RUB
- If your currency is RUB, currency conversion is required.
- Multiply the 1688 SKU price by the exchange rate and then by 3 to get the RUB price.
Pricing logic when the currency is CNY
- If your currency is CNY, currency conversion is not required.
- Multiply the 1688 SKU price by 3 to get the CNY price.
Material processing
The product images need to be translated into Russian. Use the translate_images.py script included with this skill to process all images.
How to call:
# 翻译单张图片
python translate_images.py --image-url "<图片URL>"
# 批量翻译多张图片(空格分隔)
python translate_images.py --image-url "<图片URL1>" "<图片URL2>" "<图片URL3>"
Authentication: Requires the environment variables ALPHASHOP_ACCESS_KEY and ALPHASHOP_SECRET_KEY。
Script description:
- Call the AlphaShop image translation PRO API (
POST https://api.alphashop.cn/ai.image.translateImagePro/1.0) - Source language is automatically detected (auto), and the target language is fixed to Russian (ru).
- Authentication method: JWT HS256 signature (
iss=AK, exp=now+1800, nbf=now-5, SK is the secret key) - Output in JSON format, including the original URL and translated URL of each image.
Processing steps:
- Traverse all image URLs of the 1688 product (main image + SKU images).
- Call
translate_images.pyfor each image to translate it. - Extract the translated image URL from the returned result (the
translatedImageUrlfield in the response JSON). - Replace the original image URL with the translated image URL, and fill it into the
primary_imageandimagesfields of the Ozon product structure:primary_image: Fill inthe firsttranslated image URLimages: Fill inall remainingtranslated image URLs (array), excluding the one already filled in primary_image
- If a certain image fails to be translated (API error or no text needs translation), keep the original image URL and continue processing
⚠️ All images must be uploaded, you cannot upload only one! All main images and SKU images of the 1688 product must be translated and filled in,primary_image put the first one in,images put all the remaining images in the array.
Product detail description
- Referenceoffer_description.jsonconstruct the product description information based on the content in, use the above processed product materials, and then construct the product detail description
- You can add arrays in content, but do not modify the structure of a single content
Data storage
Create your product data file and store it in the temporary directory tmp/my_products.json(the tmp/ directory has been excluded by .gitignore and will not be uploaded to git)
All temporary files (product data, translation cache, category IDs, etc.) are stored uniformly in the tmp/ directory.
5. Product listing
- Use the Ozon API POST
/v3/product/importendpoint to upload product data. A valid ClientId and API Key are required for authentication. - Input: product JSON structure in Ozon format
- Output: product listing task ID
python upload_product.py --product-data my_products.json
6. Query product listing result
- Use the Ozon API POST
/v1/product/import/infoendpoint to query the status and detailed results of the upload task. - Input: task ID
- Output: product listing status and result
- Note: if the result is imported, it means the upload was successful; any existing issues can be modified by the user in the merchant backend
python check_status.py <task_id>
Workflow
Note: if any step fails, return an error directly, do not imagine, do not imagine, do not imagine
1. 用户输入1688商品信息
↓
2. AI模型:解析出1688的叶子类目(thirdCategoryId 或 categoryId)
↓
3. Python脚本`queryCategoryMapping.py`:查询类目映射 (1688类目ID → Ozon类目ID)
↓
4. AI模型:从上一步的结果中解析出来Ozon的类目(externalCategoryId,含description_category_id和type_id)
↓
5. Python脚本`queryOzonProperties.py`:通过externalCategoryId参数获取Ozon类目属性列表
↓
6 Python脚本`queryDictionaryValues.py`:对所有dictionary_id>0的属性,查询正确的dictionary_value_id,一定要执行,这里会影响到商品的上架
↓
7. 翻译图片:调用`translate_images.py`将商品主图和SKU图翻译为俄语
↓
8. AI模型:结合1688商品数据、Ozon属性要求、字典值、翻译后图片,生成符合Ozon上架规则的商品结构数据
↓
9. Python脚本:调用 upload_product.py 上传商品信息到Ozon
↓
10. Python脚本:调用 `check_upload_status.py` 查询商品上传状态(imported=成功)
↓
10. 输出:Ozon的上传结果
Included scripts
queryCategoryMapping.py
Query the category mapping from 1688 to Ozon
queryOzonProperties.py
Query Ozon category attribute requirements
queryDictionaryValues.py
Query the dictionary optional values of Ozon attributes, supporting search mode (search by keyword) and list mode (list all values)
upload_product.py
Upload product information to Ozon
check_upload_status.py
Query product upload status
translate_images.py
Call the AlphaShop image translation PRO interface to translate the text in product images into Russian (source language automatically detected)
Usage instructions
- Provide the basic information of the 1688 product
- Provide Ozon authentication information (ClientId, API Key, currency)
- SKILL will automatically call the python script to complete the conversion, transforming the 1688 product structure into structured data suitable for listing on Ozon
- SKILL will automatically call the python script to complete the upload
Last updated: 2026-03-16