zengen 0.2.3 → 0.2.5

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 (123) hide show
  1. package/.zen/meta.json +26 -12
  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/dist/ai/extractMetadataFromMarkdown.js +3 -3
  55. package/dist/ai/extractMetadataFromMarkdown.js.map +1 -1
  56. package/dist/build/pipeline.d.ts.map +1 -1
  57. package/dist/build/pipeline.js +2 -40
  58. package/dist/build/pipeline.js.map +1 -1
  59. package/dist/process/scanSourceFiles.d.ts +5 -0
  60. package/dist/process/scanSourceFiles.d.ts.map +1 -0
  61. package/dist/process/scanSourceFiles.js +64 -0
  62. package/dist/process/scanSourceFiles.js.map +1 -0
  63. package/dist/process/template.d.ts.map +1 -1
  64. package/dist/process/template.js +26 -4
  65. package/dist/process/template.js.map +1 -1
  66. package/dist/types.d.ts +1 -0
  67. package/dist/types.d.ts.map +1 -1
  68. package/dist/utils/frontmatter.js +1 -1
  69. package/dist/utils/frontmatter.js.map +1 -1
  70. package/dist/utils/sha256.d.ts +2 -0
  71. package/dist/utils/sha256.d.ts.map +1 -0
  72. package/dist/utils/sha256.js +7 -0
  73. package/dist/utils/sha256.js.map +1 -0
  74. package/docs/tricks.md +15 -0
  75. package/package.json +1 -1
  76. package/src/ai/extractMetadataFromMarkdown.ts +3 -3
  77. package/src/build/pipeline.ts +1 -45
  78. package/src/process/scanSourceFiles.ts +65 -0
  79. package/src/process/template.ts +32 -4
  80. package/src/types.ts +1 -0
  81. package/src/utils/frontmatter.ts +1 -1
  82. package/src/utils/sha256.ts +4 -0
  83. package/.zen/src/de-DE/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  84. package/.zen/src/de-DE/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  85. package/.zen/src/en-US/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +0 -120
  86. package/.zen/src/en-US/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  87. package/.zen/src/en-US/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +0 -75
  88. package/.zen/src/en-US/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +0 -189
  89. package/.zen/src/en-US/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  90. package/.zen/src/en-US/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +0 -53
  91. package/.zen/src/en-US/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +0 -11
  92. package/.zen/src/en-US/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +0 -61
  93. package/.zen/src/en-US/afbf4998656c97181d0edc711e388ad11e0f08f5c6f329861327202462a3a34a.md +0 -63
  94. package/.zen/src/en-US/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +0 -40
  95. package/.zen/src/en-US/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +0 -65
  96. package/.zen/src/es-ES/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  97. package/.zen/src/es-ES/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  98. package/.zen/src/fr-FR/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  99. package/.zen/src/fr-FR/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  100. package/.zen/src/ja-JP/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -71
  101. package/.zen/src/ja-JP/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  102. package/.zen/src/ko-KR/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  103. package/.zen/src/pt-PT/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  104. package/.zen/src/pt-PT/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  105. package/.zen/src/ru-RU/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  106. package/.zen/src/ru-RU/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  107. package/.zen/src/zh-Hans/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +0 -120
  108. package/.zen/src/zh-Hans/04319611d7cde718d0e82da8e034e04b15fb3bb37c3784d8f7313577c5178b06.md +0 -73
  109. package/.zen/src/zh-Hans/084ef1f6a0167df8621c673c79211309d4af6c588e7bbe3e043f7c244edd0ac6.md +0 -80
  110. package/.zen/src/zh-Hans/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +0 -77
  111. package/.zen/src/zh-Hans/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +0 -189
  112. package/.zen/src/zh-Hans/48eb2ad3e174cd06ed16c959fa58e0381dbc4a4147fa3456b21eea2b3d67c329.md +0 -81
  113. package/.zen/src/zh-Hans/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +0 -55
  114. package/.zen/src/zh-Hans/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +0 -11
  115. package/.zen/src/zh-Hans/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +0 -63
  116. package/.zen/src/zh-Hans/afbf4998656c97181d0edc711e388ad11e0f08f5c6f329861327202462a3a34a.md +0 -63
  117. package/.zen/src/zh-Hans/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +0 -40
  118. package/.zen/src/zh-Hans/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +0 -65
  119. package/dist/scan/files.d.ts +0 -7
  120. package/dist/scan/files.d.ts.map +0 -1
  121. package/dist/scan/files.js +0 -54
  122. package/dist/scan/files.js.map +0 -1
  123. package/src/scan/files.ts +0 -17
@@ -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
+ 順帶一提,具有日期的文件,可以生成時間線檢視,方便瀏覽和管理。特別適合日記、部落格等需要時間線的內容類型。
@@ -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":"pipeline.d.ts","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4LxC;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpE"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAiJxC;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpE"}
@@ -37,12 +37,11 @@ exports.buildSite = buildSite;
37
37
  const fs = __importStar(require("fs/promises"));
38
38
  const path = __importStar(require("path"));
39
39
  const translateMarkdown_1 = require("../ai/translateMarkdown");
40
- const findEntries_1 = require("../findEntries");
41
40
  const metadata_1 = require("../metadata");
42
41
  const paths_1 = require("../paths");
43
42
  const extractMetadataByAI_1 = require("../process/extractMetadataByAI");
43
+ const scanSourceFiles_1 = require("../process/scanSourceFiles");
44
44
  const template_1 = require("../process/template");
45
- const files_1 = require("../scan/files");
46
45
  const frontmatter_1 = require("../utils/frontmatter");
47
46
  /**
48
47
  * 验证构建配置
@@ -59,43 +58,6 @@ async function validateConfig(options) {
59
58
  }
60
59
  metadata_1.MetaData.options = options;
61
60
  }
62
- /**
63
- * 扫描源文件
64
- */
65
- async function scanSourceFiles() {
66
- console.log(`🔍 Scanning source directory...`);
67
- const markdownFiles = await (0, findEntries_1.findMarkdownEntries)(paths_1.INPUT_DIR);
68
- const hashes = new Set();
69
- for (const relativePath of markdownFiles) {
70
- const fullPath = path.join(paths_1.INPUT_DIR, relativePath);
71
- try {
72
- // 检查文件是否存在
73
- await fs.access(fullPath);
74
- const hash = await (0, files_1.calculateFileHash)(fullPath);
75
- hashes.add(hash);
76
- const metaWithSameHash = metadata_1.MetaData.files.find(f => f.hash === hash);
77
- if (metaWithSameHash) {
78
- metaWithSameHash.path = relativePath;
79
- }
80
- else {
81
- // 如果没有相同哈希的元数据,则添加一个新的占位符
82
- metadata_1.MetaData.files.push({
83
- hash,
84
- path: relativePath,
85
- });
86
- }
87
- }
88
- catch (error) {
89
- console.warn(`⚠️ File not found or inaccessible: ${fullPath}`, error);
90
- }
91
- }
92
- // 移除不再存在的文件元数据
93
- metadata_1.MetaData.files = metadata_1.MetaData.files.filter(f => hashes.has(f.hash));
94
- console.log(`✅ Found ${metadata_1.MetaData.files.length} Markdown files`);
95
- if (metadata_1.MetaData.files.length === 0) {
96
- console.warn(`⚠️ No Markdown files found in ${paths_1.INPUT_DIR}`);
97
- }
98
- }
99
61
  /**
100
62
  * 存储母语文件到 .zen/src
101
63
  */
@@ -186,7 +148,7 @@ async function buildPipeline(options) {
186
148
  await fs.mkdir(paths_1.ZEN_DIR, { recursive: true });
187
149
  await fs.writeFile(path.join(paths_1.ZEN_DIR, '.gitignore'), 'dist\n', 'utf-8');
188
150
  // 扫描源文件
189
- await scanSourceFiles();
151
+ await (0, scanSourceFiles_1.scanSourceFiles)();
190
152
  // 运行 AI 元数据提取
191
153
  await (0, extractMetadataByAI_1.extractMetadataByAI)();
192
154
  // 存储母语文件
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 扫描源文件
3
+ */
4
+ export declare function scanSourceFiles(): Promise<void>;
5
+ //# sourceMappingURL=scanSourceFiles.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.scanSourceFiles = scanSourceFiles;
7
+ const promises_1 = require("fs/promises");
8
+ const path_1 = __importDefault(require("path"));
9
+ const findEntries_1 = require("../findEntries");
10
+ const metadata_1 = require("../metadata");
11
+ const paths_1 = require("../paths");
12
+ const sha256_1 = require("../utils/sha256");
13
+ const extractLinksFromMarkdown = (content) => {
14
+ const linkRegex = /\[.*?\]\((.*?)\)/g;
15
+ const links = [];
16
+ let match;
17
+ while ((match = linkRegex.exec(content)) !== null) {
18
+ links.push(match[1]);
19
+ }
20
+ return links;
21
+ };
22
+ /**
23
+ * 扫描源文件
24
+ */
25
+ async function scanSourceFiles() {
26
+ console.log(`🔍 Scanning source directory...`);
27
+ const markdownFiles = await (0, findEntries_1.findMarkdownEntries)(paths_1.INPUT_DIR);
28
+ const hashes = new Set();
29
+ for (const relativePath of markdownFiles) {
30
+ const fullPath = path_1.default.join(paths_1.INPUT_DIR, relativePath);
31
+ try {
32
+ // 检查文件是否存在
33
+ const content = await (0, promises_1.readFile)(fullPath, 'utf-8'); // 确保文件可读
34
+ const hash = (0, sha256_1.sha256)(content);
35
+ const links = extractLinksFromMarkdown(content);
36
+ console.info(` - Found file: ${relativePath} (hash: ${hash})`);
37
+ console.info(` Links: ${links.join(', ') || 'None'}`);
38
+ hashes.add(hash);
39
+ const metaWithSameHash = metadata_1.MetaData.files.find(f => f.hash === hash);
40
+ if (metaWithSameHash) {
41
+ metaWithSameHash.path = relativePath;
42
+ metaWithSameHash.links = links;
43
+ }
44
+ else {
45
+ // 如果没有相同哈希的元数据,则添加一个新的占位符
46
+ metadata_1.MetaData.files.push({
47
+ hash,
48
+ path: relativePath,
49
+ links,
50
+ });
51
+ }
52
+ }
53
+ catch (error) {
54
+ console.warn(`⚠️ File not found or inaccessible: ${fullPath}`, error);
55
+ }
56
+ }
57
+ // 移除不再存在的文件元数据
58
+ metadata_1.MetaData.files = metadata_1.MetaData.files.filter(f => hashes.has(f.hash));
59
+ console.log(`✅ Found ${metadata_1.MetaData.files.length} Markdown files`);
60
+ if (metadata_1.MetaData.files.length === 0) {
61
+ console.warn(`⚠️ No Markdown files found in ${paths_1.INPUT_DIR}`);
62
+ }
63
+ }
64
+ //# sourceMappingURL=scanSourceFiles.js.map
@@ -0,0 +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 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"AA8JA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCrD"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/process/template.ts"],"names":[],"mappings":"AA0LA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCrD"}
@@ -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,13 +81,15 @@ 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
+ path: link,
86
89
  isActive: data.file.hash === file.hash,
87
90
  };
88
91
  }));
89
- navigation.sort((a, b) => a.title.localeCompare(b.title));
92
+ navigation.sort((a, b) => b.path.localeCompare(a.path));
90
93
  return `<ul class="nav-list">${navigation
91
94
  .map(item => {
92
95
  const activeClass = item.isActive ? 'active' : '';
@@ -97,6 +100,25 @@ async function generateNavigationHtml(data) {
97
100
  })
98
101
  .join('')}</ul>`;
99
102
  }
103
+ const replaceInnerLinks = (data, markdownContent) => {
104
+ let content = markdownContent;
105
+ for (const link of data.file.links) {
106
+ if (URL.canParse(link))
107
+ continue; // 跳过绝对 URL
108
+ const targetPath = path.resolve('/', path.dirname(data.file.path), link).slice(1);
109
+ const targetFile = metadata_1.MetaData.files.find(f => f.path === targetPath);
110
+ if (!targetFile) {
111
+ console.warn(`⚠️ Link target not found for ${link} in file ${data.file.path}`);
112
+ continue;
113
+ }
114
+ // 替换链接 (使用相对链接)
115
+ const targetLink = path.join(targetFile.hash + '.html');
116
+ // 全局替换链接
117
+ const linksRegex = new RegExp(`\\]\\(${link.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\)`, 'g');
118
+ content = content.replace(linksRegex, `](${targetLink})`);
119
+ }
120
+ return content;
121
+ };
100
122
  /**
101
123
  * 简单的模板变量替换
102
124
  * @param template 模板字符串
@@ -107,7 +129,7 @@ async function renderTemplate(template, data) {
107
129
  const { options: { langs = [] }, } = metadata_1.MetaData;
108
130
  const markdownContent = data.content;
109
131
  const { frontmatter, body } = (0, frontmatter_1.parseFrontmatter)(markdownContent);
110
- const htmlContent = (0, convertMarkdownToHtml_1.convertMarkdownToHtml)(body);
132
+ const htmlContent = (0, convertMarkdownToHtml_1.convertMarkdownToHtml)(replaceInnerLinks(data, body));
111
133
  let result = template;
112
134
  // 替换导航
113
135
  const navigationHtml = await generateNavigationHtml(data);
@@ -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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"}
package/dist/types.d.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  export interface FileMetaData {
5
5
  hash: string;
6
6
  path: string;
7
+ links: string[];
7
8
  metadata?: AIMetadata;
8
9
  }
9
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH"}
@@ -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"}
@@ -0,0 +1,2 @@
1
+ export declare const sha256: (content: string) => string;
2
+ //# sourceMappingURL=sha256.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.d.ts","sourceRoot":"","sources":["../../src/utils/sha256.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,GAAI,SAAS,MAAM,KAAG,MACW,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sha256 = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const sha256 = (content) => (0, crypto_1.createHash)('sha256').update(content).digest('hex');
6
+ exports.sha256 = sha256;
7
+ //# sourceMappingURL=sha256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/utils/sha256.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAE7B,MAAM,MAAM,GAAG,CAAC,OAAe,EAAU,EAAE,CAChD,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AADxC,QAAA,MAAM,UACkC"}
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.3",
3
+ "version": "0.2.5",
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 表示美式英语)
@@ -1,12 +1,11 @@
1
1
  import * as fs from 'fs/promises';
2
2
  import * as path from 'path';
3
3
  import { translateMarkdown } from '../ai/translateMarkdown';
4
- import { findMarkdownEntries } from '../findEntries';
5
4
  import { loadMetaData, MetaData, saveMetaData } from '../metadata';
6
5
  import { INPUT_DIR, ZEN_DIR, ZEN_DIST_DIR, ZEN_SRC_DIR } from '../paths';
7
6
  import { extractMetadataByAI } from '../process/extractMetadataByAI';
7
+ import { scanSourceFiles } from '../process/scanSourceFiles';
8
8
  import { renderTemplates } from '../process/template';
9
- import { calculateFileHash } from '../scan/files';
10
9
  import { BuildOptions } from '../types';
11
10
  import { updateFrontmatter } from '../utils/frontmatter';
12
11
 
@@ -28,49 +27,6 @@ async function validateConfig(options: BuildOptions): Promise<void> {
28
27
  MetaData.options = options;
29
28
  }
30
29
 
31
- /**
32
- * 扫描源文件
33
- */
34
- async function scanSourceFiles(): Promise<void> {
35
- console.log(`🔍 Scanning source directory...`);
36
- const markdownFiles = await findMarkdownEntries(INPUT_DIR);
37
- const hashes = new Set<string>();
38
-
39
- for (const relativePath of markdownFiles) {
40
- const fullPath = path.join(INPUT_DIR, relativePath);
41
-
42
- try {
43
- // 检查文件是否存在
44
- await fs.access(fullPath);
45
-
46
- const hash = await calculateFileHash(fullPath);
47
-
48
- hashes.add(hash);
49
-
50
- const metaWithSameHash = MetaData.files.find(f => f.hash === hash);
51
- if (metaWithSameHash) {
52
- metaWithSameHash.path = relativePath;
53
- } else {
54
- // 如果没有相同哈希的元数据,则添加一个新的占位符
55
- MetaData.files.push({
56
- hash,
57
- path: relativePath,
58
- });
59
- }
60
- } catch (error) {
61
- console.warn(`⚠️ File not found or inaccessible: ${fullPath}`, error);
62
- }
63
- }
64
- // 移除不再存在的文件元数据
65
- MetaData.files = MetaData.files.filter(f => hashes.has(f.hash));
66
-
67
- console.log(`✅ Found ${MetaData.files.length} Markdown files`);
68
-
69
- if (MetaData.files.length === 0) {
70
- console.warn(`⚠️ No Markdown files found in ${INPUT_DIR}`);
71
- }
72
- }
73
-
74
30
  /**
75
31
  * 存储母语文件到 .zen/src
76
32
  */