← 返回 Skill 列表
extension
分类: 数据与分析无需 API Key

表格清洗·Excel清洗乱表变干净

把几份对不上的 Excel/CSV 合成一份干净表——一次付费 7 天不限次,期内重复使用不再计费。凡需要"把多个月度报表合成一份""几个部门的表对不上要合并""去掉重复行""日期格式乱七八糟要统一""数字不能求和""表格发给客户前要收拾一下"时主动使用。**本 Skill 依赖在线授权服务**:执行清洗前会先取一份授权凭证(未付费会返回 402 账单),拿到授权后在**你本机**完成合并与清洗,授权本身**离线可校验**;诊断(scan)**免费**,先看问题清单再决定要不要清洗。能力:多表按列名对齐合并、完全重复行删除、空白与全半角规整、日期统一为 YYYY-MM-DD、文本数字(¥1,234)转真数值;产出规范 xlsx 和一份带前后对比计数的**清洗报告**(适合直接转发)。仅 .csv / .xlsx;空值不填补、相似行不替你裁决。

person作者: user_4e7171fahubcommunity

乱表变干净 · Excel 清洗合并(一次付费 7 天不限次)

把几份对不上的表,合成一份能直接用的干净表。本 Skill 分两段: 先免费诊断(只读,不改文件),再取授权执行清洗(按次计费,在你本机完成,文件不出本机)。

为什么需要授权:清洗动作需要一份由服务方签发的凭证。 授权在你本机离线校验(不联网即可验证真伪与有效期), 但没有有效授权就不执行清洗——这是服务的一部分,不是限制。


第 0 步 · 前置检查(必做,先判值不值得用这个工具)

在调用任何服务之前先确认:

| 检查项 | 判定 | |---|---| | 文件类型 | 仅 .csv / .xlsx。老版 .xls → 让用户先在 Excel/WPS 里「另存为 .xlsx」,再继续 | | 问题是不是真乱 | 如果只是「删一列重复值」→ 先劝退:Excel 自带的「数据 → 删除重复项」就够,不必花钱。多份文件要合并、或同时有重复+空值+日期混乱+数字不能求和中的两样以上 → 值得用 | | 期待是否合理 | 空值不会被填补(不编数据);「这两条是不是同一个客户」这种相似但不相同的行不会删——要先跟用户说清楚,别让他以为工具会替他做业务判断 |

只有第 0 步谈过,才进入第 1 步。


第 1 步 · 免费诊断(scan,只读,不收费)

python scripts/tableclean.py scan <文件1> [文件2 ...] --report 诊断.md

诊断会告诉用户:每个文件多少行多少列、多少完全重复行、多少空值格、多表合并时列怎么对齐。 先把诊断结果拿给用户看,确认他要继续,再进入付费环节。


第 2 步 · 请求授权(未付费会返回 402)

POST https://skills-gate.airpriv.com/api/table-clean-license
Content-Type: application/json

{"machine_fp":"<本机指纹串,8–128 位字母数字/连字符,可省略>"}

首次调用一定拿到 402 Payment Required —— 这是设计,不是错误。响应里带:

  • HTTP 头 Payment-Needed(base64url 编码的账单)
  • 响应体 payment_needed / payment_needed_token / amount / out_trade_no

machine_fp 可选:带上则这份授权绑定这台机器,换机器需重新授权。省略则不绑定。 本机指纹:python scripts/license_check.py fingerprint

第 3 步 · 处理 402(完成支付)

把 payment_needed_token(或整个 Payment-Needed)交给支付宝 AI 付完成授权支付。 支付完成后你会拿到一个 Payment-Proof 凭证。

不要自己伪造、不要跳过这一步 —— 服务端会拿它去支付宝网关做真实校验。

第 4 步 · 携凭证重试(拿到授权凭证)

同一个请求,加上支付凭证头重发:

POST https://skills-gate.airpriv.com/api/table-clean-license
Content-Type: application/json
Payment-Proof: <第 3 步拿到的凭证>

{"machine_fp":"<与第 2 步相同的值>"}

成功时返回 200,content.data.license 就是授权凭证。把它存成 license.json。 一次付费 = 一份授权,有效期 7 天(grant_mode=per_build)。期间重试、反复清洗不需要再付费。


第 5 步 · 校验授权并执行清洗(离线,不联网)

python scripts/license_check.py check license.json --fingerprint "<与第 2 步相同的 machine_fp>"
echo $?    # 0 = 放行;非 0 = 拒绝,不要执行清洗

| 退出码 | 含义 | 你要做的 | |---|---|---| | 0 | 授权有效 | 继续清洗 | | 4 | 签名不通过(被篡改 / 不是本服务签发) | 停,回报用户并重走第 2 步 | | 5 | 授权已过期 | 停,回报用户并重走第 2 步 | | 6 | 产品不匹配 | 停 | | 7 | 机器指纹不匹配 | 停(这份授权是给另一台机器的) | | 2 | 读不到文件 / 公钥缺失 | 检查路径 |

退出码 0 才允许执行清洗:

python scripts/tableclean.py clean <文件1> [文件2 ...] -o cleaned.xlsx
# 可选:--report 报告.md(默认 <输出名>_报告.md)  --dedup-key 列名(按某列去重,默认整行去重)

工具自带回读校验(写完自己读一遍,行列对不上会删除产物并报错,不会交一份坏表)。 清洗报告(markdown)是交付物的一部分——它带前后对比计数,排版适合直接转发给交表的人; 交付时把「清洗后的 xlsx + 报告」一起给用户,并把报告里的关键数字念给他听。

交付给用户的说法(照这个口径,别夸大)

  1. 重复行只删「逐格完全相同」的;相似但不相同的行原样保留,由用户定夺。
  2. 空值没有填补——报告里有计数,自己去决定怎么处理。
  3. 日期歧义没猜(比如 03/04/26 这种,保持原文)。
  4. 多工作表的 xlsx 只处理了第 1 张——报告里会标注。

诚实边界(用户问到时照实说)

  • 授权是「付费门」,不是版权保护。授权离线可验,防的是「没付钱就用」;不防「付一次之后在本地自行延长使用」。更强保护只能把清洗放到服务端执行,而清洗必须在用户自己的机器上跑(要读用户的表格文件)——架构上不可兼得。
  • 清洗全程在本机完成:用户的表格不上传、产物不出本机。授权服务只收一个可选的机器指纹,不接收也不留存用户的任何数据内容。
<!-- skillhub-payblock -->

付费链路自检(与平台五项自查一一对应)

本 Skill 的付费链路由服务端承担验付、资源交付与商家履约确认;Skill 只负责 发起请求、调用官方支付能力并展示结果。逐条对应平台自查项如下:

| 平台自查项 | 本 Skill 的实现 | |---|---| | 402 账单 | 未付款时请求 POST https://skills-gate.airpriv.com/api/table-clean-license 返回 HTTP 402 Payment Required;响应头 Payment-Needed 携带账单,响应体含 payment_needed / amount / out_trade_no。 | | 凭证重试 | 支付后携带请求头 Payment-Proof: <凭证> 重发同一个请求(URL、请求方法、请求体与原请求保持一致),服务端校验通过后返回 200,结果在 content.data 内。 | | 服务端验付 | 服务端调用支付宝 AI 按量付费凭证校验接口 alipay.aipay.agent.payment.verify 验签并核对订单、金额与服务标识;凭证无效或已过期时不交付任何资源,只回 402 账单让用户重新支付。 | | 商家履约 | 资源交付后由服务端调用 alipay.aipay.agent.fulfillment.confirm 上报履约确认;上报失败可对同一订单重试,重试幂等,不会产生第二次扣费。 | | 订单与幂等 | 每笔订单以唯一 out_trade_no 持久化于服务端订单库,状态可恢复;同一订单重复请求只履约一次、不重复扣费;本机授权凭证可离线校验(python scripts/license_check.py check license.json),有效期内重复使用不再计费。 |

支付能力由支付宝 AI 按量付费官方链路承担,本 Skill 不接触支付密钥、不自行实现付款或签名。

<!-- /skillhub-payblock -->