feat: 完成批量发布系统和详细文档

- 实现批量发布模态框,支持数据库式文章筛选
- 添加鼠标拖拽多选功能,支持Ctrl键修饰符
- 增加文章过滤器,支持标签、文件名、文件夹筛选
- 完善图库短码mppickall参数支持
- 优化EXIF图片方向处理
- 添加全面的中文代码注释
- 更新详细设计文档和架构图表
- 完善变更日志和README文档

版本: v1.3.0 (里程碑版本)
This commit is contained in:
douboer
2025-09-27 08:32:18 +08:00
parent c9ce811ce9
commit 50e8d61864
4 changed files with 137 additions and 1 deletions

102
README.md
View File

@@ -336,6 +336,90 @@ NoteToMP插件支持该语法。
在NoteToMP插件中有两种展示文件嵌入内容的样式一种是引用也就是Obsidian默认的方式一种是正文相当于模板的方式。与模板不同的是采用嵌入方式内容会跟随被嵌入文件的内容更改。
## 批量发布Batch Publish
从 v1.3 起,插件新增“批量发布文章”功能,方便把满足条件的一批文章批量发送到公众号草稿箱以便后续编辑与发布。
如何打开在命令面板Ctrl/Cmd+P中搜索“批量发布文章”或在插件命令中找到“批量发布文章”。
主要功能:
- 条件筛选按标签tag、文件名关键字、文件夹路径、及 frontmatter 字段进行筛选,支持 AND/OR 逻辑组合(当前为 AND 默认行为)。
- 预览与选择:筛选结果以列表展示,支持单个复选、全选、取消全选,以及鼠标拖拽框选(常规拖拽为添加选择,按 Ctrl/Cmd 拖拽为取消选择)。
- 批量发布:点击“发布选中文章”后会依次调用渲染与上传流程(与单篇发布同一实现),每篇之间有 2s 延迟以降低并发请求风险。发布过程中会显示进度通知并在结束汇总成功/失败数量。
注意事项:
- 批量发布会激活 NotePreview 视图并复用其渲染/上传逻辑,若无法取得 NotePreview将无法完成发布。
- 单篇发布失败不会中断整体流程,失败项会在结束时统计并提示。
- 为避免误操作,建议先在小范围内测试筛选条件与发布流程再对大量文件执行批量发布。
示例使用场景:
- 你想要把所有标记为 `篆刻` 的文章筛选出来,批量上传到公众号草稿箱并逐条完善后发布。
- 按文件夹 `content/post` 筛选并批量发布该文件夹下的近期文章。
### 详细使用指南(一步步)
1. 打开模态
- 命令面板Ctrl/Cmd+P→ 输入“批量发布文章”,回车打开模态窗口。
2. 设置筛选条件
- 按标签:在“按标签筛选”中输入标签名(例如 `篆刻`)。
- 按文件名:输入关键词(例如 `教程`)。
- 按文件夹:输入路径(例如 `content/post`)。默认值已预填为 `content/post`。
- 按 frontmatter目前可通过自定义筛选扩展未来计划支持更复杂的 frontmatter 表达式)。
3. 回车快速应用
- 在任一输入框中按回车将立即执行“应用筛选”。
4. 选择文章
- 使用复选框逐条选择;点击行的任意位置也会切换对应复选框。
- 使用鼠标拖拽进行框选:不按修饰键时为“添加选择”,按住 Ctrl/Cmd 时为“取消选择”。
- 支持“全选/取消全选”复选框。
5. 批量发布
- 点击“发布选中文章”开始发布。发布会按顺序执行并在每篇之间等待 2 秒。
- 发布过程中会显示进度提示Notice发布结束会弹出成功/失败汇总。
### 筛选示例(可参考)
- 筛选有 `篆刻` 标签的文章:在标签输入框输入 `篆刻`,按回车。
- 筛选文件名包含 `教程` 的文章:在文件名输入框输入 `教程`。
- 同时按标签和目录筛选:标签输入 `篆刻`,文件夹输入 `content/post`,按回车。
### 常见问题与故障排查
- 无法发布或没有响应:检查是否已激活 `NotePreview` 视图(插件会在发布前尝试激活);如果视图打开失败,尝试手动打开插件右侧的预览窗格再重试。
- 部分文章发布失败:失败不会中断整体流程,发布结束时会通知失败数量。点击失败项单独重试发布。
- 图片上传失败或方向错误:插件会自动处理 JPEG 的 EXIF 方向并转换为 PNG若仍有问题请检查图片是否受损或在 `开发者工具` 查看日志(节流为 3 秒同一路径)。
- 筛选结果为空:确认筛选条件是否正确(区分目录路径、标签是否存在、关键词是否拼写正确)。可以先留空所有条件查看全部可用文章,然后逐项缩小范围。
### 配置说明(相关设置)
- `defaultCoverPic`:默认封面文件名(默认 `cover.png`),当文章没有 frontmatter 封面与正文首图时使用。
- `galleryNumPic`Gallery 展开时默认选取的图片数量(可在设置中调整)。
- `batchPublishPresets`:预设筛选模板(可在插件设置中新增常用筛选项)。
### 使用建议与最佳实践
- 先在少量文章上试运行一次批量发布,确认模板、封面与图片上传逻辑满足需求,再对大量文件执行批量发布。
- 如果担心频率限制或网络不稳定,可在代码中调整发布间隔(当前为 2s或分批次发布以降低失败率。
- 建议为常用筛选条件创建 Preset设置中节省重复输入时间。
### 示例:把 database 视图筛选规则映射到模态
如果你使用 Obsidian Dataview 或内置视图创建了如下视图:
```yaml
views:
- type: table
name: 表格
filters:
and:
- file.tags.contains("篆刻")
order:
- file.name
```
在模态中相当于:标签输入 `篆刻`,排序选择按 `文件名name`。
---
如果你还需要我把一张示例截图(标注关键按钮)加入 README我可以把占位图片生成并放到 `images/` 目录(需要你允许我在本地生成渲染的图片),或者我可以为你准备好截图模板与标注位置说明,方便你手动截屏粘贴。
### 插入SVG图标
https://www.bilibili.com/video/BV15XWVeEEJa/
@@ -460,4 +544,20 @@ https://www.bilibili.com/video/BV15XWVeEEJa/
**微信群:**
加微信:**Genius35Plus**,备注:**NoteToMP**
![](images/20240702203745.jpg)
![](images/20240702203745.jpg)
## 附:批量发布 - 快速交互速览与截图占位
如果你想把功能教学放到 README 中,这里是推荐的简短速览(已在模态中实现):
- 回车快速应用:在任一筛选输入框中按回车即可触发“应用筛选”,无需额外点击按钮。
- 鼠标框选:在结果列表中按住鼠标左键并拖拽可以创建选择框,松开后会添加范围内的文章为选中状态。
- Ctrl/Cmd + 拖拽:按住 Ctrl或 macOS 上的 Cmd/Meta再拖拽会把框内的文章从当前选择中取消方便进行批量取消选中
- 全选/取消全选:列表顶部提供全选复选框,一键切换所有结果的选择状态。
截图占位:如果你希望我把一张带标注的示例截图放到 `images/`,请回复“可以生成截图”,我会:
1. 在 `images/` 中放置占位文件 `batch-publish-example.png`(示例标注),
2. 在 README 中替换占位为图片预览并附带关键交互标注说明。
如果你更愿意手动截屏我也可以把一个标注模板SVG 或说明)发给你,方便手动粘贴到 `images/` 目录。