update at 2025-10-09 12:39:24
This commit is contained in:
72
docs/xiaohongshu/automation-notes.md
Normal file
72
docs/xiaohongshu/automation-notes.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# 小红书自动化发布机制说明
|
||||
|
||||
## 1. 结构化 CSS 选择器
|
||||
集中存放于 `selectors.ts`,按功能分类:
|
||||
- ENTRY:入口区域(视频/图文选择)
|
||||
- PUBLISH_TAB:主发布 Tab(视频 or 图片)
|
||||
- VIDEO:视频发布流程元素
|
||||
- IMAGE:图文发布流程元素
|
||||
|
||||
修改页面结构时,仅需维护该文件。
|
||||
|
||||
## 2. 发布流程自动化方法(api.ts)
|
||||
| 方法 | 作用 |
|
||||
|------|------|
|
||||
| openPublishEntry | 打开发布入口页面 |
|
||||
| selectPublishTab | 切换到视频 or 图文 Tab |
|
||||
| triggerMediaUpload | 触发上传入口(不处理系统文件对话框)|
|
||||
| fillTitleAndContent | 并行填写标题与正文(不阻塞上传)|
|
||||
| choosePublishMode | 选择立即发布或定时(暂实现立即)|
|
||||
| waitForUploadSuccess | 轮询等待“上传成功”文案出现 |
|
||||
| clickPublishButton | 点击发布按钮 |
|
||||
| publishViaAutomation | 高层封装:一键执行完整流程 |
|
||||
| saveCookies | 将 document.cookie 简单保存到 localStorage |
|
||||
| restoreCookies | 从 localStorage 写回 cookie(仅适合简单会话)|
|
||||
| ensureSession | 恢复并检测是否仍已登录 |
|
||||
|
||||
## 3. 异步上传策略
|
||||
- 上传触发后立即并行执行:填写标题 + 填写正文 + 设置发布模式
|
||||
- 独立等待“上传成功”文案出现(最大 180s)
|
||||
- 提供扩展点:可替换为 MutationObserver
|
||||
|
||||
## 4. Cookies 会话保持策略
|
||||
当前采用简化方案:
|
||||
1. 登录后或发布点击后调用 `saveCookies()` 将 `document.cookie` 原始串写入 localStorage。
|
||||
2. 下次调用 `ensureSession()` 时:
|
||||
- 打开发布页
|
||||
- `restoreCookies()` 将简单 key=value 还原
|
||||
- 检查是否仍已登录(调用 `checkLoginStatus()`)
|
||||
|
||||
局限:
|
||||
- 无法还原 HttpOnly / 过期属性 / 域等
|
||||
- 真实长期稳定需使用:
|
||||
- Electron session APIs(如 webContents.session.cookies.get/set)
|
||||
- 或在本地插件存储中序列化 cookie 条目
|
||||
|
||||
## 5. 待优化建议
|
||||
- 增加前端 Hook:上传完成事件触发后立即发布
|
||||
- 增加失败重试,比如发布按钮未出现时二次尝试选择 Tab
|
||||
- 图文上传成功 DOM 精细化判断
|
||||
- 支持定时发布(scheduleTime 入参)
|
||||
- 支持话题 / 地址选择自动化
|
||||
|
||||
## 6. 示例调用
|
||||
```ts
|
||||
await api.publishViaAutomation({
|
||||
type: 'video',
|
||||
title: '测试标题',
|
||||
content: '正文内容...',
|
||||
immediate: true
|
||||
});
|
||||
```
|
||||
|
||||
## 7. 风险提示
|
||||
| 风险 | 描述 | 处理建议 |
|
||||
|------|------|----------|
|
||||
| DOM 变动 | 页面结构变化导致选择器失效 | 增加多选择器冗余 + 容错 |
|
||||
| 登录失效 | Cookies 方式失效 | 使用 Electron cookies API |
|
||||
| 上传超时 | 网络抖动导致等待失败 | 暴露重试机制 |
|
||||
| 发布失败未捕获 | 发布后提示弹窗变化 | 增加结果轮询与提示解析 |
|
||||
|
||||
---
|
||||
更新时间:2025-09-27
|
||||
Reference in New Issue
Block a user