@tomako/tools-runtime 0.1.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 (531) hide show
  1. package/README.md +12 -0
  2. package/package.json +629 -0
  3. package/src/assets/icons/brands/social/bluesky-icon.tsx +9 -0
  4. package/src/assets/icons/brands/social/facebook-icon.tsx +9 -0
  5. package/src/assets/icons/brands/social/index.ts +8 -0
  6. package/src/assets/icons/brands/social/instagram-icon.tsx +9 -0
  7. package/src/assets/icons/brands/social/linkedin-icon.tsx +9 -0
  8. package/src/assets/icons/brands/social/threads-icon.tsx +9 -0
  9. package/src/assets/icons/brands/social/tiktok-icon.tsx +10 -0
  10. package/src/assets/icons/brands/social/x-icon.tsx +9 -0
  11. package/src/assets/icons/brands/social/youtube-icon.tsx +9 -0
  12. package/src/assets/icons/social-profile/facebook-icon.tsx +12 -0
  13. package/src/assets/icons/social-profile/index.ts +29 -0
  14. package/src/assets/icons/social-profile/instagram-icon.tsx +18 -0
  15. package/src/assets/icons/social-profile/linkedin-icon.tsx +12 -0
  16. package/src/assets/icons/social-profile/tiktok-icon.tsx +12 -0
  17. package/src/assets/icons/social-profile/x-icon.tsx +13 -0
  18. package/src/assets/icons/social-profile/youtube-icon.tsx +12 -0
  19. package/src/components/tools/engine/form-builder.tsx +219 -0
  20. package/src/components/tools/engine/package-widget-loader.tsx +38 -0
  21. package/src/components/tools/engine/package-widget-runtime.tsx +409 -0
  22. package/src/components/tools/engine/package-widget.tsx +77 -0
  23. package/src/components/tools/engine/result-view.tsx +596 -0
  24. package/src/components/tools/engine/use-legacy-llm-task.ts +64 -0
  25. package/src/components/tools/engine/use-tool-task.ts +195 -0
  26. package/src/components/tools/market-forecast-report.tsx +1150 -0
  27. package/src/components/tools/registry.ts +13 -0
  28. package/src/components/tools/workspace/index.ts +39 -0
  29. package/src/components/tools/workspace/tool-action-bar.tsx +99 -0
  30. package/src/components/tools/workspace/tool-empty-panel.tsx +32 -0
  31. package/src/components/tools/workspace/tool-error-panel.tsx +40 -0
  32. package/src/components/tools/workspace/tool-field.tsx +124 -0
  33. package/src/components/tools/workspace/tool-file-upload.tsx +112 -0
  34. package/src/components/tools/workspace/tool-form-section.tsx +21 -0
  35. package/src/components/tools/workspace/tool-form-shell.tsx +36 -0
  36. package/src/components/tools/workspace/tool-loading-panel.tsx +269 -0
  37. package/src/components/tools/workspace/tool-option-row.tsx +97 -0
  38. package/src/components/tools/workspace/tool-preview-panel.tsx +31 -0
  39. package/src/components/tools/workspace/tool-result-actions.tsx +67 -0
  40. package/src/components/tools/workspace/tool-result-file-actions.ts +31 -0
  41. package/src/components/tools/workspace/tool-result-header.tsx +39 -0
  42. package/src/components/tools/workspace/tool-status.tsx +13 -0
  43. package/src/components/tools/workspace/tool-workspace-layout.tsx +226 -0
  44. package/src/constants/LKS.ts +29 -0
  45. package/src/constants/related-tools.ts +18 -0
  46. package/src/constants/social-profile-kit.ts +284 -0
  47. package/src/constants/tool-assets.ts +7 -0
  48. package/src/env.d.ts +3 -0
  49. package/src/features/tools/_templates/standard-tool.container.tsx +90 -0
  50. package/src/features/tools/app-icon-resizer/app-icon-resizer.container.tsx +11 -0
  51. package/src/features/tools/app-icon-resizer/app-icon-resizer.spec.ts +15 -0
  52. package/src/features/tools/app-icon-resizer/widget/app-icon-resizer.tsx +444 -0
  53. package/src/features/tools/app-icon-resizer/widget/constants.ts +19 -0
  54. package/src/features/tools/app-icon-resizer/widget/helpers.ts +314 -0
  55. package/src/features/tools/app-icon-resizer/widget/index.ts +7 -0
  56. package/src/features/tools/app-icon-resizer/widget/platform-icons.tsx +59 -0
  57. package/src/features/tools/app-icon-resizer/widget/preview-dialogs.tsx +139 -0
  58. package/src/features/tools/app-icon-resizer/widget/result-shell.tsx +165 -0
  59. package/src/features/tools/app-icon-resizer/widget/types.ts +36 -0
  60. package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.container.tsx +108 -0
  61. package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.spec.ts +14 -0
  62. package/src/features/tools/app-store-screenshot-generator/config.ts +3 -0
  63. package/src/features/tools/app-store-screenshot-generator/widget/app-store-screenshot-generator.tsx +1250 -0
  64. package/src/features/tools/app-store-screenshot-generator/widget/asset-slots.ts +76 -0
  65. package/src/features/tools/app-store-screenshot-generator/widget/constants.ts +43 -0
  66. package/src/features/tools/app-store-screenshot-generator/widget/form-controls.tsx +214 -0
  67. package/src/features/tools/app-store-screenshot-generator/widget/generation.ts +528 -0
  68. package/src/features/tools/app-store-screenshot-generator/widget/index.ts +7 -0
  69. package/src/features/tools/app-store-screenshot-generator/widget/input-media.ts +175 -0
  70. package/src/features/tools/app-store-screenshot-generator/widget/types.ts +60 -0
  71. package/src/features/tools/app-store-screenshot-generator/widget/zip.ts +119 -0
  72. package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.container.tsx +135 -0
  73. package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.spec.ts +15 -0
  74. package/src/features/tools/build-in-public-story-generator/widget/build-in-public-story-generator.tsx +314 -0
  75. package/src/features/tools/build-in-public-story-generator/widget/constants.ts +3 -0
  76. package/src/features/tools/build-in-public-story-generator/widget/helpers.ts +25 -0
  77. package/src/features/tools/build-in-public-story-generator/widget/index.ts +7 -0
  78. package/src/features/tools/build-in-public-story-generator/widget/preview-panels.tsx +58 -0
  79. package/src/features/tools/build-in-public-story-generator/widget/result-shell.tsx +164 -0
  80. package/src/features/tools/build-in-public-story-generator/widget/types.ts +6 -0
  81. package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.container.tsx +30 -0
  82. package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.spec.ts +15 -0
  83. package/src/features/tools/cold-start-channel-selector/widget/cold-start-channel-selector.tsx +417 -0
  84. package/src/features/tools/cold-start-channel-selector/widget/constants.ts +46 -0
  85. package/src/features/tools/cold-start-channel-selector/widget/form-controls.tsx +41 -0
  86. package/src/features/tools/cold-start-channel-selector/widget/helpers.ts +75 -0
  87. package/src/features/tools/cold-start-channel-selector/widget/index.ts +7 -0
  88. package/src/features/tools/cold-start-channel-selector/widget/preview-panels.tsx +250 -0
  89. package/src/features/tools/cold-start-channel-selector/widget/result-shell.tsx +199 -0
  90. package/src/features/tools/cold-start-channel-selector/widget/types.ts +21 -0
  91. package/src/features/tools/commercial-bp-generator/commercial-bp-generator.container.tsx +102 -0
  92. package/src/features/tools/commercial-bp-generator/commercial-bp-generator.spec.ts +14 -0
  93. package/src/features/tools/commercial-bp-generator/widget/commercial-bp-generator.tsx +676 -0
  94. package/src/features/tools/commercial-bp-generator/widget/constants.ts +32 -0
  95. package/src/features/tools/commercial-bp-generator/widget/helpers.ts +147 -0
  96. package/src/features/tools/commercial-bp-generator/widget/index.ts +7 -0
  97. package/src/features/tools/commercial-bp-generator/widget/result-shell.tsx +271 -0
  98. package/src/features/tools/commercial-bp-generator/widget/style-option.tsx +54 -0
  99. package/src/features/tools/commercial-bp-generator/widget/types.ts +33 -0
  100. package/src/features/tools/community-feedback-inbox/community-feedback-inbox.container.tsx +126 -0
  101. package/src/features/tools/community-feedback-inbox/community-feedback-inbox.spec.ts +15 -0
  102. package/src/features/tools/community-feedback-inbox/widget/community-feedback-inbox.tsx +271 -0
  103. package/src/features/tools/community-feedback-inbox/widget/constants.ts +3 -0
  104. package/src/features/tools/community-feedback-inbox/widget/helpers.ts +28 -0
  105. package/src/features/tools/community-feedback-inbox/widget/index.ts +7 -0
  106. package/src/features/tools/community-feedback-inbox/widget/preview-panels.tsx +92 -0
  107. package/src/features/tools/community-feedback-inbox/widget/result-shell.tsx +266 -0
  108. package/src/features/tools/community-feedback-inbox/widget/types.ts +6 -0
  109. package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.container.tsx +124 -0
  110. package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.spec.ts +15 -0
  111. package/src/features/tools/community-pain-point-extractor/widget/community-pain-point-extractor.tsx +404 -0
  112. package/src/features/tools/community-pain-point-extractor/widget/constants.ts +41 -0
  113. package/src/features/tools/community-pain-point-extractor/widget/helpers.ts +76 -0
  114. package/src/features/tools/community-pain-point-extractor/widget/index.ts +8 -0
  115. package/src/features/tools/community-pain-point-extractor/widget/progress-panels.tsx +251 -0
  116. package/src/features/tools/community-pain-point-extractor/widget/result-shell.tsx +478 -0
  117. package/src/features/tools/community-pain-point-extractor/widget/types.ts +33 -0
  118. package/src/features/tools/community-post-risk-checker/community-post-risk-checker.package.ts +792 -0
  119. package/src/features/tools/competitor-analysis/competitor-analysis.container.tsx +136 -0
  120. package/src/features/tools/competitor-analysis/competitor-analysis.spec.ts +15 -0
  121. package/src/features/tools/competitor-analysis/widget/competitor-analysis.tsx +241 -0
  122. package/src/features/tools/competitor-analysis/widget/constants.ts +9 -0
  123. package/src/features/tools/competitor-analysis/widget/index.ts +7 -0
  124. package/src/features/tools/competitor-analysis/widget/preview-panels.tsx +60 -0
  125. package/src/features/tools/competitor-analysis/widget/result-shell.tsx +418 -0
  126. package/src/features/tools/competitor-analysis/widget/types.ts +13 -0
  127. package/src/features/tools/disclaimer-generator/disclaimer-generator.package.ts +339 -0
  128. package/src/features/tools/email-template-generator/email-template-generator.container.tsx +224 -0
  129. package/src/features/tools/email-template-generator/email-template-generator.spec.ts +14 -0
  130. package/src/features/tools/email-template-generator/widget/email-template-generator.tsx +358 -0
  131. package/src/features/tools/email-template-generator/widget/helpers.ts +39 -0
  132. package/src/features/tools/email-template-generator/widget/index.ts +7 -0
  133. package/src/features/tools/email-template-generator/widget/preview-panel.tsx +311 -0
  134. package/src/features/tools/email-template-generator/widget/result-text-block.tsx +7 -0
  135. package/src/features/tools/email-template-generator/widget/types.ts +24 -0
  136. package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.container.tsx +75 -0
  137. package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.spec.ts +15 -0
  138. package/src/features/tools/gtm-readiness-checklist/widget/gtm-readiness-checklist.tsx +122 -0
  139. package/src/features/tools/gtm-readiness-checklist/widget/index.ts +7 -0
  140. package/src/features/tools/investor-matching-planner/investor-matching-planner.package.ts +869 -0
  141. package/src/features/tools/koko-codex-assistant/koko-codex-assistant.container.tsx +151 -0
  142. package/src/features/tools/koko-codex-assistant/koko-codex-assistant.spec.ts +14 -0
  143. package/src/features/tools/koko-codex-assistant/widget/index.ts +7 -0
  144. package/src/features/tools/koko-codex-assistant/widget/koko-codex-assistant-download.tsx +192 -0
  145. package/src/features/tools/logo-generator/logo-generator.container.tsx +112 -0
  146. package/src/features/tools/logo-generator/logo-generator.spec.ts +15 -0
  147. package/src/features/tools/logo-generator/widget/index.ts +7 -0
  148. package/src/features/tools/logo-generator/widget/logo-generator.tsx +1244 -0
  149. package/src/features/tools/market-forecast-report/market-forecast-report.container.tsx +73 -0
  150. package/src/features/tools/market-forecast-report/market-forecast-report.spec.ts +15 -0
  151. package/src/features/tools/million-user-growth-test/million-user-growth-test.container.tsx +123 -0
  152. package/src/features/tools/million-user-growth-test/million-user-growth-test.spec.ts +14 -0
  153. package/src/features/tools/million-user-growth-test/widget/index.ts +7 -0
  154. package/src/features/tools/million-user-growth-test/widget/million-user-growth-test.tsx +433 -0
  155. package/src/features/tools/module-loader.ts +107 -0
  156. package/src/features/tools/og-image-generator/og-image-generator.container.tsx +86 -0
  157. package/src/features/tools/og-image-generator/og-image-generator.spec.ts +14 -0
  158. package/src/features/tools/og-image-generator/widget/constants.ts +38 -0
  159. package/src/features/tools/og-image-generator/widget/form-fields.tsx +240 -0
  160. package/src/features/tools/og-image-generator/widget/index.ts +7 -0
  161. package/src/features/tools/og-image-generator/widget/og-image-generator.tsx +742 -0
  162. package/src/features/tools/og-image-generator/widget/preview-panel.tsx +305 -0
  163. package/src/features/tools/og-image-generator/widget/types.ts +1 -0
  164. package/src/features/tools/package/direct-models.ts +20 -0
  165. package/src/features/tools/package/form.ts +38 -0
  166. package/src/features/tools/package/l10n.ts +22 -0
  167. package/src/features/tools/package/package-container.tsx +285 -0
  168. package/src/features/tools/package/package-loaders.ts +22 -0
  169. package/src/features/tools/package/package-registry.ts +36 -0
  170. package/src/features/tools/package/result-markdown.ts +142 -0
  171. package/src/features/tools/package/schema.ts +379 -0
  172. package/src/features/tools/package/to-tool-module.ts +20 -0
  173. package/src/features/tools/package/to-tool-spec.ts +52 -0
  174. package/src/features/tools/package/types.ts +381 -0
  175. package/src/features/tools/pitch-deck-generator/pitch-deck-generator.container.tsx +175 -0
  176. package/src/features/tools/pitch-deck-generator/pitch-deck-generator.spec.ts +14 -0
  177. package/src/features/tools/pitch-deck-generator/pitch-deck-library-data.ts +476 -0
  178. package/src/features/tools/pitch-deck-generator/pitch-deck-library.tsx +159 -0
  179. package/src/features/tools/pitch-deck-generator/widget/ceremony-line.tsx +27 -0
  180. package/src/features/tools/pitch-deck-generator/widget/constants.ts +27 -0
  181. package/src/features/tools/pitch-deck-generator/widget/index.ts +7 -0
  182. package/src/features/tools/pitch-deck-generator/widget/pitch-deck-generator.tsx +763 -0
  183. package/src/features/tools/pitch-deck-generator/widget/result-helpers.ts +102 -0
  184. package/src/features/tools/pitch-deck-generator/widget/result-shell.tsx +263 -0
  185. package/src/features/tools/pitch-deck-generator/widget/slide-frame.tsx +106 -0
  186. package/src/features/tools/pitch-deck-generator/widget/slide-lightbox.tsx +149 -0
  187. package/src/features/tools/pitch-deck-generator/widget/style-option.tsx +54 -0
  188. package/src/features/tools/pitch-deck-generator/widget/types.ts +44 -0
  189. package/src/features/tools/product-agreement-generator/product-agreement-generator.container.tsx +137 -0
  190. package/src/features/tools/product-agreement-generator/product-agreement-generator.spec.ts +14 -0
  191. package/src/features/tools/product-agreement-generator/widget/constants.ts +27 -0
  192. package/src/features/tools/product-agreement-generator/widget/form-controls.tsx +218 -0
  193. package/src/features/tools/product-agreement-generator/widget/helpers.ts +68 -0
  194. package/src/features/tools/product-agreement-generator/widget/index.ts +7 -0
  195. package/src/features/tools/product-agreement-generator/widget/product-agreement-generator.tsx +671 -0
  196. package/src/features/tools/product-agreement-generator/widget/result-shell.tsx +473 -0
  197. package/src/features/tools/product-agreement-generator/widget/types.ts +89 -0
  198. package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.container.tsx +122 -0
  199. package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.spec.ts +15 -0
  200. package/src/features/tools/product-hunt-launch-planner/widget/constants.ts +5 -0
  201. package/src/features/tools/product-hunt-launch-planner/widget/helpers.ts +44 -0
  202. package/src/features/tools/product-hunt-launch-planner/widget/index.ts +7 -0
  203. package/src/features/tools/product-hunt-launch-planner/widget/preview-panel.tsx +143 -0
  204. package/src/features/tools/product-hunt-launch-planner/widget/product-hunt-launch-planner.tsx +504 -0
  205. package/src/features/tools/product-hunt-launch-planner/widget/result-shell.tsx +176 -0
  206. package/src/features/tools/product-hunt-launch-planner/widget/types.ts +20 -0
  207. package/src/features/tools/product-name-generator/product-name-generator.container.tsx +14 -0
  208. package/src/features/tools/product-name-generator/product-name-generator.spec.ts +15 -0
  209. package/src/features/tools/product-name-generator/widget/candidate-card.tsx +273 -0
  210. package/src/features/tools/product-name-generator/widget/constants.ts +21 -0
  211. package/src/features/tools/product-name-generator/widget/form-controls.tsx +136 -0
  212. package/src/features/tools/product-name-generator/widget/helpers.ts +41 -0
  213. package/src/features/tools/product-name-generator/widget/index.ts +7 -0
  214. package/src/features/tools/product-name-generator/widget/product-name-generator.tsx +776 -0
  215. package/src/features/tools/product-name-generator/widget/types.ts +36 -0
  216. package/src/features/tools/product-positioning-analyzer/product-positioning-analyzer.package.ts +801 -0
  217. package/src/features/tools/product-poster-generator/product-poster-generator.container.tsx +14 -0
  218. package/src/features/tools/product-poster-generator/product-poster-generator.spec.ts +15 -0
  219. package/src/features/tools/product-poster-generator/widget/constants.ts +125 -0
  220. package/src/features/tools/product-poster-generator/widget/form-controls.tsx +204 -0
  221. package/src/features/tools/product-poster-generator/widget/helpers.ts +155 -0
  222. package/src/features/tools/product-poster-generator/widget/index.ts +7 -0
  223. package/src/features/tools/product-poster-generator/widget/product-poster-generator.tsx +663 -0
  224. package/src/features/tools/product-poster-generator/widget/result-shell.tsx +12 -0
  225. package/src/features/tools/product-poster-generator/widget/types.ts +83 -0
  226. package/src/features/tools/product-ui-generator/product-ui-generator.container.tsx +116 -0
  227. package/src/features/tools/product-ui-generator/product-ui-generator.spec.ts +14 -0
  228. package/src/features/tools/product-ui-generator/widget/constants.ts +18 -0
  229. package/src/features/tools/product-ui-generator/widget/helpers.ts +11 -0
  230. package/src/features/tools/product-ui-generator/widget/index.ts +7 -0
  231. package/src/features/tools/product-ui-generator/widget/preview-panels.tsx +73 -0
  232. package/src/features/tools/product-ui-generator/widget/product-ui-generator.tsx +304 -0
  233. package/src/features/tools/product-ui-generator/widget/result-shell.tsx +118 -0
  234. package/src/features/tools/product-ui-generator/widget/types.ts +9 -0
  235. package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.container.tsx +113 -0
  236. package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.spec.ts +15 -0
  237. package/src/features/tools/reddit-pain-point-finder/widget/constants.ts +5 -0
  238. package/src/features/tools/reddit-pain-point-finder/widget/index.ts +7 -0
  239. package/src/features/tools/reddit-pain-point-finder/widget/preview-panels.tsx +73 -0
  240. package/src/features/tools/reddit-pain-point-finder/widget/reddit-pain-point-finder.tsx +281 -0
  241. package/src/features/tools/reddit-pain-point-finder/widget/result-shell.tsx +203 -0
  242. package/src/features/tools/reddit-pain-point-finder/widget/types.ts +15 -0
  243. package/src/features/tools/registry.ts +288 -0
  244. package/src/features/tools/runtime-registry.ts +186 -0
  245. package/src/features/tools/shared/create-guide-stack-container.tsx +176 -0
  246. package/src/features/tools/shared/create-standard-landing-container.tsx +163 -0
  247. package/src/features/tools/shared/tool-content-sections.tsx +659 -0
  248. package/src/features/tools/shared/tool-cta.tsx +66 -0
  249. package/src/features/tools/shared/tool-draft-view.tsx +53 -0
  250. package/src/features/tools/shared/tool-guide-section.tsx +191 -0
  251. package/src/features/tools/shared/tool-handoff.tsx +38 -0
  252. package/src/features/tools/shared/tool-mcp-badge.tsx +23 -0
  253. package/src/features/tools/shared/tool-message-translator.ts +37 -0
  254. package/src/features/tools/shared/tool-page-shell.tsx +348 -0
  255. package/src/features/tools/shared/tool-standard-generation-steps.tsx +52 -0
  256. package/src/features/tools/shared/tool-standard-landing-sections.tsx +447 -0
  257. package/src/features/tools/shared/tool-ui-registry.ts +237 -0
  258. package/src/features/tools/shared/tool-widget-slot.tsx +29 -0
  259. package/src/features/tools/slogan-generator/slogan-generator.package.ts +641 -0
  260. package/src/features/tools/social-listening-research-report/social-listening-research-report.container.tsx +124 -0
  261. package/src/features/tools/social-listening-research-report/social-listening-research-report.spec.ts +15 -0
  262. package/src/features/tools/social-listening-research-report/widget/constants.ts +4 -0
  263. package/src/features/tools/social-listening-research-report/widget/index.ts +7 -0
  264. package/src/features/tools/social-listening-research-report/widget/preview-panels.tsx +73 -0
  265. package/src/features/tools/social-listening-research-report/widget/result-shell.tsx +216 -0
  266. package/src/features/tools/social-listening-research-report/widget/social-listening-research-report.tsx +303 -0
  267. package/src/features/tools/social-listening-research-report/widget/types.ts +15 -0
  268. package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.container.tsx +123 -0
  269. package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.spec.ts +15 -0
  270. package/src/features/tools/social-platform-asset-adapter/widget/constants.ts +43 -0
  271. package/src/features/tools/social-platform-asset-adapter/widget/helpers.ts +249 -0
  272. package/src/features/tools/social-platform-asset-adapter/widget/index.ts +7 -0
  273. package/src/features/tools/social-platform-asset-adapter/widget/result-shell.tsx +350 -0
  274. package/src/features/tools/social-platform-asset-adapter/widget/section-heading.tsx +18 -0
  275. package/src/features/tools/social-platform-asset-adapter/widget/social-platform-asset-adapter.tsx +641 -0
  276. package/src/features/tools/social-platform-asset-adapter/widget/types.ts +40 -0
  277. package/src/features/tools/social-profile-kit/social-profile-kit.container.tsx +177 -0
  278. package/src/features/tools/social-profile-kit/social-profile-kit.spec.ts +15 -0
  279. package/src/features/tools/social-profile-kit/widget/context-editor.tsx +171 -0
  280. package/src/features/tools/social-profile-kit/widget/generation-runtime.ts +281 -0
  281. package/src/features/tools/social-profile-kit/widget/index.ts +7 -0
  282. package/src/features/tools/social-profile-kit/widget/input-panel.tsx +294 -0
  283. package/src/features/tools/social-profile-kit/widget/platform-dock.tsx +115 -0
  284. package/src/features/tools/social-profile-kit/widget/profile-canvas.tsx +318 -0
  285. package/src/features/tools/social-profile-kit/widget/profile-preview/bluesky-preview.tsx +188 -0
  286. package/src/features/tools/social-profile-kit/widget/profile-preview/facebook-preview.tsx +168 -0
  287. package/src/features/tools/social-profile-kit/widget/profile-preview/index.ts +1 -0
  288. package/src/features/tools/social-profile-kit/widget/profile-preview/instagram-preview.tsx +278 -0
  289. package/src/features/tools/social-profile-kit/widget/profile-preview/linkedin-preview.tsx +358 -0
  290. package/src/features/tools/social-profile-kit/widget/profile-preview/profile-preview.tsx +348 -0
  291. package/src/features/tools/social-profile-kit/widget/profile-preview/shared.tsx +391 -0
  292. package/src/features/tools/social-profile-kit/widget/profile-preview/threads-preview.tsx +148 -0
  293. package/src/features/tools/social-profile-kit/widget/profile-preview/tiktok-preview.tsx +319 -0
  294. package/src/features/tools/social-profile-kit/widget/profile-preview/x-preview.tsx +341 -0
  295. package/src/features/tools/social-profile-kit/widget/profile-preview/youtube-preview.tsx +297 -0
  296. package/src/features/tools/social-profile-kit/widget/social-profile-kit-generator.tsx +1059 -0
  297. package/src/features/tools/social-profile-kit/widget/types.ts +104 -0
  298. package/src/features/tools/spec-registry.ts +158 -0
  299. package/src/features/tools/startup-idea-research/startup-idea-research.container.tsx +111 -0
  300. package/src/features/tools/startup-idea-research/startup-idea-research.spec.ts +15 -0
  301. package/src/features/tools/startup-idea-research/widget/constants.ts +11 -0
  302. package/src/features/tools/startup-idea-research/widget/index.ts +7 -0
  303. package/src/features/tools/startup-idea-research/widget/preview-panels.tsx +67 -0
  304. package/src/features/tools/startup-idea-research/widget/result-shell.tsx +323 -0
  305. package/src/features/tools/startup-idea-research/widget/startup-idea-research.tsx +272 -0
  306. package/src/features/tools/startup-idea-research/widget/types.ts +21 -0
  307. package/src/features/tools/tarot-reading/tarot-reading.container.tsx +412 -0
  308. package/src/features/tools/tarot-reading/tarot-reading.spec.ts +15 -0
  309. package/src/features/tools/tarot-reading/widget/cards.tsx +152 -0
  310. package/src/features/tools/tarot-reading/widget/constants.ts +69 -0
  311. package/src/features/tools/tarot-reading/widget/deck-view.tsx +86 -0
  312. package/src/features/tools/tarot-reading/widget/deck.ts +86 -0
  313. package/src/features/tools/tarot-reading/widget/index.ts +7 -0
  314. package/src/features/tools/tarot-reading/widget/landing-view.tsx +209 -0
  315. package/src/features/tools/tarot-reading/widget/reading-copy.tsx +138 -0
  316. package/src/features/tools/tarot-reading/widget/reading-view.tsx +189 -0
  317. package/src/features/tools/tarot-reading/widget/reveal-view.tsx +50 -0
  318. package/src/features/tools/tarot-reading/widget/ritual-view.tsx +276 -0
  319. package/src/features/tools/tarot-reading/widget/tarot-reading.tsx +262 -0
  320. package/src/features/tools/tarot-reading/widget/types.ts +22 -0
  321. package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.container.tsx +114 -0
  322. package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.spec.ts +14 -0
  323. package/src/features/tools/twitter-gif-downloader/widget/index.ts +7 -0
  324. package/src/features/tools/twitter-gif-downloader/widget/twitter-gif-downloader.tsx +351 -0
  325. package/src/features/tools/types.ts +68 -0
  326. package/src/features/tools/user-interview-guide-generator/user-interview-guide-generator.package.ts +774 -0
  327. package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.container.tsx +23 -0
  328. package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.spec.ts +14 -0
  329. package/src/features/tools/user-interview-insight-report-generator/widget/constants.ts +8 -0
  330. package/src/features/tools/user-interview-insight-report-generator/widget/helpers.ts +4 -0
  331. package/src/features/tools/user-interview-insight-report-generator/widget/index.ts +7 -0
  332. package/src/features/tools/user-interview-insight-report-generator/widget/preview-panels.tsx +55 -0
  333. package/src/features/tools/user-interview-insight-report-generator/widget/result-shell.tsx +122 -0
  334. package/src/features/tools/user-interview-insight-report-generator/widget/types.ts +16 -0
  335. package/src/features/tools/user-interview-insight-report-generator/widget/user-interview-insight-report-generator.tsx +293 -0
  336. package/src/features/tools/user-interview-record-generator/user-interview-record-generator.container.tsx +18 -0
  337. package/src/features/tools/user-interview-record-generator/user-interview-record-generator.spec.ts +14 -0
  338. package/src/features/tools/user-interview-record-generator/widget/constants.ts +9 -0
  339. package/src/features/tools/user-interview-record-generator/widget/helpers.ts +4 -0
  340. package/src/features/tools/user-interview-record-generator/widget/index.ts +7 -0
  341. package/src/features/tools/user-interview-record-generator/widget/preview-panels.tsx +48 -0
  342. package/src/features/tools/user-interview-record-generator/widget/result-shell.tsx +128 -0
  343. package/src/features/tools/user-interview-record-generator/widget/types.ts +16 -0
  344. package/src/features/tools/user-interview-record-generator/widget/user-interview-record-generator.tsx +305 -0
  345. package/src/features/tools/utm-builder/utm-builder.package.ts +846 -0
  346. package/src/features/tools/widget-registry.ts +73 -0
  347. package/src/generated/mcp-tools-registry.json +17 -0
  348. package/src/host/client-proxy.test.ts +33 -0
  349. package/src/host/client.ts +678 -0
  350. package/src/host/server.ts +119 -0
  351. package/src/i18n/client.ts +11 -0
  352. package/src/i18n/locale-fallback.ts +38 -0
  353. package/src/i18n/locale.ts +18 -0
  354. package/src/i18n/messages/en/page/tools.ts +124 -0
  355. package/src/i18n/messages/en/tools/app-icon-resizer.ts +244 -0
  356. package/src/i18n/messages/en/tools/app-store-screenshot-generator.ts +145 -0
  357. package/src/i18n/messages/en/tools/build-in-public-story-generator.ts +229 -0
  358. package/src/i18n/messages/en/tools/cold-start-channel-selector.ts +423 -0
  359. package/src/i18n/messages/en/tools/commercial-bp-generator.ts +304 -0
  360. package/src/i18n/messages/en/tools/community-feedback-inbox.ts +218 -0
  361. package/src/i18n/messages/en/tools/community-pain-point-extractor.ts +230 -0
  362. package/src/i18n/messages/en/tools/community-post-risk-checker.ts +209 -0
  363. package/src/i18n/messages/en/tools/competitor-analysis.ts +197 -0
  364. package/src/i18n/messages/en/tools/email-template-generator.ts +302 -0
  365. package/src/i18n/messages/en/tools/engine.ts +69 -0
  366. package/src/i18n/messages/en/tools/gtm-readiness-checklist.ts +166 -0
  367. package/src/i18n/messages/en/tools/index.ts +73 -0
  368. package/src/i18n/messages/en/tools/koko-codex-assistant.ts +171 -0
  369. package/src/i18n/messages/en/tools/logo-generator.ts +173 -0
  370. package/src/i18n/messages/en/tools/market-forecast-report.ts +228 -0
  371. package/src/i18n/messages/en/tools/million-user-growth-test.ts +386 -0
  372. package/src/i18n/messages/en/tools/og-image-generator.ts +172 -0
  373. package/src/i18n/messages/en/tools/pitch-deck-generator.ts +358 -0
  374. package/src/i18n/messages/en/tools/product-agreement-generator.ts +411 -0
  375. package/src/i18n/messages/en/tools/product-hunt-launch-planner.ts +272 -0
  376. package/src/i18n/messages/en/tools/product-name-generator.ts +383 -0
  377. package/src/i18n/messages/en/tools/product-poster-generator.ts +294 -0
  378. package/src/i18n/messages/en/tools/product-ui-generator.ts +234 -0
  379. package/src/i18n/messages/en/tools/reddit-pain-point-finder.ts +163 -0
  380. package/src/i18n/messages/en/tools/shared.ts +24 -0
  381. package/src/i18n/messages/en/tools/social-listening-research-report.ts +185 -0
  382. package/src/i18n/messages/en/tools/social-media-profile-generator.ts +22 -0
  383. package/src/i18n/messages/en/tools/social-platform-asset-adapter.ts +287 -0
  384. package/src/i18n/messages/en/tools/social-profile-kit.ts +150 -0
  385. package/src/i18n/messages/en/tools/startup-idea-research.ts +170 -0
  386. package/src/i18n/messages/en/tools/tarot-reading.ts +230 -0
  387. package/src/i18n/messages/en/tools/twitter-gif-downloader.ts +145 -0
  388. package/src/i18n/messages/en/tools/user-interview-insight-report-generator.ts +242 -0
  389. package/src/i18n/messages/en/tools/user-interview-record-generator.ts +244 -0
  390. package/src/i18n/messages/en/tools-ui.ts +704 -0
  391. package/src/i18n/messages/zh/page/tools.ts +124 -0
  392. package/src/i18n/messages/zh/tools/app-icon-resizer.ts +242 -0
  393. package/src/i18n/messages/zh/tools/app-store-screenshot-generator.ts +145 -0
  394. package/src/i18n/messages/zh/tools/build-in-public-story-generator.ts +230 -0
  395. package/src/i18n/messages/zh/tools/cold-start-channel-selector.ts +422 -0
  396. package/src/i18n/messages/zh/tools/commercial-bp-generator.ts +302 -0
  397. package/src/i18n/messages/zh/tools/community-feedback-inbox.ts +217 -0
  398. package/src/i18n/messages/zh/tools/community-pain-point-extractor.ts +230 -0
  399. package/src/i18n/messages/zh/tools/community-post-risk-checker.ts +200 -0
  400. package/src/i18n/messages/zh/tools/competitor-analysis.ts +192 -0
  401. package/src/i18n/messages/zh/tools/email-template-generator.ts +302 -0
  402. package/src/i18n/messages/zh/tools/engine.ts +68 -0
  403. package/src/i18n/messages/zh/tools/gtm-readiness-checklist.ts +166 -0
  404. package/src/i18n/messages/zh/tools/index.ts +73 -0
  405. package/src/i18n/messages/zh/tools/koko-codex-assistant.ts +170 -0
  406. package/src/i18n/messages/zh/tools/logo-generator.ts +172 -0
  407. package/src/i18n/messages/zh/tools/market-forecast-report.ts +228 -0
  408. package/src/i18n/messages/zh/tools/million-user-growth-test.ts +385 -0
  409. package/src/i18n/messages/zh/tools/og-image-generator.ts +173 -0
  410. package/src/i18n/messages/zh/tools/pitch-deck-generator.ts +358 -0
  411. package/src/i18n/messages/zh/tools/product-agreement-generator.ts +401 -0
  412. package/src/i18n/messages/zh/tools/product-hunt-launch-planner.ts +267 -0
  413. package/src/i18n/messages/zh/tools/product-name-generator.ts +383 -0
  414. package/src/i18n/messages/zh/tools/product-poster-generator.ts +282 -0
  415. package/src/i18n/messages/zh/tools/product-ui-generator.ts +234 -0
  416. package/src/i18n/messages/zh/tools/reddit-pain-point-finder.ts +162 -0
  417. package/src/i18n/messages/zh/tools/shared.ts +24 -0
  418. package/src/i18n/messages/zh/tools/social-listening-research-report.ts +181 -0
  419. package/src/i18n/messages/zh/tools/social-media-profile-generator.ts +22 -0
  420. package/src/i18n/messages/zh/tools/social-platform-asset-adapter.ts +284 -0
  421. package/src/i18n/messages/zh/tools/social-profile-kit.ts +150 -0
  422. package/src/i18n/messages/zh/tools/startup-idea-research.ts +165 -0
  423. package/src/i18n/messages/zh/tools/tarot-reading.ts +228 -0
  424. package/src/i18n/messages/zh/tools/twitter-gif-downloader.ts +138 -0
  425. package/src/i18n/messages/zh/tools/user-interview-insight-report-generator.ts +224 -0
  426. package/src/i18n/messages/zh/tools/user-interview-record-generator.ts +226 -0
  427. package/src/i18n/messages/zh/tools-ui.ts +684 -0
  428. package/src/i18n/messages/zh-tw/page/tools.ts +115 -0
  429. package/src/i18n/messages/zh-tw/tools/app-icon-resizer.ts +242 -0
  430. package/src/i18n/messages/zh-tw/tools/app-store-screenshot-generator.ts +145 -0
  431. package/src/i18n/messages/zh-tw/tools/build-in-public-story-generator.ts +230 -0
  432. package/src/i18n/messages/zh-tw/tools/cold-start-channel-selector.ts +440 -0
  433. package/src/i18n/messages/zh-tw/tools/commercial-bp-generator.ts +302 -0
  434. package/src/i18n/messages/zh-tw/tools/community-feedback-inbox.ts +217 -0
  435. package/src/i18n/messages/zh-tw/tools/community-pain-point-extractor.ts +230 -0
  436. package/src/i18n/messages/zh-tw/tools/community-post-risk-checker.ts +200 -0
  437. package/src/i18n/messages/zh-tw/tools/competitor-analysis.ts +192 -0
  438. package/src/i18n/messages/zh-tw/tools/email-template-generator.ts +302 -0
  439. package/src/i18n/messages/zh-tw/tools/engine.ts +68 -0
  440. package/src/i18n/messages/zh-tw/tools/gtm-readiness-checklist.ts +166 -0
  441. package/src/i18n/messages/zh-tw/tools/index.ts +73 -0
  442. package/src/i18n/messages/zh-tw/tools/koko-codex-assistant.ts +170 -0
  443. package/src/i18n/messages/zh-tw/tools/logo-generator.ts +71 -0
  444. package/src/i18n/messages/zh-tw/tools/market-forecast-report.ts +228 -0
  445. package/src/i18n/messages/zh-tw/tools/million-user-growth-test.ts +385 -0
  446. package/src/i18n/messages/zh-tw/tools/og-image-generator.ts +173 -0
  447. package/src/i18n/messages/zh-tw/tools/pitch-deck-generator.ts +358 -0
  448. package/src/i18n/messages/zh-tw/tools/product-agreement-generator.ts +401 -0
  449. package/src/i18n/messages/zh-tw/tools/product-hunt-launch-planner.ts +267 -0
  450. package/src/i18n/messages/zh-tw/tools/product-name-generator.ts +383 -0
  451. package/src/i18n/messages/zh-tw/tools/product-poster-generator.ts +282 -0
  452. package/src/i18n/messages/zh-tw/tools/product-ui-generator.ts +234 -0
  453. package/src/i18n/messages/zh-tw/tools/reddit-pain-point-finder.ts +162 -0
  454. package/src/i18n/messages/zh-tw/tools/shared.ts +24 -0
  455. package/src/i18n/messages/zh-tw/tools/social-listening-research-report.ts +181 -0
  456. package/src/i18n/messages/zh-tw/tools/social-media-profile-generator.ts +22 -0
  457. package/src/i18n/messages/zh-tw/tools/social-platform-asset-adapter.ts +284 -0
  458. package/src/i18n/messages/zh-tw/tools/social-profile-kit.ts +150 -0
  459. package/src/i18n/messages/zh-tw/tools/startup-idea-research.ts +165 -0
  460. package/src/i18n/messages/zh-tw/tools/tarot-reading.ts +228 -0
  461. package/src/i18n/messages/zh-tw/tools/twitter-gif-downloader.ts +138 -0
  462. package/src/i18n/messages/zh-tw/tools/user-interview-insight-report-generator.ts +224 -0
  463. package/src/i18n/messages/zh-tw/tools/user-interview-record-generator.ts +226 -0
  464. package/src/i18n/messages/zh-tw/tools-ui.ts +525 -0
  465. package/src/index.ts +15 -0
  466. package/src/lib/activity-task-handoff.ts +404 -0
  467. package/src/lib/api/errors.ts +39 -0
  468. package/src/lib/app-origin.ts +30 -0
  469. package/src/lib/fact-claim-contract.ts +68 -0
  470. package/src/lib/fake-delay.ts +3 -0
  471. package/src/lib/file/download.ts +10 -0
  472. package/src/lib/routing/locale-paths.ts +27 -0
  473. package/src/lib/seo-meta.ts +3 -0
  474. package/src/lib/tools/app-icon-resizer-schema.ts +191 -0
  475. package/src/lib/tools/app-store-screenshot-generator-schema.ts +185 -0
  476. package/src/lib/tools/build-in-public-story-generator-schema.ts +67 -0
  477. package/src/lib/tools/build-in-public-story-generator.format.ts +507 -0
  478. package/src/lib/tools/cold-start-channel-selector-schema.ts +147 -0
  479. package/src/lib/tools/commercial-bp-generator-schema.ts +222 -0
  480. package/src/lib/tools/community-feedback-inbox-schema.ts +125 -0
  481. package/src/lib/tools/community-feedback-inbox.format.ts +764 -0
  482. package/src/lib/tools/community-pain-point-extractor-schema.ts +166 -0
  483. package/src/lib/tools/community-post-risk-checker-schema.ts +99 -0
  484. package/src/lib/tools/community-post-risk-checker.format.ts +557 -0
  485. package/src/lib/tools/competitor-analysis-schema.ts +144 -0
  486. package/src/lib/tools/draft-preview-access.ts +3 -0
  487. package/src/lib/tools/draft-store.ts +69 -0
  488. package/src/lib/tools/email-template-generator-schema.ts +124 -0
  489. package/src/lib/tools/gtm-checklist-copy.ts +57 -0
  490. package/src/lib/tools/gtm-checklist-structure.ts +37 -0
  491. package/src/lib/tools/image-download.ts +68 -0
  492. package/src/lib/tools/input-quality.ts +97 -0
  493. package/src/lib/tools/logo-generator-schema.ts +224 -0
  494. package/src/lib/tools/market-forecast-report-schema.ts +299 -0
  495. package/src/lib/tools/mcp-registry.ts +16 -0
  496. package/src/lib/tools/mcp-types.ts +18 -0
  497. package/src/lib/tools/million-user-growth-test-schema.ts +49 -0
  498. package/src/lib/tools/million-user-growth-test.ts +181 -0
  499. package/src/lib/tools/og-image-generator-render.ts +448 -0
  500. package/src/lib/tools/og-image-generator-schema.ts +140 -0
  501. package/src/lib/tools/ops-catalog.ts +102 -0
  502. package/src/lib/tools/pitch-deck-generator-schema.ts +182 -0
  503. package/src/lib/tools/pitch-deck-package.ts +0 -0
  504. package/src/lib/tools/product-agreement-generator-schema.ts +168 -0
  505. package/src/lib/tools/product-hunt-launch-planner-schema.ts +136 -0
  506. package/src/lib/tools/product-hunt-launch-planner.format.ts +72 -0
  507. package/src/lib/tools/product-name-generator-schema.ts +563 -0
  508. package/src/lib/tools/product-poster-generator-schema.ts +215 -0
  509. package/src/lib/tools/product-ui-generator-schema.ts +157 -0
  510. package/src/lib/tools/reddit-pain-point-finder-schema.ts +88 -0
  511. package/src/lib/tools/resolve-tool-locale-copy.ts +75 -0
  512. package/src/lib/tools/slug.ts +60 -0
  513. package/src/lib/tools/social-listening-research-report-schema.ts +105 -0
  514. package/src/lib/tools/social-platform-asset-adapter-schema.ts +152 -0
  515. package/src/lib/tools/social-profile-kit.constants.ts +12 -0
  516. package/src/lib/tools/social-profile-kit.generation.ts +257 -0
  517. package/src/lib/tools/social-profile-kit.input.ts +290 -0
  518. package/src/lib/tools/social-profile-kit.manual.ts +481 -0
  519. package/src/lib/tools/social-profile-kit.package.ts +220 -0
  520. package/src/lib/tools/social-profile-kit.schema.ts +328 -0
  521. package/src/lib/tools/startup-idea-research-schema.ts +107 -0
  522. package/src/lib/tools/tarot-imagery.ts +89 -0
  523. package/src/lib/tools/tarot-reading.ts +1044 -0
  524. package/src/lib/tools/tool-message-keys.ts +18 -0
  525. package/src/lib/tools/types.ts +32 -0
  526. package/src/lib/tools/user-interview.format.ts +147 -0
  527. package/src/lib/tools/user-interview.generation.ts +670 -0
  528. package/src/lib/tools/user-interview.schema.ts +192 -0
  529. package/src/lib/zip.ts +106 -0
  530. package/src/services/tools/handlers/gtm-readiness-checklist.ts +71 -0
  531. package/src/services/tools/handlers/types.ts +7 -0
@@ -0,0 +1,383 @@
1
+ const productNameGenerator = {
2
+ meta: {
3
+ title: "產品取名器:App 和 SaaS 起名工具",
4
+ displayTitle: "產品取名器",
5
+ description: "輸入產品想法、目標用戶、命名風格和域名後綴,生成 3-5 個可繼續評估的產品名,展開單個候選後再做域名、搜索與商標預篩。",
6
+ intro: "為 App、Web 工具、SaaS 和 AI 產品早期命名設計。先拿到少量有理由的候選名,再按需深查域名、搜索噪音和商標入口,避免一次性把成本花在會被淘汰的名字上。",
7
+ category: "品牌工具",
8
+ keywords: [
9
+ "產品取名器",
10
+ "產品起名",
11
+ "App 起名",
12
+ "SaaS 命名",
13
+ "AI 產品命名",
14
+ "域名預篩",
15
+ ],
16
+ },
17
+ guide: {
18
+ workspaceHeading: "產品取名器",
19
+ workspaceHint:
20
+ "輸入產品想法,生成候選名與預篩線索。",
21
+ workspaceBadge: "3-5 個候選名",
22
+ standard: {
23
+ benefits: {
24
+ title: "這個產品取名器能幫你拿到什麼",
25
+ cards: [
26
+ {
27
+ title: "可討論的短名單",
28
+ body: "首輪只返回 3-5 個候選名,並附上核心理念和基礎品牌信號,讓命名會先聚焦少數方向。",
29
+ },
30
+ {
31
+ title: "更少的早期誤判",
32
+ body: "讀音、長度、風格、域名後綴和搜索噪音會分層呈現,幫助你先排掉不值得深查的名字。",
33
+ },
34
+ {
35
+ title: "清楚的複核邊界",
36
+ body: "域名和商標只做預篩入口與風險提示,不把 AI 候選名包裝成可直接商用的法律結論。",
37
+ },
38
+ ],
39
+ },
40
+ imageTextSections: [
41
+ {
42
+ id: "name-shortlist",
43
+ title: "把粗糙想法整理成\n可評審的候選名",
44
+ body: [
45
+ "產品早期起名最怕一次拿到幾十個相似詞,卻沒有理由判斷。這個工具先把產品想法、目標用戶和命名氣質轉成少量候選。",
46
+ "每個名字都帶核心理念和基礎信息,方便產品、設計、增長和創始團隊快速決定哪些方向值得繼續看。",
47
+ ],
48
+ image: {
49
+ src: "/tools/product-name-generator-section-primary-8bit-v2.webp",
50
+ alt: "像素風產品取名器配圖,展示產品想法被整理成候選名短名單。",
51
+ },
52
+ imageFirst: true,
53
+ },
54
+ {
55
+ id: "name-variations",
56
+ title: "用風格、市場和域名偏好\n控制命名方向",
57
+ body: [
58
+ "同一個產品可以走清晰直接、技術感、友好輕量、高級可信或自造詞方向。表單只保留會真正影響結果的核心選擇。",
59
+ "目標市場和域名後綴會影響候選名的讀音、長度和後續檢查路徑,避免把所有 App、SaaS 和 AI 工具套進同一套名字。",
60
+ ],
61
+ image: {
62
+ src: "/tools/product-name-generator-section-variation-8bit-v2.webp",
63
+ alt: "像素風命名方向配圖,展示風格、市場和域名偏好影響候選名。",
64
+ },
65
+ },
66
+ {
67
+ id: "name-review",
68
+ title: "先判斷名字是否值得保留\n再做深查",
69
+ body: [
70
+ "域名、搜索和商標預篩只在你展開單個候選後繼續觸發。這樣可以減少等待,也避免把預算和注意力花在早就會被淘汰的名字上。",
71
+ "深查結果會提供可打開的搜索入口、風險提示和下一步檢查清單,正式商用前仍需要註冊商確認和專業商標複核。",
72
+ ],
73
+ image: {
74
+ src: "/tools/product-name-generator-section-support-8bit-v2.webp",
75
+ alt: "像素風候選名複核配圖,展示域名、搜索和商標預篩線索。",
76
+ },
77
+ imageFirst: true,
78
+ },
79
+ ],
80
+ generation: {
81
+ title: "如何生成一份\n產品名短名單",
82
+ imageAlt: "像素風產品取名流程配圖,展示從產品 brief 到候選名和複核材料。",
83
+ ctaLabel: "生成候選名",
84
+ steps: [
85
+ {
86
+ title: "寫下產品想法",
87
+ body: "用幾句話說明產品做什麼、給誰用、解決什麼問題。粗糙想法也可以開始,但不要只輸入佔位詞。",
88
+ },
89
+ {
90
+ title: "選擇命名約束",
91
+ body: "確認目標用戶、命名風格、目標市場和域名後綴。已有工作名或候選名可以放到高級設置裡一起篩。",
92
+ },
93
+ {
94
+ title: "生成首輪短名單",
95
+ body: "工具會返回 3-5 個候選名,並附核心理念、基礎信息、快篩維度和可複製結果。",
96
+ },
97
+ {
98
+ title: "展開候選做複核",
99
+ body: "對真正有感覺的名字再展開深查,查看域名、搜索、商標入口、風險提示和下一步檢查。",
100
+ },
101
+ ],
102
+ },
103
+ faqIntro: "這些問題幫助你理解候選名如何使用、哪些結果需要人工複核,以及為什麼深查不會在首輪全部執行。",
104
+ faqCtaLabel: "查看問題",
105
+ },
106
+ outputs: "你可以得到什麼",
107
+ outputItems: [
108
+ {
109
+ title: "產品名短名單",
110
+ body:
111
+ "首輪返回少量候選名,每個名字都附核心理念和基礎信息,方便團隊直接討論。",
112
+ },
113
+ {
114
+ title: "基礎品牌信號",
115
+ body:
116
+ "優先檢查讀音、長度、命名風格和你選擇的域名後綴,先排掉明顯不值得深查的方向。",
117
+ },
118
+ {
119
+ title: "單名深查入口",
120
+ body:
121
+ "只對你展開的候選名繼續看域名、搜索噪音、商標官方入口、風險提示和下一步檢查。",
122
+ },
123
+ {
124
+ title: "可複製的決策素材",
125
+ body:
126
+ "候選名、理由、快篩維度和風險提示可以複製給產品、設計、增長或法務同事繼續評審。",
127
+ },
128
+ ],
129
+ howToUse: "如何使用產品取名器",
130
+ howToUseSteps: [
131
+ "填寫產品想法、目標用戶、命名氣質和已有工作名。",
132
+ "選擇目標市場、域名後綴和可接受預算,首輪先保持輕量。",
133
+ "生成 3-5 個候選名後,先看核心理念、讀音和基礎信息。",
134
+ "對有感覺的名字點擊展開,再單獨做域名、搜索和商標預篩。",
135
+ ],
136
+ capabilityNote:
137
+ "首輪優先解決「有沒有值得繼續看的名字」。域名價格、搜索噪音和商標安全不會在首輪強行承諾,深查也只作為預篩,不替代註冊商確認或法律意見。",
138
+ stagedOutput: "為什麼分階段輸出",
139
+ stageLabel: "階段",
140
+ stagedOutputBullets: [
141
+ "第一階段只解決「有沒有值得繼續看的名字」:減少等待時間和不必要的深查成本。",
142
+ "第二階段只分析用戶點擊的候選名:域名、搜索、商標入口和風險點按需展開。",
143
+ "第三階段適合最終決策:把 2-3 個候選名放在一起做紅黃綠判斷和下一步清單。",
144
+ ],
145
+ resultGuidance: "拿到候選名後怎麼判斷",
146
+ resultGuidanceBullets: [
147
+ "先淘汰讀音不順、過於泛化、和競品太近或看不出產品方向的名字,不急著買域名。",
148
+ "把 2-3 個候選名讀給真實用戶或團隊成員聽,觀察他們能否複述、拼寫和猜到產品大概用途。",
149
+ "只對最終候選展開深查,核對域名價格、搜索噪音、商標官方入口和需要人工複核的風險點。",
150
+ ],
151
+ whyTomako: "為什麼選這個取名器",
152
+ whyTomakoItems: [
153
+ {
154
+ title: "短名單優先,而不是詞庫轟炸",
155
+ body:
156
+ "好的起名工具應該幫你減少選擇成本。頁面默認只給 3-5 個可繼續評估的方向,而不是一次塞滿幾十個相似詞。",
157
+ },
158
+ {
159
+ title: "圍繞產品語境篩選",
160
+ body:
161
+ "候選名會結合產品想法、目標用戶、命名風格、已有工作名和目標市場,不把所有 App、SaaS、AI 工具套進同一套名字。",
162
+ },
163
+ {
164
+ title: "先判斷名字,再決定是否深查",
165
+ body:
166
+ "域名、搜索和商標預篩放在展開後按需觸發,適合早期命名會、產品方向還在變化的階段。",
167
+ },
168
+ {
169
+ title: "邊界清楚,方便複核",
170
+ body:
171
+ "頁面會把域名狀態、商標入口和法律邊界說清楚,讓候選名成為決策起點,而不是冒充最終清關結論。",
172
+ },
173
+ ],
174
+ strongName: "好產品名的判斷標準",
175
+ strongNameBullets: [
176
+ "可讀可念:團隊、用戶和投資人第一次聽到時不費勁。",
177
+ "可延展:不鎖死在今天的單一功能,能承載產品線升級。",
178
+ "可檢索:品牌搜索、App Store、GitHub、社媒和域名仍有可得空間。",
179
+ "可講述:名字背後的隱喻能和產品定位、用戶場景或品牌語氣自然連上。",
180
+ "差異感:與同類軟件、AI 工具或頭部競品在拼寫和讀音上拉開距離。",
181
+ ],
182
+ mistakes: "命名時最容易踩的坑",
183
+ mistakeBullets: [
184
+ "把「.com 是否可買」當成唯一標準,忽略目標市場和用戶記憶。",
185
+ "一次生成幾十個好聽名字,卻沒有域名、SEO、商標和品類衝突的分層篩選。",
186
+ "過早追求抽象高級感,導致用戶不知道產品解決什麼問題。",
187
+ "為了包含關鍵詞把名字做得太長,最後既不像品牌,也不利於口頭傳播。",
188
+ ],
189
+ useCases: "適合哪些場景",
190
+ useCaseBullets: [
191
+ "獨立開發者給新 App、Web 工具、插件或 AI 小產品定名字。",
192
+ "早期團隊在產品定位還會變化時,先拿到可延展的命名方向。",
193
+ "已經有 2-5 個候選名,需要判斷哪個更適合繼續買域名和做品牌。",
194
+ "出海產品需要同時考慮英文可讀性、中文語感和全球搜索噪音。",
195
+ "產品、設計和增長團隊開命名會前,用同一套標準先生成可討論的短名單。",
196
+ ],
197
+ faq: "常見問題",
198
+ faqItems: [
199
+ {
200
+ question: "為什麼不一次性返回所有域名和商標分析?",
201
+ answer:
202
+ "命名初期大部分候選會被淘汰。先輕量生成和快篩,再只對用戶點開的名字做深查,可以明顯降低等待時間和不必要的分析成本。",
203
+ },
204
+ {
205
+ question: "我需要寫很完整的產品定位嗎?",
206
+ answer:
207
+ "不需要。寫清產品做什麼、給誰用、想傳達什麼感覺即可;如果只有粗糙想法,也可以先生成方向,再用候選名反推定位是否清楚。",
208
+ },
209
+ {
210
+ question: "工具會保證域名可以買到嗎?",
211
+ answer:
212
+ "不會。域名狀態來自 RDAP/DNS 等快篩信號,價格和最終可購買性必須以註冊商頁面為準,尤其是溢價域名。",
213
+ },
214
+ {
215
+ question: "商標預篩可以替代律師嗎?",
216
+ answer:
217
+ "不可以。工具會提供官方數據庫入口、搜索查詢和風險提示,但不能給出法律清關結論。正式投入品牌資產前應做專業檢索和法律複核。",
218
+ },
219
+ {
220
+ question: "已有候選名也能分析嗎?",
221
+ answer:
222
+ "可以。把候選名按行填到表單裡,工具會把它們納入首輪篩選,也會根據產品定位生成相近變體。",
223
+ },
224
+ {
225
+ question: "提交的產品想法會如何使用?",
226
+ answer:
227
+ "表單內容會用於生成候選名和深查所需的上下文。不要提交機密源碼、未公開商業秘密、客戶隱私或其他敏感個人信息。",
228
+ },
229
+ {
230
+ question: "生成的名字可以直接商用嗎?",
231
+ answer:
232
+ "候選名可以作為命名起點,但正式商用前仍要確認域名、應用商店、社媒賬號、商標近似和目標市場語義,必要時請做專業商標檢索。",
233
+ },
234
+ ],
235
+ ctaPrimary: "繼續做 GTM 自檢",
236
+ ctaSecondary: "返回全部工具",
237
+ ctaHint:
238
+ "確定候選名後,繼續評估定位、渠道、素材和衡量指標是否準備好上線。",
239
+ visualAlt: {
240
+ hero: "產品取名器首屏視覺,展示粗略想法被整理成候選方向和檢查信號。",
241
+ value: "聚焦短名單視覺,展示零散命名想法被篩成少量高質量候選方向。",
242
+ checks: "候選名預篩視覺,展示域名、搜索和人工複核等檢查入口。",
243
+ decision: "命名決策包視覺,展示候選方向進入保留、複核和決策流程。",
244
+ },
245
+ },
246
+ widget: {
247
+ formTitle: "生成產品名候選",
248
+ formHint:
249
+ "先生成可評估的候選名;深度查詢留到卡片展開後再做。",
250
+ workingNameLabel: "已有產品名或工作名",
251
+ workingNamePlaceholder: "例如 Kitepath,可留空",
252
+ descriptionLabel: "產品想法",
253
+ descriptionPlaceholder:
254
+ "描述產品做什麼、給誰用、解決什麼問題。例如:一個幫獨立開發者自動生成上線素材和渠道計劃的 AI 工作臺。",
255
+ targetUsersLabel: "目標用戶",
256
+ targetUsersPlaceholder: "例如 獨立開發者、SaaS 創始人、出海小團隊",
257
+ desiredVibeLabel: "希望傳達的感覺",
258
+ desiredVibePlaceholder: "例如 清爽、可信、技術感、輕一點、不要太企業",
259
+ styleLabel: "命名風格",
260
+ marketLabel: "目標市場 / 語言",
261
+ marketPlaceholder: "選擇目標市場",
262
+ domainLabel: "優先查詢的域名後綴",
263
+ domainPlaceholder: "選擇域名後綴",
264
+ maxPriceLabel: "最高可接受價格(美元)",
265
+ countLabel: "返回數量",
266
+ advancedLabel: "更多篩選設置",
267
+ fallbackLabel: "允許備選組合域名",
268
+ fallbackHint: "例如 get + 名稱、try + 名稱、名稱 + app、名稱 + hq。",
269
+ candidateNamesLabel: "已有候選名",
270
+ candidateNamesPlaceholder: "每行一個,或用逗號分隔。例如:\nKitepath\nNimbly\nAuralis",
271
+ optional: "可選",
272
+ generateAgent: "開始生成候選名",
273
+ generatingAgent: "正在生成候選名",
274
+ retryAgent: "重新生成候選名",
275
+ reset: "重置",
276
+ emptyTitle: "等待生成候選名",
277
+ emptyHint:
278
+ "首輪結果會逐個展示,每張卡片先只放核心理念和基礎信息;域名、SEO、商標預篩在展開後單獨觸發。",
279
+ emptyBullets: ["3-5 個候選名", "核心理念與基礎信息", "按需觸發二次深查"],
280
+ workspaceVisualAlt:
281
+ "工作臺右側視覺,展示粗略命名輸入被整理成三個候選方向和域名後綴信號。",
282
+ loadingTitle: "正在生成與快篩",
283
+ loadingStatus: "正在準備候選名短名單",
284
+ loadingCountdown: "約 1 分鐘內",
285
+ loadingHint:
286
+ "正在根據產品想法生成候選名,並做基礎讀音、長度和域名後綴快篩。首輪不會做完整商標清關。",
287
+ loadingSteps: [
288
+ "生成命名策略和候選名",
289
+ "運行讀音、長度和基礎品牌篩選",
290
+ "只檢查你選擇的域名後綴",
291
+ "準備可展開的深查入口",
292
+ ],
293
+ errorTitle: "暫時沒有拿到取名結果",
294
+ agentResult: "候選名快篩",
295
+ resultTitle: "首輪候選名",
296
+ copyAll: "複製全部候選",
297
+ copyName: "複製名稱",
298
+ copied: "已複製",
299
+ expandDetail: "展開查看更多",
300
+ detailLoading: "深查中",
301
+ detailRunning: "正在整理深查結果",
302
+ detailAwaiting: "深查已完成初步分析,正在整理可展示結果。",
303
+ score: "評分",
304
+ coreIdea: "核心理念",
305
+ basics: "基礎信息",
306
+ domains: "域名快照",
307
+ checks: "快篩維度",
308
+ seoDetail: "SEO / 搜索預篩",
309
+ trademarkDetail: "商標預篩",
310
+ risks: "風險提示",
311
+ nextChecks: "下一步檢查",
312
+ openLink: "打開鏈接",
313
+ taskIdLabel: "任務 ID",
314
+ styles: {
315
+ clear: "清晰直接",
316
+ technical: "技術感",
317
+ friendly: "友好輕量",
318
+ premium: "高級可信",
319
+ invented: "自造詞",
320
+ },
321
+ markets: {
322
+ globalEnglish: "全球英文",
323
+ mainlandChina: "中國大陸",
324
+ us: "美國",
325
+ eu: "歐盟",
326
+ japan: "日本",
327
+ sea: "東南亞",
328
+ },
329
+ tlds: {
330
+ ai: ".ai",
331
+ com: ".com",
332
+ io: ".io",
333
+ app: ".app",
334
+ dev: ".dev",
335
+ co: ".co",
336
+ so: ".so",
337
+ studio: ".studio",
338
+ },
339
+ verdicts: {
340
+ green: "綠色",
341
+ light_yellow: "淺黃",
342
+ yellow: "黃色",
343
+ orange: "橙色",
344
+ red: "紅色",
345
+ unknown: "未知",
346
+ manual_required: "需人工確認",
347
+ },
348
+ stages: {
349
+ unchecked_idea: "未檢查想法",
350
+ fast_screened: "已快篩",
351
+ domain_checked: "已查域名",
352
+ deep_researched: "已深查",
353
+ },
354
+ errors: {
355
+ required: "請至少填寫產品想法,並選擇目標市場和域名後綴。",
356
+ fixFields: "請先修正表單中標註的位置,再生成候選名。",
357
+ descriptionRequired: "請先填寫產品想法。",
358
+ descriptionShort: "產品想法再補充一點點就能開始,至少寫 4 個字。",
359
+ descriptionMeaningful: "請填寫真實的產品想法,不要只輸入數字或佔位符。",
360
+ market: "請至少選擇一個目標市場或語言。",
361
+ domain: "請至少選擇一個要優先查詢的域名後綴。",
362
+ maxPrice: "最高可接受價格需要是 0 到 50000 之間的數字。",
363
+ candidateNames: "已有候選名太長了,請控制在 500 個字符以內。",
364
+ copy: "當前瀏覽器無法複製,請稍後重試。",
365
+ agent:
366
+ "取名任務提交或生成失敗。請稍後重試;當前沒有拿到可展示的取名結果。",
367
+ gateway:
368
+ "在線任務服務暫時不可用,任務沒有創建成功。這不是表單選擇問題,請稍後重試。",
369
+ noResult:
370
+ "取名流程結束後沒有返回可展示的結構化結果。請稍後重試。",
371
+ invalidResult:
372
+ "返回結果的結構或內容不符合取名器要求。請重新生成。",
373
+ demoFallbackResult:
374
+ "返回的候選名疑似示例或兜底名單,頁面已拒絕展示。請重新生成,或確認遠端取名流程已更新。",
375
+ noDetail:
376
+ "深查任務結束後沒有返回可展示結果。請重試。",
377
+ invalidDetailResult:
378
+ "深查返回內容不符合本工具需要的結構。請重試。",
379
+ },
380
+ },
381
+ } as const;
382
+
383
+ export default productNameGenerator;
@@ -0,0 +1,282 @@
1
+ const productPosterGenerator = {
2
+ meta: {
3
+ title: "AI 產品海報生成器:把產品截圖、賣點和 CTA 生成品牌海報圖",
4
+ displayTitle: "AI產品海報生成器",
5
+ description:
6
+ "輸入產品名稱、賣點、目標用戶、CTA,可補充產品 URL、Logo 和截圖,生成適合官網、社媒、廣告和 OG 分享的產品宣傳海報圖。",
7
+ intro: "把產品上下文整理成可下載的宣傳海報圖。",
8
+ category: "SEO 營銷工具",
9
+ keywords: [
10
+ "AI 產品海報生成器",
11
+ "產品宣傳海報生成器",
12
+ "產品宣傳圖生成器",
13
+ "SaaS 營銷圖生成器",
14
+ "產品截圖海報",
15
+ "App 宣傳海報生成器",
16
+ "Web 產品廣告圖",
17
+ "品牌一致廣告圖",
18
+ ],
19
+ inputSignal: "產品名稱 / 賣點 / 截圖 / Logo",
20
+ outputSignal: "產品海報圖 / PNG",
21
+ boundarySignal: "下載前需人工複核",
22
+ },
23
+ examples: [
24
+ {
25
+ label: "SaaS 官網宣傳圖",
26
+ input: "產品名稱、Dashboard 截圖、3 條核心賣點、CTA:Book demo",
27
+ expectedOutput: "一張適合官網首屏和社媒發佈的產品海報圖,附帶發佈前複核清單。",
28
+ },
29
+ {
30
+ label: "App 發佈海報",
31
+ input: "App 截圖、Logo、目標用戶、渠道:Product Hunt / X",
32
+ expectedOutput: "發佈海報預覽圖、渠道比例線索、素材使用狀態和下一步檢查項。",
33
+ },
34
+ ],
35
+ guide: {
36
+ workspaceHeading: "AI 產品海報生成器",
37
+ workspaceHint:
38
+ "填寫產品名稱、賣點、目標用戶、CTA 和用途;需要時補充 URL、Logo、截圖、尺寸和品牌色。生成後可直接預覽並下載 PNG。",
39
+ workspaceBadge: "生成 PNG 海報",
40
+ standard: {
41
+ benefits: {
42
+ title: "這個 AI 產品海報生成器能幫你完成什麼",
43
+ cards: [
44
+ {
45
+ title: "生成可下載的產品海報圖",
46
+ body: "把產品名稱、核心賣點、目標用戶和 CTA 組合成一張可預覽、可下載的產品宣傳海報圖。",
47
+ },
48
+ {
49
+ title: "保持產品與品牌一致",
50
+ body: "可補充 Logo、截圖和品牌色,讓海報圍繞真實產品界面和品牌素材展開,而不是套通用模板。",
51
+ },
52
+ {
53
+ title: "發佈前留出複核邊界",
54
+ body: "結果會提醒你檢查截圖隱私、廣告承諾、裁切安全區和素材授權,避免把草稿當成投放終稿。",
55
+ },
56
+ ],
57
+ },
58
+ imageTextSections: [
59
+ {
60
+ id: "poster-brief",
61
+ title: "從產品上下文\n生成可下載海報圖",
62
+ body: [
63
+ "產品宣傳圖不只是好看的背景。它需要說清產品是什麼、給誰用、主推什麼價值,以及希望用戶點擊什麼 CTA。",
64
+ "你先填寫少量核心信息,工具會把產品說明、受眾、用途和素材整理成一張產品海報預覽,適合繼續交給官網、社媒或增長流程使用。",
65
+ ],
66
+ image: {
67
+ src: "/tools/product-poster-generator-section-primary-8bit-v2.webp",
68
+ alt: "像素風 AI 產品海報生成器配圖,展示產品上下文變成可下載海報圖。",
69
+ },
70
+ imageFirst: true,
71
+ },
72
+ {
73
+ id: "poster-variations",
74
+ title: "同一套產品素材\n適配不同發佈渠道",
75
+ body: [
76
+ "官網首屏、社媒發佈、廣告測試、Product Hunt 和 OG 分享圖的信息密度不同,不能只靠同一張圖硬裁。",
77
+ "你可以選擇目標用途、尺寸和視覺風格,讓海報先按渠道安排標題、截圖、賣點和 CTA 的優先級。",
78
+ ],
79
+ image: {
80
+ src: "/tools/product-poster-generator-section-variation-8bit-v2.webp",
81
+ alt: "像素風產品海報渠道適配配圖,展示 Web、Social 和 Ad 等多種比例。",
82
+ },
83
+ },
84
+ {
85
+ id: "poster-review",
86
+ title: "下載前先複核\n截圖、承諾和裁切",
87
+ body: [
88
+ "生成圖可以進入設計、發佈或投放流程,但不等於已經完成品牌、法務和平臺審核。",
89
+ "下載前請確認 UI 截圖沒有客戶隱私或測試數據,廣告承諾沒有誇大,品牌素材有權使用,並按目標渠道檢查裁切安全區。",
90
+ ],
91
+ image: {
92
+ src: "/tools/product-poster-generator-section-support-8bit-v2.webp",
93
+ alt: "像素風產品海報復核配圖,展示 PNG 下載、素材檢查和發佈前複核。",
94
+ },
95
+ imageFirst: true,
96
+ },
97
+ ],
98
+ generation: {
99
+ title: "如何生成一張\n產品宣傳海報圖",
100
+ imageAlt: "像素風產品海報生成流程配圖,展示從產品 brief 到 PNG 下載。",
101
+ ctaLabel: "生成產品海報",
102
+ steps: [
103
+ {
104
+ title: "填寫產品 brief",
105
+ body: "輸入產品名稱、產品上下文、目標用戶和主 CTA。賣點越具體,海報越容易聚焦。",
106
+ },
107
+ {
108
+ title: "選擇海報用途",
109
+ body: "從官網、社媒、廣告、Product Hunt 或 OG 分享中選擇目標用途,確定信息層級和基礎比例。",
110
+ },
111
+ {
112
+ title: "補充品牌素材",
113
+ body: "按需上傳 Logo、產品截圖,並選擇尺寸、視覺風格和品牌色。沒有素材也可以先生成第一版。",
114
+ },
115
+ {
116
+ title: "預覽並下載 PNG",
117
+ body: "生成完成後查看海報圖、素材狀態和發佈前檢查項,再下載 PNG 進入發佈或設計流程。",
118
+ },
119
+ ],
120
+ },
121
+ faqIntro:
122
+ "這些問題幫助你確認輸入素材、適用場景、商用邊界,以及它和通用海報模板的區別。",
123
+ faqCtaLabel: "查看問題",
124
+ },
125
+ faq: "常見問題",
126
+ faqItems: [
127
+ {
128
+ question: "產品宣傳海報生成需要準備哪些內容?",
129
+ answer:
130
+ "至少需要產品名稱、產品說明、目標用戶和 CTA。更好的輸入包括產品 URL、Logo、1 到 4 張 UI 截圖、品牌色和目標發佈渠道。",
131
+ },
132
+ {
133
+ question: "這個產品截圖海報生成器適合哪些產品?",
134
+ answer:
135
+ "更適合 SaaS、App、Web 工具、插件、AI 產品和開發者工具。你可以用它準備官網首屏圖、社媒發佈圖、廣告圖、Product Hunt 圖和 OG 分享圖。",
136
+ },
137
+ {
138
+ question: "生成的產品宣傳海報圖可以直接商用嗎?",
139
+ answer:
140
+ "海報圖可以進入商用設計流程,但正式發佈前仍要檢查截圖隱私、商標授權、廣告承諾、平臺尺寸和投放規範。",
141
+ },
142
+ {
143
+ question: "沒有品牌色或 Logo,還能生成 App 宣傳海報嗎?",
144
+ answer:
145
+ "可以。你先提供產品說明、目標用戶和截圖,工具會使用默認視覺方向。品牌穩定後,再用 Logo 和品牌色生成更一致的版本。",
146
+ },
147
+ {
148
+ question: "它和 Canva、Adobe Express 海報模板有什麼區別?",
149
+ answer:
150
+ "通用設計工具適合從模板開始排版。這個工具更適合先理解產品上下文、UI 截圖、賣點和渠道需求,再生成互聯網產品宣傳圖。",
151
+ },
152
+ ],
153
+ ctaPrimary: "生成應用商店上架圖",
154
+ ctaSecondary: "先生成 Logo",
155
+ ctaHint:
156
+ "如果你要做 App 商店素材,可以先生成上架圖。如果品牌標識還不穩定,可以先生成 Logo 方向。",
157
+ },
158
+ widget: {
159
+ productNameLabel: "產品名稱",
160
+ productNamePlaceholder: "例如 Tomako Launch",
161
+ productUrlLabel: "產品 URL",
162
+ productUrlPlaceholder: "https://yourproduct.com",
163
+ contextLabel: "產品上下文和核心賣點",
164
+ contextPlaceholder:
165
+ "寫清產品做什麼、最想突出哪 2-3 個賣點。例如:為獨立開發者生成上線所需的營銷物料。",
166
+ audienceLabel: "目標用戶",
167
+ audiencePlaceholder: "例如 SaaS 創始人、增長團隊、獨立開發者",
168
+ ctaLabel: "主 CTA",
169
+ ctaPlaceholder: "Try it free / Book demo / Download app",
170
+ posterIntentLabel: "目標用途",
171
+ formatLabel: "海報尺寸",
172
+ styleLabel: "視覺風格",
173
+ brandColorsLabel: "品牌色",
174
+ optional: "可選",
175
+ advancedLabel: "補充素材和樣式",
176
+ logoUpload: "上傳 Logo",
177
+ logoChoose: "選擇 Logo",
178
+ logoReplace: "更換 Logo",
179
+ logoRemove: "移除 Logo",
180
+ screenshotUpload: "上傳產品截圖",
181
+ screenshotUploadHint: "最多 4 張 PNG / JPG / WebP 截圖",
182
+ screenshotChoose: "選擇截圖",
183
+ screenshotRemove: "移除截圖",
184
+ screenshotCount: "{count} 張截圖",
185
+ uploadHint: "PNG / JPG / WebP",
186
+ submit: "生成產品海報",
187
+ submitLoading: "正在生成...",
188
+ reset: "重置",
189
+ reviewNote: "請只上傳可公開素材。下載前複核截圖隱私、品牌授權、廣告承諾和平臺尺寸。",
190
+ emptyPreviewTitle: "填寫信息後生成海報",
191
+ emptyPreviewHint:
192
+ "產品名稱、賣點、目標用戶、CTA 和用途會決定海報的主標題、畫面層級和下載結果。",
193
+ loadingTitle: "正在生成產品海報",
194
+ loadingTipLabel: "提示",
195
+ loadingTip: "通常需要幾十秒。保持本頁打開,生成完成後會在右側顯示可下載 PNG。",
196
+ loadingSteps: {
197
+ prepare: "整理產品上下文",
198
+ compose: "組合標題、賣點和 CTA",
199
+ render: "渲染海報預覽圖",
200
+ finish: "準備下載結果",
201
+ },
202
+ errorTitle: "先補充關鍵產品信息",
203
+ submitErrorTitle: "海報生成請求未成功",
204
+ taskErrorTitle: "海報生成失敗",
205
+ resultErrorTitle: "暫時沒有拿到海報結果",
206
+ unreadableResultTitle: "結果暫時無法讀取",
207
+ timeoutErrorTitle: "生成時間過長",
208
+ retry: "重新生成",
209
+ errors: {
210
+ required: "請補充必填信息,再生成產品海報。",
211
+ productName: "請填寫產品名稱。它會用於海報標題、文件名和產品定位。",
212
+ productContext: "請補充產品上下文和核心賣點。至少寫清產品做什麼,以及你最想突出的價值。",
213
+ audience: "請填寫目標用戶。比如 SaaS 創始人、增長團隊、獨立開發者或企業採購。",
214
+ primaryCta: "請填寫主 CTA。比如 Try it free、Book demo、立即體驗或下載 App。",
215
+ invalidUrl: "產品 URL 需要是有效的 http 或 https 地址,或者先留空。",
216
+ weakContext: "產品上下文太像佔位內容。請補充產品做什麼、主要賣點是什麼。",
217
+ submitFailed: "海報生成服務暫時不可用,請稍後重試。",
218
+ pollFailed: "還沒有拿到海報結果,請稍後重試。",
219
+ imageFailed: "海報圖沒有生成成功。可以簡化賣點、換一個尺寸,或稍後再試。",
220
+ unreadableResult: "結果暫時無法讀取。請稍後重試。",
221
+ timeout: "生成時間較長。請稍後重試。",
222
+ },
223
+ readyKicker: "海報已生成",
224
+ readyTitle: "產品宣傳海報圖已生成",
225
+ readyHint: "你可以預覽並下載 PNG。正式發佈前,請複核截圖隱私、廣告承諾和品牌授權。",
226
+ downloadPng: "下載 PNG",
227
+ generatedPosterAlt: "根據產品上下文生成的產品宣傳海報預覽圖。",
228
+ posterDetails: "海報設置",
229
+ posterChecklist: "發佈前檢查",
230
+ assetLogoApplied: "Logo:已作為精確圖層合成到最終 PNG",
231
+ assetLogoUploadedNotApplied: "Logo:已上傳,請複核最終圖中是否完成合成",
232
+ assetLogoMissing: "Logo:未上傳,海報不會虛構品牌標識",
233
+ assetScreenshotReferenceCount: "產品截圖:{count} 張已作為生圖參考",
234
+ assetScreenshotInventoryOnly: "產品截圖:{count} 張僅作為文件清單,未進入生圖參考",
235
+ assetScreenshotMissing: "產品截圖:未上傳,生圖不會虛構真實界面",
236
+ assetFinalLogoLayer: "最終下載圖:已保留模型生成圖,併疊加上傳 Logo",
237
+ posterChecklistItems: [
238
+ "確認主標題是否說清產品價值,不要只寫抽象口號。",
239
+ "檢查截圖裡是否包含客戶隱私、測試賬號或未授權品牌。",
240
+ "按目標平臺複核裁切比例,確認 CTA 在移動端也清楚可讀。",
241
+ "正式投放前複核品牌授權、廣告承諾和平臺規範。",
242
+ ],
243
+ posterIntentLabels: {
244
+ websiteConversion: "官網首屏轉化",
245
+ websiteFeature: "官網功能介紹",
246
+ socialLaunch: "社媒新品發佈",
247
+ socialContent: "社媒內容封面",
248
+ paidAcquisition: "廣告獲客測試",
249
+ paidRetargeting: "再營銷廣告圖",
250
+ productHuntLaunch: "Product Hunt 發佈",
251
+ ogBlogCover: "博客 / OG 分享圖",
252
+ },
253
+ formatLabels: {
254
+ multiSize: "智能",
255
+ ultrawide: "21:9",
256
+ landscape: "16:9",
257
+ landscape32: "3:2",
258
+ landscape43: "4:3",
259
+ square: "1:1",
260
+ portrait34: "3:4",
261
+ portrait: "2:3",
262
+ story: "9:16",
263
+ },
264
+ styleLabels: {
265
+ cleanSaas: "簡潔 SaaS",
266
+ boldLaunch: "大膽發佈感",
267
+ premiumEditorial: "高級編輯感",
268
+ playfulApp: "活潑 App 風",
269
+ enterpriseTrust: "企業可信感",
270
+ },
271
+ brandPaletteLabels: {
272
+ auto: "自動",
273
+ tomako: "Tomako",
274
+ ocean: "科技綠",
275
+ violet: "發佈紫",
276
+ mono: "黑白灰",
277
+ sunset: "暖橙",
278
+ },
279
+ },
280
+ } as const;
281
+
282
+ export default productPosterGenerator;