- 🎯 灵活选择 - 支持选择区域保存或保存整个页面
- 📝 Markdown 转换 - 使用 Turndown 引擎,支持 GitHub Flavored Markdown
- 💾 多种保存方式 - 本地下载或 WebDAV 云端同步
- 🎨 可定制模板 - 自定义文件名和内容格式
- 📜 历史记录 - 完整的保存历史,随时查看和管理
- 🔄 文件冲突处理 - 智能检测重复文件,提供覆盖/重命名选项
- 🌐 跨浏览器 - 支持 Chrome、Edge 和 Firefox
快速启动保存功能,查看当前页面信息
点击选择页面中的任意元素进行保存
保存前预览处理后的 Markdown 内容
查看和管理所有保存的内容
- 前往 Releases 页面
- 下载对应浏览器的 zip 文件
- Chrome/Edge:
md-save-chrome.zip - Firefox:
md-save-firefox.zip
- Chrome/Edge:
- 解压下载的 zip 文件
- 打开浏览器扩展页面
- Chrome:
chrome://extensions - Edge:
edge://extensions
- Chrome:
- 开启"开发者模式"
- 点击"加载已解压的扩展程序"
- 选择解压后的文件夹
- 打开 Firefox 附加组件页面 (
about:addons) - 点击齿轮图标 → "从文件安装附加组件"
- 选择下载的 zip 文件
# 克隆仓库
git clone https://github.com/2ue/md-save.git
cd md-save
# 安装依赖
pnpm install
# 开发模式(Chrome)
pnpm dev
# 开发模式(Firefox)
pnpm dev:firefox
# 构建扩展
pnpm build # Chrome
pnpm build:firefox # Firefox
# 打包为 zip
pnpm zip # Chrome
pnpm zip:firefox # Firefox- 点击浏览器工具栏上的 MD Save 图标
- 选择"保存整个页面"
- 预览转换后的 Markdown 内容
- 选择保存位置(本地或 WebDAV)
- 点击浏览器工具栏上的 MD Save 图标
- 选择"选择区域保存"
- 在页面上点击要保存的元素(会高亮显示)
- 预览并保存
如果需要将内容保存到云端,可以配置 WebDAV:
- 点击 MD Save 图标 → 设置
- 填写 WebDAV 配置:
- 服务器地址: WebDAV 服务器 URL(如
https://dav.example.com) - 用户名: WebDAV 账户用户名
- 密码: WebDAV 账户密码(或应用专用密码)
- 保存路径: 可选,自定义保存目录(如
/markdown/) - 认证类型: Basic 或 Digest(通常选择 Basic)
- 服务器地址: WebDAV 服务器 URL(如
- 点击"测试连接"验证配置
- 保存设置
支持的 WebDAV 服务:
- 坚果云
- Nextcloud
- ownCloud
- Synology NAS
- 其他标准 WebDAV 服务
在设置页面可以自定义文件名和内容格式:
{{YYYY}}/{{MM}}/{{title}}
---
title: {{title}}
url: {{url}}
date: {{date}} {{time}}
---
{{content}}
可用变量(基于 dayjs):
基础变量:
{{title}}- 页面标题{{url}}- 页面 URL{{domain}}- 域名{{content}}- Markdown 内容
时间变量:
- 年月日:
{{YYYY}},{{YY}},{{MM}},{{M}},{{DD}},{{D}} - 时分秒:
{{HH}},{{H}},{{hh}},{{h}},{{mm}},{{m}},{{ss}},{{s}} - 星期:
{{d}}(0-6),{{dd}}(Su),{{ddd}}(Sun) - 组合(向后兼容):
{{date}}(YYYY-MM-DD),{{time}}(HH:mm:ss)
示例:
{{YYYY}}/{{MM}}/{{title}} -> 2025/01/article
{{title}}_{{YYYY}}{{MM}}{{DD}} -> article_20250110
{{date}}/{{title}} -> 2025-01-10/article
- 点击 MD Save 图标 → 保存历史
- 查看所有保存的内容记录
- 支持:
- 按日期/标题/网址搜索
- 按保存位置筛选(本地/WebDAV)
- 点击网址直接打开原文
- 查看完整保存路径
- 框架: WXT - 现代化的浏览器扩展开发框架
- UI: Vue 3 + TypeScript
- 样式: Tailwind CSS
- 图标: Lucide Vue
- Markdown: Turndown + GFM Plugin
- WebDAV: webdav
- 时间处理: Day.js - 轻量级日期库
- 存储: Browser Storage API
md-save/
├── entrypoints/ # 扩展入口点
│ ├── background.ts # 后台脚本(文件下载、WebDAV 上传)
│ ├── content.ts # 内容脚本(页面交互、内容提取)
│ ├── popup/ # 弹出窗口
│ ├── options/ # 设置页面
│ └── history/ # 历史记录页面
├── utils/ # 工具函数
│ ├── content-service.ts # 内容处理服务
│ ├── markdown-converter.ts # Markdown 转换器
│ ├── webdav-client.ts # WebDAV 客户端
│ ├── config-validator.ts # 配置验证
│ ├── error-handler.ts # 错误处理
│ └── logger.ts # 日志系统
├── types/ # TypeScript 类型定义
│ ├── config.ts # 配置类型
│ ├── history.ts # 历史记录类型
│ └── messages.ts # 消息类型
└── public/ # 静态资源
└── icon/ # 扩展图标
- Node.js >= 18.20.8
- pnpm >= 7.30.1
-
启动开发服务器
pnpm dev # Chrome pnpm dev:firefox # Firefox
-
加载扩展到浏览器
- Chrome: 打开
chrome://extensions,加载.output/chrome-mv3目录 - Firefox: 打开
about:debugging,加载临时附加组件
- Chrome: 打开
-
热重载
- 代码修改会自动重新构建
- 部分修改需要手动刷新扩展
-
类型检查
pnpm compile
-
构建生产版本
pnpm build pnpm zip
- 使用 TypeScript 进行类型安全开发
- 遵循 Vue 3 Composition API 最佳实践
- 使用 Tailwind CSS 进行样式编写
- 统一使用
utils/error-handler.ts处理错误 - 使用
utils/logger.ts进行日志记录
- 检查用户名和密码是否正确
- 某些服务(如坚果云)需要使用应用专用密码
- 尝试切换认证类型(Basic/Digest)
- 确保在普通网页(http/https)中使用
- 部分动态加载内容可能无法完整提取
- 尝试使用"选择区域保存"指定具体元素
- 检查浏览器下载权限
- 确认下载目录存在且有写入权限
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
feat: 新功能
fix: 修复 bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
test: 测试相关
chore: 构建/工具链相关
- WXT - 优秀的扩展开发框架
- Turndown - HTML 到 Markdown 转换
- webdav-client - WebDAV 客户端库
Made with ❤️ by 2ue