yuque-exporter:3步实现语雀文档数据迁移与Markdown导出
一、工具概述
yuque-exporter是一款开源的语雀文档批量导出工具,专为需要将语雀知识库迁移到本地的用户设计。该工具能够将语雀文档完整转换为Markdown格式,并保持原有的目录结构,同时自动处理图片链接转换、内部链接调整和HTML标签清理等关键问题。适用于个人知识库迁移、团队文档备份以及多平台内容发布等场景,帮助用户实现知识资产的自主管理与跨平台流动。
二、准备工作
🔧 环境配置
在使用yuque-exporter前,需确保系统已安装以下依赖环境:
| 依赖项 | 版本要求 | 检查命令 |
|---|---|---|
| Node.js | v14.0.0+ | node -v |
| npm | v6.0.0+ | npm -v |
| Git | 任意版本 | git --version |
若未安装上述工具,请先通过官方渠道获取并安装。
🔑 获取API令牌
- 登录语雀账号,进入个人设置 → API令牌页面
- 点击"创建令牌",设置令牌名称和权限范围
- 生成后立即复制并保存令牌(关闭页面后无法再次查看)
📦 安装工具
通过以下命令获取并安装yuque-exporter:
# 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/yuqu/yuque-exporter
# 进入项目目录
cd yuque-exporter
# 安装依赖包
npm install
三、核心功能
📥 基础导出功能
功能描述:通过命令行快速导出语雀文档,支持全量或增量导出
操作命令:
# 使用环境变量方式(推荐)
YUQUE_TOKEN=<您的令牌> npm start
# 或使用命令行参数方式
npx yuque-exporter --token=<您的令牌>
效果说明:
- 导出文件默认存放在项目根目录的
output文件夹 - 文档按原知识库结构自动创建目录层级
- 已导出文件会被标记,再次运行时自动跳过
📷 媒体资源处理
功能描述:自动下载文档中的图片资源并转换为本地引用
效果说明:
- 图片自动保存至
output/assets目录 - Markdown中的图片链接自动替换为相对路径
- 支持常见图片格式(jpg、png、gif等)
🔗 链接转换
功能描述:将语雀内部链接转换为本地相对路径
效果说明:
- 文档间引用自动调整为Markdown相对路径格式
- 锚点链接保持原功能不变
- 外部链接保持原始URL
四、高级应用
⚙️ 配置自定义
功能描述:通过修改配置文件调整导出行为
配置文件路径:src/config.ts
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| outputDir | string | './output' | 导出文件存放目录 |
| concurrency | number | 5 | 并发请求数量 |
| timeout | number | 30000 | 请求超时时间(毫秒) |
| retry | number | 3 | 请求失败重试次数 |
🤖 自动化脚本示例
功能描述:通过脚本实现定期自动备份
创建auto-export.sh文件:
#!/bin/bash
# 语雀文档自动导出脚本
# 配置参数
TOKEN="your_api_token_here"
EXPORT_PATH="/path/to/backup/directory"
LOG_FILE="$EXPORT_PATH/export.log"
# 创建目录
mkdir -p $EXPORT_PATH
# 执行导出
cd /path/to/yuque-exporter
YUQUE_TOKEN=$TOKEN OUTPUT_DIR=$EXPORT_PATH npm start >> $LOG_FILE 2>&1
# 保留最近30天备份
find $EXPORT_PATH -type f -mtime +30 -delete
添加执行权限并设置定时任务:
# 添加执行权限
chmod +x auto-export.sh
# 设置每日凌晨执行
crontab -e
# 添加以下行
0 0 * * * /path/to/auto-export.sh
五、对比同类工具
| 特性 | yuque-exporter | 语雀官方导出 | 其他第三方工具 |
|---|---|---|---|
| 批量导出 | ✅ 支持 | ❌ 不支持 | 部分支持 |
| 目录结构保留 | ✅ 完整保留 | ❌ 不支持 | 基本支持 |
| 图片本地化 | ✅ 自动下载 | ❌ 仅链接 | 部分支持 |
| 增量导出 | ✅ 支持 | ❌ 不支持 | 大多不支持 |
| API令牌认证 | ✅ 支持 | ❌ 需手动操作 | 部分支持 |
| 开源免费 | ✅ 完全开源 | ✅ 免费但功能有限 | 部分收费 |
六、常见问题
❓ 导出过程中断如何处理?
解决方案:直接重新执行导出命令,工具会自动跳过已完成的文件,继续未完成的任务。
❓ 遇到API调用限制怎么办?
解决方案:语雀API限制为5000次/小时,可通过修改src/config.ts中的concurrency参数降低并发数,或等待一小时后再试。
❓ 中文显示乱码如何解决?
解决方案:确保系统环境编码为UTF-8,可在终端执行以下命令:
export LANG=en_US.UTF-8
七、扩展开发指南
🛠️ 核心模块说明
yuque-exporter采用模块化设计,主要功能模块包括:
- 文档爬取:
src/lib/crawler.ts- 负责从语雀API获取文档数据 - 内容处理:
src/lib/doc.ts- 处理文档内容转换与清洗 - 目录构建:
src/lib/tree.ts- 生成本地目录结构 - 工具函数:
src/lib/utils.ts- 提供通用辅助功能
🚀 功能扩展建议
- 多账号支持:修改
src/lib/sdk.ts中的SDK类,添加多账号管理逻辑 - 自定义格式转换:扩展
src/lib/builder.ts,添加新的输出格式支持 - UI界面:基于现有核心功能,使用Electron或React构建图形界面
🤝 贡献代码
- Fork项目仓库
- 创建特性分支:
git checkout -b feature/amazing-feature - 提交修改:
git commit -m 'Add some amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 提交Pull Request
八、总结
yuque-exporter提供了一种可靠、高效的语雀文档迁移解决方案,通过简单的命令即可实现知识库的完整导出。其模块化设计不仅保证了工具的稳定性和可维护性,也为用户提供了扩展定制的可能性。无论是个人用户还是团队,都能通过该工具实现知识资产的自主管理,摆脱平台限制,实现数据的自由流动。
通过本文介绍的方法,您可以快速掌握工具的使用技巧,并根据实际需求进行定制化配置。如有任何问题或建议,欢迎参与项目贡献或提交issue反馈。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0121- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
SenseNova-U1-8B-MoT-SFTenseNova U1 是一系列全新的原生多模态模型,它在单一架构内实现了多模态理解、推理与生成的统一。 这标志着多模态AI领域的根本性范式转变:从模态集成迈向真正的模态统一。SenseNova U1模型不再依赖适配器进行模态间转换,而是以原生方式在语言和视觉之间进行思考与行动。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00