| name | yuque-downloader |
| description | 下载语雀(yuque.com)知识库到本地。用于把语雀上的公开文档批量拉取为 Markdown 文件,保留目录结构、代码块、图片等。适用于文档备份、离线阅读、迁移到其他平台等场景。用户提到"语雀"、"yuque"、"下载文档"、"备份知识库"、"拉取教程"等关键词时使用这个 skill。 |
语雀知识库下载器
用 Puppeteer 无头浏览器获取语雀会话,调用其内部 API 批量下载文档,将 Lake Editor 格式转换为 Markdown。
依赖
- Node.js(建议 v18+)
- Puppeteer(
npm install puppeteer)
Puppeteer 自带捆绑的 Chromium,无需额外安装浏览器。
使用方式
运行捆绑的通用脚本,传入语雀知识库 URL 和输出目录:
node scripts/scrape_yuque.js <语雀知识库URL> [输出目录]
示例:
node scripts/scrape_yuque.js https://www.yuque.com/xtdrone/manual_cn
node scripts/scrape_yuque.js https://www.yuque.com/xtdrone/manual_cn ~/docs/xtdrone
执行流程
脚本会自动完成以下步骤:
- 启动无头 Chromium,访问知识库首页获取匿名会话 Cookie
- 从页面 HTML 中提取
book_id
- 调用
GET /api/docs?book_id={id} 获取完整文档列表
- 逐个调用
GET /api/docs/{slug}?book_id={id} 获取每篇文档的 Lake 格式内容
- 将 Lake Editor HTML 转换为 Markdown(处理标题、列表、链接、代码块、图片、附件、视频等)
- 同步下载文档中的图片到
images/ 子目录
- 生成
README.md 作为索引导航
输出结构
<输出目录>/
├── README.md # 索引导航(包含所有文档标题和链接)
├── <slug-1>.md # 文档 1
├── <slug-2>.md # 文档 2
├── ...
└── images/ # 图片附件
技术要点
- 无需登录:语雀对公开知识库允许匿名访问,脚本使用页面首次访问时 Set-Cookie 返回的
yuque_ctoken 作为会话凭证
- book_id 发现:页面 HTML 中包含
book_id,脚本通过正则提取
- Lake 格式转换:语雀使用自研的 Lake Editor 格式(HTML-like 结构),
<card> 标签承载代码块、图片、附件等富媒体内容,脚本对其进行解码和 Markdown 转换
- 限速:每 5 篇文档暂停 1 秒,避免触发反爬
其他方式
如果只需要一次性导出,语雀网页端自带导出功能(知识库首页 → 导出 → Markdown/PDF),无需使用本脚本。本 skill 适用于需要自动化、批量处理的场景。