novelws 1.2.0

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 (320) hide show
  1. package/CHANGELOG.md +161 -0
  2. package/LICENSE +22 -0
  3. package/README.md +372 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +50 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/check.d.ts +6 -0
  9. package/dist/commands/check.d.ts.map +1 -0
  10. package/dist/commands/check.js +32 -0
  11. package/dist/commands/check.js.map +1 -0
  12. package/dist/commands/init.d.ts +6 -0
  13. package/dist/commands/init.d.ts.map +1 -0
  14. package/dist/commands/init.js +160 -0
  15. package/dist/commands/init.js.map +1 -0
  16. package/dist/commands/plugin.d.ts +6 -0
  17. package/dist/commands/plugin.d.ts.map +1 -0
  18. package/dist/commands/plugin.js +135 -0
  19. package/dist/commands/plugin.js.map +1 -0
  20. package/dist/commands/upgrade.d.ts +6 -0
  21. package/dist/commands/upgrade.d.ts.map +1 -0
  22. package/dist/commands/upgrade.js +92 -0
  23. package/dist/commands/upgrade.js.map +1 -0
  24. package/dist/core/config.d.ts +72 -0
  25. package/dist/core/config.d.ts.map +1 -0
  26. package/dist/core/config.js +136 -0
  27. package/dist/core/config.js.map +1 -0
  28. package/dist/core/errors.d.ts +59 -0
  29. package/dist/core/errors.d.ts.map +1 -0
  30. package/dist/core/errors.js +125 -0
  31. package/dist/core/errors.js.map +1 -0
  32. package/dist/core/platform.d.ts +27 -0
  33. package/dist/core/platform.d.ts.map +1 -0
  34. package/dist/core/platform.js +75 -0
  35. package/dist/core/platform.js.map +1 -0
  36. package/dist/core/template.d.ts +35 -0
  37. package/dist/core/template.d.ts.map +1 -0
  38. package/dist/core/template.js +94 -0
  39. package/dist/core/template.js.map +1 -0
  40. package/dist/plugins/identifier.d.ts +13 -0
  41. package/dist/plugins/identifier.d.ts.map +1 -0
  42. package/dist/plugins/identifier.js +72 -0
  43. package/dist/plugins/identifier.js.map +1 -0
  44. package/dist/plugins/installers/base.d.ts +27 -0
  45. package/dist/plugins/installers/base.d.ts.map +1 -0
  46. package/dist/plugins/installers/base.js +30 -0
  47. package/dist/plugins/installers/base.js.map +1 -0
  48. package/dist/plugins/installers/github.d.ts +22 -0
  49. package/dist/plugins/installers/github.d.ts.map +1 -0
  50. package/dist/plugins/installers/github.js +133 -0
  51. package/dist/plugins/installers/github.js.map +1 -0
  52. package/dist/plugins/installers/local.d.ts +16 -0
  53. package/dist/plugins/installers/local.d.ts.map +1 -0
  54. package/dist/plugins/installers/local.js +69 -0
  55. package/dist/plugins/installers/local.js.map +1 -0
  56. package/dist/plugins/installers/npm.d.ts +20 -0
  57. package/dist/plugins/installers/npm.d.ts.map +1 -0
  58. package/dist/plugins/installers/npm.js +99 -0
  59. package/dist/plugins/installers/npm.js.map +1 -0
  60. package/dist/plugins/manager.d.ts +77 -0
  61. package/dist/plugins/manager.d.ts.map +1 -0
  62. package/dist/plugins/manager.js +349 -0
  63. package/dist/plugins/manager.js.map +1 -0
  64. package/dist/plugins/registry.d.ts +48 -0
  65. package/dist/plugins/registry.d.ts.map +1 -0
  66. package/dist/plugins/registry.js +111 -0
  67. package/dist/plugins/registry.js.map +1 -0
  68. package/dist/plugins/types.d.ts +66 -0
  69. package/dist/plugins/types.d.ts.map +1 -0
  70. package/dist/plugins/types.js +2 -0
  71. package/dist/plugins/types.js.map +1 -0
  72. package/dist/plugins/validator.d.ts +19 -0
  73. package/dist/plugins/validator.d.ts.map +1 -0
  74. package/dist/plugins/validator.js +164 -0
  75. package/dist/plugins/validator.js.map +1 -0
  76. package/dist/utils/logger.d.ts +13 -0
  77. package/dist/utils/logger.d.ts.map +1 -0
  78. package/dist/utils/logger.js +48 -0
  79. package/dist/utils/logger.js.map +1 -0
  80. package/dist/utils/project.d.ts +24 -0
  81. package/dist/utils/project.d.ts.map +1 -0
  82. package/dist/utils/project.js +61 -0
  83. package/dist/utils/project.js.map +1 -0
  84. package/dist/version.d.ts +3 -0
  85. package/dist/version.d.ts.map +1 -0
  86. package/dist/version.js +21 -0
  87. package/dist/version.js.map +1 -0
  88. package/package.json +76 -0
  89. package/plugins/authentic-voice/README.md +31 -0
  90. package/plugins/authentic-voice/commands/authentic-voice.md +73 -0
  91. package/plugins/authentic-voice/commands/authenticity-audit.md +37 -0
  92. package/plugins/authentic-voice/config.yaml +30 -0
  93. package/plugins/authentic-voice/experts/authentic-editor.md +27 -0
  94. package/plugins/export/README.md +319 -0
  95. package/plugins/export/commands/export.md +460 -0
  96. package/plugins/export/commands/generate-cover.md +256 -0
  97. package/plugins/export/commands/metadata.md +309 -0
  98. package/plugins/export/config.yaml +47 -0
  99. package/plugins/export/experts/publishing-expert.md +171 -0
  100. package/plugins/export/templates/epub/chapter-template.html +13 -0
  101. package/plugins/export/templates/epub/cover-template.html +14 -0
  102. package/plugins/export/templates/epub/stylesheet.css +200 -0
  103. package/plugins/export/templates/pdf/ebook-style.css +137 -0
  104. package/plugins/export/templates/pdf/print-style.css +179 -0
  105. package/plugins/export/templates/platforms/jinjiang-format.md +101 -0
  106. package/plugins/export/templates/platforms/qidian-format.md +108 -0
  107. package/plugins/export/templates/platforms/tomato-format.md +95 -0
  108. package/plugins/translate/README.md +265 -0
  109. package/plugins/translate/commands/glossary.md +731 -0
  110. package/plugins/translate/commands/translate-preview.md +543 -0
  111. package/plugins/translate/commands/translate.md +649 -0
  112. package/plugins/translate/config.yaml +43 -0
  113. package/plugins/translate/experts/literary-translator.md +605 -0
  114. package/templates/commands/analyze.md +1485 -0
  115. package/templates/commands/checklist.md +434 -0
  116. package/templates/commands/clarify.md +257 -0
  117. package/templates/commands/constitution.md +257 -0
  118. package/templates/commands/expert.md +136 -0
  119. package/templates/commands/plan.md +749 -0
  120. package/templates/commands/recap.md +613 -0
  121. package/templates/commands/relations.md +96 -0
  122. package/templates/commands/revise.md +341 -0
  123. package/templates/commands/specify.md +682 -0
  124. package/templates/commands/tasks.md +142 -0
  125. package/templates/commands/timeline.md +73 -0
  126. package/templates/commands/track-init.md +137 -0
  127. package/templates/commands/track.md +463 -0
  128. package/templates/commands/write.md +1264 -0
  129. package/templates/config/keyword-mappings.json +106 -0
  130. package/templates/knowledge/audit-config.json +26 -0
  131. package/templates/knowledge/character-profiles.md +152 -0
  132. package/templates/knowledge/character-voices.md +137 -0
  133. package/templates/knowledge/locations.md +184 -0
  134. package/templates/knowledge/world-setting.md +121 -0
  135. package/templates/knowledge-base/README.md +285 -0
  136. package/templates/knowledge-base/character-archetypes/01-hero.md +233 -0
  137. package/templates/knowledge-base/character-archetypes/02-mentor.md +177 -0
  138. package/templates/knowledge-base/character-archetypes/03-shadow.md +221 -0
  139. package/templates/knowledge-base/character-archetypes/04-ally.md +178 -0
  140. package/templates/knowledge-base/character-archetypes/05-shapeshifter.md +177 -0
  141. package/templates/knowledge-base/character-archetypes/06-trickster.md +181 -0
  142. package/templates/knowledge-base/character-archetypes/07-threshold-guardian.md +177 -0
  143. package/templates/knowledge-base/character-archetypes/08-herald.md +180 -0
  144. package/templates/knowledge-base/character-archetypes/09-father.md +249 -0
  145. package/templates/knowledge-base/character-archetypes/10-mother.md +202 -0
  146. package/templates/knowledge-base/character-archetypes/11-child.md +183 -0
  147. package/templates/knowledge-base/character-archetypes/12-sage.md +202 -0
  148. package/templates/knowledge-base/character-archetypes/README.md +60 -0
  149. package/templates/knowledge-base/character-archetypes/application-guide.md +222 -0
  150. package/templates/knowledge-base/character-archetypes/archetype-combinations.md +242 -0
  151. package/templates/knowledge-base/character-archetypes/config.yaml +28 -0
  152. package/templates/knowledge-base/character-archetypes/examples-analysis.md +223 -0
  153. package/templates/knowledge-base/craft/character-arc.md +1153 -0
  154. package/templates/knowledge-base/craft/dialogue.md +1170 -0
  155. package/templates/knowledge-base/craft/pacing.md +1200 -0
  156. package/templates/knowledge-base/craft/scene-structure.md +1136 -0
  157. package/templates/knowledge-base/craft/show-not-tell.md +1012 -0
  158. package/templates/knowledge-base/emotional-beats/01-first-meeting.md +145 -0
  159. package/templates/knowledge-base/emotional-beats/02-bonding-moment.md +226 -0
  160. package/templates/knowledge-base/emotional-beats/03-declaration.md +284 -0
  161. package/templates/knowledge-base/emotional-beats/04-triumph.md +240 -0
  162. package/templates/knowledge-base/emotional-beats/05-reunion.md +396 -0
  163. package/templates/knowledge-base/emotional-beats/06-forgiveness.md +204 -0
  164. package/templates/knowledge-base/emotional-beats/07-betrayal.md +204 -0
  165. package/templates/knowledge-base/emotional-beats/08-loss.md +214 -0
  166. package/templates/knowledge-base/emotional-beats/09-rejection.md +254 -0
  167. package/templates/knowledge-base/emotional-beats/10-failure.md +244 -0
  168. package/templates/knowledge-base/emotional-beats/11-misunderstanding.md +205 -0
  169. package/templates/knowledge-base/emotional-beats/12-farewell.md +283 -0
  170. package/templates/knowledge-base/emotional-beats/13-revelation.md +242 -0
  171. package/templates/knowledge-base/emotional-beats/14-point-of-no-return.md +215 -0
  172. package/templates/knowledge-base/emotional-beats/15-dark-night.md +244 -0
  173. package/templates/knowledge-base/emotional-beats/16-sacrifice.md +246 -0
  174. package/templates/knowledge-base/emotional-beats/17-awakening.md +246 -0
  175. package/templates/knowledge-base/emotional-beats/18-confrontation.md +217 -0
  176. package/templates/knowledge-base/emotional-beats/19-bittersweet-goodbye.md +368 -0
  177. package/templates/knowledge-base/emotional-beats/20-moral-dilemma.md +248 -0
  178. package/templates/knowledge-base/emotional-beats/21-temptation.md +240 -0
  179. package/templates/knowledge-base/emotional-beats/22-redemption.md +210 -0
  180. package/templates/knowledge-base/emotional-beats/README.md +104 -0
  181. package/templates/knowledge-base/emotional-beats/beat-sequences.md +276 -0
  182. package/templates/knowledge-base/emotional-beats/config.yaml +30 -0
  183. package/templates/knowledge-base/emotional-beats/pacing-guide.md +390 -0
  184. package/templates/knowledge-base/genres/historical.md +1127 -0
  185. package/templates/knowledge-base/genres/mystery.md +1123 -0
  186. package/templates/knowledge-base/genres/revenge.md +846 -0
  187. package/templates/knowledge-base/genres/romance.md +948 -0
  188. package/templates/knowledge-base/genres/sci-fi.md +156 -0
  189. package/templates/knowledge-base/genres/thriller.md +166 -0
  190. package/templates/knowledge-base/genres/wuxia.md +143 -0
  191. package/templates/knowledge-base/references/README.md +96 -0
  192. package/templates/knowledge-base/references/china-1920s/culture.md +423 -0
  193. package/templates/knowledge-base/references/china-1920s/daily-life.md +616 -0
  194. package/templates/knowledge-base/references/china-1920s/overview.md +298 -0
  195. package/templates/knowledge-base/references/china-1920s/society.md +703 -0
  196. package/templates/knowledge-base/references/china-1920s/warlords.md +427 -0
  197. package/templates/knowledge-base/references/cultivation-world/daily-life.md +108 -0
  198. package/templates/knowledge-base/references/cultivation-world/overview.md +64 -0
  199. package/templates/knowledge-base/references/cultivation-world/power-system.md +108 -0
  200. package/templates/knowledge-base/references/cultivation-world/sects.md +104 -0
  201. package/templates/knowledge-base/references/cultivation-world/world-setting.md +108 -0
  202. package/templates/knowledge-base/references/modern-workplace/corporate.md +115 -0
  203. package/templates/knowledge-base/references/modern-workplace/daily-life.md +129 -0
  204. package/templates/knowledge-base/references/modern-workplace/overview.md +73 -0
  205. package/templates/knowledge-base/references/modern-workplace/relationships.md +107 -0
  206. package/templates/knowledge-base/references/modern-workplace/tech-industry.md +131 -0
  207. package/templates/knowledge-base/references/tang-dynasty/culture.md +135 -0
  208. package/templates/knowledge-base/references/tang-dynasty/daily-life.md +139 -0
  209. package/templates/knowledge-base/references/tang-dynasty/overview.md +76 -0
  210. package/templates/knowledge-base/references/tang-dynasty/politics.md +121 -0
  211. package/templates/knowledge-base/references/tang-dynasty/society.md +126 -0
  212. package/templates/knowledge-base/requirements/README.md +240 -0
  213. package/templates/knowledge-base/requirements/anti-ai-v3.md +46 -0
  214. package/templates/knowledge-base/requirements/anti-ai-v4.md +430 -0
  215. package/templates/knowledge-base/requirements/fast-paced.md +552 -0
  216. package/templates/knowledge-base/requirements/no-poison.md +60 -0
  217. package/templates/knowledge-base/requirements/romance-angst.md +102 -0
  218. package/templates/knowledge-base/requirements/romance-sweet.md +63 -0
  219. package/templates/knowledge-base/requirements/serious-literature.md +45 -0
  220. package/templates/knowledge-base/requirements/strong-emotion.md +60 -0
  221. package/templates/knowledge-base/styles/README.md +302 -0
  222. package/templates/knowledge-base/styles/ancient-style.md +579 -0
  223. package/templates/knowledge-base/styles/literary.md +439 -0
  224. package/templates/knowledge-base/styles/minimal.md +472 -0
  225. package/templates/knowledge-base/styles/natural-voice.md +930 -0
  226. package/templates/knowledge-base/styles/web-novel.md +525 -0
  227. package/templates/memory/constitution.md +140 -0
  228. package/templates/memory/personal-voice.md +113 -0
  229. package/templates/scripts/README.md +187 -0
  230. package/templates/scripts/bash/analyze-story.sh +170 -0
  231. package/templates/scripts/bash/check-consistency.sh +463 -0
  232. package/templates/scripts/bash/check-plot.sh +374 -0
  233. package/templates/scripts/bash/check-timeline.sh +346 -0
  234. package/templates/scripts/bash/check-world.sh +395 -0
  235. package/templates/scripts/bash/check-writing-state.sh +854 -0
  236. package/templates/scripts/bash/clarify-story.sh +117 -0
  237. package/templates/scripts/bash/common.sh +151 -0
  238. package/templates/scripts/bash/constitution.sh +114 -0
  239. package/templates/scripts/bash/generate-tasks.sh +65 -0
  240. package/templates/scripts/bash/init-tracking.sh +183 -0
  241. package/templates/scripts/bash/manage-relations.sh +174 -0
  242. package/templates/scripts/bash/plan-story.sh +100 -0
  243. package/templates/scripts/bash/specify-story.sh +93 -0
  244. package/templates/scripts/bash/tasks-story.sh +96 -0
  245. package/templates/scripts/bash/test-word-count.sh +182 -0
  246. package/templates/scripts/bash/tests/bench-preload-cache.sh +100 -0
  247. package/templates/scripts/bash/tests/run-all-benchmarks.sh +16 -0
  248. package/templates/scripts/bash/tests/test-cache-semantics.sh +199 -0
  249. package/templates/scripts/bash/tests/test-cross-platform.sh +35 -0
  250. package/templates/scripts/bash/tests/test-edge-cases-bash.sh +60 -0
  251. package/templates/scripts/bash/tests/test-phase1-bash.sh +28 -0
  252. package/templates/scripts/bash/tests/test-preload-cache.sh +123 -0
  253. package/templates/scripts/bash/tests/test-regex-precompile.sh +89 -0
  254. package/templates/scripts/bash/tests/test-regression-bash.sh +42 -0
  255. package/templates/scripts/bash/tests/test-task6-verification.sh +200 -0
  256. package/templates/scripts/bash/text-audit.sh +144 -0
  257. package/templates/scripts/bash/track-progress.sh +194 -0
  258. package/templates/scripts/powershell/analyze-story.ps1 +171 -0
  259. package/templates/scripts/powershell/check-analyze-stage.ps1 +110 -0
  260. package/templates/scripts/powershell/check-consistency.ps1 +138 -0
  261. package/templates/scripts/powershell/check-plot.ps1 +139 -0
  262. package/templates/scripts/powershell/check-timeline.ps1 +112 -0
  263. package/templates/scripts/powershell/check-writing-state.ps1 +490 -0
  264. package/templates/scripts/powershell/check-writing-state.ps1.backup +135 -0
  265. package/templates/scripts/powershell/clarify-story.ps1 +107 -0
  266. package/templates/scripts/powershell/common.ps1 +36 -0
  267. package/templates/scripts/powershell/constitution.ps1 +142 -0
  268. package/templates/scripts/powershell/generate-tasks.ps1 +75 -0
  269. package/templates/scripts/powershell/init-tracking.ps1 +98 -0
  270. package/templates/scripts/powershell/manage-relations.ps1 +134 -0
  271. package/templates/scripts/powershell/plan-story.ps1 +96 -0
  272. package/templates/scripts/powershell/specify-story.ps1 +82 -0
  273. package/templates/scripts/powershell/tests/bench-ps-cache.ps1 +80 -0
  274. package/templates/scripts/powershell/tests/test-cross-platform.ps1 +27 -0
  275. package/templates/scripts/powershell/tests/test-edge-cases-ps.ps1 +29 -0
  276. package/templates/scripts/powershell/tests/test-phase1-ps.ps1 +28 -0
  277. package/templates/scripts/powershell/tests/test-ps-cache.ps1 +73 -0
  278. package/templates/scripts/powershell/tests/test-regression-ps.ps1 +40 -0
  279. package/templates/scripts/powershell/text-audit.ps1 +100 -0
  280. package/templates/scripts/powershell/track-progress.ps1 +105 -0
  281. package/templates/skills/genre-knowledge/fantasy/SKILL.md +355 -0
  282. package/templates/skills/genre-knowledge/mystery/SKILL.md +337 -0
  283. package/templates/skills/genre-knowledge/romance/SKILL.md +228 -0
  284. package/templates/skills/genre-knowledge/sci-fi/SKILL.md +65 -0
  285. package/templates/skills/genre-knowledge/thriller/SKILL.md +95 -0
  286. package/templates/skills/quality-assurance/consistency-checker/SKILL.md +341 -0
  287. package/templates/skills/quality-assurance/continuity-tracker/SKILL.md +157 -0
  288. package/templates/skills/quality-assurance/forgotten-elements/SKILL.md +147 -0
  289. package/templates/skills/quality-assurance/getting-started/SKILL.md +224 -0
  290. package/templates/skills/quality-assurance/pacing-monitor/SKILL.md +143 -0
  291. package/templates/skills/quality-assurance/pov-validator/SKILL.md +135 -0
  292. package/templates/skills/quality-assurance/pre-write-checklist/SKILL.md +583 -0
  293. package/templates/skills/quality-assurance/requirement-detector/CONFLICT_RESOLUTION.md +119 -0
  294. package/templates/skills/quality-assurance/requirement-detector/EXAMPLES.md +146 -0
  295. package/templates/skills/quality-assurance/requirement-detector/KEYWORDS.md +160 -0
  296. package/templates/skills/quality-assurance/requirement-detector/SKILL.md +149 -0
  297. package/templates/skills/quality-assurance/setting-detector/SKILL.md +611 -0
  298. package/templates/skills/quality-assurance/style-detector/CONFLICT_RESOLUTION.md +126 -0
  299. package/templates/skills/quality-assurance/style-detector/EXAMPLES.md +206 -0
  300. package/templates/skills/quality-assurance/style-detector/KEYWORDS.md +207 -0
  301. package/templates/skills/quality-assurance/style-detector/SKILL.md +126 -0
  302. package/templates/skills/quality-assurance/workflow-guide/SKILL.md +381 -0
  303. package/templates/skills/writing-techniques/character-arc/SKILL.md +267 -0
  304. package/templates/skills/writing-techniques/dialogue-techniques/SKILL.md +366 -0
  305. package/templates/skills/writing-techniques/multi-thread-narrative/SKILL.md +553 -0
  306. package/templates/skills/writing-techniques/multi-thread-narrative/experts/thread-analyst.md +226 -0
  307. package/templates/skills/writing-techniques/pacing-control/SKILL.md +377 -0
  308. package/templates/skills/writing-techniques/reader-expectation/SKILL.md +578 -0
  309. package/templates/skills/writing-techniques/reader-expectation/experts/expectation-analyst.md +209 -0
  310. package/templates/skills/writing-techniques/revision-polish/SKILL.md +496 -0
  311. package/templates/skills/writing-techniques/revision-polish/experts/revision-editor.md +221 -0
  312. package/templates/skills/writing-techniques/scene-structure/SKILL.md +361 -0
  313. package/templates/skills/writing-techniques/style-learning/SKILL.md +436 -0
  314. package/templates/specification-example.md +146 -0
  315. package/templates/tracking/character-state.json +78 -0
  316. package/templates/tracking/plot-tracker.json +62 -0
  317. package/templates/tracking/relationships.json +70 -0
  318. package/templates/tracking/timeline.json +49 -0
  319. package/templates/tracking/tracking-log.md +110 -0
  320. package/templates/tracking/validation-rules.json +128 -0
@@ -0,0 +1,95 @@
1
+ # 番茄小说格式规范
2
+
3
+ ## 概述
4
+
5
+ 番茄小说(Tomato Novel)是字节跳动旗下的免费小说平台。本文档定义了从 Markdown 转换为番茄格式的规则。
6
+
7
+ ---
8
+
9
+ ## 转换规则
10
+
11
+ ### 1. 章节标题
12
+
13
+ ```
14
+ 原始 Markdown:# 开端
15
+ 转换结果:1. 开端
16
+
17
+ 原始 Markdown:# 转折
18
+ 转换结果:2. 转折
19
+ ```
20
+
21
+ **规则:**
22
+ - `# 标题` -> `X. 标题`
23
+ - 使用阿拉伯数字编号
24
+ - 标题独占一行
25
+
26
+ ### 2. 正文格式
27
+
28
+ **段落处理:**
29
+ - 段落之间空一行
30
+ - 段落开头不缩进(番茄 App 自动处理缩进)
31
+ - 去除所有 Markdown 格式标记
32
+
33
+ **格式标记去除:**
34
+
35
+ | Markdown | 转换结果 |
36
+ |----------|---------|
37
+ | `**粗体**` | 粗体 |
38
+ | `*斜体*` | 斜体 |
39
+ | `> 引用` | 引用内容 |
40
+ | 其他标记 | 纯文本 |
41
+
42
+ ### 3. 引号
43
+
44
+ - 保持中文引号 `""` `''`
45
+ - 不转换为直角引号
46
+
47
+ ### 4. 场景分隔
48
+
49
+ ```
50
+ 原始:--- 或 ***
51
+ 转换:(空行 + 空行,即两个空行)
52
+ ```
53
+
54
+ ### 5. 编码和输出
55
+
56
+ - 编码:UTF-8(无 BOM)
57
+ - 输出:每章独立 TXT 文件
58
+ - 文件名:`{序号}-{标题}.txt`(如 `001-开端.txt`)
59
+ - 换行符:`\r\n`
60
+
61
+ ---
62
+
63
+ ## 输出格式示例
64
+
65
+ ```
66
+ 1. 开端
67
+
68
+ 李明站在青云宗的山门前,抬头望着那高耸入云的石阶。
69
+
70
+ "你就是新来的弟子?"一个声音从身后传来。
71
+
72
+ 他转过身,看到一个身穿白衣的少女正打量着他。
73
+
74
+ "是的,我叫李明。"他拱手行礼。
75
+ ```
76
+
77
+ ---
78
+
79
+ ## 字数限制
80
+
81
+ - 单章建议:1500-3000 字
82
+ - 单章上限:3000 字(超出需拆分)
83
+ - 拆分策略:在场景分隔处或段落结尾处拆分
84
+
85
+ **超出处理:**
86
+
87
+ ```
88
+ 检测到第 5 章超过 3000 字(实际 4200 字)
89
+
90
+ 自动拆分建议:
91
+ 第 5 章(上):2100 字(在场景分隔处拆分)
92
+ 第 5 章(下):2100 字
93
+
94
+ 是否接受拆分?
95
+ ```
@@ -0,0 +1,265 @@
1
+ # Translate 翻译插件
2
+
3
+ ## 概述
4
+
5
+ 支持小说的多语言翻译(中英日),保持文学性与术语一致性。
6
+
7
+ ## 核心特性
8
+
9
+ - **术语一致性 100%** - 自动应用术语表,确保角色名、地名、专有名词翻译统一
10
+ - **保持文学性** - 非直译,而是文学翻译(意译 + 文化适应)
11
+ - **智能分段翻译** - 每段 ~2000 字 + 上下文,避免超长输入导致质量下降
12
+ - **两遍翻译策略** - 第一遍直译(准确性),第二遍润色(流畅性)
13
+ - **文化适应处理** - 成语、典故、称呼等自动本地化
14
+ - **翻译质量检查** - 自动检测术语一致性、段落对应、长度合理性
15
+
16
+ ## 命令
17
+
18
+ ### /translate - 翻译章节或全书
19
+
20
+ ```bash
21
+ /translate --to en chapter-01.md # 翻译单章为英文
22
+ /translate --to en --all # 翻译全书为英文
23
+ /translate --to ja --chapters 1-10 # 翻译第 1-10 章为日文
24
+ ```
25
+
26
+ **选项:**
27
+ - `--from <语言>` - 源语言(默认自动检测)
28
+ - `--to <语言>` - 目标语言(必需)
29
+ - `--all` - 翻译全书
30
+ - `--chapters <范围>` - 章节范围(如 `1-10`)
31
+ - `--style <风格>` - 翻译风格(literary/casual/formal,默认 literary)
32
+ - `--glossary <文件>` - 指定术语表(默认 .specify/translation/glossary.json)
33
+ - `--skip-existing` - 跳过已翻译章节
34
+
35
+ ### /glossary - 管理术语表
36
+
37
+ ```bash
38
+ /glossary init # 初始化术语表
39
+ /glossary add "角色:李明|Li Ming|リ・ミン" # 添加术语
40
+ /glossary list # 查看全部术语
41
+ /glossary extract # 自动提取专有名词
42
+ /glossary import glossary.csv # 批量导入
43
+ ```
44
+
45
+ ### /translate-preview - 预览翻译效果
46
+
47
+ ```bash
48
+ /translate-preview --to en # 预览当前章节
49
+ /translate-preview --to en --compare-styles # 对比三种风格
50
+ ```
51
+
52
+ ## 支持的语言
53
+
54
+ | 代码 | 语言 | 说明 |
55
+ |------|------|------|
56
+ | `zh` | 中文(简体) | 默认源语言 |
57
+ | `en` | 英文 | 网文出海首选 |
58
+ | `ja` | 日文 | 轻小说市场 |
59
+
60
+ ## 翻译风格
61
+
62
+ | 风格 | 说明 | 适用场景 |
63
+ |------|------|---------|
64
+ | `literary`(默认) | 文学性翻译,保持意境和节奏 | 严肃文学、文青向网文 |
65
+ | `casual` | 口语化翻译,通俗易懂 | 爽文、轻小说 |
66
+ | `formal` | 正式翻译,庄重典雅 | 历史、武侠 |
67
+
68
+ ## 快速开始
69
+
70
+ ### 1. 初始化术语表
71
+
72
+ ```bash
73
+ /glossary init
74
+ ```
75
+
76
+ 这会在 `.specify/translation/` 创建 `glossary.json`,并自动扫描 `spec/knowledge/` 提取角色名和地名。
77
+
78
+ ### 2. 添加核心术语
79
+
80
+ ```bash
81
+ /glossary add "角色:李明|Li Ming"
82
+ /glossary add "地名:青云宗|Azure Cloud Sect"
83
+ /glossary add "功法:青云剑法|Azure Cloud Sword Art"
84
+ ```
85
+
86
+ ### 3. 预览翻译风格
87
+
88
+ ```bash
89
+ /translate-preview --to en --compare-styles
90
+ ```
91
+
92
+ 查看三种翻译风格(literary/casual/formal)的效果,选择最适合的。
93
+
94
+ ### 4. 翻译章节
95
+
96
+ ```bash
97
+ /translate --to en chapter-01.md
98
+ ```
99
+
100
+ ### 5. 翻译全书
101
+
102
+ ```bash
103
+ /translate --to en --all
104
+ ```
105
+
106
+ ## 输出目录结构
107
+
108
+ ```
109
+ stories/[story-name]/translations/
110
+ ├── en/ # 英文版
111
+ │ ├── content/
112
+ │ │ ├── chapter-01.md
113
+ │ │ ├── chapter-02.md
114
+ │ │ └── ...
115
+ │ ├── glossary-used.json # 本次使用的术语快照
116
+ │ └── translation-report.md # 翻译报告
117
+ └── ja/ # 日文版
118
+ └── ...
119
+ ```
120
+
121
+ ## 术语表格式
122
+
123
+ 术语表存储在 `.specify/translation/glossary.json`,格式如下:
124
+
125
+ ```json
126
+ {
127
+ "version": "1.0",
128
+ "story": "my-novel",
129
+ "categories": {
130
+ "characters": [
131
+ {
132
+ "zh": "李明",
133
+ "en": "Li Ming",
134
+ "ja": "リ・ミン",
135
+ "notes": "主角"
136
+ }
137
+ ],
138
+ "places": [...],
139
+ "skills": [...],
140
+ "items": [...],
141
+ "concepts": [...]
142
+ }
143
+ }
144
+ ```
145
+
146
+ ## 翻译质量保证
147
+
148
+ ### 自动检查项
149
+
150
+ - ✅ **术语一致性** - glossary 中的术语 100% 统一
151
+ - ✅ **段落对应** - 原文和译文段落数一致
152
+ - ✅ **长度合理性** - 中→英 +20-50%,中→日 -10-20%
153
+ - ✅ **特殊符号** - 引号、书名号正确转换
154
+ - ✅ **未定义术语** - 检测专有名词并提示添加
155
+
156
+ ### 警告示例
157
+
158
+ ```
159
+ 翻译完成!
160
+
161
+ 术语应用:85/85(100%)
162
+
163
+ ⚠️ 警告:
164
+ 第 3 章第 12 段:检测到未定义术语"天灵根"(出现 5 次)
165
+ 建议:/glossary add "天灵根|Heavenly Spirit Root"
166
+
167
+ 第 7 章:译文长度异常(原文 3200 字,译文 6100 词,+90%)
168
+ 可能原因:过度解释
169
+ 建议:人工检查润色
170
+ ```
171
+
172
+ ## 常见问题
173
+
174
+ ### Q: 如何确保角色名翻译统一?
175
+
176
+ A: 翻译前先用 `/glossary init` 初始化术语表,然后添加所有主要角色名。系统会自动在翻译时应用这些术语。
177
+
178
+ ### Q: 翻译质量如何?
179
+
180
+ A: 使用两遍翻译策略(直译 + 润色)+ 文化适应处理,质量远超 Google 翻译。建议先用 `/translate-preview` 预览效果。
181
+
182
+ ### Q: 可以翻译多长的文本?
183
+
184
+ A: 支持任意长度。系统会自动分段(每段 ~2000 字),并附带上下文,确保翻译质量和连贯性。
185
+
186
+ ### Q: 如何处理文化特定表达?
187
+
188
+ A: AI 会自动识别成语、典故、称呼等,并进行文化适应处理。复杂情况会标记待人工确认。
189
+
190
+ ## 与其他命令集成
191
+
192
+ - **与 /write 集成** - 写完章节后自动提示是否翻译
193
+ - **与 /export 集成** - 导出时可选择翻译版本
194
+ - **与 /analyze 集成** - 分析翻译质量和术语一致性
195
+
196
+ ## 专家
197
+
198
+ ### expert:literary-translator - 文学翻译专家
199
+
200
+ 精通中英日文学翻译,保持文学性与风格一致性。可以直接调用:
201
+
202
+ ```
203
+ @expert:literary-translator 请帮我翻译这段文字...
204
+ ```
205
+
206
+ ## 技术细节
207
+
208
+ ### 智能分段策略
209
+
210
+ ```
211
+ 输入:30 万字小说
212
+
213
+ 按章节分割(每章 3000-5000 字)
214
+
215
+ 每章再按段落分组(每组 ~2000 字)
216
+
217
+ 每组翻译时附带:
218
+ - 前 200 字上下文(已翻译部分)
219
+ - 后 200 字预览(原文)
220
+ - 术语表
221
+
222
+ 两遍翻译:
223
+ 第一遍:直译(准确性优先)
224
+ 第二遍:润色(流畅性优先)
225
+
226
+ 术语一致性检查
227
+
228
+ 输出翻译结果
229
+ ```
230
+
231
+ ### 术语预处理策略
232
+
233
+ ```
234
+ 原文:李明走进青云宗的大门
235
+
236
+ 预处理(术语替换为占位符):
237
+ {{CHAR_001}}走进{{PLACE_001}}的大门
238
+
239
+ 翻译:
240
+ {{CHAR_001}} walked through the gates of {{PLACE_001}}
241
+
242
+ 还原(占位符替换为标准译名):
243
+ Li Ming walked through the gates of Azure Cloud Sect
244
+ ```
245
+
246
+ ## 成功标准
247
+
248
+ **用户反馈目标:**
249
+ - "术语终于统一了,不用自己一个个检查"
250
+ - "翻译质量比 Google 翻译好太多"
251
+ - "几小时翻译完一本书,以前要几个月"
252
+
253
+ **技术指标:**
254
+ - 术语一致性:100%(自动保证)
255
+ - 翻译流畅度:> 8/10(人工评分)
256
+ - 翻译速度:< 2 分钟/千字
257
+ - 信息完整性:> 95%(段落对应)
258
+
259
+ ## 许可证
260
+
261
+ MIT License
262
+
263
+ ## 贡献
264
+
265
+ 欢迎提交 Issue 和 Pull Request!