6087131a
tangwang
doc
|
1
2
3
4
5
6
7
8
9
10
|
## 数据pipeline
1. 从 卖家精灵“关键词选品”选出服装品类的关键词,每个关键词会带上top10 asin
2. 汇总asin,做成 每行 1000个 asin(因为卖家精灵每次最多查询1000个)。 这样的话,总共34w+商品,美国站点是12w商品(120行)。 做了个浏览器自动化执行的工具,导出120个文件,然后下载下来。
3. 用本文档介绍的工具,将卖家精灵导出的excel转化为店匠的导入文件。
```bash
python scripts/amazon_xlsx_to_shoplazza_xlsx.py --input-dir data/mai_jia_jing_ling/products_data --template docs/商品导入模板.xlsx
```
|
cd29428b
tangwang
亚马逊数据导入店匠店铺 - 数据处理
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
## 亚马逊格式数据 → 店匠(Shoplazza)商品导入模板:转换说明
本仓库支持把 `data/mai_jia_jing_ling/products_data/*.xlsx`(**亚马逊格式导出**)转换为店匠后台可导入的 `docs/商品导入模板.xlsx` 格式。
对应脚本:
- **主入口**:`scripts/amazon_xlsx_to_shoplazza_xlsx.py`
- **历史兼容**:`scripts/competitor_xlsx_to_shoplazza_xlsx.py`(仅名称过时,逻辑一致)
- **模板写入复用工具**:`scripts/shoplazza_excel_template.py`
---
## 一、输入数据(亚马逊格式 xlsx)的关键字段
以 `Competitor-US-Last-30-days-363464.xlsx` 为例(文件名不影响:内容是亚马逊维度字段):
- **ASIN**:变体 id(我们视为 `sku_id`,会写入模板的 `商品SKU`)
- **父ASIN**:父商品 id(我们视为 `spu_id`/`product_id`,会写入模板的 `商品spu`,并用于分组 M/P)
- **商品标题**:商品标题(写入 `商品标题*`、SEO标题等)
- **SKU**:亚马逊变体描述字符串(关键:解析出多款式维度)
- 示例:`Size: One Size | Color: Black`
- **商品主图**:图片 URL(用于 `商品图片*` / `商品主图`)
- **价格($)** / **prime价格($)**:价格(用于 `商品售价*` / `商品原价`)
- **详细参数**:详情参数串(用于拼接 `商品描述`)
- **上架时间**:用于 `创建时间`
- **类目路径/大类目/小类目/品牌/商品详情页链接/品牌链接**:用于专辑、标签、SEO、供应商URL、备注等
- **商品重量(单位换算)/商品重量/商品尺寸**:用于 `商品重量/重量单位/尺寸信息`
> 注意:该数据源通常**没有库存**,脚本默认给每个变体一个固定库存(当前默认 100),以满足导入后的可用性。
---
## 二、输出数据(店匠导入模板)的核心规则(M / P / S)
店匠模板在 `docs/商品导入模板说明.md` 中定义了三种商品属性(`商品属性*`):
- **S(单一款式)**:一个商品只有一个变体(只有 1 个 ASIN)
- 输出 **1 行**
- **M(主商品)+ P(子款式)**:一个父商品(父ASIN)包含多个变体(多个 ASIN)
- 输出 **1 行 M + N 行 P**
- 且 **同一商品的 P 行必须紧跟在 M 行后面**(模板导入强约束)
本仓库的转换策略:
- 对每个 `父ASIN` 分组:
- **分组 size = 1** → 生成 `S`
- **分组 size > 1** → 生成 `M` + 多个 `P`
---
## 三、多款式(变体)是如何构造的(最关键部分)
### 1)为什么 “SKU” 列是关键
亚马逊格式里,变体的“颜色/尺码”等信息往往并不拆成多个列,而是集中在 `SKU` 字符串里,例如:
- `Size: One Size | Color: Black`
- `Color: Red | Style: 2-Pack`
店匠模板的多款式需要:
- **M 行**:`款式1/款式2/款式3` 写“维度名”(例如 Size / Color / Material)
- **P 行**:`款式1/款式2/款式3` 写“维度值”(例如 One Size / Black / Cotton)
### 2)脚本如何从 SKU 解析出维度(key/value)
脚本会把 `SKU` 以 `|` 分割,再用 `:` 拆成 key/value:
- 输入:`Size: One Size | Color: Black`
- 解析结果:`{ "Size": "One Size", "Color": "Black" }`
### 3)如何从多个变体里选出 “最多3个维度”
店匠模板只提供 `款式1~3` 三个维度,因此脚本会在一个 `父ASIN` 组内统计 key 的出现频次,并按优先级挑选最多 3 个维度:
- 优先级大致为:`Size`、`Color`、`Style`、`Pattern`、`Material` ……
- 如果一个组里解析不到任何 key/value,则退化为单维度:`Variant`
- M 行 `款式1 = Variant`
- P 行 `款式1 = ASIN`
### 4)M 行与 P 行分别填什么(避免导入报错)
根据模板说明,脚本遵循以下分工:
- **M 行(主商品)**:
- 填:标题/描述/SEO/专辑/标签/主图/款式维度名
- 不填:价格、库存、重量等 SKU 级字段(保持为空更安全)
- **P 行(子款式)**:
- 填:款式维度值、价格、商品SKU(ASIN)、库存、重量、尺寸、(可选)子款式图
- 不填:描述/SEO/专辑/供应商等 SPU 级字段(保持为空)
---
## 四、字段映射总览(高频字段)
- **商品spu** ← `父ASIN`(无父ASIN则用 ASIN)
- **商品SKU** ← `ASIN`
- **商品标题\*** ← `商品标题`
- **商品图片\*** / **商品主图** ← `商品主图`
- **商品售价\*** ← `prime价格($)` 优先,否则 `价格($)`
- **创建时间** ← `上架时间`(仅日期时补齐为 `YYYY-MM-DD 00:00:00`)
- **商品描述** ← `商品标题` + `详细参数`(以 HTML 拼接)
- **专辑名称** ← `大类目`(无则取 `类目路径` 第一段)
- **标签** ← `品牌,大类目,小类目`
- **商品重量/重量单位** ← 优先解析 `商品重量(单位换算)`(如 `68.04 g`)
- **尺寸信息** ← 解析 `商品尺寸` 前三段数字(英寸)拼成 `L,W,H`
---
## 五、如何运行(生成导入文件)
### 1)先小批量验证(推荐)
```bash
python scripts/amazon_xlsx_to_shoplazza_xlsx.py \
--input-dir data/mai_jia_jing_ling/products_data \
--template docs/商品导入模板.xlsx \
--output data/mai_jia_jing_ling/amazon_shoplazza_import_SAMPLE.xlsx \
|
50170c5a
tangwang
导入成功。有部分失败 (1/4) ...
|
126
|
--max-files 1 --max-products 50
|
cd29428b
tangwang
亚马逊数据导入店匠店铺 - 数据处理
|
127
128
|
```
|
80519ec6
tangwang
emazon -> shoplazza
|
129
130
131
|
### 性能提示(很重要)
- 旧实现如果用 `ws.cell()` 逐格读取/写入,处理 1 个 xlsx 就可能非常慢(分钟级甚至更久)。
|
50170c5a
tangwang
导入成功。有部分失败 (1/4) ...
|
132
|
- 当前脚本已经使用 **`iter_rows(values_only=True)`** + write_only 模式做快速读写(只有这一种实现方式,保持简单)。
|
80519ec6
tangwang
emazon -> shoplazza
|
133
|
|
cd29428b
tangwang
亚马逊数据导入店匠店铺 - 数据处理
|
134
135
136
137
138
139
140
141
142
|
### 2)生成全量
```bash
python scripts/amazon_xlsx_to_shoplazza_xlsx.py \
--input-dir data/mai_jia_jing_ling/products_data \
--template docs/商品导入模板.xlsx \
--output data/mai_jia_jing_ling/amazon_shoplazza_import_ALL.xlsx
```
|
50170c5a
tangwang
导入成功。有部分失败 (1/4) ...
|
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
### 3)按 Excel 行数自动拆分文件
当单个导出超过一定行数时,可以通过 `--max-rows-per-output` 控制单个 Excel 的最大总行数(包含模板头部行):
```bash
python scripts/amazon_xlsx_to_shoplazza_xlsx.py \
--input-dir data/mai_jia_jing_ling/products_data \
--template docs/商品导入模板.xlsx \
--output data/mai_jia_jing_ling/amazon_shoplazza_import_SPLIT.xlsx \
--max-rows-per-output 40000
```
- 若结果只需要 1 个文件,仍输出为 `amazon_shoplazza_import_SPLIT.xlsx`
- 若需要拆分为多个文件,则追加 `_part1/_part2/...` 后缀:
- `amazon_shoplazza_import_SPLIT_part1.xlsx`
- `amazon_shoplazza_import_SPLIT_part2.xlsx`
- **同一个 SPU(同一父ASIN 的 M+P 或 S 行)保证不会被拆到不同文件中**
|
cd29428b
tangwang
亚马逊数据导入店匠店铺 - 数据处理
|
161
162
163
164
165
166
167
|
---
## 六、可扩展点(后续常见需求)
- **库存/上架/收税策略参数化**:目前是脚本默认值(Y/N/100),可按目标店铺规则改为命令行参数。
- **更强的多款式解析**:如果未来亚马逊格式 `SKU` 不规范,可补充从 `详细参数` 里挖出 `Color/Size`。
- **图片策略**:目前 P 行用各自 `商品主图`;也可改为 M 行合并多图(逗号拼接)。
|