小红书 · 抖音 · Bilibili · 微信视频号 · YouTube
并行上传,完成即验收,明确授权后才发布
将视频、标题和封面准备为经过核验的多平台草稿,支持恢复上传,默认停在最终发布之前。
[!IMPORTANT]
Skill 默认不会点击最终发布按钮。只有用户明确要求把本次内容发布到指定平台,才会重新核对草稿并完成最终发布;准备草稿、上传和长期账号配置不算授权。
已经验证到什么程度
截至 2026-09-06,已有四平台完整流程及中断恢复的历史验收,YouTube 单平台也已验证元数据、16:9 缩略图、私密可见性和无操作复查。近期小红书、抖音、B 站、视频号的页面适配另有局部实测。
当前版本的五平台同跑、YouTube 空间崩溃恢复,以及最新恢复与清理修正,尚未完成完整线上回归。本地自动化测试不能替代这些实测。具体范围见验收记录。
它会完成什么
| 平台 | 发布前准备 | | --- | --- | | 小红书 | 标题、真实话题实体、原创声明、可选 3:4 封面 | | 抖音 | 标题与正文、真实话题实体、可选 3:4 / 4:3 封面 | | Bilibili | 标题、简介、标签、自制声明、可选 4:3 首页封面、旧草稿隔离 | | 微信视频号 | 描述与话题、原创声明、可选 3:4 / 4:3 封面 | | YouTube | 标题、简介、标签、受众与可见性、可选 16:9 缩略图;停在最终保存或发布前 |
它不会制作或编辑封面;如果你已经有封面文件,可以选择让 Skill 上传;如果你在上传视频的同时并行生成封面,也可以通过 --await-cover 流式等待封面就绪后单趟完成上传与校验。
为什么它更稳定
Video Publisher 使用一个调度器,根据资源类型安排工作:
- 并行检查:默认最多 5 平台同时确认登录状态、页面状态和草稿身份。
- 并行上传:所选平台同时上传原视频,每个平台独立证明自己的上传已经真正完成。
- 上传中预填与流式等图:页面出现可编辑控件后,在唯一的串行 UI 队列中填写标题与标签;传入
--await-cover时,各平台仅等待自身所需画幅(3x4/4x3/16x9)就绪即单趟完成封面提交与独立验收,无需等全套封面出齐或二次重跑。 - 问题平台隔离:登录、上传、风控、素材或草稿 blocker 只冻结对应平台;成功平台无需等待它。只有用户接管和共享输入通道损坏会停止整个浏览器任务。
快速开始
1. 准备环境
- Ego Lite 与可用的
ego-browser命令 - Node.js 18 或更高版本
- 已在 Ego Lite 中登录需要使用的创作者平台
2. 安装 Skill
Codex:
git clone https://github.com/oil-oil/video-publisher-skill.git
mkdir -p ~/.codex/skills/video-publisher
cp -R video-publisher-skill/video-publisher/. ~/.codex/skills/video-publisher/
Claude Code:
mkdir -p ~/.claude/skills/video-publisher
cp -R video-publisher-skill/video-publisher/. ~/.claude/skills/video-publisher/
Windows PowerShell 安装到 Codex:
git clone https://github.com/oil-oil/video-publisher-skill.git
$skillDestination = Join-Path $env:USERPROFILE '.codex\skills\video-publisher'
New-Item -ItemType Directory -Path $skillDestination -Force | Out-Null
Copy-Item -Path '.\video-publisher-skill\video-publisher\*' -Destination $skillDestination -Recurse
Windows 使用 scripts\run-safe-platforms.cmd,参数与 .sh 完全一致;也可以直接运行 node scripts/v2/publisher.mjs。路径含空格或中文时加引号。生产程序直接将 UTF-8 脚本传给 Ego CLI 的 stdin,不经过 PowerShell 文本管道。
Set-Location $skillDestination
.\scripts\run-safe-platforms.cmd --package 'C:\Videos\package.json' --platform xiaohongshu
CLI 输出先按严格 UTF-8 解码;当前中文 Windows 的 Ego Lite 输出 GBK 时回退到 GB18030。其他系统代码页或需要固定编码时可设置 $env:VIDEO_PUBLISHER_EGO_OUTPUT_ENCODING='windows-1252' 等 TextDecoder 支持的编码。本地配置、状态 JSON 和输入脚本始终使用 UTF-8。
3. 在对话中使用
使用 $video-publisher,把 /path/to/video.mp4 准备到小红书、抖音、Bilibili 和微信视频号,全部停在发布前。
第一次使用会自动进入 onboarding。它会先问你实际拥有哪些创作者平台账号,再从这些可用平台中选择默认发布平台;如果你只有小红书和抖音,后续就不会打开 Bilibili 或微信视频号。平台专属问题也会按选择出现,例如没有抖音时不会询问抖音默认话题。
之后才会配置素材目录、文案与标签偏好,以及原创声明策略。个人配置保存在 ~/.config/video-publisher/config.json,不会写入 Skill 目录。
之后只需要给出视频路径;当前任务中的明确要求会覆盖个人默认配置。
安全边界
- 草稿准备阶段会挂载最终发布按钮保护;保护未成功启用时不能返回
READY。只有用户明确要求发布本次内容,Agent 才能在重新核对草稿后解除当前页面的保护。 - 原创 / 自制声明只会在用户已保存真实的长期原创策略,或本次明确确认权利时启用。
- 每次运行都会核对本地视频和封面的精确路径,避免把相似文件传错。
- Ego Lite 输入通道中断后,调度器会停止后续页面修改,只保留只读检查和可恢复状态。
- 检测到用户接管浏览器时,所有自动化操作会立即停止。
- 最终发布分支目前通过本地守卫测试,尚未进行真实平台的最终点击验收;首次使用应逐个平台核对发布回执。
已知边界
- 这是基于真实网页的浏览器自动化,依赖平台登录状态,也可能受到平台改版、风控或服务波动影响。
- Skill 不负责剪辑、转码或制作封面;最终发布是单独的用户授权分支,不属于默认草稿流程。
- 抖音会先校验本地视频时长是否可读,不设置固定时长上限;平台明确拒绝素材时,只阻塞对应平台。
READY表示当前页面证据完整且可以人工复核,不等于内容已经发布。
自定义自己的发布流程
如果你希望增加自己的步骤,例如“抖音填写标签后点击某个设置按钮”,直接把平台、触发时机、按钮文字或附近区域,以及成功后的页面状态告诉 Agent。
项目内的自定义发布流程扩展规范会指导 Agent 将这一步实现成可重复运行的 inspect → action → verify 流程,并通过真实页面测试,而不是把一次性的坐标点击写死。
开发与验证
运行全部自动化测试:
node --test video-publisher/scripts/tests/.test.mjs video-publisher/scripts/v2/tests/.test.mjs
进一步了解实现与真实测试边界: