下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-fsaw2bbr--ecommerce-return-rate.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-fsaw2bbr/ecommerce-return-rate。电商退货率深度分析技能。支持视频号、抖音、淘宝/天猫、京东、拼多多等主流平台。核心能力:自动识别平台、订单五分类拆解、多时段对比、跨平台对比、支付方式拆解、同一产品名称合并确认、生成HTML可视化报告。触发词:退货率、退款率、退货分析、退款分析、退货数据、退款数据、退货对比、退款对比、退货率分析、退款率分析、分品退货、退货率对比、分析退货、分析退款、订单退货、电商退货、退货数据对比、return rate、refund rate。
当用户提供电商平台导出的订单文件(Excel/CSV)并提及上述任何关键词时触发。
阅读全文 (展开查看完整说明)
概述
概述
电商平台后台提供的退货率是笼统的汇总数字——不分品、不分时段、不分支付方式,商家无法看到结构性问题。本技能提供一套标准化的退货率深度分析框架,将原始订单数据拆解为可执行的业务洞察。
核心价值:
- 分品分析:每个SKU独立计算退货率,定位问题产品
- 分时段对比:上线前后、周环比等时间维度对比,追踪改善效果
- 跨平台对比:同一产品在不同平台的退货率并排对比
- 支付方式拆解:识别先用后付/抖音月付/花呗等信用支付对退货率的放大效应
- 五分类模型:将订单拆解为未付款取消、售前退款、发货后退款、正常完成、在途五类,消除平台汇总数据的误导
触发条件
当用户提及以下任意关键词并提供数据文件时激活本技能:
短触发词(任一即可): 退货率、退款率、退货分析、退款分析、退货数据、退款数据、退货对比、退款对比、分品退货、分析退货、分析退款、订单退货、电商退货
组合触发(关键词+文件):
- "帮我分析下退货率" + 提供文件路径
- "这个文件的退货数据看下" + 文件路径
- "对比下这两个的退款率" + 多个文件路径
- "退货率对比" / "退款率分析" / "退货数据对比"
- "return rate" / "refund rate" + 文件路径
无文件时: 用户仅提及退货率/退款率相关关键词但未提供文件,询问是否需要分析,引导用户提供数据文件路径。
完整工作流程
Step 1 — 接收原始数据文件
用户提供一个或多个从电商平台后台导出的原始订单数据文件路径。文件格式为 Excel(.xlsx)或 CSV。
示例用户输入:
- 单平台:"分析这个文件的退货率:C:…微信小店订单_xxx.xlsx"
- 跨平台:"对比这两个文件的退货率:视频号 xxx.xlsx 和抖音 xxx.csv"
Step 2 — 自动识别平台类型 + 扫描数据
对每个文件执行平台识别和数据扫描。
2.1 平台识别
读取文件前几行,检查列名匹配各平台特征列。详细识别规则见 references/platform_specs.md 的"平台识别规则"部分。
识别优先级:取匹配特征列最多的平台。若无法确定,向用户展示列名并询问。
2.2 数据扫描
对每个文件执行以下扫描(使用 Python pandas/openpyxl):
- 产品列表:提取所有商品名称/SKU/商家编码的唯一值及各自订单量
- 时间范围:提取最早和最晚的订单日期
- 支付方式分布:提取所有支付方式及各自占比
- 订单状态分布:提取所有订单状态值
- 售后状态分布:提取所有售后状态值
扫描完成后,向用户汇报识别结果。
Step 3 — 交互确认(逐个提问,6步)
关键原则:一次只问一个问题,等用户回答后再问下一个。 不要把6个问题一次性全部抛出,这会让用户体验很差。每个问题的回答可能影响后续问题的内容,因此必须逐步推进。
流程顺序很重要:先合并产品名称,再让用户选择产品。 因为同一产品可能有多个名称变体(如"礼盒装" vs "生日礼物版"),如果不先合并,产品列表会碎片化,用户面对一堆重复/变体名称做选择,体验很差且容易遗漏。
流程如下:
第1步 — 平台确认
向用户展示识别结果,等待确认:
"检测到以下平台:
- 文件1 → 视频号(微信小店)
- 文件2 → 抖音
确认吗?如果识别有误,请告诉我正确平台。"
等用户回复后,再进入第2步。
第2步 — 产品名称合并确认
平台确认后,立即扫描所有产品名称,检测是否存在名称相似但可能属于同一产品的情况。这一步必须在产品选择之前完成,否则用户面对碎片化的产品列表无法做出清晰选择。
分场景处理(核心体验优化):
| 产品数量 | 处理方式 |
|---|---|
| ≤10个 | 逐个列出可疑合并,详细展示 |
| 10-50个 | 用紧凑表格展示可疑合并组,支持"全部合并/全部不合并/逐个选择" |
| >50个 | 只展示检测到的可疑合并候选(不列出全部产品),支持批量确认 |
关键原则:不要把所有产品都列出来让用户确认合并——只展示"检测算法认为可能需要合并"的候选组。 大部分产品名称独一无二,无需合并,直接跳过。这样即使有200个产品,如果只有3组可疑合并,用户只需确认3组。
检测算法逻辑(后台运行,用户不可见):
- 提取每个产品名称的核心关键词(去掉"礼盒装"、"生日礼物版"、"升级款"等修饰词)
- 如果多个产品共享相同核心关键词 → 标记为可疑合并组
- 如果不同平台的编码可能对应同一产品(如抖音"SKU-A01"和"SKU-A01-LH"可能是同一产品)→ 标记为跨平台可疑合并
- 订单量差距悬殊的名称变体(主名称500单,变体仅30单)→ 标记为可疑合并
三种交互模板:
场景A(≤10个产品,可疑合并少):
"检测到以下产品名称可能属于同一产品,是否需要合并?
- 产品A(礼盒装)300单 + 产品A(生日礼物版)30单 → 合并为 产品A?
- SKU-A01 + SKU-A01-LH → 合并为 产品A?
跨平台:视频号'产品A'与抖音'产品A-简称'是同一产品吗?"
场景B(10-50个产品):
"检测到以下产品可能需要合并(共享相同核心关键词):
合并组 包含名称 合计订单量 合并为 产品A 礼盒装300单 + 生日礼物版30单 330单 产品A 产品B SKU-B01 12000单 + SKU-B01-LH 500单 12500单 产品B 可以逐个选择合并/不合并,也可以一键"全部合并"或"全部不合并"。"
场景C(>50个产品,只展示候选):
"数据中有 186 个产品,检测到 5 组可能需要合并的产品名称:
合并组 包含名称数 合计订单量 合并为 产品A 2个变体 330单 产品A 产品B 2个编码 12500单 产品B … … … … 可以一键"全部合并"、"全部不合并",或逐个调整。其余 181 个产品名称独一无二,无需合并。"
若未检测到任何可疑合并: 直接跳过此步,告知用户"未检测到需要合并的产品名称",立即进入第3步。
合并后效果:合并后的产品列表更清晰,后续产品选择和退货率计算都基于合并后的产品维度,避免数据碎片化。
等用户回复后,再进入第3步。
第3步 — 产品选择 + 跨平台对比
基于第2步合并后的产品列表,展示干净的产品清单,让用户选择:
"合并后的产品列表:
平台 产品 订单量 视频号 产品A(主款) 330单 视频号 配件X 1单 抖音 产品B 12,500单 抖音 配件Y 10,000单 抖音 产品A 1,800单 你想分析哪些产品的退货率?"
若提供了多个平台文件,追加询问:
"同一产品是否需要跨平台对比?"
等用户回复后,再进入第4步。
第4步 — 排除非目标产品
根据前面确认的产品范围,列出疑似配件/赠品的产品:
"以下产品可能是配件/赠品,需要排除吗?(排除后不计入退货率计算)
- 视频号:配件X(1单)
- 抖音:配件Y(10,000单)、配件Z(42单)"
等用户回复后,再进入第5步。
第5步 — 时段拆分
根据数据时间范围和用户确认的产品/排除项,建议时段拆分:
"数据时间范围:
- 平台A:X月X日 ~ X月X日(35天)
- 平台B:X月X日 ~ X月X日(30天)
- 跨平台交集:X月X日 ~ X月X日(15天)
建议按周拆分为以下时段:
- 产品B基线:第1周
- 产品A上线后第一周:第2周
- 产品A上线后第二周:第3周
需要调整吗?"
- 自动按7天为一段拆分
- 若检测到产品上线时间点(某产品首次出现的日期),以此为分界点建议"上线前/上线后"分段
- 跨平台对比时,取各平台时间范围的交集作为对比时段
- 用户可修改、增减、合并时段
等用户回复后,再进入第6步。
第6步 — 支付方式拆解(可选)
最后询问是否需要支付方式拆解:
"是否需要支付方式拆解分析?
(分析先用后付/抖音月付/花呗等信用支付对退货率的放大效应)
检测到的支付方式:
- 视频号:先用后付(约20%)、微信支付(约80%)
- 抖音:抖音月付(约29%)、微信支付/支付宝(约71%)"
- 用户选择是/否
- 若选择是,在报告中加入支付方式拆解表和跨平台支付方式对比
等用户回复后,进入 Step 4 执行分析。
Step 4 — 执行分析
根据用户确认的参数执行数据分析。使用 Python pandas(CSV)或 openpyxl(Excel)处理数据。
4.1 订单分类
对每条订单按平台对应的分类规则进行五分类。各平台详细分类规则见 references/platform_specs.md。
通用五分类模型:
| 分类 | 定义 | 计算归属 |
|---|---|---|
| 未付款取消 | 下单后未支付即取消 | 不计入实际付款订单 |
| 售前退款 | 付款后、发货前取消退款 | 计入退款 |
| 发货后退款 | 发货后退款/退货退款 | 计入退款 |
| 正常完成 | 正常交易完成,无退款 | 不计入退款 |
| 在途 | 已发货未完成,状态未定 | 不计入退款(未结订单) |
关键规则:
- 售后关闭/换货/售后已拒绝 等状态不算退款,归类为非退款
- 在途订单 不计入退款率,但需在报告中显示数量
- 未付款取消 的识别因平台而异:视频号看"支付方式=无",抖音看"售后状态=-",需参考平台规格
4.2 核心指标计算
实际付款订单 = 总订单 - 未付款取消
售前退款率 = 售前退款数 / 实际付款订单 × 100%
发货后退款率 = 发货后退款数 / 实际付款订单 × 100%
整体退款率 = (售前退款 + 发货后退款) / 实际付款订单 × 100%4.3 分析维度
A) 单平台分析(每个平台各自执行):
- 订单分类拆解:对每个目标产品 × 每个时段,计算五分类数量和比例
- 分品退货率:每个目标产品在各时段的整体退款率
- 多时段对比:各时段的退货率指标并排对比
B) 跨平台对比(若用户选择):
- 同一产品跨平台退货率对比:例如同一产品在视频号 vs 抖音的退款率差异
- 支付方式放大效应跨平台对比(若用户选择):先用后付 vs 抖音月付的退款率放大效应对比
4.4 支付方式拆解(若用户选择)
对每个平台 × 每个目标产品:
- 按支付方式分组,计算各组的付款订单数、退款订单数、退款率
- 计算各组退款率与整体退款率的差值(放大效应)
- 识别"信用支付"类(先用后付/抖音月付/花呗/白条)与"标准支付"类的退款率差异
Step 5 — 生成 HTML 报告
使用 assets/report_template.html 作为基础模板,填充分析结果生成最终报告。
报告结构
- 报告头部:标题、副标题、数据时间范围、生成时间
- 多时段对比表(每个平台一个section):指标行 × 时段列的对比表,整体退款率行高亮
- 可视化条形图:各时段退款率的水平条形图,颜色区分高低
- 订单分类拆解:五分类卡片(数量+占比)
- 支付方式拆解表(若用户选择):支付方式 × 退款率对比表
- 跨平台对比表(若多平台):产品 × 平台的退货率并排对比
- 核心发现与建议:自动总结3-5条关键洞察
条形图颜色规则
- 红色:退款率 ≥ 50%
- 橙色:30% ≤ 退款率 < 50%
- 绿色:退款率 < 30%
核心发现自动总结规则
报告中"核心发现"部分应包含以下类型洞察(自动生成,非模板):
- 产品退款率最高/最低的时段及原因推测
- 支付方式放大效应量化(如"先用后付退款率比微信支付高X个百分点")
- 跨平台差异量化(如"抖音退款率比视频号高X个百分点")
- 在途订单占比提醒(若>20%)
- 时段环比变化趋势(改善/恶化)
技术注意事项
- ⚠️ 缺失值检测:必须使用
pd.isna(val)/pd.notna(val)检测缺失值,不能用astype(str)+ 字符串比较。CSV 文件的字符串列可能使用 pandas StringDtype,缺失值为pd.NA而非'nan'。推荐定义统一函数:
def has_value(val):
if pd.isna(val):
return False
if isinstance(val, str):
return val.strip() not in ['', '-', 'None']
return True- 数据清洗:读取数据后对字符串列做 strip() 处理,处理空值/NaN/"-"等占位符
- 日期解析:统一使用 pd.to_datetime 解析时间列,处理多种日期格式
- 编码:CSV 文件使用 utf-8 编码读取,若失败尝试 gbk
- 大文件:订单量>10000行时,先采样扫描列名再全量处理
- 跨平台时间对齐:跨平台对比时,时段取各平台数据的交集
输出文件
报告保存为 HTML 文件,路径选择用户项目工作目录。文件名格式:{平台/对比类型}退货率分析报告.html
关键经验教训
以下经验来自实际分析中的踩坑,务必遵守:
- 未付款取消不能计入退货率:这是最常见的错误。未付款取消是"没付钱就跑了",不应计入退款率分母或分子。分母必须是"实际付款订单"。
- 平台后台退货率≠真实退货率:平台后台可能将未付款取消也算入,导致退货率虚高或虚低。本技能的五分类模型纠正这一问题。
- 在途订单需单独标注:近期订单可能尚未完成退货流程,当前退款率会偏低。在途占比>20%时必须提示用户。
- 支付方式是退货率的隐藏变量:先用后付/抖音月付等信用支付因零沉没成本,退款率显著高于标准支付。这是跨平台对比的关键维度。
- 排除配件干扰:订单数据中可能混入配件(手机壳、赠品小样、垃圾袋等),这些产品退货率低,会拉低整体退货率,需排除后再分析。
- 抖音售前退款确实存在:抖音平台规则虽要求发货后才可退款,但实际数据中"已关闭+退款成功+无发货时间"订单就是售前退款(用户付款后发货前取消退款)。必须使用正确的缺失值检测方法识别这些订单。
- 商品编码可能有空格:抖音数据中"商家编码"列值可能前后有空格,必须 strip() 处理后再匹配。
- 跨平台时段取交集:不同平台数据的时间范围可能不同,跨平台对比时必须取交集时间段,否则对比不公平。
- 同一产品可能有多个名称:电商数据中同一产品常因不同包装描述、SKU变体、平台命名差异而出现多个名称。必须询问用户确认合并,否则数据碎片化导致分品退货率失真。
- ⚠️ pandas 缺失值检测必须用 pd.isna(),不能用字符串比较:这是导致抖音售前退款率被错误计算的根因。抖音CSV的"发货时间"列使用 pandas StringDtype,缺失值存储为
pd.NA而非字符串'nan'。当使用astype(str)转换后做字符串比较(如val not in ['', 'nan', '-']),pd.NA不会被正确识别为缺失值,导致所有退款订单都被误判为"有发货时间"。正确做法:使用pd.isna(val)或pd.notna(val)检测缺失值,辅以字符串检查空值/占位符。定义统一的has_value(val)函数:先检查pd.isna(val),再检查字符串是否为空或占位符('-','None'等)。
资源文件
references/platform_specs.md— 各平台详细列名映射、分类规则、特色支付方式、注意事项assets/report_template.html— HTML 报告模板,包含对比表、条形图、分类卡片、支付方式表等组件