3585c39babdcbff2ae2b101aef5d9d83aa1696f7
EveryPublish
EveryPublish 是一个本机部署的多平台内容发布 Web 控制台:用户打开浏览器登录,在网页内完成账号、素材、任务、审核、挑战和结果管理。
当前交付边界:Web-only V1。macOS/Windows 客户端、Agent 配对和设备管理暂停,不进入本阶段验收。
当前架构
浏览器 React + TDesign
│ REST / Browser WebSocket
▼
Go server :8090
├─ MySQL / Redis
├─ 本地素材 StorageDriver
├─ WebExecutor(mock 联调)
└─ PlatformAdapter(真实平台逐个接入)
服务器运行在当前设备时,发布执行所需的浏览器 profile、cookie 和素材均留在该设备;不需要安装客户端或输入配对码。
本地启动
make infra-up
make run
cd apps/web && npm run dev -- --port 3013
本地联调默认使用 EXECUTOR_MODE=mock,不会访问真实平台。要联调已接入的 B 站 adapter,启动服务前设置 EXECUTOR_MODE=web;二维码扫码或 Cookie 导入成功后,任务才会走真实平台链路。没有人工扫码时,使用 adapter HTTP stub 和 mock 账号完成自动化验证,不把 mock URL 当成真实发布。
- Go API/Browser WS:
http://127.0.0.1:8090 - Vite Web:
http://127.0.0.1:3013 - 生产构建:
cd apps/web && npm run build,设置STATIC_DIR=apps/web/dist后由 Go server 托管
网页功能
- 工作台:任务统计、执行器状态、挑战和最近任务。
- 账号管理:平台账号、扫码/Cookie 登录、健康检查、重新登录。
- 素材库:上传进度、SHA-256 去重、预览、分组和删除。
- 发布管理:新建、草稿、审核、排期、任务详情、重试和取消。
- 挑战/通知/审计:二维码、验证码、实时状态、历史追踪。
网页端不需要客户端安装、设备配对或 Agent WSS。客户端代码仅作为历史归档保留。
文档入口
| 文档 | 说明 |
|---|---|
| docs/web-only-v1-plan.md | 当前 V1 范围、页面、执行器和验收 |
| docs/web-only-logic-diagrams.md | Web-only 系统、登录、上传、执行、扫码逻辑图 |
| docs/reference-repositories-analysis.md | 三个 MIT 参考仓库的拉取记录和借鉴边界 |
| docs/system-design.md | 当前系统设计 |
| docs/delivery-plan.md | 当前交付排期 |
| docs/page-wireframes.md | 网页 ASCII 线框 |
| docs/api.md | REST API |
| docs/progress.md | 当前进度和剩余风险 |
参考项目
references/social-auto-upload(MIT,dreammis,CLI/uploader/QR 参考)references/social-auto-upload-web-ui(MIT,DevilJie,Web/SSE/任务队列参考)references/MediaPublishPlatform(MIT,funfan0517,批量上传/定时/发布记录参考)
参考代码只读保存,新增实现必须保留 MIT 版权说明;当前工程不混入 Vue/Flask/SQLite 三套运行时。
开发原则
- mock executor 只能证明业务状态机,不冒充真实平台成功。
- 真实扫码无法执行时,状态必须停在“等待扫码”,不能自动标记 active。
- 所有任务、挑战和素材错误必须能在页面和日志中定位。
- 不做刷量、绕过平台风控、矩阵养号、私信轰炸等功能。
Languages
Python
79.6%
TypeScript
17%
Less
2.8%
JavaScript
0.2%
Dockerfile
0.2%
Other
0.1%