Files
note2any/docs/xiaohongshu/automation-notes.md
2025-10-09 12:39:24 +08:00

73 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 小红书自动化发布机制说明
## 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