抖音发布时间优化器
读入抖音后台导出的历史作品表格,算出最佳发布时段、发布频率、互动率异常时段,给出未来一周排期表和下次发布建议,输出一份 Markdown 报告。
分析部分全程本地离线:只用 Python 标准库,不联网、不调用抖音接口、不上传数据、不代替用户发布作品。
这是一个按次计费的技能:单次 0.08 元(8 分)。执行前先走 probe -> pay -> complete -> ack 四段式支付链路,未取得授权不产出报告。
适合什么场景
- 手上已经有历史作品数据(表格导出),想知道什么时间发流量更好。
- 想验证"我的粉丝是不是晚上更活跃""是不是发得太少了"这类猜测。
- 需要未来一周的具体排期,或下一次发布的日期时间建议。
依赖
支付链路依赖两项官方能力,不自建支付通道:
- alipay-payment-skill:官方支付宝 AI 付技能,提供 402 协议买家侧流程。
- alipay-bot:官方支付 CLI,提供
check-wallet、402-buyer-pay、402-query-payment-status、402-buyer-fulfillment-ack买家侧命令。
官方 CLI 只覆盖买家侧;卖家侧的账单下发、seller_signature 生成与验证、订单持久化、验付与履约确认由本技能 server/ 自建。
运行 python scripts/check_environment.py 可做依赖级环境自检,清单见 skill-dependencies.json。
目录结构
SKILL.md:技能主流程、支付链路映射表、判定口径、失败分支和自查清单。pay.config.json:计费、端点、四段契约与五个审核检查点。skill-dependencies.json:官方依赖清单与降级策略。scripts/pay_middleware.py:四段式支付入口(probe / pay / complete / ack)与官方 CLI 适配器。scripts/check_environment.py:依赖级环境自检。scripts/parse_csv.py:读取作品表格,容错解析时间和数字,输出规范化 JSON。scripts/analyze_time.py:按小时、星期几、时段区间分桶统计互动率,计算异常时段、发布频率和排期。scripts/generate_schedule.py:把分析结果填进模板,生成 Markdown 报告。server/pay_service.py:卖家侧付费服务端,402 账单下发、验付与履约两阶段、订单幂等。server/alipay_client.py:调用alipay.aipay.agent.payment.verify与alipay.aipay.agent.fulfillment.confirm。server/order_store.py:SQLite 订单持久化与trade_no唯一约束。server/rsa2.py:纯标准库 RSA2 签名与验签。references/pay-protocol.md:402 协议全文。references/time_buckets.json:分桶定义、阈值和排序规则,可复制一份改阈值。assets/schedule-template.md:报告骨架,用双花括号占位符标记待填内容。
运行环境
- Python 3.10 及以上,已在 Python 3.13 上验证。
- 只用标准库,不需要安装任何第三方包,也不依赖支付宝官方 SDK:分析链路用
csv、json、statistics、datetime、collections、pathlib、argparse、re、io、sys;付费链路用base64、hashlib、hmac、sqlite3、subprocess、http.server、urllib、os、uuid。 - 支付链路另需官方
alipay-botCLI 与官方alipay-payment-skill技能。
输入要求
表格必须能识别出 6 个字段:发布时间、播放量、点赞数、评论数、转发数、粉丝增量。
列名可以用中文或英文,识别时忽略空格、下划线、连字符和括号;编码支持 UTF-8、带 BOM 的 UTF-8 和 GB18030;分隔符支持逗号、制表符、分号和竖线。
时间支持 2026-09-30 19:05、2026/9/30 19:05、2026.9.30、2026-09-30T19:05:00、2026年9月30日 19时05分 等写法。数字支持千分位逗号、正负号和 1.2万、3000w、12.5k 这类单位后缀。
时间或任一必需数值解析失败的行会整条跳过,写进报告的数据体检,不会用猜测值补上。某一行的字段数多于表头时(常见于千分位数字没加引号)同样整行跳过并写明原因。
使用步骤
在系统临时目录下建一个工作目录,每一步都通过 --output 落盘,不要依赖终端回显。
第 0 步是四段式支付闸门:
python scripts/pay_middleware.py probe --output 工作目录/payment_probe.json
python scripts/pay_middleware.py pay
python scripts/pay_middleware.py complete
python scripts/pay_middleware.py ack --trade-no 32位交易号
probe探测钱包并签发 402 账单,未支付时退出码 20,把账单里的订单号与金额告知用户,等用户付款。pay把账单交给官方402-buyer-pay拉起收银台,由用户本人完成付款。complete用官方402-query-payment-status取回付费资源,退出码 0 表示授权已取得。ack仅在自动履约未完成时使用,是对同一笔交易的恢复确认,不要重复付款。
运行 python scripts/pay_middleware.py --contract 可打印四段式与官方命令的映射表;加 --dry-run 只打印将执行的官方命令,不真正调用。
只有退出码为 0 才继续下面三步:
python scripts/parse_csv.py 作品数据.csv --output 工作目录/normalized.json
python scripts/analyze_time.py 工作目录/normalized.json --output 工作目录/analysis.json
python scripts/generate_schedule.py 工作目录/analysis.json --template assets/schedule-template.md --output 工作目录/report.md
第三步加 --normalized 工作目录/normalized.json 可以在报告里附上跳过行明细;加 --max-per-day 3 可以放宽每天的排期条数;加 --strict 会在模板缺占位符时直接报错。
用文件读取工具确认 report.md 生成完整,再决定是否把内容给用户或复制到用户指定路径。
支付链路
- 单价:单次 0.08 元(8 分),商品描述「发布时间优化器」。金额来自
pay.config.json的billing与卖家侧配置,两端必须一致。 - 四段与官方命令的对应:probe ->
check-wallet,pay ->402-buyer-pay,complete ->402-query-payment-status,ack ->402-buyer-fulfillment-ack。 - 验付与履约是两个独立阶段:验付只做凭证核验与订单核对,验付通过后才生成资源并确认履约。
- 订单落库到 SQLite,
trade_no有唯一约束,同一交易号只生成一次资源、不重复履约,也不重复收费。 - 退出码:0 已授权 / 10 参数或配置不完整 / 11 通道不可达 / 12 过程异常 / 20 需要支付。
- 订单号只用于对账;凭证、交易号和
Payment-Proof属中间过程,不要展示给用户,也不写进任何文件。
卖家侧部署
python server/pay_service.py --init-config
python server/pay_service.py --check-config
python server/pay_service.py
配置模板生成在用户目录下的 .douyin-publish-time-optimizer/pay-service.json;填写 app_id、seller_id、service_id 与密钥文件路径后,--check-config 会输出就绪状态,并自动做一次 seller_signature 生成与验签自检。--check-config 只输出就绪状态与缺失项,不输出任何凭据值。
详细协议见 references/pay-protocol.md。
报告包含什么
- 数据体检:读到的数据行数、有效作品、跳过行及原因、缺少时间的条数、播放量为 0 的条数、数据日期范围。
- 最佳发布时段:小时榜、星期榜、星期 × 小时组合榜、时段区间榜,都带样本数。
- 最佳发布频率:发布间隔档位对照和实际节奏。
- 互动率异常时段:偏高与偏低时段、偏离度排行及 z 分数。
- 一周排期表:未来 7 天逐日的建议时间、备选、预期互动率和置信度。
- 下次发布建议:具体日期时间、判断依据、置信度和注意事项。
口径与限制
- 互动率 =(点赞数 + 评论数 + 转发数)÷ 播放量;涨粉率 = 粉丝增量 ÷ 播放量,仅作辅助指标。
- 播放量小于等于 0 的作品不参与互动率统计。
- 默认某个时段少于 3 条作品就标记为样本不足,不进入最佳结论;这个阈值在
references/time_buckets.json里可以改。 - 有效作品不足 10 条时,所有置信度会下调为低,结论只能作方向性参考。
- 结论是历史数据的时间相关性,不等于平台算法的因果结论;数据越少波动越大。
- 不预测播放量绝对值,不保证上热门,不做实时抓取,不查他人账号,不代替用户发布。
- 支付按次计费,不做订阅校验。
安装
复制整个 douyin-publish-time-optimizer 目录到用户级技能目录 ~/.workbuddy/skills/ 下即可,安装后目录结构保持不变。
关于定价
- 单次 0.08 元(8 分),没有订阅、次数包或退费逻辑。
- 支付链路由官方
alipay-payment-skill与alipay-bot承担买家侧动作,卖家侧逻辑在server/内自建。 - 要作为付费技能上架,需先按
references/pay-protocol.md第八节完成卖家侧配置,并确保service_id替换为真实服务 ID。
Scan to join WeChat group