zengen 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.zen/meta.json +27 -18
  2. package/.zen/src/ar-SA/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +36 -36
  3. package/.zen/src/ar-SA/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  4. package/.zen/src/da-DK/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +29 -29
  5. package/.zen/src/da-DK/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  6. package/.zen/src/de-DE/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +24 -24
  7. package/.zen/src/de-DE/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  8. package/.zen/src/en-US/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +27 -27
  9. package/.zen/src/en-US/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  10. package/.zen/src/es-ES/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +34 -34
  11. package/.zen/src/es-ES/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  12. package/.zen/src/es-MX/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +31 -31
  13. package/.zen/src/es-MX/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  14. package/.zen/src/fi-FI/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +30 -30
  15. package/.zen/src/fi-FI/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  16. package/.zen/src/fr-FR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +26 -26
  17. package/.zen/src/fr-FR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  18. package/.zen/src/hi-IN/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +29 -29
  19. package/.zen/src/hi-IN/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  20. package/.zen/src/id-ID/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +27 -27
  21. package/.zen/src/id-ID/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  22. package/.zen/src/it-IT/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +38 -38
  23. package/.zen/src/it-IT/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  24. package/.zen/src/ja-JP/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +27 -27
  25. package/.zen/src/ja-JP/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  26. package/.zen/src/ko-KR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +25 -25
  27. package/.zen/src/ko-KR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  28. package/.zen/src/nl-NL/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +31 -31
  29. package/.zen/src/nl-NL/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  30. package/.zen/src/no-NO/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +32 -32
  31. package/.zen/src/no-NO/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  32. package/.zen/src/pl-PL/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +27 -27
  33. package/.zen/src/pl-PL/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  34. package/.zen/src/pt-BR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +34 -34
  35. package/.zen/src/pt-BR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  36. package/.zen/src/pt-PT/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +28 -28
  37. package/.zen/src/pt-PT/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  38. package/.zen/src/ru-RU/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +37 -37
  39. package/.zen/src/ru-RU/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  40. package/.zen/src/sv-SE/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +29 -29
  41. package/.zen/src/sv-SE/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  42. package/.zen/src/th-TH/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +30 -30
  43. package/.zen/src/th-TH/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  44. package/.zen/src/tr-TR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +31 -31
  45. package/.zen/src/tr-TR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  46. package/.zen/src/uk-UA/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +30 -30
  47. package/.zen/src/uk-UA/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  48. package/.zen/src/vi-VN/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +24 -24
  49. package/.zen/src/vi-VN/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
  50. package/.zen/src/zh-Hans/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +14 -11
  51. package/.zen/src/zh-Hans/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +31 -0
  52. package/.zen/src/zh-Hant/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +18 -15
  53. package/.zen/src/zh-Hant/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +31 -0
  54. package/assets/templates/default/layout.html +8 -5
  55. package/dist/ai/extractMetadataFromMarkdown.js +3 -3
  56. package/dist/ai/extractMetadataFromMarkdown.js.map +1 -1
  57. package/dist/process/scanSourceFiles.d.ts.map +1 -1
  58. package/dist/process/scanSourceFiles.js +6 -0
  59. package/dist/process/scanSourceFiles.js.map +1 -1
  60. package/dist/process/template.js +8 -6
  61. package/dist/process/template.js.map +1 -1
  62. package/dist/utils/frontmatter.js +1 -1
  63. package/dist/utils/frontmatter.js.map +1 -1
  64. package/docs/tricks.md +15 -0
  65. package/package.json +1 -1
  66. package/src/ai/extractMetadataFromMarkdown.ts +3 -3
  67. package/src/process/scanSourceFiles.ts +8 -0
  68. package/src/process/template.ts +10 -10
  69. package/src/utils/frontmatter.ts +1 -1
  70. package/.github/workflows/version.yml +0 -88
  71. package/.zen/src/de-DE/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  72. package/.zen/src/de-DE/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  73. package/.zen/src/en-US/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +0 -120
  74. package/.zen/src/en-US/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  75. package/.zen/src/en-US/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +0 -75
  76. package/.zen/src/en-US/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +0 -189
  77. package/.zen/src/en-US/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  78. package/.zen/src/en-US/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +0 -53
  79. package/.zen/src/en-US/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +0 -11
  80. package/.zen/src/en-US/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +0 -61
  81. package/.zen/src/en-US/afbf4998656c97181d0edc711e388ad11e0f08f5c6f329861327202462a3a34a.md +0 -63
  82. package/.zen/src/en-US/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +0 -40
  83. package/.zen/src/en-US/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +0 -65
  84. package/.zen/src/es-ES/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  85. package/.zen/src/es-ES/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  86. package/.zen/src/fr-FR/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  87. package/.zen/src/fr-FR/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  88. package/.zen/src/ja-JP/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -71
  89. package/.zen/src/ja-JP/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  90. package/.zen/src/ko-KR/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  91. package/.zen/src/pt-PT/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  92. package/.zen/src/pt-PT/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  93. package/.zen/src/ru-RU/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  94. package/.zen/src/ru-RU/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  95. package/.zen/src/zh-Hans/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +0 -120
  96. package/.zen/src/zh-Hans/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  97. package/.zen/src/zh-Hans/084ef1f6a0167df8621c673c79211309d4af6c588e7bbe3e043f7c244edd0ac6.md +0 -80
  98. package/.zen/src/zh-Hans/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +0 -77
  99. package/.zen/src/zh-Hans/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +0 -189
  100. package/.zen/src/zh-Hans/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  101. package/.zen/src/zh-Hans/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +0 -55
  102. package/.zen/src/zh-Hans/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +0 -11
  103. package/.zen/src/zh-Hans/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +0 -63
  104. package/.zen/src/zh-Hans/afbf4998656c97181d0edc711e388ad11e0f08f5c6f329861327202462a3a34a.md +0 -63
  105. package/.zen/src/zh-Hans/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +0 -40
  106. package/.zen/src/zh-Hans/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +0 -65
@@ -0,0 +1,31 @@
1
+ ---
2
+ 'title': 'ZEN文档日期声明使用技巧'
3
+ 'summary': '本文档介绍了ZEN工具中在正文中直接声明日期的使用技巧,与传统Markdown通过YAML
4
+ Frontmatter声明日期的方式对比,强调了ZEN的自动识别和智能处理功能,提升了用户体验,并适用于日记、博客等需要时间线的内容类型。'
5
+ 'tags':
6
+ - 'ZEN'
7
+ - '日期声明'
8
+ - 'Markdown'
9
+ - 'AI处理'
10
+ - '时间线'
11
+ - '用户体验'
12
+ - '文档管理'
13
+ 'inferred_date': '2026-01-08'
14
+ 'inferred_lang': 'zh-Hans'
15
+ ---
16
+
17
+ # 使用技巧
18
+
19
+ ## 在正文中声明日期
20
+
21
+ 正文中可以使用 "今天是 2026 年 1 月 8 日" 这样的日期声明(格式风格自由),ZEN 会自动识别并处理。
22
+
23
+ 传统 Markdown 文档是通过 YAML Frontmatter 声明日期,需要记住对应的字段,否则会导致日期无法正确识别。
24
+
25
+ ZEN 支持在正文中直接声明日期,避免了忘记填写 Frontmatter 字段的问题。
26
+
27
+ AI 会自动提取并推断正文中的日期信息,并将其作为文档的创建日期进行处理。
28
+
29
+ 这种方式更加灵活和智能,提升了用户体验。
30
+
31
+ 顺带一提,具有日期的文档,可以生成时间线视图,方便浏览和管理。特别适合日记、博客等需要时间线的内容类型。
@@ -1,15 +1,18 @@
1
1
  ---
2
- title: ZEN - 極簡主義 Markdown + AI 靜態網站建構器
3
- summary: ZEN 是一個結合 AI 的靜態網站生成器,支援智慧分類導航和自動增量翻譯,讓使用者專注於用母語寫作,簡化配置和建構過程。
4
- tags:
5
- - 靜態網站生成器
6
- - Markdown
7
- - AI
8
- - 多語言翻譯
9
- - 極簡主義
10
- - 文件工具
11
- - Node.js
12
- inferred_lang: zh-Hant
2
+ 'title': 'ZEN - 極簡主義 Markdown + AI 靜態網站建構器'
3
+ 'summary':
4
+ 'ZEN 是一個結合 AI 功能的靜態網站生成器,旨在簡化文件寫作和網站建構過程。它允許使用者專注於用母語編寫 Markdown
5
+ 內容,自動處理標題生成、分類導航和增量翻譯,支援多語言版本,無需複雜配置。工具基於 Node.js 和 OpenAI
6
+ API,透過命令列快速建構網站,適合追求高效和簡潔的寫作者。'
7
+ 'tags':
8
+ - '靜態網站生成器'
9
+ - 'Markdown'
10
+ - 'AI'
11
+ - '極簡主義'
12
+ - '多語言翻譯'
13
+ - 'Node.js'
14
+ - 'OpenAI'
15
+ 'inferred_lang': 'zh-Hans'
13
16
  ---
14
17
 
15
18
  # ZEN - 極簡主義 Markdown + AI 靜態網站建構器
@@ -20,7 +23,7 @@ inferred_lang: zh-Hant
20
23
 
21
24
  1. 📃 **靜態網站生成**:將任意一個包含 Markdown 的 git 資料夾建構成一個靜態 HTML 網站。
22
25
  2. 🧭 **智慧分類導航**:使用 AI 進行內容分析,生成網站地圖和導航,原始檔案的位置不敏感。
23
- 3. 🌍 **自動增量翻譯**:使用 AI 進行增量翻譯,讓使用者使用母語編寫 Markdown,但是使用者可以是多語言的。
26
+ 3. 🌍 **自動增量翻譯**:使用 AI 進行增量翻譯,讓使用者使用母語編寫 Markdown,但使用者可以是多語言的。
24
27
 
25
28
  為什麼又搞了個 Markdown 靜態網站生成器?我重新思考了 AI 時代下,文件工具可以如何更好地服務於寫作者:
26
29
 
@@ -28,11 +31,11 @@ inferred_lang: zh-Hant
28
31
 
29
32
  讓文件回歸本質,讓寫作回歸寧靜。
30
33
 
31
- 其一,我不想做圖書管理員。我有時想寫下一些內容,但我可能還沒有想好它的標題,還沒有形成特別的組織。我希望 LLM 會自動幫我生成標題、做摘要、分類、導航等整理工作。
34
+ 其一,我不想當圖書管理員。我有時想寫下一些內容,但我可能還沒想好它的標題,還沒有形成特別的組織。我希望 LLM 會自動幫我生成標題、做摘要、分類、導航等整理工作。
32
35
 
33
36
  其二,我的書房必須打掃乾淨。我不想要配置複雜的建構工具,折騰複雜的文件配置,不喜歡複雜的結構。每次我看到 Docusaurus、VuePress、Astro 這些工具的配置檔案和專案結構,我就頭疼。現在,ZEN 選擇將所有的配置都隱藏到 .zen 目錄下,掃到角落裡,使用者只需要專注於寫作內容,其他的交給 ZEN 來處理。其他的目錄都是您的寫作空間,您可以隨意組織您的 Markdown 檔案。
34
37
 
35
- - 回歸母語:用母語寫作,絲滑建構多語言版本
38
+ - 回歸母語:用母語寫作,流暢建構多語言版本
36
39
 
37
40
  人生苦短,我懶得翻譯。人在使用母語時,才是最能發揮自身思考深度的。但同時與世界保持連接又是必要的,我不想放棄多語言的交流。於是我希望有一個工具,能讓我用母語寫作,同時又能讓更多人看到我的內容。現在的 i18n 需要自己翻譯不說,還得自己維護內容更新,太麻煩了。我選擇使用 LLM 來幫我做翻譯,省下了我很多時間,並且可以一鍵完成多國語言翻譯。
38
41
 
@@ -57,7 +60,7 @@ export OPENAI_MODEL="gpt-3.5-turbo" # 可選,預設使用 gpt-3.5-turbo 模
57
60
  建構網站,支援多語言翻譯。使用當前目錄作為來源目錄,輸出到 `.zen/dist` 目錄。
58
61
 
59
62
  - 可以透過多次使用 `--lang` 參數指定需要生成的語言版本(例如 `--lang zh-Hans --lang en-US`)。
60
- - 可以透過 `--base-url` 參數指定網站的基礎 URL 前綴(例如 GitHub Pages 上的倉庫名)。
63
+ - 可以透過 `--base-url` 參數指定網站的基礎 URL 前綴(例如 GitHub Pages 上的儲存庫名稱)。
61
64
  - 不需要配置來源語言,ZEN 會自動偵測。
62
65
 
63
66
  ```bash
@@ -0,0 +1,31 @@
1
+ ---
2
+ 'title': 'ZEN文件日期聲明使用技巧'
3
+ 'summary': '本文檔介紹了ZEN工具中在正文中直接聲明日期的使用技巧,與傳統Markdown透過YAML
4
+ Frontmatter聲明日期的方式對比,強調了ZEN的自動識別和智能處理功能,提升了使用者體驗,並適用於日記、部落格等需要時間線的內容類型。'
5
+ 'tags':
6
+ - 'ZEN'
7
+ - '日期聲明'
8
+ - 'Markdown'
9
+ - 'AI處理'
10
+ - '時間線'
11
+ - '使用者體驗'
12
+ - '文件管理'
13
+ 'inferred_date': '2026-01-08'
14
+ 'inferred_lang': 'zh-Hans'
15
+ ---
16
+
17
+ # 使用技巧
18
+
19
+ ## 在正文中聲明日期
20
+
21
+ 正文中可以使用「今天是 2026 年 1 月 8 日」這樣的日期聲明(格式風格自由),ZEN 會自動識別並處理。
22
+
23
+ 傳統 Markdown 文件是透過 YAML Frontmatter 聲明日期,需要記住對應的欄位,否則會導致日期無法正確識別。
24
+
25
+ ZEN 支援在正文中直接聲明日期,避免了忘記填寫 Frontmatter 欄位的問題。
26
+
27
+ AI 會自動擷取並推斷正文中的日期資訊,並將其作為文件的建立日期進行處理。
28
+
29
+ 這種方式更加靈活和智能,提升了使用者體驗。
30
+
31
+ 順帶一提,具有日期的文件,可以生成時間線檢視,方便瀏覽和管理。特別適合日記、部落格等需要時間線的內容類型。
@@ -11,6 +11,10 @@
11
11
  box-sizing: border-box;
12
12
  }
13
13
 
14
+ html[lang='ar-SA'] {
15
+ direction: rtl;
16
+ }
17
+
14
18
  body {
15
19
  font-family:
16
20
  -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
@@ -18,6 +22,7 @@
18
22
  color: #333;
19
23
  background: #f8f9fa;
20
24
  display: flex;
25
+ align-items: stretch;
21
26
  min-height: 100vh;
22
27
  }
23
28
 
@@ -27,10 +32,8 @@
27
32
  border-right: 1px solid #e9ecef;
28
33
  padding: 2rem 1rem;
29
34
  overflow-y: auto;
30
- position: fixed;
31
- height: 100vh;
32
- left: 0;
33
- top: 0;
35
+
36
+ flex-shrink: 0;
34
37
  }
35
38
 
36
39
  .sidebar-header {
@@ -94,7 +97,7 @@
94
97
 
95
98
  .content {
96
99
  flex: 1;
97
- margin-left: 280px;
100
+ margin-inline-start: 80px;
98
101
  padding: 3rem 4rem;
99
102
  max-width: 900px;
100
103
  }
@@ -36,7 +36,7 @@ async function extractMetadataFromMarkdown(content) {
36
36
  */
37
37
  function buildMetadataPrompt(content) {
38
38
  // 限制内容长度以避免 token 超限
39
- const maxContentLength = 8000;
39
+ const maxContentLength = Infinity; // 可根据需要调整长度限制
40
40
  const truncatedContent = content.length > maxContentLength
41
41
  ? content.substring(0, maxContentLength) + '... [内容已截断]'
42
42
  : content;
@@ -48,8 +48,8 @@ ${truncatedContent}
48
48
  """
49
49
 
50
50
  请提取:
51
- 1. title: 文档的标题(简洁明了,不超过 20 个字)
52
- 2. summary: 文档摘要(控制在 100 字以内,概括主要内容)
51
+ 1. title: 文档的标题(简洁明了,不超过 30 个字)
52
+ 2. summary: 文档摘要(控制在 300 字以内,概括主要内容)
53
53
  3. tags: 关键词列表(3-8 个关键词,使用中文或英文)
54
54
  4. inferred_date: 文档中隐含的创建日期(如果有的话,格式:YYYY-MM-DD,没有就留空字符串)
55
55
  5. inferred_lang: 文档使用的语言代码(例如:zh-Hans 表示简体中文,en-US 表示美式英语)
@@ -1 +1 @@
1
- {"version":3,"file":"extractMetadataFromMarkdown.js","sourceRoot":"","sources":["../../src/ai/extractMetadataFromMarkdown.ts"],"names":[],"mappings":";;AAQA,kEA4BC;AApCD,+CAAqE;AAGrE;;;;GAIG;AACI,KAAK,UAAU,2BAA2B,CAAC,OAAe;IAC/D,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,QAAQ;YACd,OAAO,EACL,mDAAmD;SACtD;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;SAChB;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAgB,EAAC,QAAQ,EAAE;QAChD,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;KACzC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5E,iBAAiB;IACjB,QAAQ,CAAC,WAAW,GAAG;QACrB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;QACpC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB;QAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;KACnC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,qBAAqB;IACrB,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC9B,MAAM,gBAAgB,GACpB,OAAO,CAAC,MAAM,GAAG,gBAAgB;QAC/B,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,aAAa;QACxD,CAAC,CAAC,OAAO,CAAC;IAEd,OAAO;;;;EAIP,gBAAgB;;;;;;;;;;;;;;;;;EAiBhB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,eAAuB;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE7C,UAAU;QACV,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO;YACxC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;YACvC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAChE,CAAC,CAAC,EAAE;YACN,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS;YAC1D,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS;SAC3D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"extractMetadataFromMarkdown.js","sourceRoot":"","sources":["../../src/ai/extractMetadataFromMarkdown.ts"],"names":[],"mappings":";;AAQA,kEA4BC;AApCD,+CAAqE;AAGrE;;;;GAIG;AACI,KAAK,UAAU,2BAA2B,CAAC,OAAe;IAC/D,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,QAAQ;YACd,OAAO,EACL,mDAAmD;SACtD;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;SAChB;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAgB,EAAC,QAAQ,EAAE;QAChD,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;KACzC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5E,iBAAiB;IACjB,QAAQ,CAAC,WAAW,GAAG;QACrB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;QACpC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB;QAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;KACnC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,qBAAqB;IACrB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,cAAc;IACjD,MAAM,gBAAgB,GACpB,OAAO,CAAC,MAAM,GAAG,gBAAgB;QAC/B,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,aAAa;QACxD,CAAC,CAAC,OAAO,CAAC;IAEd,OAAO;;;;EAIP,gBAAgB;;;;;;;;;;;;;;;;;EAiBhB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,eAAuB;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE7C,UAAU;QACV,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO;YACxC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;YACvC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAChE,CAAC,CAAC,EAAE;YACN,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS;YAC1D,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS;SAC3D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scanSourceFiles.d.ts","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CrD"}
1
+ {"version":3,"file":"scanSourceFiles.d.ts","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDrD"}
@@ -56,6 +56,12 @@ async function scanSourceFiles() {
56
56
  }
57
57
  // 移除不再存在的文件元数据
58
58
  metadata_1.MetaData.files = metadata_1.MetaData.files.filter(f => hashes.has(f.hash));
59
+ // 按路径降序排序 (通常外层目录优先)
60
+ metadata_1.MetaData.files.sort((a, b) =>
61
+ // 第一级按目录排序
62
+ path_1.default.dirname(a.path).localeCompare(path_1.default.dirname(b.path)) ||
63
+ // 第二级按文件名排序
64
+ a.path.localeCompare(b.path));
59
65
  console.log(`✅ Found ${metadata_1.MetaData.files.length} Markdown files`);
60
66
  if (metadata_1.MetaData.files.length === 0) {
61
67
  console.warn(`⚠️ No Markdown files found in ${paths_1.INPUT_DIR}`);
@@ -1 +1 @@
1
- {"version":3,"file":"scanSourceFiles.js","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":";;;;;AAoBA,0CA4CC;AAhED,0CAAuC;AACvC,gDAAwB;AACxB,gDAAqD;AACrD,0CAAuC;AACvC,oCAAqC;AACrC,4CAAyC;AAEzC,MAAM,wBAAwB,GAAG,CAAC,OAAe,EAAY,EAAE;IAC7D,MAAM,SAAS,GAAG,mBAAmB,CAAC;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAM,IAAA,iCAAmB,EAAC,iBAAS,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAS,EAAE,YAAY,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,WAAW;YAEX,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;YAE5D,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,mBAAmB,YAAY,WAAW,IAAI,GAAG,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;YAEzD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjB,MAAM,gBAAgB,GAAG,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACnE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,gBAAgB,CAAC,IAAI,GAAG,YAAY,CAAC;gBACrC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;oBAClB,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,eAAe;IACf,mBAAQ,CAAC,KAAK,GAAG,mBAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,WAAW,mBAAQ,CAAC,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;IAE/D,IAAI,mBAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,iCAAiC,iBAAS,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scanSourceFiles.js","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":"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"}
@@ -54,8 +54,9 @@ function generateLanguageSwitcher(templateData) {
54
54
  const langName = languages_1.LANGUAGE_NAMES[lang] || lang;
55
55
  const isCurrent = lang === templateData.lang;
56
56
  const activeClass = isCurrent ? 'active' : '';
57
+ const link = path.join('..', lang, templateData.file.hash + '.html');
57
58
  return `<li class="lang-item ${activeClass}">
58
- <a href="${path.join(baseUrl, lang, templateData.file.hash + '.html')}" class="lang-link">${langName}</a>
59
+ <a href="${link}" class="lang-link">${langName}</a>
59
60
  </li>`;
60
61
  })
61
62
  .join('');
@@ -80,18 +81,19 @@ async function generateNavigationHtml(data) {
80
81
  const content = await fs.readFile(path.join(paths_1.ZEN_SRC_DIR, data.lang, file.hash + '.md'), 'utf-8');
81
82
  const { frontmatter } = (0, frontmatter_1.parseFrontmatter)(content);
82
83
  const title = frontmatter.title || file.metadata?.title || file.path; // 优先使用提取的标题
84
+ // 使用相对链接
85
+ const link = file.hash + '.html';
83
86
  return {
84
87
  title,
85
- path: path.join(baseUrl, data.lang, file.hash + '.html'),
88
+ link,
86
89
  isActive: data.file.hash === file.hash,
87
90
  };
88
91
  }));
89
- navigation.sort((a, b) => a.title.localeCompare(b.title));
90
92
  return `<ul class="nav-list">${navigation
91
93
  .map(item => {
92
94
  const activeClass = item.isActive ? 'active' : '';
93
95
  let html = `<li class="nav-item">`;
94
- html += `<a href="${item.path}" class="nav-link ${activeClass}">${item.title}</a>`;
96
+ html += `<a href="${item.link}" class="nav-link ${activeClass}">${item.title}</a>`;
95
97
  html += `</li>`;
96
98
  return html;
97
99
  })
@@ -108,8 +110,8 @@ const replaceInnerLinks = (data, markdownContent) => {
108
110
  console.warn(`⚠️ Link target not found for ${link} in file ${data.file.path}`);
109
111
  continue;
110
112
  }
111
- // 替换链接
112
- const targetLink = path.join(metadata_1.MetaData.options.baseUrl ?? '/', data.lang, targetFile.hash + '.html');
113
+ // 替换链接 (使用相对链接)
114
+ const targetLink = path.join(targetFile.hash + '.html');
113
115
  // 全局替换链接
114
116
  const linksRegex = new RegExp(`\\]\\(${link.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\)`, 'g');
115
117
  content = content.replace(linksRegex, `](${targetLink})`);
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ const parseFrontmatter = (content) => {
15
15
  exports.parseFrontmatter = parseFrontmatter;
16
16
  const updateFrontmatter = (content, newFrontmatter) => {
17
17
  const { body } = (0, exports.parseFrontmatter)(content);
18
- const frontmatterContent = `---\n${(0, yaml_1.stringify)(newFrontmatter)}---\n\n`;
18
+ const frontmatterContent = `---\n${(0, yaml_1.stringify)(newFrontmatter, { defaultStringType: 'QUOTE_DOUBLE' })}---\n\n`;
19
19
  return frontmatterContent + body;
20
20
  };
21
21
  exports.updateFrontmatter = updateFrontmatter;
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":";;;AAAA,+BAAwC;AAEjC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAsC,EAAE;IACtF,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,OAAO,EAAE,WAAW,EAAE,IAAA,YAAK,EAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEK,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,cAAmB,EAAU,EAAE;IAChF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GAAG,QAAQ,IAAA,gBAAS,EAAC,cAAc,CAAC,SAAS,CAAC;IACtE,OAAO,kBAAkB,GAAG,IAAI,CAAC;AACnC,CAAC,CAAC;AAJW,QAAA,iBAAiB,qBAI5B"}
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":";;;AAAA,+BAAwC;AAEjC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAsC,EAAE;IACtF,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,OAAO,EAAE,WAAW,EAAE,IAAA,YAAK,EAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEK,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,cAAmB,EAAU,EAAE;IAChF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GAAG,QAAQ,IAAA,gBAAS,EAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC,SAAS,CAAC;IAC7G,OAAO,kBAAkB,GAAG,IAAI,CAAC;AACnC,CAAC,CAAC;AAJW,QAAA,iBAAiB,qBAI5B"}
package/docs/tricks.md ADDED
@@ -0,0 +1,15 @@
1
+ # 使用技巧
2
+
3
+ ## 在正文中声明日期
4
+
5
+ 正文中可以使用 "今天是 2026 年 1 月 8 日" 这样的日期声明(格式风格自由),ZEN 会自动识别并处理。
6
+
7
+ 传统 Markdown 文档是通过 YAML Frontmatter 声明日期,需要记住对应的字段,否则会导致日期无法正确识别。
8
+
9
+ ZEN 支持在正文中直接声明日期,避免了忘记填写 Frontmatter 字段的问题。
10
+
11
+ AI 会自动提取并推断正文中的日期信息,并将其作为文档的创建日期进行处理。
12
+
13
+ 这种方式更加灵活和智能,提升了用户体验。
14
+
15
+ 顺带一提,具有日期的文档,可以生成时间线视图,方便浏览和管理。特别适合日记、博客等需要时间线的内容类型。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zengen",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "ZEN - A minimalist Markdown documentation site builder",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -41,7 +41,7 @@ export async function extractMetadataFromMarkdown(content: string): Promise<AIMe
41
41
  */
42
42
  function buildMetadataPrompt(content: string): string {
43
43
  // 限制内容长度以避免 token 超限
44
- const maxContentLength = 8000;
44
+ const maxContentLength = Infinity; // 可根据需要调整长度限制
45
45
  const truncatedContent =
46
46
  content.length > maxContentLength
47
47
  ? content.substring(0, maxContentLength) + '... [内容已截断]'
@@ -55,8 +55,8 @@ ${truncatedContent}
55
55
  """
56
56
 
57
57
  请提取:
58
- 1. title: 文档的标题(简洁明了,不超过 20 个字)
59
- 2. summary: 文档摘要(控制在 100 字以内,概括主要内容)
58
+ 1. title: 文档的标题(简洁明了,不超过 30 个字)
59
+ 2. summary: 文档摘要(控制在 300 字以内,概括主要内容)
60
60
  3. tags: 关键词列表(3-8 个关键词,使用中文或英文)
61
61
  4. inferred_date: 文档中隐含的创建日期(如果有的话,格式:YYYY-MM-DD,没有就留空字符串)
62
62
  5. inferred_lang: 文档使用的语言代码(例如:zh-Hans 表示简体中文,en-US 表示美式英语)
@@ -56,6 +56,14 @@ export async function scanSourceFiles(): Promise<void> {
56
56
  }
57
57
  // 移除不再存在的文件元数据
58
58
  MetaData.files = MetaData.files.filter(f => hashes.has(f.hash));
59
+ // 按路径降序排序 (通常外层目录优先)
60
+ MetaData.files.sort(
61
+ (a, b) =>
62
+ // 第一级按目录排序
63
+ path.dirname(a.path).localeCompare(path.dirname(b.path)) ||
64
+ // 第二级按文件名排序
65
+ a.path.localeCompare(b.path)
66
+ );
59
67
 
60
68
  console.log(`✅ Found ${MetaData.files.length} Markdown files`);
61
69
 
@@ -24,8 +24,10 @@ function generateLanguageSwitcher(templateData: TemplateData): string {
24
24
  const isCurrent = lang === templateData.lang;
25
25
  const activeClass = isCurrent ? 'active' : '';
26
26
 
27
+ const link = path.join('..', lang, templateData.file.hash + '.html');
28
+
27
29
  return `<li class="lang-item ${activeClass}">
28
- <a href="${path.join(baseUrl, lang, templateData.file.hash + '.html')}" class="lang-link">${langName}</a>
30
+ <a href="${link}" class="lang-link">${langName}</a>
29
31
  </li>`;
30
32
  })
31
33
  .join('');
@@ -62,21 +64,23 @@ async function generateNavigationHtml(data: TemplateData): Promise<string> {
62
64
  const { frontmatter } = parseFrontmatter(content);
63
65
  const title = frontmatter.title || file.metadata?.title || file.path; // 优先使用提取的标题
64
66
 
67
+ // 使用相对链接
68
+ const link = file.hash + '.html';
69
+
65
70
  return {
66
71
  title,
67
- path: path.join(baseUrl, data.lang, file.hash + '.html'),
72
+ link,
68
73
  isActive: data.file.hash === file.hash,
69
74
  };
70
75
  })
71
76
  );
72
- navigation.sort((a, b) => a.title.localeCompare(b.title));
73
77
 
74
78
  return `<ul class="nav-list">${navigation
75
79
  .map(item => {
76
80
  const activeClass = item.isActive ? 'active' : '';
77
81
 
78
82
  let html = `<li class="nav-item">`;
79
- html += `<a href="${item.path}" class="nav-link ${activeClass}">${item.title}</a>`;
83
+ html += `<a href="${item.link}" class="nav-link ${activeClass}">${item.title}</a>`;
80
84
 
81
85
  html += `</li>`;
82
86
  return html;
@@ -97,12 +101,8 @@ const replaceInnerLinks = (data: TemplateData, markdownContent: string): string
97
101
  console.warn(`⚠️ Link target not found for ${link} in file ${data.file.path}`);
98
102
  continue;
99
103
  }
100
- // 替换链接
101
- const targetLink = path.join(
102
- MetaData.options.baseUrl ?? '/',
103
- data.lang,
104
- targetFile.hash + '.html'
105
- );
104
+ // 替换链接 (使用相对链接)
105
+ const targetLink = path.join(targetFile.hash + '.html');
106
106
 
107
107
  // 全局替换链接
108
108
  const linksRegex = new RegExp(`\\]\\(${link.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\)`, 'g');
@@ -13,6 +13,6 @@ export const parseFrontmatter = (content: string): { frontmatter: any; body: str
13
13
 
14
14
  export const updateFrontmatter = (content: string, newFrontmatter: any): string => {
15
15
  const { body } = parseFrontmatter(content);
16
- const frontmatterContent = `---\n${stringify(newFrontmatter)}---\n\n`;
16
+ const frontmatterContent = `---\n${stringify(newFrontmatter, { defaultStringType: 'QUOTE_DOUBLE' })}---\n\n`;
17
17
  return frontmatterContent + body;
18
18
  };
@@ -1,88 +0,0 @@
1
- name: Version Management
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- paths:
7
- - 'package.json'
8
- - 'src/**'
9
-
10
- jobs:
11
- check-version:
12
- runs-on: ubuntu-latest
13
- outputs:
14
- version_changed: ${{ steps.check.outputs.version_changed }}
15
- new_version: ${{ steps.check.outputs.new_version }}
16
- steps:
17
- - name: Checkout repository
18
- uses: actions/checkout@v4
19
- with:
20
- fetch-depth: 0
21
-
22
- - name: Check if version changed
23
- id: check
24
- run: |
25
- # 获取当前版本
26
- CURRENT_VERSION=$(jq -r '.version' package.json)
27
- echo "Current version: $CURRENT_VERSION"
28
-
29
- # 获取上一个提交的版本
30
- git checkout HEAD~1 package.json 2>/dev/null || true
31
- PREVIOUS_VERSION=$(jq -r '.version' package.json 2>/dev/null || echo "0.0.0")
32
- git checkout HEAD package.json
33
-
34
- echo "Previous version: $PREVIOUS_VERSION"
35
-
36
- if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then
37
- echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
38
- echo "version_changed=true" >> $GITHUB_OUTPUT
39
- echo "new_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
40
- else
41
- echo "Version unchanged"
42
- echo "version_changed=false" >> $GITHUB_OUTPUT
43
- echo "new_version=" >> $GITHUB_OUTPUT
44
- fi
45
-
46
- create-release:
47
- needs: check-version
48
- if: needs.check-version.outputs.version_changed == 'true'
49
- runs-on: ubuntu-latest
50
- steps:
51
- - name: Checkout repository
52
- uses: actions/checkout@v4
53
- with:
54
- fetch-depth: 0
55
-
56
- - name: Setup Node.js
57
- uses: actions/setup-node@v4
58
- with:
59
- node-version: '24.x'
60
-
61
- - name: Get version and changelog
62
- id: get_info
63
- run: |
64
- VERSION=$(jq -r '.version' package.json)
65
- echo "version=$VERSION" >> $GITHUB_OUTPUT
66
-
67
- # 尝试获取最近的提交信息作为发布说明
68
- CHANGELOG=$(git log --oneline -n 10 --grep="^feat\|^fix\|^chore\|^docs\|^style\|^refactor\|^test\|^perf" || echo "No significant changes found")
69
- echo "changelog<<EOF" >> $GITHUB_OUTPUT
70
- echo "$CHANGELOG" >> $GITHUB_OUTPUT
71
- echo "EOF" >> $GITHUB_OUTPUT
72
-
73
- - name: Create GitHub Release
74
- uses: softprops/action-gh-release@v1
75
- with:
76
- tag_name: v${{ steps.get_info.outputs.version }}
77
- name: Release v${{ steps.get_info.outputs.version }}
78
- body: |
79
- ## Changes in v${{ steps.get_info.outputs.version }}
80
-
81
- ${{ steps.get_info.outputs.changelog }}
82
-
83
- ### Automated Release
84
- This release was automatically created when the package version was updated.
85
- draft: false
86
- prerelease: false
87
- env:
88
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,73 +0,0 @@
1
- ---
2
- title: ZEN - Markdown-Dokumentationsseiten-Generator
3
- summary: ZEN ist ein minimalistisches Tool zur Generierung statischer Seiten aus Markdown, das sich auf das Schreiben von Inhalten konzentriert. Es nutzt KI für Übersetzungen und Navigation, unterstützt den Aufbau mehrsprachiger Seiten und kommt ohne komplexe Konfiguration aus.
4
- tags:
5
- - Markdown
6
- - Static Site Generator
7
- - KI-Übersetzung
8
- - Mehrsprachig
9
- - Minimalismus
10
- - Dokumentationstool
11
- - ZEN
12
- inferred_lang: de-DE
13
- ---
14
-
15
- # ZEN - Ein schlankes Tool zum Erstellen von Markdown-Dokumentationsseiten
16
-
17
- [简体中文](https://zccz14.github.io/ZEN/zh-Hans) | [English](https://zccz14.github.io/ZEN/en-US)
18
-
19
- Warum noch ein Markdown-Static-Site-Generator? Ich habe überlegt, wie Dokumentationstools im KI-Zeitalter Autoren besser dienen können:
20
-
21
- - **Zurück zum Inhalt**: Minimale Ablenkung, Fokus auf das Schreiben
22
-
23
- Lasst die Dokumentation wieder das Wesentliche sein und das Schreiben wieder ruhig.
24
-
25
- Erstens: Ich möchte kein Bibliothekar sein. Manchmal möchte ich etwas aufschreiben, habe aber vielleicht noch keinen Titel oder eine klare Struktur. Ich wünsche mir, dass eine LLM automatisch Titel generiert, Zusammenfassungen erstellt, kategorisiert und Navigation erstellt – also die organisatorische Arbeit übernimmt.
26
-
27
- Zweitens: Mein Arbeitsbereich muss aufgeräumt sein. Ich möchte keine komplexen Build-Tools konfigurieren, mich nicht mit komplizierten Dokumenteneinstellungen herumschlagen und keine komplexen Strukturen. Jedes Mal, wenn ich die Konfigurationsdateien und Projektstrukturen von Tools wie Docusaurus, VuePress oder Astro sehe, bekomme ich Kopfschmerzen. ZEN versteckt daher alle Konfigurationen im `.zen`-Verzeichnis – weg in die Ecke. Der Nutzer konzentriert sich nur auf den Inhalt, den Rest erledigt ZEN. Alle anderen Verzeichnisse sind Ihr Schreibbereich, Sie können Ihre Markdown-Dateien frei organisieren.
28
-
29
- - **Zurück zur Muttersprache**: In der Muttersprache schreiben, mehrsprachige Versionen mühelos erstellen
30
-
31
- Das Leben ist zu kurz für Übersetzungen. Man denkt am tiefsten in der Muttersprache. Gleichzeitig ist die Verbindung zur Welt wichtig, ich möchte den mehrsprachigen Austausch nicht aufgeben. Daher wünsche ich mir ein Tool, mit dem ich in meiner Muttersprache schreiben kann, aber dennoch viele Menschen meine Inhalte sehen können. Aktuelle i18n-Lösungen erfordern nicht nur eigene Übersetzungen, sondern auch die Pflege von Aktualisierungen – zu aufwändig. Ich nutze eine LLM für Übersetzungen, das spart viel Zeit und ermöglicht Übersetzungen in viele Sprachen mit einem Klick.
32
-
33
- ## Grundlegende Funktionen
34
-
35
- 1. **Generierung statischer Seiten**
36
- - Erstellt aus einem beliebigen Ordner mit Markdown-Dateien eine statische HTML-Website.
37
-
38
- 2. **Intelligente Navigation**
39
- - Erzeugt eine Sitemap und Navigation. Die ursprüngliche Verzeichnisstruktur der Markdown-Quelldateien muss nicht beibehalten werden; Dateien können frei verschoben werden.
40
-
41
- 3. **Inkrementelle i18n-Übersetzung**
42
- - Nutzt LLM für inkrementelle i18n-Übersetzungen. Der Nutzer schreibt Markdown in seiner Muttersprache, kann aber mehrsprachige Inhalte bereitstellen.
43
-
44
- ## Designphilosophie
45
-
46
- - **Minimalismus**: Minimale Konfiguration, maximale Flexibilität.
47
- - **Inhaltsfokus**: Konzentration auf das Schreiben, nicht auf die Tool-Konfiguration.
48
- - **KI-gestützt**: Nutzt KI für Übersetzungen und Inhaltsorganisation.
49
- - **Mehrsprachig**: Unterstützt die Erstellung und Darstellung mehrsprachiger Inhalte.
50
-
51
- ## Schnellstart
52
-
53
- ### Empfohlene Verwendung
54
-
55
- **Es wird empfohlen, in das Verzeichnis mit den Markdown-Dateien zu wechseln und direkt mit dem folgenden Befehl zu beginnen:**
56
-
57
- ```bash
58
- # Umgebungsvariablen setzen (entsprechend Ihrer Umgebung anpassen)
59
- export OPENAI_API_KEY="sk-xxxxxx" # Erforderlich: Bitte durch Ihren OpenAI API Key ersetzen
60
- export OPENAI_BASE_URL="https://api.openai.com/v1" # Optional, standardmäßig wird die offizielle OpenAI-API verwendet
61
- export OPENAI_MODEL="gpt-3.5-turbo" # Optional, standardmäßig wird das gpt-3.5-turbo Modell verwendet
62
-
63
- # Website bauen, mit Unterstützung für mehrsprachige Übersetzungen
64
- npx zengen@latest build --lang zh-Hans --lang en-US --verbose
65
- ```
66
-
67
- **Weitere Parameter oder Hilfe anzeigen**:
68
-
69
- ```bash
70
- npx zengen
71
- ```
72
-
73
- **Hinweis**: ZEN erzwingt die Verwendung des aktuellen Verzeichnisses als Quellverzeichnis. Die Ausgabe erfolgt ins Verzeichnis `.zen/dist`. Das Angeben von Quell- und Ausgabeverzeichnissen als Parameter wird nicht unterstützt.