描述
版本1
评分0
权限说明
用于从 VitePress/VuePress 文档站点批量下载 Markdown 源文件的用户脚本
核心功能
| 功能 | 说明 |
|---|---|
| 站点检测 | 自动识别 VitePress / VuePress 静态文档站点 |
| 页面提取 | 从侧边栏 (.VPSidebar / .vp-sidebar) 递归提取所有文档链接 |
| 智能标题 | 从 Markdown 的 # 标题 或 frontmatter 的 title 字段提取 |
| .md 源文件抓取 | 通过 iframe 同源代理直接获取原始 Markdown 文件 |
| 文件夹结构保留 | 按侧边栏层级创建子文件夹,保持文档组织结构 |
| 批量下载 | 使用 GM_download API 逐个保存文件 |
| 进度显示 | 实时显示下载进度、成功/失败数量、耗时统计 |
技术特点
| 特点 | 实现方式 |
|---|---|
| 绕过 CSP | iframe 同源代理,无需 GM_xmlhttpRequest 权限 |
| 请求限流 | 150ms 间隔 + 重试机制(3次重试,1秒间隔) |
| 文件命名 | 自动处理非法字符,同一文件夹下文件名冲突自动添加序号 |
| 错误隔离 | 单个文档失败不影响其他文档下载 |
| SPA 支持 | MutationObserver + popstate 监听路由变化,自动重新检测 |
| 非侵入式 | 仅在检测到 VitePress/VuePress 时显示按钮 |
工作流程
1. 页面加载 → 检测站点类型
2. 解析侧边栏 → 提取所有文档 URL 和层级结构
3. 显示下载按钮(右下角,显示文档数量)
4. 点击按钮 → 创建文件夹 → 逐个下载 .md 文件
5. 实时显示进度 → 完成后显示统计信息
依赖要求
| 依赖 | 用途 |
|---|---|
GM_download |
文件保存(脚本猫/Tampermonkey 提供) |
| 无外部库 | 原生 JavaScript 实现 |
输出结果
{站点名}_docs/
├── .keep
├── 文件夹1/
│ ├── 文档1.md
│ └── 文档2.md
└── 文件夹2/
└── 文档3.md
适用站点
- ✅ VitePress 文档站点
- ✅ VuePress (Theme Hope) 文档站点
- ❌ 非静态文档站点(不显示按钮)
当前限制
- 仅支持侧边栏结构标准的站点
- 需要
.md源文件可直接访问(有些站点会重定向或需要认证) - 依赖用户脚本管理器的
GM_downloadAPI