BlogEdit:基于 Tauri 2 + SvelteKit 5 的 Hugo 博客桌面客户端
如果你是一名 Hugo 博客作者,日常编辑文章需要 SSH 登录服务器、手动创建 Markdown、运行部署命令,那么 BlogEdit 正是为了简化这一流程而生。它是一款桌面客户端,通过 SSH 远程管理博客文章,集成 AI 辅助写作与一键部署,让撰写和发布博客变得更流畅。
核心功能一览
- 远程文章管理:通过 SSH 连接服务器,浏览、创建、编辑、删除文章,所有操作实时同步。
- 智能排序与搜索:支持按日期/标题排序、关键词搜索,快速定位文章。
- 信息统计:提供文章总数、字数、月度分布、标签统计等仪表盘。
- AI 辅助写作:集成 OpenAI 兼容 API,可在编辑器内直接与 AI 对话,获取写作建议。
- 一键部署:编辑完成后,一键触发
hugo --minify,自动发布。 - 安全连接:采用系统 SSH (ControlMaster) 优先免密登录,失败后回退至 sshpass 密码认证。
技术栈
| 层级 | 技术 |
|---|---|
| 前端 | SvelteKit 2 (SPA) + Svelte 5 runes |
| 后端 | Tauri 2 (Rust) – 系统 SSH 连接、文件读写、AI 请求 |
| 博客引擎 | Hugo + PaperMod(文章位于 {server_path}/content/post/*.md,YAML front matter) |
项目架构清晰,全局状态 $state 单例管理所有组件通信,前端无 props,仅通过 app 读写。
工作流程
- 连接:在设置界面输入 SSH 地址、路径和密码(可选),程序自动测试连接并保存配置。
- 浏览:侧边栏列出所有文章,支持搜索、排序。
- 编辑:点击文章进入编辑器,支持实时预览(通过 marked + DOMPurify 安全渲染)。
- AI 辅助:底部 AI 面板可进行对话,temperature=0.7,返回 markdown 内容。
- 保存/发布:保存后文件写回远程,点击“部署”执行 Hugo 编译。
- 新建/删除:新建文章自动生成 slug 文件名,删除后自动触发部署。
为何选择 Tauri + SvelteKit?
- 体积小:相比 Electron,Tauri 应用仅数 MB,原生性能优越。
- 安全:Tauri 的 IPC 接口通过
invoke调用 Rust 命令,避免前端直接暴露系统操作。 - 响应式:Svelte 5 的
$state、$derived让状态管理简洁高效,非常适合工具类应用。 - 跨平台:macOS、Windows、Linux 均可编译。
开发与贡献
项目采用标准 Tauri 2 结构,前端构建为 SPA,依赖 marked、dompurify、chrono、serde 等库。开发命令:
npm install
npm run tauri dev
构建发布:
npm run release # 自动 bump 版本 → tauri build → 拷贝到 /Applications
所有 Tauri 命令定义在 commands.rs,前端通过 invoke 调用,参数名需与 Rust 结构体字段一致(snake_case)。
未来规划
- 支持自定义 Hugo 配置路径
- 多账号管理
- AI 模型切换(本地 Ollama)
- 自动同步标签/分类
BlogEdit 目前适合个人 Hugo 博客作者使用,如果你也想告别反复的 SSH 操作,欢迎尝试这个开源项目。更多详情可查看仓库 README 或直接拉取代码体验。
项目仓库:[your-repo-link](假设)