3.1 KiB
3.1 KiB
EveryPublish 多平台发布策略(Web-only V1)
2026-08-21。当前优先网页本机执行;客户端/托管 Agent 方案归档,不能作为 V1 完成条件。
1. 现实边界
不同平台的登录、上传和风控页面会持续变化。我们可以把账号、素材、任务、审核、挑战和执行器统一到一个 Web 控制台,但不能在没有用户扫码和真实账号的情况下声称“所有平台已发布成功”。
网页控制台 → Go API/任务状态机 → 本机 PlatformAdapter → 目标平台
│
└→ mock executor(无真实账号时自动化验收)
2. V1 平台优先级
| 优先级 | 平台 | V1 目标 | 证据门槛 |
|---|---|---|---|
| P0 | B站 | 登录挑战、视频上传、任务结果 | HTTP stub + 用户扫码 + 平台页面核对 + 回执 |
| P1 | 抖音、快手、小红书 | 登录挑战、视频/图文适配 | 独立 adapter 测试 + 用户扫码;当前未启用 |
| P2 | 视频号、百家号、微博、国际平台 | 先保留接口/研究,不标记已支持 | 官方能力或人工验收后再开启 |
3. 统一 PlatformAdapter 契约
每个平台必须实现以下能力,不允许 API handler 直接写选择器:
metadata() 平台名称、内容类型、限制
login(challenge) 生成 QR/等待登录/保存本机 profile
check(profile) 检查登录态并返回 active/expired
publish(task) 上传素材、填充内容、定时/立即、返回 URL/receipt
cancel(task) 尝试取消或返回不可取消原因
平台 adapter 的错误必须分类为:auth_required、challenge_required、validation、rate_limited、network、platform_changed、unknown。原始响应写脱敏日志,验证码/cookie 不写日志。
4. 参考代码借鉴
dreammis/social-auto-upload(MIT):借鉴 uploader/base_video 的扩展名/定时校验、QR 工具和各平台上传参数。其当前主线是 CLI,README 明确 Web 非主线。DevilJie/social-auto-upload-web-ui(MIT):借鉴 Flask Registry、BasePlatform、SSE 登录、串行 worker、素材中心和批量发布的业务拆分。- 参考仓库放在
references/只读保存;具体文件、版本、许可证和风险见docs/reference-repositories-analysis.md。
5. 风控和合规边界
- 只支持用户自己授权的账号和官方登录/扫码流程。
- 不做刷量、绕过验证码、批量注册、矩阵养号、私信轰炸或规避平台风控。
- 账号 cookie/profile 只保存在运行服务器的本机受保护目录;浏览器页面不回传明文凭据。
- 真实平台 selector、限流和风控由用户验收;mock 结果只使用
mock://,不能伪装成平台 URL。
6. 交付顺序
统一 Web 业务和 mock 闭环
→ B站 adapter(当前唯一真实实现)
→ 快手/小红书 adapter
→ 用户真实扫码验收
→ 再评估视频号/国际官方 API
任何平台 adapter 未通过独立登录、上传、失败、重试和回执测试,都只能显示“实验性/未启用”。