Weread To 视频号 (Channels)
微信读书笔记 / 一句话 → 带配音与 BGM 的竖版读书分享视频 → 一键发布到微信视频号。
零 AI 生图(纯排版卡片)、真人感 TTS 配音、免版权钢琴 BGM、发布用 playwright 驱动系统 Edge(避开 agent-browser 自带 Chrome 丢失与临时 profile 丢登录的坑)。
> 按量付费:本 skill 内置 billing/ 模块,支持把「微信读书转视频号发布」包装成一个按次计费的服务端点(支付宝 AI 付 Machine Pay / aipay)。未付费调用返回 402 + Payment-Needed,付费后携带 Payment-Proof 即可取得资源并触发履约回执。详见下方「按量付费 / API 调用付费」章节与 billing/README.md。
工作流总览
输入(一句话|微信读书笔记 md) → [模型写] content.json → make_cards.py → make_tts.py → make_final.py → mp4 → publish_shipinhao.py 发视频号
Step 1: 把输入变成 content.json
输入两种来源,殊途同归到 content.json:
- 一句话:用户给一句主题(如「用地心游记讲凡尔纳的想象力」),由你(模型)扩写成 14-18 张卡片 + 等量讲解词,遵循
references/content-format.md的讲故事模型与去 AI 味要点。 - 微信读书笔记:用户贴来划线/想法/书评 md,或无结构笔记。先按「核心观点 - 金句摘录 - 我的思考」三段式整理,再编排成卡片。若微信读书接口可用(REDFOX_API_KEY 等),可读取该书划线自动提炼;不可用时请用户提供笔记文本。
> 关键:content.json 由模型亲自生成并落盘到工作区,再由 Python 脚本消费。务必遵守 content-format.md 的字段规范(cards/blocks/narration 数量相等、五种样式用法)。
Step 2: 渲染卡片 + 配音 + 合成视频
在工作区建 build/ 与 outputs/,依次执行(脚本在本 skill 的 scripts/ 下):
# 依赖(首次): pip install pillow imageio-ffmpeg edge-tts
# 装不上加清华镜像: -i https://pypi.tuna.tsinghua.edu.cn/simple
python <skill>/scripts/make_cards.py --content content.json --out build/cards
python <skill>/scripts/make_tts.py --content content.json --out build/tts
# BGM: 需免版权音频文件。默认推荐 Kevin MacLeod 版 Gymnopedie No.1(CC-BY,需在描述署名)
python <skill>/scripts/make_final.py --cards build/cards --tts build/tts --bgm bgm.mp3 --out outputs/<书名>_视频号.mp4
注意:
- Windows 字体写死 C:\Windows\Fonts\msyh.ttc(其他系统改脚本路径)
- edge-tts 网络不稳,脚本内置 6 次重试 + 断点续传,失败重跑即可
- 合成后用 ffmpeg -ss 60 -t 3 -i out.mp4 -vn -af volumedetect -f null - 抽查音轨确认人声在
- 卡片渲染后先 Read 抽查 2-3 张 PNG 再合成,避免排版返工
- CC-BY 的 BGM 必须在描述里署名(发布脚本可用 --bgm-sign 自动追加)
Step 3: 一键发布到视频号
完整命令流与踩坑见 references/shipinhao-publish.md(务必先读)。要点:
# 依赖: pip install playwright ;系统需装 Microsoft Edge(Chromium 内核)
python <skill>/scripts/publish_shipinhao.py \
--video outputs/<书名>_视频号.mp4 \
--title "短标题(≤16字,逗号用空格)" \
--desc "描述文案 #话题1 #话题2"
- 发布前必须先完成账号扫描登录:首次运行会弹 Edge 窗口,手机微信扫码登录视频号;登录态存持久 profile,后续免扫码。这是发布的硬前置闸门——未登录不允许点「发表」,避免误发到错账号。
- 脚本自动:连/起浏览器 → 进编辑器 → 上传 → 等转码 → 填描述/短标题 → 检测「发表」禁用 → 点发表 → 验证列表「视频 N」+1
- 短标题禁用坑:含逗号等非法字符会让「发表」按钮进入
_disabled状态导致发布失败;脚本已自动把逗号转空格,但你写标题时也应避免 - 发布/重发属不可逆操作:首次发布前向用户确认视频、标题、描述
Step 3.5: 生成宣传页(发布前 CTA)
发布到小红书 / 抖音 / 视频号 时,统一附一页宣传页引导互动,文案固定为:
> 创作不易,欢迎宝子们点赞、收藏、分享
用途:作为视频最后一帧卡片,或发布后贴在置顶评论的配图。一键生成:
python <skill>/scripts/make_promo.py \
--platform 视频号 \
--book "你当像鸟飞往你的山" \
--out outputs/你当像鸟飞往你的山_宣传页.png
# 多平台同步发布用逗号分隔: --platform 小红书,抖音,视频号
- 输出 1080x1920 竖版海报,主色随平台(视频号绿 / 小红书红 / 抖音黑 / 公众号蓝)
- 文案不可擅自改写,保持「创作不易,欢迎宝子们点赞、收藏、分享」原样
- 生成后可在发布前给用户预览,确认再放入视频尾帧或作为置顶评论图
Step 4: 收尾建议
发布完成后提醒用户:视频号审核通过后,可在 App 内补互动、置顶评论(书名 + 提问)做冷启动;并贴上 Step 3.5 生成的宣传页作为置顶评论配图。若想改可见范围/封面/话题,告诉我直接改。
按量付费 / API 调用付费(支付宝 AI 付 · Machine Pay)
本 skill 可作为一个按次计费的服务端点对外提供「微信读书转视频号发布」能力。任何智能体(调用方)访问该端点时:
- 未携带 Payment-Proof → 服务端返回
HTTP 402 + Payment-Needed头(含out_trade_no/amount/seller_signature/service_id等账单字段)。 - 携带 Payment-Proof → 服务端调用
alipay.aipay.agent.payment.verify验付 → 生成资源 → 调用alipay.aipay.agent.fulfillment.confirm履约确认 → 返回资源 +Payment-Validation头。
定价
- 单次 API 调用实收:¥1.00 / 次。该值写入
billing/a2m_server.py的amount字段,即未付费调用时 402 响应中返回的amount(调用方实际支付金额)。 - SkillHub 页面展示参考标价:¥2.99(套餐 / 标价说明,用于页面展示;实际按次扣费以 ¥1.00 为准)。
- 调价方式:直接改
a2m_server.py第 184 行amount后重新打包发布即可。
本地运行计费端点
pip install alipay-sdk cryptography
cp billing/config.example.json billing/config.json # 填入 app_id / 私钥 / 公钥 / seller_id / service_id
python billing/a2m_server.py --config billing/config.json --port 5000
# 自测:curl -i http://localhost:5000/a2m/shipinhao/resource -> 402 + Payment-Needed
- 沙箱联调:
config.json中gateway保持沙箱地址、service_id必须为api_mock_service_id,不花真实资金。 - 生产上线:
gateway改为https://openapi.alipay.com/gateway.do,service_id替换为服务市场真实 serviceId,并完成商户签约(需你本人在浏览器用真实支付宝账号操作)。 - 资源(resource)默认返回「服务示例」JSON;生产环境请将
billing/a2m_server.py的generate_service_resource()替换为真实调用本 skill 流水线的逻辑(即触发 Step1~Step3 生成并发布一次视频号短视频)。
> 详细契约与端到端沙箱联调步骤见 billing/README.md。
Resources
scripts/
make_cards.py— 渲染 1080x1440 文字卡片(深青底+山形+金色强调,五种样式)make_tts.py— edge-tts 逐段配音(默认晓晓女声 -12% 语速,断点续传)make_final.py— ffmpeg 合成(卡片时序+人声对位+BGM 低音量循环淡入淡出)make_promo.py— 生成 1080x1920 宣传页海报(固定 CTA 文案,平台主色,Step 3.5 必读)publish_shipinhao.py— 一键发布到视频号(playwright + Edge 持久 profile + Wujie iframe 直连)
billing/(按量付费模块)
a2m_server.py— 标准库http.server实现的 402 协议服务端order_repository.py— SQLite 订单仓储config.example.json— 配置模板README.md— 支付宝 AI 付接入与联调指南
references/
content-format.md— content.json 编写规范、卡片讲故事模型、去 AI 味要点(Step 1 必读)shipinhao-publish.md— 视频号发布原理与踩坑(iframe 真相、短标题逗号禁用、转码等待、禁用检测、验证方式,Step 3 必读)