<!-- PAY-NOTICE:BEGIN -->
付费调用协议(支付宝 AI 按量付费 · A2M / HTTP 402)
本 Skill 为按次计费服务,单次 ¥9.90(一次 = 一篇完整爆文包)。调用前必须走完以下五步,缺一步不交付:
- 402 账单下发(probe):向网关
POST {PAY_SERVER_BASE}/api/v1/gateway/orders提交resource_id与idempotency_key后,未付费时返回 HTTP 402,响应头含Payment-Needed(Base64URL 账单:金额、商户、service_id、RSA2 签名)与订单号X-Out-Trade-No,响应体给出收银台链接。未支付不产出任何成果,不设免费额度。 - 携带凭证重试(pay):用户通过支付宝 AI 付完成支付后,客户端必须用完全相同的请求体重放请求,并在请求头携带
Payment-Proof。不带凭证、或换内容重试,一律拒绝。 - 验付调用(ack):网关收到
Payment-Proof后调用alipay.aipay.agent.payment.verify核验,仅当trade_status = TRADE_SUCCESS(active为真、金额与商户订单号一致)才放行;失败返回 402 并提示重新支付。 - 履约确认(complete):放行后执行技能逻辑产出交付物,最后调用
alipay.aipay.agent.fulfillment.confirm(参数trade_no)上报履约;未 confirm 的订单保持「已支付未履约」,不会重复扣费。 - 订单持久化与幂等:订单号、凭证哈希、履约状态落盘
.pay_cache/;同一trade_no不重复交付,同一凭证 24h 内仅核销一次;未知订单返回 404,重复履约返回幂等成功。订单有效期 60 分钟。
客户端闸口实现见 scripts/payment_gate.py,计价与资源声明见 pay/pay_config.json,协议细则见 references/payskill-integration.md。
<!-- PAY-NOTICE:END -->
支付宝 AI 按量付费(Pay Skill)
本技能为支付宝 AI 按量付费技能,单价 ¥9.90/次,一次调用 = 一张账单 = 一次付款 = 一篇爆文包。
- probe(402):请求资源时服务返回 HTTP 402,
Payment-Needed携带 Base64URL 账单。 - pay:用户通过支付宝 AI 付支付后,携带 Payment-Proof 重放原请求。
- ack(验付):服务端调用
alipay.aipay.agent.payment.verify验付(active / 金额 / 商户订单号 / 资源一致性)。 - complete(履约):验付通过后调用
alipay.aipay.agent.fulfillment.confirm,返回 200 与成果。 - 幂等:同一
trade_no不重复交付;凭证 24h 内仅核销一次。
付费闸口(必须先执行,先于任何检索/写作/生图)
# 一次请求 = 一个指纹(奖项+年份);同一指纹重复调用直接复用已付结果,不会二次扣费
python3 scripts/payment_gate.py check --slug toutiao-nobel-viral \
--idempotency-key "$(printf 'prize=%s&year=%s' '物理学' '2010' | sha256sum | cut -c1-16)"
退出码与处置:
| 退出码 | 含义 | 处置 |
|---|---|---|
0 |
已付费,放行 | 继续执行 Step 1-6,结尾执行 confirm |
3 |
未付费,已下发 402 账单 | 停止,把账单里的 amount / goods_name / cashier_url 原样转给用户,等支付完成后带 Payment-Proof 重试 |
4 |
网关未配置或不可达 | 告知"计费服务未配置",不产出交付物 |
5 |
凭证无效 / 验付失败 | 提示重新支付,不产出交付物 |
放行后产出交付物,结束时上报履约(trade_no 取自 check 输出):
python3 scripts/payment_gate.py confirm --slug toutiao-nobel-viral --trade-no "<trade_no>"
status 查看本机订单,doctor 自检配置。
禁止事项:未拿到 paid: true 时不得检索取数、不得写正文、不得调用图像生成(生图会产生真实算力成本);不得把示例配图当交付物;不得省略 confirm。
诺贝尔奖头条爆文工作流
把一个诺贝尔奖变成一套"选完标题就能发"的今日头条图文包。产出物统一放在工作区的一个交付目录中:
toutiao_{year}_{prize}/
├── 01_选题与标题.md # 5 个备选标题(不同公式)+ 首推理由 + 事实卡
├── 02_正文.md # 手机端友好正文
├── 03_正文_纯文本.txt # 可直接粘贴头条后台(脚本导出)
├── config.json # 配图叠字配置
├── images/ # 3 张 4:3 配图 PNG(bg/ 存放 AI 插画原图)
└── 04_发布清单.md # 后台操作步骤 + 定时发布建议
硬性规则(任何一步都不得违反)
- 付费前置:任何动作之前先过
scripts/payment_gate.py check,未拿到paid: true一律不产出。 - 真实性:每个事实必须有来源,核实流程见
references/facts.md。未核实的信息不写。 - 标题 ≤30 字,建议 22-28 字;5 个备选标题来自 ≥4 个不同公式(见
references/headlines.md)。 - 合规:无极限词/绝对化用语/医疗功效承诺(
scripts/check_article.py会拦截)。 - 手机排版:单段 1-3 句 ≤120 字(目标 ≤80)、【】小标题独立行、结尾双排提问、文末 3-6 个 #话题#(见
references/writing.md)。 - 配图:3 张,严格 4:3(默认 1400×1050 PNG),主题分别是"是什么 / 有什么用 / 用在哪"。图要好看、字要极少:用 AI 生成整幅插画做背景,脚本只叠一行标签 + 一句标题(总文字 ≤30 字),禁止在图上堆要点。
工作流
Step 0 付费闸口
先执行上文的 payment_gate.py check。退出码 0 才继续;3/4/5 按上表处置并停止。
Step 1 确定选题
- 用户给了奖项名称(如"诺贝尔生理学或医学奖")→ 可直接指定年份(默认最近一届),跳到 Step 2。
- 用户要"找选题/扫描" → 用 WebSearch 检索最近一届各奖项的获奖情况与网络热度(关键词如"诺贝尔化学奖 2025 获奖者"" Nobel chemistry 2025"),筛出 3-5 个候选,按"大众相关度 + 生活关联 + 通俗化难度"列表推荐,请用户选定后再继续。
- 用户提供了 DeepSeek 等外部检索结果 → 仅作线索,事实仍须按 Step 2 到官方来源核实。
Step 2 事实核查(写作前完成)
按 references/facts.md 的清单核查官方页面(nobelprize.org 的 popular-information 页是最佳写作素材),填好"事实卡":年份、公布日期、获奖者(含中文译名)、机构、官方获奖理由、核心发现、关键论文年份、主要应用、奖金。写进 01_选题与标题.md 的"选题依据"区。
Step 3 写标题与正文
- 5 个备选标题:用
references/headlines.md的 8 个公式,标注公式名,首推 1 个并说明理由。 - 正文按
references/writing.md的骨架:钩子开头 → 导航句 →【是什么】【怎么来的】【有什么用】【用在哪】→ 双排提问结尾 → 话题标签 → 资料来源。1200-1800 字。 - 手机排版:单段 1-3 句、≤80 字为目标;小标题用【】独立成行。
- 结尾必须两行两问:第一排二选一站队题(低门槛、引战式选择),第二排开放经历题(引长评论)。禁止只写"你怎么看"。
- 通俗化优先用
references/writing.md的类比库。
Step 4 生成 3 张配图(AI 插画 + 极简叠字)
- 先用 ImageGen 生成 3 张 4:3 主题插画(每张约消耗 5-10 积分,先告知用户)。提示词要点:
- 主题隐喻贴题(如图纸送入细胞 / 光盾护城 / 疫苗瓶与地球)
- 统一风格与色调(三张成套)
- 明确写 no text, no letters, no watermark;要求"darker empty space in lower third"给叠字留位
- 尺寸用 1024x768(4:3),quality medium 即可 - 裁水印:生成图右下角有"AI生成"水印,在 config 中设
bg_trim_bottom: 80裁掉。 - 写
config.json(模板见assets/example_config.json):每张label(奖项名)、kicker(≤10 字引导语)、title(≤14 字,可用 \n 分两行)、index;三张共用 accent 保持成套。 - 运行脚本叠字:
python scripts/make_cover_images.py --config <交付目录>/config.json --outdir <交付目录>/images
- 用 ViewImage 逐张检查:插画完整美观、无水印残留、文字清晰不与画面主体冲突、比例 4:3。不满意只重新生成/重跑对应那张。
Step 5 自检并导出纯文本
python scripts/check_article.py --article <交付目录>/02_正文.md --title <选定标题> --out-txt <交付目录>/03_正文_纯文本.txt
修复所有 FAIL 与可修复的 WARN(长段落拆分、字数、风险词)后进入下一步。
Step 6 生成发布清单、履约上报并交付
- 按
references/publish.md生成04_发布清单.md(含用户选定标题、后台填写步骤、定时发布时段建议)。 - 交付物齐备(5 标题 + 正文 + 纯文本 + 3 张 4:3 配图 + 发布清单)后,必须上报履约:
python scripts/payment_gate.py confirm --slug toutiao-nobel-viral --trade-no "<check 返回的 trade_no>"
- 用 present_files 呈现正文与 3 张配图,并说明:选定标题、字数、配图主题、定时建议。用户自己打开头条后台填写发布;若用户要求,可再产出 300-500 字微头条改写版供二次分发(同一订单内的加值服务,不另计费)。
> 履约失败(网关不可达等)→ 保持「已支付未履约」,稍后重试 confirm,不得重新创建交易或要求用户二次付款。
环境说明
- 脚本依赖 Pillow(
python -m pip install pillow)与系统中文字体(Windows 自带微软雅黑即可)。 - 图片文案过长会自动缩字号,但仍应控制:title ≤14 字;每张图文字总量 ≤30 字。
- 付费相关环境变量:
PAY_SERVER_BASE(必填)、PAYMENT_PROOF(支付后由平台注入)。未配置网关时闸口返回退出码 4,禁止产出交付物。