一日一技 | 我開發的這款小工具,輕鬆助你將飛書文檔轉為 Markdown
隨着少數派逐漸 All in 飛書,我們少數派作者們也逐漸遷移到飛書文檔進行寫稿。飛書文檔提供了 Web 平台的富文本編輯器,配合「少數派助手」這個服務,可以將稿件一鍵發佈到少數派平台,着實是非常方便。
不少的少數派作者都有自己的博客平台,而大部分的博客平台都是使用 Markdown 作為輸入從而生成 HTML 發佈到網絡中的。但是,飛書只支持 Markdown 語法的編輯,卻不支持導出為 Markdown 文件下載,這打斷了我們一直以來已經完善的發佈博客流程。
本文就提供一種將飛書文檔轉換為 Markdown 文件的方法,來彌補這個 Gap。
關聯閲讀:
現有的方法痛點
飛書支持的導出格式為 Word 和 PDF 兩種格式。如需編輯,我們就只能選擇 Word 格式,然後使用文檔格式轉換的瑞士軍刀 pandoc 從 Word 文檔轉換為 Markdown 文件。參考命令: pandoc test.docx -o test.md
。但是,如今這種方法已經不可靠了,如果嘗試將本文轉換,則會得到下圖的格式。
從圖中的效果可以看出,文檔中多了很多宂餘的換行,列表格式消失不見,圖片丟失等問題。究其原因,是因為導出的 Word 文檔沒有使用 Word 內建的富文本樣式,而全部使用的自定義樣式。至於圖片問題,轉換後的 Markdown 文檔中的圖片格式是 ![Generated](media/image1.png){width="5.90625in"height="2.8020833333333335in"}
雖然可以通過將 Word 文檔的 docx 後綴改為 zip,然後從壓縮包中整體提取 word/media 文件夾來修復圖片的問題。但其它的格式問題,依然是一個頭疼的問題。
另一方面,在沒有 pandoc 轉換工具的情況下,如果要獲得 Markdown 文件,我理解的最便捷的方法如下:
- 全文複製飛書文檔的富文本內容
- 全文粘貼到本地的 markdown 編輯器中
- (可選)逐個下載文檔中的圖片並替換 markdown 文件中的圖片
當完成第 2 步的時候,其實文檔看起來已經完整了,但是仔細觀察會發現文檔中的圖片是飛書的臨時鏈接,且只有 24 小時的有效時間。因此,為了有效地保留圖片,需要進行第 3 步手動下載圖片替換。當一篇文檔中的圖片非常多的時候,手動下載替換是一個非常枯燥的事情。
如果是使用圖牀的作者,可以在第 2 步的文檔後直接使用圖牀上傳工具(如:PicGo)進行圖片上傳快速替換,甚至 Typora 編輯器中就自帶了這個功能。但是,由於圖片鏈接是臨時鏈接,沒有文件後綴(.jpg/.png/.gif),當上傳到圖牀後也丟失了這個信息,雖然不影響圖牀的回傳,但是後面如果需要替換圖牀將會是一個災難。
使用 Feishu2Md 工具
在進行了大量的搜索後,我其實也沒有找到現有的轉換工具能夠轉換飛書文檔為 Markdown 文件下載的。但是,十分幸運,我碰巧找到了 chyroc 使用飛書的 Open API 實現的飛書文檔解析器 lark_docs_md 。因此,我決定基於這個庫開發一個下載工具,也就是小標題的 Feishu2Md 工具。
Feishu2Md 已開源併發布在 Github 中: http://github.com/Wsine/feishu2md
下載 feishu2md- 得益於 golang 本身的多平台編譯特性,我已經為 Windows/Linux/Mac 都預編譯了該工具的可執行文件,可以直接從 Github Release 中下載,從壓縮包中提取自己平台的 feishu2md 二進制可執行文件即可,建議放置在 PATH 路徑中。
生成配置文件- feishu2md 需要使用飛書的 Open API 提取飛書文檔,因此需要配置相應的 App ID 和 App Secret 進行 API 的調用。首先,進入飛書的 開發者後台 然後創建一個企業自建應用,信息可以任意填,發佈但不必等待審核通過。然後在創建的應用頁面中,找到「憑證與基礎信息」,即可找到 App ID 和 App Secret 信息。
執行 feishu2md --config
命令會生成該工具的配置文件。生成的配置文件路徑為:
%AppData%/feishu2md/config.json $XDG_CONFIG_HOME/feishu2md/config.json $XDG_CONFIG_HOME/feishu2md/config.json
如無配置 XDG_CONFIG_HOME
環境變量,則默認為 ~/.config
目錄
將 App ID 和 App Secret 填入配置文件 config.json 中的相應位置。另外,image_dir 配置項為存放文檔中圖片的文件夾名稱。
下載飛書文檔- 通過 feishu2md < 你的飛書文檔鏈接 & gt;
直接下載,文檔鏈接可以通過 分享 > 開啟鏈接分享 > 複製鏈接 獲得。
調用示例:
feishu2md http://oaztcemx3k.feishu.cn/docs/doccnrOvzeQ8BSnfsXj8jwJHC3c#
格式轉換可能會有一些細微的渲染差異,畢竟 markdown 本身的標準也有很多套,建議手動檢查一下。而最頭疼的圖片問題,該工具也已經幫忙整體處理好了。然後就可以愉快地用以前的工作流發佈博客了。
開發感言
由於 lark_docs_md 是使用 golang 實現的,因此這也是我首次使用 golang 進行開發。對於開發小工具,整體的開發體驗非常良好,而且還能編譯得到二進制以及享受多平台編譯的好處。工具可能還有一些不是很完善的地方,如有問題可以提 issue,我有時間會進行修復的。
最後,歡迎試用,歡迎 PR ~
> 下載少數派 2.0 客户端、關注 少數派公眾號,解鎖全新閲讀體驗 :newspaper:
> 實用、好用的正版軟件,少數派為你呈現 :rocket:
- Apple 與「聚光燈」下的開發者們:App Store 交出階段性成績單
- 無需 Root,一鍵分辨手機自帶系統應用用途或卸載:Universal Android Debloater
- 從盲目崇拜到理性使用,談談我眼中的「雙向鏈接」
- Figma 的核心概念:Frame
- 消費者的高端夢先碎:作為米粉我究竟期待過什麼?
- 一日一技 | 我開發的這款小工具,輕鬆助你將飛書文檔轉為 Markdown
- 閉關家中,我將監控攝像對準了自己
- #熱門話題的兩端藏着一段歷史#
- 派評 | 近期值得關注的 App
- 站在用户的角度,聊聊「旗艦芯片」給我們帶來的體驗改變
- 我是如何將舊設備的 Micro-USB 改為 Type-C 充電口的
- 科普 | 下載應用這件事,Play 商店為什麼比國內軟件商店更好?
- 一日一技 | 從原理出發,聊聊如何簡化二維碼
- 怎樣一鍵並列顯示雙語網頁
- 咖啡地圖 | 哥倫比亞的咖啡與宗教
- 譯文 | 無障礙字體指南:如何讓字體更為友好
- 新玩意 106|少數派的作者們最近買了啥?
- 舊酒換新杯,Linux 遊戲的春天
- App 1 | 國產小組件庫,為筆記嵌入可視化模塊:NotionPet
- 兩個月的居家隔離,我收穫了什麼