ZotePad 是一个基于 Tauri v2 和 Nuxt 4 构建的本地优先(Local-First)跨平台笔记应用。
这是我Vibe Coding的产物,一边是支持自己日常的使用场景;一边也是探索 Tauri V2 多端应用的稳定性,这个壳子可以用于稳定二开其他多端App。
这个应用的主题是:记录、分享、连接、通知、获取、成就
这几个关键词贯穿了我现在以及未来全部的使用场景,围绕这些关键词,我会尽可能的保持精简和易用。
说人话,我写文章就会拓展写文章的功能,我做副业就会增加做副业的工具 为自己所用
想体验的小伙伴,请选择最新版本,未发布1.0.0前,一定存在或大或小的bug
集成 md-editor-v3 内核,专注于提升写作流畅度。
- 自动化图床:解决了 Markdown 写作中图片管理的痛点。支持粘贴或选择图片后自动上传至腾讯云 COS,并自动插入链接。
- 实时预览:所见即所得的编辑体验。
虽然是混合开发应用,但在移动端交互上下了很大功夫。
- 原生级适配:精确处理了刘海屏、动态岛等 Safe Area 布局。
- 符合直觉的交互:在移动端自动切换为底部导航(Tab Bar)和抽屉式(Bottom Sheet)菜单,支持手势操作,确保单手使用的便利性。
- 本地优先:核心数据(笔记、索引)存储于本地 SQLite 数据库,不依赖第三方云服务,确保数据完全私有且离线可用。
- 混合架构:文本数据本地存储,大文件(图片/附件)云端存储,平衡了隐私安全与存储体积。
- 局域网同步:支持在局域网内将桌面端作为服务器,与移动端直接同步数据,无需经过公网。
内置了一个轻量级的成就系统。通过统计字数、记录天数等维度计算经验值(EXP),为单纯的记录过程增加一些正向反馈。
本项目采用了一套现代化的混合开发技术栈,旨在平衡开发效率与应用性能:
| 模块 | 技术选型 | 考量 |
|---|---|---|
| App Shell | Tauri v2 (Rust) | 相比 Electron 拥有更小的体积和更低的内存占用,且 v2 版本原生支持 Android/iOS。 |
| Frontend | Nuxt 4 (Vue 3) | 利用 Nuxt 的自动导入和模块化特性极大提升开发效率,配合 Vue 3 Composition API 处理复杂逻辑。 |
| UI System | Tailwind CSS + Shadcn | 实用主义的样式解决方案,保证了多端 UI 的一致性与美观度。 |
| Database | SQLite | 成熟可靠的嵌入式关系型数据库,适合本地数据持久化。 |
| Animation | GSAP | 处理复杂的 UI 过渡动画,提升应用的精致感。 |
目标:让 Agent / CLI 在不操作 GUI 的情况下,把本地 Markdown 文章导出为“公众号可用的富文本 HTML 片段”,并交给
z-cli写入公众号草稿箱。
- OpenClaw/脚本向 ZotePad 发送“打开文件”指令(带绝对路径)
- ZotePad 进入
/preview页面:自动加载该 Markdown → 渲染 → 导出 HTML 片段文件 z-cli读取该 HTML 文件(--html-file)并创建公众号草稿
- 导出目录(默认):
/Users/aatrox/.openclaw/workspace/zotepad-exports/html/- 可用环境变量覆盖:
ZOTEPAD_EXPORT_DIR
- 导出文件名:
{slug}.htmlslug优先取 frontmatter 的slug字段;否则回退为文件名
- 索引文件(便于自动化确认导出完成):
/Users/aatrox/.openclaw/workspace/zotepad-exports/html/index.json- 记录
slug -> { htmlPath, sourcePath, updatedAt }
桌面端内置一个本地 HTTP Server(默认端口 54577),可用于自动化触发打开文件:
curl -X POST "http://127.0.0.1:54577/preview/open" \
-H "authorization: zotepad-dev-token" \
-H "content-type: application/json" \
-d '{"path":"/abs/path/to/article.md"}'- 授权 token:环境变量
ZOTEPAD_SYNC_TOKEN(未设置时默认zotepad-dev-token)
z-cli 的 wx draft 支持直接读取 HTML 片段文件:
z wx draft \
-t "文章标题" \
--html-file "/Users/aatrox/.openclaw/workspace/zotepad-exports/html/my-slug.html"说明:
--photos可选;如果 HTML 里包含<img src=...>,z-cli 会尝试提取并上传素材,再替换为微信 URL。- 如果 HTML 中完全没有图片,z-cli 可能会要求至少提供一张图作为封面素材(按实现逻辑)。
如果你对这个技术栈感兴趣,或者想部署一套自己的私有笔记系统:
- Node.js (v18+)
- pnpm
- Rust (最新稳定版)
- Android Studio (仅 Android 开发需要)
-
克隆仓库
git clone <your-repo-url> cd zotepad
-
安装依赖
pnpm install
-
启动开发环境
# 桌面端 pnpm tauri dev # Android 端 (需连接真机或模拟器) pnpm tauri android dev --open
项目配置了基于 GitHub Actions 的 CI/CD 流程。
- 自动构建:提交信息包含
chore(build): release vX.Y.Z时触发。 - 多端产物:自动生成 Windows (.msi/.exe), macOS (.dmg) 和 Android (.apk) 安装包。
- 版本管理:推荐使用内置脚本管理版本:
pnpm quick-release-patch-auto
为了生成 Release 版 APK,需配置本地 Keystore。
详细配置请参考 src-tauri/keystore.properties 文件注释。CI 环境需在 Secrets 中配置 ANDROID_KEYSTORE_BASE64 等变量以实现自动签名。
欢迎提交 Issue 或 PR,共同完善这个小工具。