# 小红书功能设计文档 ## 📋 需求概述 基于用户反馈,为 NoteToMP 插件增加小红书发布功能,采用独立模块设计,不修改现有公众号代码。 ### 核心需求 - **技术方案**:模拟网页操作(类似 Playwright 自动化) - **界面设计**:预览界面增加平台选择下拉框,批量发布界面增加小红书选项 - **独立模块**:与微信公众号功能完全分离,便于维护 - **图片处理**:统一转换为 PNG 格式上传,无需水印 - **暂不实现**:内容格式适配、账号管理等高级功能 ## 🏗️ 架构设计 ### 模块架构图 ``` src/xiaohongshu/ ├── xiaohongshu-api.ts # 小红书API封装(模拟网页操作) ├── xiaohongshu-adapter.ts # 内容格式适配器 ├── xiaohongshu-render.ts # 小红书渲染器 ├── xiaohongshu-image.ts # 图片处理逻辑 └── types.ts # 类型定义 扩展现有模块: ├── src/note-preview.ts # 添加平台选择下拉框 ├── src/batch-publish-modal.ts # 添加小红书发布选项 ├── src/settings.ts # 添加小红书相关配置 └── src/setting-tab.ts # 添加小红书设置界面 ``` ### 核心组件关系 ```mermaid graph TB A[NotePreview] -->|平台选择| B[XiaohongshuRender] A -->|公众号发布| C[ArticleRender] D[BatchPublishModal] -->|小红书批量| B D -->|公众号批量| C B --> E[XiaohongshuAdapter] B --> F[XiaohongshuImage] B --> G[XiaohongshuAPI] E --> H[内容格式转换] F --> I[图片PNG转换] G --> J[模拟网页操作] K[Settings] --> L[小红书配置] L --> B ``` ## 🎯 详细设计 ### 1. 核心模块设计 #### 1.1 XiaohongshuAPI (xiaohongshu-api.ts) ```typescript // 核心功能 interface XiaohongshuAPI { // 认证相关 checkLoginStatus(): Promise loginWithCredentials(username: string, password: string): Promise // 发布相关 createPost(content: XiaohongshuPost): Promise uploadImage(imageBlob: Blob): Promise // 状态查询 getPostStatus(postId: string): Promise } // 数据结构 interface XiaohongshuPost { title: string content: string images: string[] // 上传后的图片ID tags?: string[] } ``` #### 1.2 XiaohongshuRender (xiaohongshu-render.ts) ```typescript // 渲染器接口 interface XiaohongshuRender { // 预览功能 renderPreview(file: TFile): Promise getPreviewContent(): string // 发布功能 publishToXiaohongshu(): Promise uploadImages(): Promise // 工具方法 copyToClipboard(): Promise } ``` ### 2. 界面扩展设计 #### 2.1 NotePreview 扩展 在现有预览界面顶部添加平台选择下拉框: ``` ┌─────────────────────────────────┐ │ 发布平台: [公众号预览 ▼] │ ├─────────────────────────────────┤ │ │ │ 预览内容区域 │ │ │ ├─────────────────────────────────┤ │ [刷新] [复制] [上传图片] [发草稿] │ └─────────────────────────────────┘ ``` 选项包括: - 公众号预览(默认,现有功能) - 小红书预览(新增功能) #### 2.2 BatchPublishModal 扩展 在批量发布界面添加平台选择: ``` 发布到: □ 微信公众号 □ 小红书 □ 全部平台 ``` ### 3. 技术实现方案 #### 3.1 模拟网页操作架构 基于 Electron 的网页操作能力: ```typescript class XiaohongshuWebController { private webview: HTMLWebViewElement async navigateToXiaohongshu(): Promise async fillPostForm(content: XiaohongshuPost): Promise async uploadImages(images: Blob[]): Promise async submitPost(): Promise } ``` #### 3.2 图片处理方案 利用现有的图片处理能力: ```typescript class XiaohongshuImageProcessor { // 统一转换为PNG格式 async convertToPNG(imageBlob: Blob): Promise // 批量处理图片 async processImages(images: ImageInfo[]): Promise // 复用现有EXIF处理 async handleEXIFOrientation(imageBlob: Blob): Promise } ``` ## 🛠️ 实现计划 ### Phase 1: 基础架构搭建 1. 创建小红书模块目录结构 2. 定义核心接口和类型 3. 实现基础的渲染器框架 4. 扩展预览界面的平台选择 ### Phase 2: 核心功能实现 1. 实现模拟网页操作的API层 2. 创建内容适配器 3. 实现图片处理逻辑 4. 完成小红书渲染器 ### Phase 3: 界面集成 1. 完成预览界面的小红书支持 2. 扩展批量发布界面 3. 添加设置页面的小红书配置 4. 测试界面交互 ### Phase 4: 优化和完善 1. 错误处理和用户反馈 2. 性能优化 3. 文档更新 4. 用户测试和反馈收集 ## 📁 文件结构规划 ``` src/ ├── xiaohongshu/ │ ├── api.ts # API层封装 │ ├── render.ts # 渲染器实现 │ ├── adapter.ts # 内容适配器 │ ├── image.ts # 图片处理 │ ├── web-controller.ts # 网页操作控制器 │ └── types.ts # 类型定义 │ ├── note-preview.ts # 扩展:添加平台选择 ├── batch-publish-modal.ts # 扩展:添加小红书选项 ├── settings.ts # 扩展:添加小红书配置 ├── setting-tab.ts # 扩展:设置界面 └── main.ts # 扩展:注册小红书命令 ``` ## 🔧 配置项设计 在插件设置中新增小红书部分: ```typescript interface XiaohongshuSettings { // 基础设置 enabled: boolean // 是否启用小红书功能 // 认证信息(加密存储) username?: string // 用户名 password?: string // 密码(加密) // 发布设置 defaultTags: string[] // 默认标签 imageQuality: number // 图片质量 (1-100) // 高级设置 publishDelay: number // 批量发布间隔(秒) enableImageOptimization: boolean // 图片优化 } ``` ## 🚀 用户使用流程 ### 单篇发布流程 1. 在预览界面选择"小红书预览" 2. 查看小红书格式的预览效果 3. 点击"发布到小红书"按钮 4. 系统自动处理图片并发布 5. 显示发布结果和状态 ### 批量发布流程 1. 打开批量发布界面 2. 设置筛选条件 3. 选择发布平台(包含小红书) 4. 选择要发布的文章 5. 点击"批量发布" 6. 系统顺序发布到选中平台 ## 🎨 界面设计细节 ### 预览界面改进 - 在现有按钮栏前添加平台选择下拉框 - 根据选择的平台动态更新预览内容 - 按钮功能根据平台调整(如"发草稿"变为"发布到小红书") ### 批量发布界面改进 - 在筛选区域下方添加平台选择区 - 支持多平台同时发布 - 显示各平台的发布进度和状态 ## 💡 技术考量 ### 模拟网页操作的挑战 1. **稳定性**:网页结构变化可能导致操作失败 2. **认证**:需要处理登录状态和会话保持 3. **反爬虫**:小红书可能有反自动化检测 4. **性能**:网页操作比API调用更慢 ### 解决方案 1. **容错处理**:多重选择器,智能重试机制 2. **状态管理**:定期检查登录状态,自动重新认证 3. **模拟用户行为**:添加随机延迟,模拟真实用户操作 4. **异步处理**:后台执行,不阻塞界面操作 ## 📈 后续扩展规划 ### 短期扩展(v1.4.x) - 内容格式智能适配 - 标签自动转换 - 图片尺寸优化 ### 中期扩展(v1.5.x) - 多账号支持 - 定时发布 - 发布统计和分析 ### 长期扩展(v2.0+) - 支持更多社交平台(知乎、B站等) - AI辅助内容优化 - 发布效果分析 --- 此设计文档为小红书功能开发提供了完整的技术方案和实现路径,确保新功能与现有架构的良好集成,同时保持代码的清晰性和可维护性。