一个支持Windows、Mac、Linux系统的飞书文档一键导出服务,仅需一行命令即可将飞书知识库的全部文档同步到本地电脑。支持导出markdown
,docx
,pdf
三种格式。导出速度嘎嘎快,实测700多个文档导出只需25分钟,且程序是后台挂机运行,不影响正常工作。最新版本内容,请查看文章最后的更新日志
最近也是公司办公软件从飞书切换回了企业微信,自然就产生了一些文档要迁移的问题,由于文档量过多(大概有700多个),无论是从飞书手动下载为Word
或PDF
格式的文档,还是将内容复制到本地新建Markdown
文件都是一件极为繁琐的事情。于是便找到了两个GitHub上已有的飞书文档导出工具Feishu2MD
和feishu-backup
,但是他们都有一些问题不太满足我的需求。
feishu-backup:
官方地址:dicarne/feishu-backup: 用于备份飞书文档,可以将飞书文档转成markdown下载。 (github.com)
因为它是网页版,下载速度太慢。有一次使用线上版选择了其中一个飞书文档节点下的所有文档(大概200-300个),下载了1个多小时还没有好,可能是卡死了。
因为它的下载方式是把选择的全部文档打包成压缩包后才会在浏览器返回给你,如果这个等待的过程中途断网或者电脑卡顿要重启,那你就白等那么长时间了。
因为它不支持下载表格类型的文档。
feishu2md:
官方地址:Wsine/feishu2md: 一键命令下载飞书文档为 Markdown (github.com)
我虽然没用实际使用过它,但我阅读它的官方文档后发现它的核心问题是一次只能下载一个文档。
docx
和xlsx
即可基于以上的种种原因呢,我决定自己动手写一个满足自己需求的程序来解决这个问题。这里我使用的是支持跨平台的.net core进行开发,最终打包程序可支持在windows
、linux
、mac
系统上运行。这里将不赘述具体的实现过程,直接展示最终的效果图吧。
App ID
和 App Secret
下载地址:(Releases)feishu-doc-export,请选择最新版本下载
windows-x64系统,下载feishu-doc-export-win-x64.zip
mac-osx-x64系统,下载feishu-doc-export-mac-osx-x64.zip
linux-x64系统,下载feishu-doc-export-linux-x64.zip
下载并解压即可得到程序可执行文件,windows环境的可执行文件为feishu-doc-export.exe
,linux
和mac
环境的可执行文件为feishu-doc-export
没有后缀。
在可执行文件的目录打开终端,命令行所有参数如下:
请填写以下所有参数:
--appId 飞书自建应用的AppId.【必填项】
--appSecret 飞书自建应用的AppSecret.【必填项】
--exportPath 文档导出的目录位置.【必填项】
--spaceId 飞书导出的知识库Id(可为空,或者不传此参数).
--type 知识库(wiki)或个人空间云文档(cloudDoc)(可选值:cloudDoc、wiki,为空则默认为wiki).
--saveType 文档导出的文件类型(可选值:docx、md、pdf,为空或其他非可选值则默认为docx).
--folderToken 当type为个人空间云文档时,该项必填.
win环境
# 指定知识库导出
./feishu-doc-export.exe --appId=111111 --appSecret=2222222 --spaceId=333333 --exportPath=E:\temp\test
# 不指定知识库导出
./feishu-doc-export.exe --appId=111111 --appSecret=222222 --exportPath=E:\temp\test
# win 不指定知识库 将文档保存为markdown文档
./feishu-doc-export.exe --appId=xxx --appSecret=xxx --saveType=md --exportPath=E:\temp\test
# win 导出个人空间文档 将文档保存为markdown文档
./feishu-doc-export.exe --appId=xxx --appSecret=xxx --saveType=md --exportPath=E:\temp\test --type=cloudDoc --folderToken=xxx
Linux环境和mac环境
注意!!!首次使用时需要将文件授权为可执行文件
# 将文件授权为可执行文件
sudo chmod +x ./feishu-doc-export
执行时最好使用sudo
,否则可能出现权限不足,导致在保存文档时无法创建文件目录
# 执行不指定知识库的导出
sudo ./feishu-doc-export --appId=111111 --appSecret=222222 --exportPath=/home/ubuntu/feishu-document
执行效果图如下:
第一步,(win,mac)双击运行程序,输入飞书自建应用的配置,并输入文档要导出的目录位置。
mac
和linux
仍需执行命令sudo chmod +x ./feishu-doc-export
来将文件设置为可执行文件。
mac
可能会出现不受信任的执行程序,需要手动覆盖“隐私与安全性”设置中的设置。linux
则只能通过命令行输入.\feishu-doc-export
而不带参数的方式执行
第二步,选择知识库后自动导出
第三步,对比飞书原文档的目录结构
操作步骤请参考更新日志feishu-doc-export-v 0.0.4
700多个文件导出到本地总耗时25分钟
这个版本新增了两种格式的导出,可支持将飞书文档导出为markdown
和pdf
,加上原有支持的docx
一共是三种格式。
新增了命令行参数--saveType
,文档保存的格式类型,可选值有md
,pdf
,docx
,如果参数不传,或值为空,或值为不存在的格式,则默认导出为docx
。使用方式如下:
# win 不指定知识库 将文档保存为markdown文档
./feishu-doc-export.exe --appId=xxx --appSecret=xxx --saveType=md --exportPath=E:\temp\test
# mac 不指定知识库 将文档保存为pdf
sudo ./feishu-doc-export --appId=xxx --appSecret=xxx --exportPath=/home/feishu-document --saveType=pdf
# linux 不指定知识库 将文档保存为docx
sudo ./feishu-doc-export --appId=xxx --appSecret=xxx --exportPath=/home/feishu-document
sudo ./feishu-doc-export --appId=xxx --appSecret=xxx --exportPath=/home/feishu-document --saveType=
sudo ./feishu-doc-export --appId=xxx --appSecret=xxx --exportPath=/home/feishu-document --saveType=docx
sudo ./feishu-doc-export --appId=xxx --appSecret=xxx --exportPath=/home/feishu-document --saveType=abcdefg
耗时测试
docx
最快markdown
和docx
的速度差不多pdf
速度最慢,因为pdf
的图片是内嵌的注意事项:
文档导出为markdown
时,存在文档格式丢失的问题,原因是因为我的实现方式是利用飞书自提供的接口先将文档下载为docx
,然后再将docx
转为markdown
,文档下载为docx
后就已经存在格式丢失的问题了,所以不能很好的转换为markdown
。而上面提到的两个开源库都是自己做的处理,它们都是直接将飞书原始数据转换为markdown
语法的。feishu-backup
是作者自己对飞书原始数据做的转换(牛逼),feishu2md
则是用了一个针对飞书数据转换的库。
feishu-doc-export
目前已发现docx
转为markdown
丢失的格式有:引用语法、表格、行内代码块
对于飞书文档中引用的其他文档,如果引用的文档是当前知识库的文档,则该文档下载到本地后会以相对路径引用另一个文档,因为另一个文档也会下载到本地。
如果引用的文档是其他知识库或者是外链,则当前文档下载后还是以原文方式引用。
导出的效果图展示,由于图片大小原因请移步效果图查看链接
支持导出知识库内的文件类型文档,如:pdf、image等。
支持个人空间云文档导出(需要指定文件夹的Token)
优化了程序异常处理,保证下载尽可能不中断
新增了命令行参数--type
和--folderToken
,选择导出知识库或个人空间云文档,可选值:cloudDoc
、wiki
,为空则默认为wiki
。当type=cloudDoc
时,需要填写--folderToken
参数,type=wiki
或空,则不需要填写。使用方式如下:
# win 导出个人空间文档 将文档保存为markdown文档
./feishu-doc-export.exe --appId=xxx --appSecret=xxx --saveType=md --exportPath=E:\temp\test --type=cloudDoc --folderToken=xxx
如何导出个人空间的文档
folderToken
:执行命令:
为什么不支持列举文件夹列表?
因为飞书对于个人空间做了登录限制,未登录情况下个人空间相关的部分API
无法直接调用。而要支持登录,飞书只提供了网页端和小程序的接入方案,因此该项目不支持。