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,460 @@
1
+ ---
2
+ title: 导出小说 - /export
3
+ description: 将小说导出为可发布格式(EPUB/PDF/网文平台),自动目录、封面和元数据
4
+ ---
5
+
6
+ # 导出小说
7
+
8
+ ## 使用方法
9
+
10
+ ```bash
11
+ /export [选项]
12
+ ```
13
+
14
+ ### 基本用法
15
+
16
+ ```bash
17
+ /export --format epub # 导出 EPUB
18
+ /export --format pdf # 导出 PDF
19
+ /export --format qidian # 导出起点格式
20
+ /export --format tomato # 导出番茄格式
21
+ /export --format jinjiang # 导出晋江格式
22
+ /export --format markdown # 导出 Markdown 合集
23
+ ```
24
+
25
+ ### 选项
26
+
27
+ | 选项 | 说明 | 默认值 |
28
+ |------|------|--------|
29
+ | `--format <格式>` | 导出格式(必需) | - |
30
+ | `--output <路径>` | 输出路径 | stories/[name]/exports/ |
31
+ | `--chapters <范围>` | 导出章节范围(如 `1-10`) | 全部 |
32
+ | `--cover <文件>` | 指定封面图 | 自动生成 |
33
+ | `--template <模板>` | 使用自定义模板 | 默认模板 |
34
+ | `--include-appendix` | 包含附录(角色表、世界观) | false |
35
+ | `--lang <语言>` | 导出语言版本(需先翻译) | 原文 |
36
+
37
+ ### 导出格式
38
+
39
+ | 格式 | 代码 | 适用场景 |
40
+ |------|------|---------|
41
+ | EPUB | `epub` | Kindle, Apple Books, Google Play Books |
42
+ | PDF | `pdf` | 打印、PDF 阅读器 |
43
+ | 起点 | `qidian` | 起点中文网 |
44
+ | 番茄 | `tomato` | 番茄小说 |
45
+ | 晋江 | `jinjiang` | 晋江文学城 |
46
+ | Markdown | `markdown` | 单文件合集备份 |
47
+
48
+ ---
49
+
50
+ ## 功能详解
51
+
52
+ ### 1. EPUB 导出
53
+
54
+ **完整流程:**
55
+
56
+ ```
57
+ 读取章节文件(stories/[name]/content/)
58
+ |
59
+ 读取元数据(metadata.json 或 specification.md)
60
+ |
61
+ 读取封面(cover.jpg 或自动生成)
62
+ |
63
+ Markdown -> XHTML 转换
64
+ |
65
+ 生成目录(nav.xhtml + toc.ncx)
66
+ |
67
+ 生成 content.opf(元数据 + manifest + spine)
68
+ |
69
+ 打包为 EPUB(ZIP 格式)
70
+ |
71
+ 验证(EPUBCheck 规则)
72
+ |
73
+ 输出 .epub 文件
74
+ ```
75
+
76
+ **EPUB 文件结构:**
77
+
78
+ ```
79
+ my-novel.epub (ZIP)
80
+ ├── mimetype # 必须是第一个文件,不压缩
81
+ ├── META-INF/
82
+ │ └── container.xml # 指向 content.opf
83
+ └── OEBPS/
84
+ ├── content.opf # 包文件(元数据 + manifest + spine)
85
+ ├── toc.ncx # 目录(EPUB 2 兼容)
86
+ ├── nav.xhtml # 导航(EPUB 3)
87
+ ├── cover.xhtml # 封面页
88
+ ├── cover.jpg # 封面图片
89
+ ├── stylesheet.css # 样式表
90
+ ├── chapter-01.xhtml # 章节内容
91
+ ├── chapter-02.xhtml
92
+ └── ...
93
+ ```
94
+
95
+ **元数据(Dublin Core):**
96
+
97
+ ```xml
98
+ <dc:title>我的小说</dc:title>
99
+ <dc:creator>作者名</dc:creator>
100
+ <dc:language>zh-CN</dc:language>
101
+ <dc:identifier>urn:uuid:xxx</dc:identifier>
102
+ <dc:publisher>自出版</dc:publisher>
103
+ <dc:date>2025-02-09</dc:date>
104
+ <dc:description>一句话简介...</dc:description>
105
+ <dc:subject>玄幻</dc:subject>
106
+ <dc:rights>作者版权声明</dc:rights>
107
+ ```
108
+
109
+ **Markdown -> XHTML 转换规则:**
110
+
111
+ | Markdown | XHTML | 说明 |
112
+ |----------|-------|------|
113
+ | `# 标题` | `<h1 class="chapter-title">标题</h1>` | 章节标题 |
114
+ | 普通段落 | `<p>段落内容</p>` | 自动缩进 2em |
115
+ | `"对话"` | `<p class="dialogue">"对话"</p>` | 对话段落 |
116
+ | `---` | `<hr class="scene-break" />` | 场景分隔 |
117
+ | `**粗体**` | `<strong>粗体</strong>` | 强调 |
118
+ | `*斜体*` | `<em>斜体</em>` | 强调 |
119
+
120
+ **输出示例:**
121
+
122
+ ```
123
+ 导出 EPUB 完成
124
+
125
+ 文件:my-novel.epub
126
+ 大小:856 KB
127
+ 章节:30 章
128
+ 字数:256,000 字
129
+ 封面:自动生成
130
+ 目录:30 项
131
+ 验证:通过
132
+
133
+ 位置:stories/my-novel/exports/epub/my-novel.epub
134
+ ```
135
+
136
+ ---
137
+
138
+ ### 2. PDF 导出
139
+
140
+ **方案 A - 基础方案(无需外部依赖):**
141
+
142
+ ```
143
+ Markdown -> HTML(内置解析器)
144
+ -> 嵌入 CSS 样式
145
+ -> 生成可打印 HTML 文件
146
+ -> 用户用浏览器"打印为 PDF"
147
+ ```
148
+
149
+ **方案 B - 高级方案(需要 Pandoc):**
150
+
151
+ ```
152
+ Markdown -> Pandoc -> HTML + CSS -> PDF
153
+ -> 或 LaTeX -> PDF(最佳排版质量)
154
+ ```
155
+
156
+ **页面设置预设:**
157
+
158
+ | 预设 | 纸张 | 字体 | 行距 | 适用 |
159
+ |------|------|------|------|------|
160
+ | `a5-print` | A5 (148x210mm) | 思源宋体 | 1.5 | 实体书打印 |
161
+ | `a4-read` | A4 (210x297mm) | 思源黑体 | 1.3 | 屏幕阅读 |
162
+ | `6x9-publish` | 6x9 英寸 | Times New Roman | 1.4 | 国际出版 |
163
+ | `custom` | 自定义 | 自定义 | 自定义 | 高级用户 |
164
+
165
+ **PDF 排版要求:**
166
+
167
+ | 维度 | 默认值 | 可选范围 |
168
+ |------|--------|---------|
169
+ | 纸张 | A5 | A4, B5, 6x9 英寸 |
170
+ | 边距 | 上下 2cm,左右 1.5cm | 自定义 |
171
+ | 字体 | 思源宋体(中文)/ Times New Roman(英文) | 自定义 |
172
+ | 字号 | 11pt | 10-14pt |
173
+ | 行距 | 1.5 倍 | 1.2-2.0 |
174
+ | 页码 | 居中底部 | 右下角 / 无 |
175
+ | 页眉 | 书名 | 章节名 / 无 |
176
+
177
+ **输出示例:**
178
+
179
+ ```
180
+ 导出 PDF 完成
181
+
182
+ 文件:my-novel.pdf
183
+ 大小:3.2 MB
184
+ 页数:324 页
185
+ 纸张:A5
186
+ 字体:思源宋体
187
+
188
+ 位置:stories/my-novel/exports/pdf/my-novel.pdf
189
+ ```
190
+
191
+ ---
192
+
193
+ ### 3. 网文平台格式
194
+
195
+ #### 起点中文网(qidian)
196
+
197
+ ```
198
+ 转换规则:
199
+ 1. 章节标题:# 标题 -> 第X章 标题(自动编号)
200
+ 2. 去除所有 Markdown 格式标记
201
+ 3. 段落空两个全角空格
202
+ 4. 引号转换:""'' -> 「」『』(直角引号)
203
+ 5. 场景分隔:--- -> 空行
204
+ 6. 合并为单文件 TXT,UTF-8 编码
205
+
206
+ 输出:stories/[name]/exports/platforms/qidian/my-novel.txt
207
+ ```
208
+
209
+ #### 番茄小说(tomato)
210
+
211
+ ```
212
+ 转换规则:
213
+ 1. 章节标题:# 标题 -> X. 标题
214
+ 2. 去除 Markdown 格式
215
+ 3. 段落间空一行
216
+ 4. 每章独立文件
217
+ 5. 章节 < 3000 字(超出自动提示拆分)
218
+ 6. UTF-8 编码
219
+
220
+ 输出:
221
+ stories/[name]/exports/platforms/tomato/
222
+ ├── 001-chapter-title.txt
223
+ ├── 002-chapter-title.txt
224
+ └── ...
225
+ ```
226
+
227
+ #### 晋江文学城(jinjiang)
228
+
229
+ ```
230
+ 转换规则:
231
+ 1. Markdown -> 简单 HTML(保留 <b>, <i>, <br>)
232
+ 2. 章节标题自定义格式
233
+ 3. UTF-8 编码
234
+
235
+ 输出:stories/[name]/exports/platforms/jinjiang/my-novel.html
236
+ ```
237
+
238
+ **输出示例(起点格式):**
239
+
240
+ ```
241
+ 导出起点格式完成
242
+
243
+ 文件:my-novel.txt
244
+ 大小:512 KB
245
+ 章节:30 章
246
+ 总字数:256,000 字
247
+ 格式检查:通过
248
+ - 章节标题格式正确
249
+ - 段落空两格
250
+ - 引号已转换为直角引号
251
+
252
+ 位置:stories/my-novel/exports/platforms/qidian/my-novel.txt
253
+ ```
254
+
255
+ ---
256
+
257
+ ### 4. Markdown 合集
258
+
259
+ 将所有章节合并为单个 Markdown 文件,便于备份和分享。
260
+
261
+ ```
262
+ 转换规则:
263
+ 1. 按章节顺序合并
264
+ 2. 每章之间插入分隔线(---)
265
+ 3. 在文件开头添加目录
266
+ 4. 保留原始 Markdown 格式
267
+
268
+ 输出:stories/[name]/exports/my-novel-complete.md
269
+ ```
270
+
271
+ ---
272
+
273
+ ### 5. 自动目录生成
274
+
275
+ 从章节文件自动生成目录:
276
+
277
+ ```markdown
278
+ # 目录
279
+
280
+ - 第一章 开端 .................. 1
281
+ - 第二章 转折 .................. 15
282
+ - 第三章 冲突 .................. 28
283
+ ...
284
+ ```
285
+
286
+ **规则:**
287
+ - 读取每个章节文件的一级标题(`# 标题`)
288
+ - 自动编号(如果原文没有编号)
289
+ - EPUB:嵌入式导航(nav.xhtml + toc.ncx)
290
+ - PDF:带页码的目录
291
+ - TXT:文本目录(无页码)
292
+
293
+ ---
294
+
295
+ ### 6. 附录生成(可选)
296
+
297
+ 当使用 `--include-appendix` 时,自动从 `spec/knowledge/` 提取:
298
+
299
+ ```markdown
300
+ # 附录 A:角色表
301
+
302
+ | 角色 | 身份 | 关系 |
303
+ |------|------|------|
304
+ | 李明 | 青云宗弟子 | 主角 |
305
+ | 苏婉儿 | 天都城才女 | 女主角 |
306
+ | ... | ... | ... |
307
+
308
+ # 附录 B:世界观设定
309
+
310
+ [从 spec/knowledge/ 中的世界观文档提取]
311
+ ```
312
+
313
+ ---
314
+
315
+ ## 输出目录结构
316
+
317
+ ```
318
+ stories/[story-name]/exports/
319
+ ├── epub/
320
+ │ └── my-novel.epub
321
+ ├── pdf/
322
+ │ └── my-novel.pdf
323
+ ├── platforms/
324
+ │ ├── qidian/
325
+ │ │ └── my-novel.txt
326
+ │ ├── tomato/
327
+ │ │ ├── 001-chapter-title.txt
328
+ │ │ └── ...
329
+ │ └── jinjiang/
330
+ │ └── my-novel.html
331
+ ├── my-novel-complete.md # Markdown 合集
332
+ └── metadata.json # 导出时使用的元数据快照
333
+ ```
334
+
335
+ ---
336
+
337
+ ## 与其他命令集成
338
+
339
+ ### 与 /write 集成
340
+
341
+ ```
342
+ 全书写完 ->
343
+ 提示:"恭喜完成全书!是否导出为 EPUB?"
344
+ 用户确认 -> 自动引导:
345
+ 1. /metadata edit(检查元数据)
346
+ 2. /generate-cover(生成封面)
347
+ 3. /export --format epub
348
+ ```
349
+
350
+ ### 与 /translate 集成
351
+
352
+ ```
353
+ /export --format epub --lang en
354
+ -> 检查 translations/en/ 是否存在
355
+ -> 存在:导出英文版 EPUB
356
+ -> 不存在:提示先运行 /translate --to en --all
357
+ ```
358
+
359
+ ### 与 /analyze 集成
360
+
361
+ ```
362
+ /analyze --export-ready
363
+ -> 检查导出准备状态:
364
+ - 所有章节完整
365
+ - 元数据已设置
366
+ - 封面已准备
367
+ - 无严重格式错误
368
+ ```
369
+
370
+ ### 与 /track 集成
371
+
372
+ ```
373
+ /track 显示进度时,包含导出状态:
374
+ 导出状态:
375
+ - EPUB:已导出(2025-02-09)
376
+ - PDF:未导出
377
+ - 起点:未导出
378
+ ```
379
+
380
+ ---
381
+
382
+ ## 导出质量检查
383
+
384
+ ### 导出前自动检查
385
+
386
+ | 检查项 | 说明 | 处理 |
387
+ |--------|------|------|
388
+ | 章节完整性 | 所有预期章节文件是否存在 | 错误 -> 列出缺失章节 |
389
+ | 元数据 | 书名、作者是否设置 | 警告 -> 使用默认值 |
390
+ | 封面 | 封面图是否存在 | 警告 -> 自动生成基础封面 |
391
+ | Markdown 格式 | 标题层级是否正确 | 警告 -> 自动修正 |
392
+ | 特殊字符 | 是否有不兼容字符 | 自动转义 |
393
+ | 文件大小 | 封面图是否过大 | 警告 -> 建议压缩 |
394
+
395
+ ### 导出后验证
396
+
397
+ ```
398
+ 导出完成
399
+
400
+ 质量检查:
401
+ 章节完整性:30/30
402
+ 元数据:完整
403
+ 封面:1600x2400 (OK)
404
+ 格式验证:通过
405
+ 文件大小:856 KB (OK)
406
+
407
+ 警告:
408
+ 第 15 章标题层级异常(## 应该是 #)
409
+ 封面图较大(2.1 MB),建议压缩到 < 1 MB
410
+ ```
411
+
412
+ ---
413
+
414
+ ## 常见陷阱
415
+
416
+ ### 1. 封面尺寸不对
417
+
418
+ **症状**:EPUB 封面在阅读器中显示被拉伸或裁剪
419
+ **解决**:使用 2:3 比例(推荐 1600x2400 像素),可通过 `/generate-cover` 自动处理
420
+
421
+ ### 2. PDF 文件过大
422
+
423
+ **症状**:PDF 超过 10MB
424
+ **原因**:封面图片未压缩
425
+ **解决**:压缩封面图到 < 1MB,或使用纯文本封面
426
+
427
+ ### 3. 网文平台上传被拒
428
+
429
+ **症状**:格式不符合平台要求
430
+ **解决**:使用对应平台的专用格式命令(如 `--format qidian`),系统会自动处理格式规范
431
+
432
+ ### 4. 目录显示不正确
433
+
434
+ **症状**:EPUB 目录缺少章节
435
+ **原因**:章节文件缺少一级标题
436
+ **解决**:确保每个章节文件有 `# 章节标题`
437
+
438
+ ### 5. 中文字体不显示
439
+
440
+ **症状**:PDF 中文字显示为方块
441
+ **原因**:系统缺少中文字体
442
+ **解决**:安装思源宋体(Source Han Serif),或使用 EPUB 格式(阅读器自带字体)
443
+
444
+ ---
445
+
446
+ ## 检查清单
447
+
448
+ **导出前:**
449
+ - [ ] 所有章节已完成?
450
+ - [ ] 元数据已设置?(`/metadata edit`)
451
+ - [ ] 封面已准备?(`/generate-cover`)
452
+ - [ ] 章节顺序正确?
453
+ - [ ] 章节标题格式统一(`# 标题`)?
454
+
455
+ **导出后:**
456
+ - [ ] 文件能正常打开?
457
+ - [ ] 目录显示正确?
458
+ - [ ] 封面显示正常?
459
+ - [ ] 排版美观?
460
+ - [ ] 字数统计正确?
@@ -0,0 +1,256 @@
1
+ ---
2
+ title: 封面生成 - /generate-cover
3
+ description: 生成或上传小说封面图片
4
+ ---
5
+
6
+ # 封面生成
7
+
8
+ ## 使用方法
9
+
10
+ ```bash
11
+ /generate-cover [选项]
12
+ ```
13
+
14
+ ### 基本用法
15
+
16
+ ```bash
17
+ /generate-cover # 自动生成基础封面
18
+ /generate-cover --upload cover.jpg # 上传自定义封面
19
+ /generate-cover --template modern # 使用指定模板
20
+ /generate-cover --template classic --color "#2c3e50" # 指定模板和颜色
21
+ ```
22
+
23
+ ### 选项
24
+
25
+ | 选项 | 说明 | 默认值 |
26
+ |------|------|--------|
27
+ | `--upload <文件>` | 上传自定义封面图片 | - |
28
+ | `--template <模板>` | 选择封面模板 | minimal |
29
+ | `--color <颜色>` | 背景颜色(HEX) | 模板默认色 |
30
+ | `--output <路径>` | 输出路径 | stories/[name]/cover.jpg |
31
+
32
+ ---
33
+
34
+ ## 封面模板
35
+
36
+ | 模板 | 风格 | 默认颜色 | 适用题材 |
37
+ |------|------|---------|---------|
38
+ | `modern` | 现代简约,大字标题,渐变背景 | #1a1a2e -> #16213e | 都市、现代、科幻 |
39
+ | `classic` | 古典风格,竖排书名,纹理背景 | #2c1810 | 古代、武侠、仙侠 |
40
+ | `minimal` | 极简风格,白底黑字,留白多 | #ffffff | 通用、文学 |
41
+ | `dark` | 暗色系,粗体标题,压迫感 | #0d0d0d | 悬疑、恐怖、黑暗 |
42
+
43
+ ### 模板详细说明
44
+
45
+ #### modern - 现代简约
46
+
47
+ ```
48
+ ┌─────────────────────┐
49
+ │ │
50
+ │ ▓▓▓▓▓▓▓▓▓▓▓▓▓ │ 渐变背景
51
+ │ │
52
+ │ │
53
+ │ 我 的 小 说 │ 书名(大号,居中)
54
+ │ │
55
+ │ ── 副标题 ── │ 副标题(可选)
56
+ │ │
57
+ │ │
58
+ │ │
59
+ │ 作 者 名 │ 作者名(底部)
60
+ │ │
61
+ └─────────────────────┘
62
+ ```
63
+
64
+ #### classic - 古典风格
65
+
66
+ ```
67
+ ┌─────────────────────┐
68
+ │ ╔═══════════════╗ │
69
+ │ ║ ║ │ 纹理边框
70
+ │ ║ 我 ║ │
71
+ │ ║ 的 ║ │ 竖排书名
72
+ │ ║ 小 ║ │
73
+ │ ║ 说 ║ │
74
+ │ ║ ║ │
75
+ │ ║ ───── ║ │
76
+ │ ║ 作者名 ║ │
77
+ │ ║ ║ │
78
+ │ ╚═══════════════╝ │
79
+ └─────────────────────┘
80
+ ```
81
+
82
+ #### minimal - 极简风格
83
+
84
+ ```
85
+ ┌─────────────────────┐
86
+ │ │
87
+ │ │
88
+ │ │
89
+ │ │
90
+ │ 我的小说 │ 书名(左对齐或居中)
91
+ │ ───────── │ 分隔线
92
+ │ 作者名 │ 作者名
93
+ │ │
94
+ │ │
95
+ │ │
96
+ │ │
97
+ │ │
98
+ └─────────────────────┘
99
+ ```
100
+
101
+ #### dark - 暗色系
102
+
103
+ ```
104
+ ┌─────────────────────┐
105
+ │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
106
+ │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ 暗色纹理背景
107
+ │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
108
+ │ │
109
+ │ 我 的 小 说 │ 书名(粗体,白色)
110
+ │ │
111
+ │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
112
+ │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
113
+ │ │
114
+ │ 作 者 名 │ 作者名(灰色)
115
+ │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
116
+ │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
117
+ └─────────────────────┘
118
+ ```
119
+
120
+ ---
121
+
122
+ ## 封面要求
123
+
124
+ | 维度 | 推荐值 | 说明 |
125
+ |------|--------|------|
126
+ | 尺寸 | 1600 x 2400 像素 | 2:3 比例(EPUB 标准) |
127
+ | 格式 | JPG 或 PNG | JPG 较小,PNG 更清晰 |
128
+ | 大小 | < 1 MB | 太大影响 EPUB 文件大小 |
129
+ | 色彩 | RGB | 不使用 CMYK(CMYK 用于印刷) |
130
+ | 分辨率 | >= 300 DPI | 适合打印(72 DPI 仅适合屏幕) |
131
+
132
+ ---
133
+
134
+ ## 上传封面
135
+
136
+ ### 流程
137
+
138
+ ```
139
+ /generate-cover --upload ~/Desktop/my-cover.jpg
140
+ |
141
+ 验证图片:
142
+ - 格式:JPG/PNG?
143
+ - 尺寸:接近 2:3?
144
+ - 大小:< 1 MB?
145
+ - 色彩:RGB?
146
+ |
147
+ 通过 -> 复制到 stories/[name]/cover.jpg
148
+ 不通过 -> 提示问题和建议
149
+ ```
150
+
151
+ ### 验证规则
152
+
153
+ | 检查项 | 通过条件 | 不通过处理 |
154
+ |--------|---------|-----------|
155
+ | 格式 | JPG 或 PNG | 错误:请转换格式 |
156
+ | 比例 | 2:3 +/- 5% | 警告:建议裁剪为 2:3 |
157
+ | 大小 | < 1 MB | 警告:建议压缩 |
158
+ | 最小尺寸 | >= 800x1200 | 警告:分辨率偏低 |
159
+ | 最大尺寸 | <= 4000x6000 | 警告:建议缩小 |
160
+
161
+ ### 示例
162
+
163
+ ```
164
+ /generate-cover --upload ~/Desktop/my-cover.jpg
165
+
166
+ 封面验证:
167
+ 格式:JPG
168
+ 尺寸:1600x2400 (2:3)
169
+ 大小:450 KB
170
+ 色彩:RGB
171
+
172
+ 已保存到:stories/my-novel/cover.jpg
173
+ ```
174
+
175
+ ---
176
+
177
+ ## 自动生成封面
178
+
179
+ ### 流程
180
+
181
+ ```
182
+ /generate-cover --template modern
183
+ |
184
+ 读取元数据:
185
+ - 书名(metadata.json 或 specification.md)
186
+ - 副标题(可选)
187
+ - 作者名
188
+ |
189
+ 应用模板:
190
+ - 背景色/渐变
191
+ - 文字排版
192
+ - 装饰元素
193
+ |
194
+ 生成 1600x2400 图片
195
+ |
196
+ 保存到 stories/[name]/cover.jpg
197
+ ```
198
+
199
+ ### 生成封面的元素
200
+
201
+ | 元素 | 来源 | 必需 |
202
+ |------|------|------|
203
+ | 书名 | metadata.json -> title | 是 |
204
+ | 副标题 | metadata.json -> subtitle | 否 |
205
+ | 作者名 | metadata.json -> author | 是 |
206
+ | 背景色 | 模板默认或 `--color` 指定 | 自动 |
207
+
208
+ ### 示例
209
+
210
+ ```
211
+ /generate-cover --template modern
212
+
213
+ 封面生成完成:
214
+ 模板:modern
215
+ 书名:我的小说
216
+ 作者:作者名
217
+ 尺寸:1600x2400
218
+ 大小:128 KB
219
+
220
+ 已保存到:stories/my-novel/cover.jpg
221
+ ```
222
+
223
+ ---
224
+
225
+ ## 封面与导出格式的关系
226
+
227
+ | 格式 | 封面用途 | 要求 |
228
+ |------|---------|------|
229
+ | EPUB | 嵌入电子书,阅读器显示 | 必需,1600x2400 |
230
+ | PDF | 第一页封面 | 推荐,按纸张尺寸缩放 |
231
+ | 网文平台 | 不嵌入,平台单独上传 | 不需要 |
232
+ | Markdown | 不嵌入 | 不需要 |
233
+
234
+ ---
235
+
236
+ ## 常见陷阱
237
+
238
+ ### 1. 封面比例不对
239
+
240
+ **症状**:在阅读器中被拉伸或出现黑边
241
+ **解决**:严格使用 2:3 比例(1600x2400),上传时系统会自动检测
242
+
243
+ ### 2. 封面文件过大
244
+
245
+ **症状**:EPUB 文件超过 5MB
246
+ **解决**:压缩封面到 < 1MB,JPG 质量 80% 通常足够
247
+
248
+ ### 3. 文字看不清
249
+
250
+ **症状**:自动生成的封面文字与背景对比度不够
251
+ **解决**:选择与书名颜色对比明显的背景色,或换用其他模板
252
+
253
+ ### 4. 打印封面模糊
254
+
255
+ **症状**:打印出来的封面不清晰
256
+ **解决**:使用 >= 300 DPI 的高分辨率图片,推荐 2400x3600 或更高