
做视频号更新,最累的不是剪视频,而是发布。 上传、填描述、填短标题、选位置、设定时、勾原创、点发表——一条视频点七八下,二十条视频就是一百多下。而且定时发布的时间还得一个个手动调,稍不留神就填错。 这个工具就是为了解决这件事:把一批视频的发布信息写进一张表格,跑一次,全部自动排完。
简单说:你填一张 CSV 表格,它替你把表格里的视频一条条发出去。
具体能力:
功能 | 说明 |
|---|---|
批量发布 | 一次排期几十上百条视频,全程无人值守 |
双渠道支持 | 普通视频、会员专区,一个参数切换 |
自动填表 | 视频描述、短标题、位置、合集、原创声明全部自动填 |
定时发布 | 精确到分钟,可按 CSV 逐条设定不同时间 |
断点续跑 | 中断后重跑,已完成的不重复发 |
失败自动重试 | 单条失败可重试多次 |
失败清单 | 失败项自动导出成新 CSV,改改就能重跑 |
上传保护 | 视频没传完不会去点发表 |
全程留痕 | 每步都有日志,出错自动截图 |
wechat_video_publisher/
├── publisher.py # 主程序
├── schedule.csv # 排期表(默认读取)
├── videos/ # 视频文件放这里
├── browser_data/ # 登录信息(扫码一次,长期有效)
├── logs/ # 运行日志
├── screenshots/ # 出错截图
├── publish_state.json # 发布进度状态
└── failed_xx.csv # 失败清单(有失败时才生成)视频文件集中在 videos/ 目录,表格里只写文件名即可。
CSV 共 7 列,建议用 Excel 编辑后另存为 CSV:
video,title,short_title,location,publish_time,collection,original
1.mp4,这是第一个视频,第一个短标题,,2026-09-01 18:00,我的合集,yes
2.mp4,这是第二个视频,第二个短标题,东京,2026-09-01 18:05,,yes
3.mp4,这是第三个视频,第三个短标题,,2026-09-01 18:10,,字段详解:
字段 | 含义 | 留空会怎样 |
|---|---|---|
video | 视频文件名 | 必填,放 videos/ 下 |
title | 视频描述 | 留空则不填 |
short_title | 短标题 | 留空则不填 |
location | 地理位置 | 留空 = 不显示位置 |
publish_time | 定时发布时间 | 留空 = 立即发布 |
collection | 加入的合集名 | 留空则不加入;仅普通视频有效 |
original | 是否声明原创 | 填 yes/1/true/是 任一即勾选 |
几个容易踩的点:
location 留空 ≠ 默认位置,而是明确选择「不显示位置」。想显示某地点就填关键词,工具会自动搜索并选中匹配项。collection 合集名称要填完整,不能只填关键字。另外会员专区不支持合集,这一列会被忽略。 # 发布普通视频(按 schedule.csv 全部排期)
python3 publisher.py
# 发布到会员专区
python3 publisher.py --vip
# 先试跑第一条
python3 publisher.py --max-count 1
# 从第 20 条开始发
python3 publisher.py --start 20
# 本次只发 10 条
python3 publisher.py --max-count 10
# 失败重试 3 次
python3 publisher.py --retry 3
# 跑完不关浏览器,方便自己检查
python3 publisher.py --keep-open
# 指定其它排期表
python3 publisher.py --csv 08.csv每条视频发完,进度会立刻写入 publish_state.json。中途断网、手滑关掉、按了 Ctrl+C——重新执行原来的命令就行,已成功的会自动跳过。
[3/55] 已完成,跳过:48回.mp4跑完如果有个别失败,会自动生成 failed_21.csv(21 是原始 CSV 名),里面只有失败的那几条,字段和原表完全一致:
python3 publisher.py --only-failed也可以直接指定这个清单文件:
python3 publisher.py --csv failed_21.csv如果只想把失败项改一改再发,直接编辑这个文件即可。
# 只把「已成功」重置为待发布,失败记录保留
python3 publisher.py --reset
# 清空全部记录(会重复发布已成功的,慎用)
python3 publisher.py --reset-all默认选择视频后会先等待 60 秒,再开始判断视频是否上传完成:
# 大文件或网速慢,加长到 120 秒
python3 publisher.py --upload-wait 120
# 网速快,完全靠自动判断,不等固定时间
python3 publisher.py --upload-wait 0这一项建议保留默认值。 工具在固定等待之后,还会主动检测视频是否真上传完——没传完就一直等,最长等 20 分钟。所以即使固定等待设短了,通常也不会出错;但如果网络特别好,把固定等待调小能省下不少时间。
# 每条视频之间间隔 10 秒
python3 publisher.py --delay 10参数 | 默认值 | 作用 |
|---|---|---|
--vip | 关 | 发布到会员专区 |
--csv | schedule.csv | 指定排期表 |
--start | 1 | 从第几条开始 |
--max-count | 0(全部) | 最多处理多少条 |
--retry | 2 | 失败重试次数 |
--delay | 5 | 任务间隔秒数 |
--upload-wait | 60 | 上传后固定等待秒数 |
--only-failed | 关 | 只处理上次失败的 |
--reset | 关 | 重置已成功的 |
--reset-all | 关 | 清空全部状态 |
--keep-open | 关 | 结束后保持浏览器打开 |
工具在三个地方留了痕迹:
logs/publisher_*.log——每次运行一个日志,记录每一步做了什么。出问题先看这里。screenshots/——出错瞬间自动截图,文件名带错误类型,比如 publish_button_not_found、upload_control_not_found。看图基本能判断卡在哪。publish_state.json——每条视频的成功/失败状态和失败原因。常见失败原因:
提示 | 通常原因 |
|---|---|
找不到视频上传控件 | 页面没加载完,或登录态失效 |
找不到发表按钮 | 视频未上传完成,或有必填项没填 |
点击发表后没有检测到明确的成功结果 | 视频还在上传,建议调大 --upload-wait |
等待视频上传完成超时 | 网络太慢或文件过大,超过 20 分钟 |
如果频繁出现登录相关错误,删掉 browser_data/ 重新扫码即可。
--keep-open 抽查。结束后浏览器不关,手动翻几条确认无误。publish_state.json。这个是你所有发布进度的记录,丢了就得靠日志重新核对。如果你每天只发一两条,手动点更省事;但如果要一次排几十条,这个工具能省下大把机械操作的时间。
写在最后:这个工具的核心价值不在"能不能发",而在发布状态的可靠管理——上传没完成不会误点发表、失败了能精确定位到哪几条、中断后能无缝续跑。批量场景下,这些细节才是真正省时间的地方。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。