Word 批量格式统一(一次付费 7 天不限次)
一批文档收上来格式五花八门,一次全统一到规范值。
本 Skill 分两段:先免费体检(只读,不改任何文件),再取授权真改(在你本机完成,内容不外传)。
> 为什么需要授权:批量改格式需要一份由服务方签发的凭证。
> 授权在你本机离线校验(不联网即可验证真伪与有效期),
> 但没有有效授权就不执行改造——这是服务的一部分,不是限制。
第 0 步 · 免费体检(scan,只读,不收费)
python scripts/wordformat.py scan 报告1.docx 报告2.docx
体检会告诉你:段数与文字块数、现在用了几种字体、几种字号、几种行距、几种对齐。
字体超过 2 种或字号超过 3 种会明确提示「属于典型『拼起来的文档』」。
先把体检结果拿给用户看(一起看到乱在哪,才愿意统一),再进入付费环节。
第 1 步 · 请求授权(未付费会返回 402)
POST https://skills-gate.airpriv.com/api/word-format-batch-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
第 2 步 · 处理 402(完成支付)
把 payment_needed 对象(不是整个响应信封)交给支付宝 AI 付完成支付,拿回 Payment-Proof。
不要自己伪造 —— 服务端会拿它去支付宝网关做真实校验。
第 3 步 · 携凭证重试(拿到授权凭证)
同一请求加上头 Payment-Proof: <凭证> 重发,成功返回 200,
content.data.license = 授权凭证(存成 license.json)。
一次付费 = 一份授权 = 7 天有效,期间反复改不需要再付费。
第 4 步 · 校验授权并执行统一(离线)
python scripts/license_check.py check license.json --fingerprint "<与第 1 步相同的值>"
echo $? # 0 = 放行;非 0 = 拒绝,不要执行
退出码:0 通过 · 4 签名不通过 · 5 已过期 · 6 产品不匹配 · 7 指纹不匹配 · 2 路径问题。
退出码 0 才允许执行:
python scripts/run_paid.py apply 报告1.docx 报告2.docx --out-dir 统一输出
| 参数 | 默认 | 说明 |
|---|---|---|
--out-dir |
格式统一输出 |
结果输出目录(原文件不会被覆盖) |
--cn-font |
仿宋 |
中文字体 |
--en-font |
Times New Roman |
西文字体 |
--size |
16 |
正文字号(磅,16 磅 = 三号) |
--line |
1.5 |
行距倍数 |
--indent |
2 |
首行缩进(字符) |
--align |
justify |
left/center/right/justify 两端对齐 |
--margin |
2.54 |
页边距(厘米,默认 1 英寸) |
--no-keep-heading |
关 | 加上它标题字号也会被统一(默认保留标题字号) |
--skip-tables |
关 | 加上它表格里的文字不被改 |
产出:输出目录里的 *-统一格式.docx + 一份 格式统一报告.md。
交付给用户的说法(照这个口径,别夸大)
- 先体检 —— scan 会列出「现在用了 N 种字体 / M 种字号」,比空口说「你格式乱」有说服力。
- 主动说这三条保证:文字一个字没动(改完逐块比对过)、原文件没被覆盖、加粗斜体颜色都保留。
- 报告里逐份列了结果:哪份成功、哪份失败、失败原因是什么,可以直接转给交稿的人。
- 标题默认保留原字号 —— 大标题被压成正文号是这类工具最常见的翻车,我们默认防住了。
用户明确说「连标题也要统一」时才加--no-keep-heading。
诚实边界(用户问到时照实说)
- 只改格式,不动正文:改完会把
document.xml里所有文字块抽出来与原文逐块比对,
只要有一处不同就拒绝写出文件(自检里专门造了这个坏用例)。 - 不覆盖原文件:结果写在新文件里;失败时连半个产物都不留。
- 只支持
.docx。老版.doc请先在 Word/WPS 里另存为.docx。 - 页眉页脚、脚注尾注里的文字也会被一并统一(它们同在一个包里,但文字校验只覆盖正文)。
- 图片、公式、域代码原样保留,不改。
- 授权是「付费门」,不是版权保护。它防「没付钱就用」,不防「付一次之后自行改本地代码继续用」。
<!-- skillhub-payblock -->
付费链路自检(与平台五项自查一一对应)
本 Skill 的付费链路由服务端承担验付、资源交付与商家履约确认;Skill 只负责
发起请求、调用官方支付能力并展示结果。逐条对应平台自查项如下:
| 平台自查项 | 本 Skill 的实现 |
|---|---|
| 402 账单 | 未付款时请求 POST https://skills-gate.airpriv.com/api/word-format-batch-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 -->