下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/chuangxin--wechat-dual-daily.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @chuangxin/wechat-dual-daily。一个人管多个公众号、要维持日更时用它:一次调用编排两篇主题、结构、案例完全独立的文章——主稿面向 B 端(定制开发/企业数智化),次稿面向 C 端(个人效率/生活实操),自动做双主题独立性校验,按微信兼容规范排版,配差异化双封面,推送到多账号草稿箱。当用户需要“公众号日更”“一天两篇”“B端+C端双号矩阵”“公众号排版推送”“批量日更”时使用。
只建草稿,不自动群发。
阅读全文 (展开查看完整说明)
概述
把"一天两篇 + 双封面 + 多号推送"收成一条流水线。输入主题方向,自动产出两篇 100% 独立的文章、两张差异化封面,排版后推送到公众号草稿箱。
每次调用走 作者后端支付校验(¥19.00/次):前置检查 → 微信支付下单 + X402 AI 预下单 → 返回 WeixinPay-Required → 用户授权 → 支付成功后执行双主题编排+HTML 排版+封面生成+多号推送。
Step 0:付费前置检查(必须先做)
先看当前 Agent 的工具列表里有没有 weixinpay_pay(对话内支付授权工具)。这个探测只决定下面走 A 路还是 B 路,不决定是否提供服务:
| 探测结果 | 走哪条路 |
|---|---|
有 weixinpay_pay | A 路:对话内拉起微信支付(体验更顺) |
没有 weixinpay_pay | B 路:生成收款二维码让用户微信扫码(同等有效) |
有 weixinpay_register 但用户未开通 | 可引导开通;用户不想开通就走 B 路 |
| 用户钱包异常 / 技能被禁用 | 如实说明原因,并给出 B 路二维码,让用户自行决定 |
⚠️ 铁律(这一步最容易被写错):用户表达购买意愿后,必须立刻给出至少一条可支付途径——对话内支付卡片或收款二维码,二者有其一即可。
禁止因为"没检测到 weixinpay 插件"就终止流程、回复"当前 Agent 暂不支持微信支付付费能力",或让用户空等。
没有
weixinpay_pay只说明要走扫码路径,不说明不能卖。
前置检查通过:进入 Step 1 请求资源。
Step 1:请求资源(创建付费订单)
首次请求:调用作者后端统一接口(不带 X-Out-Trade-No Header)创建订单:
POST https://skill.zzcxin.cn/api/payskill/wechat-dual-daily/invoke
Content-Type: application/json
{
"query": "帮我生成今天两篇公众号文章",
"params": {
"accounts": "my_account",
"main_topic": "某科技公司的数据平台定制实录:从模糊需求到顺利交付",
"sub_topic": "会开完纪要就自动出?打工人 AI 效率套装",
"main_count": "1800",
"sub_count": "1500",
"publish_target": "draft"
}
}响应:HTTP 402 Payment Required(触发支付):
{
"code": "PAYMENT_REQUIRED",
"message": "需要支付后才能获取内容",
"WeixinPay": {
"WeixinPay-Required": "xY9zAbc123def456",
"prompt": "本次使用微信支付,请将 WeixinPay-Required 的值作为 paymentCode 交给 weixinpay_pay,以向用户申请支付授权。"
},
"out_trade_no": "WX402_20260816120000abcdef123456",
"amount": "19.00",
"currency": "CNY"
}响应头(Header)同时携带两个关键值(必须提取并保存):
WeixinPay-Required:支付码(paymentCode)X-Out-Trade-No:订单号(out_trade_no)——支付成功后重试必须携带
重要:
X-Out-Trade-No(订单号)不可修改、不可丢失,贯穿 Step 3 履约与 Step 5 退款。
失败响应:
HTTP 4xx:{"detail": "..."},展示错误信息并停止HTTP 5xx:触发 重试机制(见 Step 4)
Step 2:发起支付(支付触发)
路径 A:有 weixinpay_pay 时(对话内支付)
将 402 响应里的 WeixinPay-Required 值作为 paymentCode,调用 weixinpay_pay 向用户申请支付授权(拉起微信支付 AI 专属卡)。
同时向用户展示订单摘要:
| 字段 | 值 |
|---|---|
| 服务 | 公众号日更生成器 |
| 金额 | ¥19.00 |
| 订单号 | out_trade_no(402 响应体 / X-Out-Trade-No 响应头) |
| 有效期 | 15 分钟 |
重要:用户授权完成后,必须保留
X-Out-Trade-No(订单号),用于 Step 3 履约与退款追踪。
路径 B:没有 weixinpay_pay、或路径 A 拉起失败时(二维码兜底,必须执行)
不要重试、不要放弃、不要终止,直接切到这条路。
① 取支付链接(两个位置任取其一,内容相同):
- 402 响应体字段
code_url - 402 响应头
X-Pay-Code-Url
形态形如 weixin://wxpay/bizpayurl?pr=xxxxxxxx。
② 立即生成二维码发给用户,并把链接原文一并给出(二维码扫不动时可复制到微信)。同时给出订单摘要:
| 字段 | 值 |
|---|---|
| 服务 | 公众号日更生成器 |
| 金额 | ¥19.00 |
| 订单号 | out_trade_no |
| 支付链接 | 上面取到的 code_url 原文 |
| 有效期 | 15 分钟,超时需重新下单 |
③ 告知用户:用微信扫一扫扫码付款;付完不用告诉 Agent,系统会自动确认到账并继续交付。
④ 轮询确认到账:每隔 3 秒 GET 一次 402 响应里的 query_url(形如 https://skill.zzcxin.cn/api/payskill/order/{{订单号}}),最多 20 次。
返回的 status | 动作 |
|---|---|
paid / delivered | 立即执行 Step 3 自动履约,不要让用户再操作 |
pending | 继续轮询 |
expired | 告知订单已超时,回到 Step 1 重新下单(换新二维码) |
⑤ 兜底:轮询 20 次仍是 pending 时,把支付链接与订单号再给用户一次,说明原链接仍可继续付款;不要重新下单(避免用户重复支付)。
路径 B 适用于所有客户端——对话内支付插件只在部分版本与安装方式下注入。
把全部用户挡在路径 A 后面,等于放弃全部成交。
Step 3:支付成功后获取资源(⚠️ 必须执行)
支付成功后,必须携带 X-Out-Trade-No Header 重新请求同一个 invoke 接口——body 与第一次请求完全一致,仅通过 Header 传递订单号:
POST https://skill.zzcxin.cn/api/payskill/wechat-dual-daily/invoke
Content-Type: application/json
X-Out-Trade-No: WX402_20260816120000abcdef123456
WeixinPay-Required: xY9zAbc123def456
{
"query": "帮我生成今天两篇公众号文章",
"params": {
"accounts": "my_account",
"main_topic": "某科技公司的数据平台定制实录:从模糊需求到顺利交付",
"sub_topic": "会开完纪要就自动出?打工人 AI 效率套装",
"main_count": "1800",
"sub_count": "1500",
"publish_target": "draft"
}
}成功响应(HTTP 200,原样透传):
{
"code": "SUCCESS",
"message": "付费内容",
"out_trade_no": "WX402_20260816120000abcdef123456",
"content": {
"main_article": "…主稿 HTML(含双 MEDIA_ID)…",
"sub_article": "…次稿 HTML(含双 MEDIA_ID)…",
"main_cover_media_id": "wx_media_xxx",
"sub_cover_media_id": "wx_media_yyy",
"publish_status": "drafts_pushed",
"publish_target": "创数科技/穿搭做自己"
}
}未支付响应(HTTP 200,code=PAYMENT_PENDING):提示"订单未支付成功,请先完成支付",回到 Step 2 路径 B 继续轮询查单,查单显示 paid 后重做本步。
订单不存在(code=TRADE_NOT_FOUND):禁止继续,回 Step 1 重新创建订单。
⚠️ 不携带
X-Out-Trade-NoHeader 重试,永远拿不到付费内容——本步是本技能最容易遗漏的一步,必须执行。
Step 4:支付后重试机制
支付/履约过程中出现以下 可重试错误(用同一 X-Out-Trade-No 重试最多 3 次):
| errorCode | 含义 | 重试策略 |
|---|---|---|
SYSTEM_ERROR | 系统繁忙 | 等待 2 秒后重试 |
SERVER_TIMEOUT | 服务器超时 | 立即重试 |
PAY_SUBMIT_FAILED | 支付提交失败 | 等待 1 秒后重试 |
HTTP 5xx | 服务器繁忙/超时 | 等待 2-3 秒后重试 |
HTTP 429 | 限流 | 等待 5 秒后重试 |
重试规则:同一 X-Out-Trade-No,间隔 1–3 秒,最多 3 次;3 次仍失败进入 Step 5。
不可重试错误(直接走 Step 5):INSUFFICIENT_BALANCE、KYA_AUTH_FAILED、TRADE_CLOSED、INVALID_PARAMS。
Step 5:退款 / 异常处理
| 场景 | 动作 |
|---|---|
| 3 次重试后仍失败 | 提示:"支付失败,请稍后再试",不要自动退款 |
| 余额不足 | 提示:"余额不足请充值",引导用户充值后重试 |
| 身份校验失败 | 提示:"身份校验失败,请重新登录微信 AI 支付" |
| 用户主动取消 | 记录 X-Out-Trade-No 标记「用户取消」,订单 15 分钟后自动关闭 |
| 支付成功但文章未生成 | 调用退款接口 POST /api/payskill/wechat-dual-daily/refund(body 含 order_no),提示:"服务异常,已发起退款" |
| 退款完成 | 提示:"退款已完成,金额将原路退回" |
退款 / 异常处理响应模板:
- "支付完成" — 成功支付
- "履约完成" — 两篇文章(main/sub)HTML + 双封面 MEDIA_ID + 草稿推送状态
- "资源获取失败" — 后端服务异常
- "交易号格式异常" — out_trade_no 校验未通过
- "余额不足请充值" — INSUFFICIENT_BALANCE
- "身份校验失败" — KYA_AUTH_FAILED
- "订单号格式异常" — X-Out-Trade-No 非 32 位纯数字时严禁任何后续命令
工作流(交付成功后,本技能在用户视角下做的事)
双主题规则(核心卖点,硬约束)
两篇完全独立:
| 维度 | 主稿(B端) | 次稿(C端) |
|---|---|---|
| 读者 | 企业主/管理者 | 个人职场人 |
| 主题 | 定制开发/数智化 | AI 办公实操/工具 |
| 结构 | 需求→方案→ROI | 上手路径/工具清单 |
| 转化钩子 | 自测清单(公开嵌入) | 提示词模板(公开嵌入) |
独立性校验(发布前必过):主题/结构/工具/案例 四维 100% 不重叠。哪怕同日主题词相似也要换角度。
7 步执行
- 明确输入:账号列表 + 今日主题方向
- 主稿生成(prompts/main_article.md):B端视角,结构参考
templates/dual_article_template.md主稿骨架 - 次稿生成(prompts/sub_article.md):C端视角,结构参考
templates/dual_article_template.md次稿骨架 - 双主题独立性校验(prompts/independence.md):四维查重
- HTML 排版:Markdown → 公众号 HTML(scripts/build_html.py + inline_css.js)
- 双封面生成(prompts/cover_diff.md):性别/场景/图标差异化
- 推送草稿箱(scripts/push_draft.py):两篇各推送到目标账号
微信 CSS 兼容铁律
- ❌ 禁用:
linear-gradient、display:flex、gap、position、box-sizing、max-width - ✅ 用:实色
background、padding、margin、border、border-radius、color、font-size、font-weight、text-align、line-height
多账号配置
编辑 scripts/push_draft.py 顶部 ACCOUNTS 字典:
ACCOUNTS = {
"my_account": {
"appid": "YOUR_WX_APPID",
"secret": "YOUR_WX_APPSECRET",
"author": "你的公众号名称",
},
}用法(支付成功后)
# 主稿
python3 scripts/build_html.py main.md --title "..." --output main.html
NODE_PATH=$(npm root -g) node scripts/inline_css.js main.html
python3 scripts/push_draft.py main.html --cover cover_main_900x383.png --account my_account
# 次稿同理封面决策
- 无文字版
900×383,微信发布时自动叠加标题 - 双封面差异化:主稿/次稿在人物性别、场景、图标元素上 100% 不同
触发词
"公众号日更""一天两篇""双主题""主稿+次稿""B端+C端矩阵""批量日更公众号""公众号排版推送"。
依赖
- Python:
markdown、requests;Node.js:juice;封面:agnes(用户自备 ARK_API_KEY) - 用户需开通微信支付 AI 专属卡(有钱包余额)
- 配置:
config.yaml(技能根目录)——accounts段(公众号账号列表)占位,推送时由scripts/push_draft.py读取;脚本自动向上查找该文件 - 用户需填好 ACCOUNTS 占位(appid/secret/author)