docmd 實測:一行指令把 Markdown 資料夾變成文件網站

在本機實測開源文件網站產生器 docmd:兩個 Markdown 檔案、一行指令、569 毫秒生成完整靜態網站,輸出自動附上 llms.txt 與 OKF 等 AI 可讀產物。本文拆解官方 18kb JS 宣稱與實測載入口徑的差異,整理 npm 套件改名與 0.9.x 系列 AI 助手轉向,評估它適合誰、採用前該注意什麼。

用 AI 摘要這篇文章:

兩個 Markdown 檔案,一行指令,569 毫秒之後它們變成一個完整的靜態網站:有首頁、有 404 頁、有離線搜尋索引,還有一份專門寫給 AI 語言模型讀的 llms.txt。這是 2026 年 8 月在本機實際跑 docmd 0.9.2 的結果,從頭到尾沒有寫過任何設定檔。

docmd 是一個開源的說明文件網站產生器,做的事情不複雜:你把 Markdown 檔案放進資料夾,它輸出一個可以直接丟上 GitHub Pages 或任何靜態主機的網站。不過在 2026 年選它之前,有兩件事值得先知道:專案在上半年換了 npm 套件名稱、搬了 GitHub 組織,網路上舊教學的安裝指令已經悄悄失效;而它的開發重心明顯轉向 AI,你拿到的輸出裡,AI 相關的東西是預設就有的。這篇以實測輸出為主軸,把這兩件事攤開來看。

一行指令的實測:零設定這件事是真的

測試方式刻意壓到最低限度:開一個空資料夾,放兩個 Markdown 檔案進去,一個當首頁、一個當指南頁,然後執行官方文件上的那行指令 npx @docmd/core build。沒有設定檔、沒有 frontmatter、沒有安裝任何東西到全域。

它在 569 毫秒後完成,產出兩個頁面。過程中它自動把 docs/ 資料夾認成來源、把輸出寫進 site/,並且印出一段清楚的建置報告。有一個細節值得肯定:因為測試資料夾沒有設定網址,它直接跳過 sitemap 的生成並明確告知原因,把缺的資訊講明白,省下一個網址欄位空著的壞檔案。工具在缺資訊時選擇明說,這個行為比硬撐著什麼都生成要可靠。

開發模式也照同樣的邏輯跑:把指令換成 npx @docmd/core dev,它會在本機 3000 port 起一個預覽伺服器,終端印出 Zero-Config mode activated 之後就進入監看狀態(官方設計為存檔即重新建置)。實測從下指令到瀏覽器打開 http://localhost:3000 看到 200 回應,整段不到半分鐘。

官方對 Node.js 的版本要求是 18 以上,實測在 Node 26 上跑通。以一個平常就已經在寫 Markdown 的專案來說,試用門檻差不多就是打一行指令的功夫。附帶一提,如果你的需求只是在本機看 Markdown 檔案,還不需要生成網站,先前介紹過的 Markdown 檢視工具會是更輕的選擇;反過來想把 Markdown 內容直接輸出成圖片,也有對應的轉圖工具可以搭配。

docmd 官方網站首頁,標示 Markdown to production docs、零配置與 Lighthouse 100 標章Pin
docmd.io 官方網站首頁,主打一行指令把 Markdown 變成正式文件網站

命令列就十一個動詞,從建站到搬遷都包了

docmd 的命令列介面刻意收在一個手掌數得完的範圍:dev 起本機預覽、build 出正式版、init 生設定檔、stop 關服務、doctor 做部署前健康檢查、validate 掃內部連結、deploy 產出 Docker 與 Nginx、Caddy 的設定檔、live 開瀏覽器版的所見即所得編輯器、migrate 從別家框架搬遷既有專案,另外還有 mcpadd

幾個值得單獨點出的:migrate 支援從 Docusaurus、VitePress、MkDocs、Starlight 直接搬過來,對卡在舊框架的專案是條退路,不過搬遷的完整度屬於官方描述,沒有實際搬一個專案驗證。docmd live 對應的線上版編輯器開在 live.docmd.io,免裝任何東西就能在瀏覽器裡試,站點實測正常運作。doctorvalidate 這種部署前檢查放進主命令,看得出它是照著「文件站要上線」的完整生命週期在設計,而不只做生成那一步。

攤開輸出資料夾:網站只是其中一部分

建置完成的 site/ 資料夾,內容比「一個網站」這四個字所暗示的多出不少。

網站本體是 index.htmlguide/index.html 這些靜態頁面,加上主題 CSS、深淺模式樣式與搜尋索引 _docmd-search/search-index.json。主題這次看到三組:ruby、sky、retro,配上深淺兩套語法突顯樣式。到這裡都還是靜態網站產生器的正常範圍。真正值得注意的是剩下的部分:llms.txtllms-full.txtllms.json,以及一整個 okf/ 資料夾。

llms.txt 是近兩年逐漸普及的慣例,用途是讓 AI 模型在讀你的網站時,能先拿到一份結構化的內容索引。實測輸出的 llms.txt 裡,兩個測試頁面的標題被整理成一條條連結,等於文件的地圖。llms-full.txt 則是完整內容版,llms.json 是同一份索引的機器友好版。至於 okf/ 是 docmd 自家的 Open Knowledge Format,一種把多語系知識打包給 AI 系統讀的格式,資料夾裡除了 okf.yaml 與按頁拆開的 concepts 檔案,還附了一份 lint-report.txt 替輸出品質自我檢查。

輸出資料夾裡另外兩個小東西也順手記一下:.nojekyll 是給 GitHub Pages 用的,告訴它別用 Jekyll 再跑一輪建置;robots.txt 則是 SEO 基本配備。這些零碎檔案單獨看都不起眼,合起來代表一件事:它假設你建完就是要部署、要被搜尋引擎與 AI 爬蟲讀,部署端與讀取端的細節都先鋪好了。

也就是說,AI 可讀的產物在 docmd 是預設行為,不是你另外開啟的功能。這對打算把文件同時當成 AI 檢索來源的團隊是直接的好處,對只想要一個乾淨網站的人,則是多出一些用不到的檔案,放著無妨,但你需要知道它們在那裡。

官方說的 18kb JS,跟實測數字怎麼對

docmd 官網標榜約 18kb 的 JavaScript 體積與 Lighthouse 滿分,README 的對照表同樣標約 18 kb,這兩個數字是官方宣稱,這次實測沒有跑 Lighthouse,不予置評。但 JS 體積可以直接從輸出量。

量出來的結果分成兩層。導覽核心 docmd-main.js 是 22.7KB,壓縮之後 6.6KB,官方說的輕量就這個口徑而言成立,頁面換頁的體驗靠它,數字確實漂亮。

不過打開生成的 HTML 看 script 標籤,每個頁面預設載入的 JS 一共有六個檔案:除了核心,還有搜尋介面、離線搜尋引擎 vendor/minisearch.js 86.3KB、git 資訊、圖片燈箱,以及 AI 助手前端 docmd-ai.js 79.7KB,合計約 215KB(未壓縮)。換句話說,「18kb」說的是導覽核心,不含搜尋與 AI。實際部署時伺服器開 gzip 會壓掉一大截,但 AI 前端與搜尋引擎確實是每頁都會載的。

拆開看的用意是給你一把自己的尺:拿 Chrome 開發者工具的 Coverage 面板量一輪,或者部署後跑一次 PageSpeed Insights,自己量出來的數字說服力遠高於行銷頁。照這個方法,你很快能判斷這 215KB 裡有多少是你用得到的功能,多少是你其實想關掉的部分。

這不算作弊,卻是值得攤開來看的宣稱:如果你要的是一個幾乎不載入 JS 的純文件站,預設輸出的載入量比行銷數字大得多;如果離線搜尋與 AI 問答本來就在你的需求清單上,那這些體積換來的是現成功能。兩種讀法都對,差別在你知道自己要哪一種。

改名這半年:舊教學的安裝指令正在失效

docmd 原本以 @mgks/docmd 這個名稱發布在 npm,作者簽名是 mgks。2026 年 2 月起,官方套件改名為 @docmd/core,npm 上舊套件的描述欄現在直接寫著「Discontinued from 0.8.x, use @docmd/core instead」,翻譯過來就是舊名稱停止維護,請改用新套件。兩個名稱目前都還有安裝量,以 2026 年 8 月初那一週的數字看,@docmd/core 約 7,900 次、舊名稱約 590 次,新的安裝路徑已經是主流。

GitHub 那邊同步發生了搬遷:儲存庫從個人帳號移到 docmd-io 組織,舊網址會自動轉址,授權維持 MIT,LICENSE 檔案本文可以直接核對。官方網站也從 docmd.mgks.dev 換成 docmd.io,舊網址同樣以轉址收尾。

對新使用者來說這些只是冷知識,對照著舊教學操作的人才是受害者:文件裡寫 npm install -g @mgks/docmd 的段落,裝到的是停止維護的套件。掃到舊資料時認這個記號就夠:套件認 @docmd/core,指令認 npx @docmd/core dev,儲存庫認 docmd-io/docmd。想在一堆 GitHub 專案裡找相似專案互相印證的人,也可以交給GitHub 相似儲存庫推薦工具代勞。

docmd 的 GitHub 儲存庫頁面,顯示專案描述、星數與 MIT 授權標章Pin
docmd 的 GitHub 儲存庫已從個人帳號遷移至 docmd-io 組織

一週三個版本:重心已經壓在 AI 助手上

看 2026 年 8 月的發布紀錄,節奏相當密集:8 月 4 日 0.9.0、8 月 10 日 0.9.1、8 月 11 日 0.9.2,一週內三個正式版。三個版本裡有兩個直接押在 AI 助手上。

0.9.0 把稱為 docmd Assistant 的 AI 問答直接內建進文件站,設計上走 BYOK(自帶金鑰):OpenAI、Anthropic、Gemini、DeepSeek、Ollama 這些供應商都列在支援清單,金鑰是你自己的。對於沒有後端的純靜態文件站,官方另提供 Cloud Relay 服務,讓 AI 問答的後端由它代管,這部分的服務細節屬於官方描述,實測沒有開金鑰實際對話,體驗如何無法替你保證。0.9.1 與 0.9.2 則集中在容器語法標準化、Mermaid 圖表,以及 AI 助手在多輪對話與串流環境下的可靠度。

除了助理,它還提供 docmd mcp 把文件變成 MCP 伺服器,讓 coding agent 之類的工具直接搜尋與讀取你的文件,另外有 Agent Skills 與前面提到的 llms.txt、OKF 輸出。把這些放在一起看,方向相當清楚:docmd 正在把自己從「文件網站產生器」重新定位成「給人讀也給 AI agent 讀的文件平台」。文件除了是給人看的頁面,同時是機器可檢索的資料來源,這個趨勢不是 docmd 獨有,它只是把這組能力直接放進了預設輸出。如果你對 AI 生成開發文件這個方向有興趣,AI 開發計畫書生成工具的作法可以對照著看,一個把 AI 放在生成端,一個放在讀取端。

多語系是它另一個下了功夫的角落。官方展示的建置輸出能同時處理七種語系(英、印地、中、西、德、日、法),每個語系各自有搜尋索引與 llms 檔案;官方網站自己的中文版開在 docmd.io/zh/,實測連得上,中文版正常渲染。技術文件的讀者經常跨語言,這塊的完整度會直接影響跨國專案能不能用。

跟 Docusaurus 那批老牌工具比起來

文件網站這個品類其實一點都不缺選擇:Docusaurus 背後是 React、MkDocs 走 Python、VitePress 綁 Vue,都經過大量專案的長期驗證。docmd 的差異化主張是零設定與不綁框架:不用先學一套設定檔結構,不用挑框架,輸出是 plain HTML 加少量 vanilla JS。

官方網站上有一張與 Docusaurus、MkDocs、VitePress、Mintlify 的對照表,涵蓋設定需求、JS 體積、搜尋、AI 支援等欄位。要提醒的是,這張表是官方自己做的比較,對己有利的欄位難免選得巧,這次實測也沒有對其他工具做對稱的重新量測,所以把它當認識定位的地圖即可,別當判決書。

定位上的實際差異可以這樣總結:臨時要把一個 Markdown 資料夾變成網站、之後也不想深度客製,docmd 的起步成本是目前遇到過最低的一檔;反之,專案已經有複雜的文件結構、需要版本切換與高度客製的版面,Docusaurus 那種願意讓你寫設定的工具仍然穩得多。

沒實測的三件事,與單人治理的路線風險

這篇的接觸範圍是本機建置與輸出量測,有幾件事刻意不裝懂:Lighthouse 分數沒有跑,AI 助手的回答品質沒有實際對話過,部署到 GitHub Pages 或 Vercel 的流程也沒有走完。官方提供的 GitHub Action 與 Docker image 文件看起來齊全,但齊全與順暢是兩回事。

治理面有一個觀察:專案目前由作者 mgks(Ghazi)主導,GitHub 上的贊助連結也仍指向個人帳號,作者資料上的公司欄位掛在 nokalabs 名下。單人主導的好處是方向轉得快,0.9 系列一週三版就是證明;代價是路線高度依賴個人判斷,AI 轉向如果不合你的胃口,回頭的餘地要自己評估。2,392 顆星與 MIT 授權讓它不算玩具,但與動輒數萬星的同類工具相比,社群縱深仍是它在成長的部位。

AI 前端預設載入這件事也值得單獨想一下:實測輸出的每個頁面都會載入 docmd-ai.js,就算你最後不啟用 AI 功能。能不能乾淨地關掉、關掉之後輸出瘦多少,這次沒有深究,在意載入量的人部署前值得先試。

整體判斷是:只想要快速、乾淨的文件網站,docmd 目前仍是好用的一方,零設定的實測體驗沒有打折;把它當 AI 文件平台的基礎來評估,方向讓人期待,但 AI 對話與雲端服務的實際表現還需要更多實戰紀錄。第一步很簡單,到你的 Markdown 資料夾裡執行 npx @docmd/core dev,本機預覽跑起來再決定要不要認真對待它。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 873

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...