5c4a16dc3a
添加从本地 Markdown 文件导入创建文章的功能,支持文件预览和自动发布选项 新增文章删除命令,支持选择性删除 Halo 文章或本地文件 添加标签和分类管理功能,支持创建、编辑和删除操作 更新国际化文案,支持新功能的多种语言界面 扩展服务层以支持文章导入、删除和标签分类管理 API 调用 更新插件版本至 2.1.1 并更新作者信息
2.6 KiB
2.6 KiB
Markdown 文件导入功能规格说明
Why
当前 Obsidian Halo 插件只支持从 Obsidian 发布文章到 Halo,但没有提供从本地 Markdown 文件导入创建文章的功能。用户可能希望:
- 直接从文件系统导入已存在的 Markdown 文件
- 从其他平台迁移文章时批量导入
- 快速创建新文章时选择本地文件而非在编辑器中编写
What Changes
- 新增命令:直接从 Markdown 文件导入创建 Halo 文章
- 新增文件选择器:支持选择本地 .md 文件
- 新增预览功能:导入前预览文件内容和 frontmatter
- 新增选项:导入时是否立即发布
Impact
- Affected specs:
- 文章发布功能:提供新的文章创建入口
- 设置功能:可能需要添加导入相关配置
- Affected code:
- 新增
src/commands/import-markdown.ts:导入命令 - 新增
src/modals/file-preview-modal.ts:文件预览弹窗 - 修改
src/main.ts:注册新命令 - 修改
src/i18n/locales/*.json:国际化文案
- 新增
ADDED Requirements
Requirement: 从 Markdown 文件导入
系统 SHALL 提供从本地 Markdown 文件导入创建 Halo 文章的功能。
Scenario: 选择文件导入
- WHEN 用户执行"从 Markdown 文件导入"命令
- THEN 系统显示文件选择器,允许用户选择 .md 文件
Scenario: 预览和确认
- WHEN 用户选择了一个 Markdown 文件
- THEN 系统显示文件内容预览(标题、内容摘要、frontmatter)
- AND 显示"导入"和"取消"按钮
Scenario: 导入成功
- WHEN 用户点击"导入"按钮
- THEN 系统读取文件内容
- AND 解析 frontmatter 和正文
- AND 调用 Halo API 创建文章
- AND 显示导入成功通知
Scenario: 导入选项
- WHEN 用户可以勾选"导入后立即发布"选项
- THEN 文章创建后自动发布
MODIFIED Requirements
Requirement: 命令面板扩展
现有命令列表扩展,新增:
Halo: 从 Markdown 文件导入- 打开文件选择器进行导入
REMOVED Requirements
无
技术实现细节
Obsidian 文件选择器 API
const filePicker = app.createFilePicker();
filePicker.setFilter(file => file.extension === 'md');
filePicker.onChange = async (files) => {
// 处理选中的文件
};
filePicker.open();
文件读取
const content = await app.vault.read(file);
Frontmatter 解析
参考现有的 src/utils/yaml.ts 实现,或使用 gray-matter 库。
API 端点
POST /apis/uc.api.content.halo.run/v1alpha1/posts
请求体格式与发布功能相同。