@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,230 @@
1
+ const buildInPublicStoryGenerator = {
2
+ meta: {
3
+ title: "Build-in-Public Story Generator",
4
+ displayTitle: "Build-in-Public Story Generator",
5
+ description: "輸入本週產品進展、GTM 假設、信號和想請教的問題,生成透明、有數據、有疑問的 Indie Hackers、Reddit、X 和 LinkedIn build-in-public 草案。",
6
+ intro: "把 Tomako 的真實 GTM 進展轉成社區能接受的公開敘事:階段、假設、動作、信號、不確定和反饋問題,而不是營銷稿。",
7
+ category: "社區增長工具",
8
+ keywords: [
9
+ "build in public story",
10
+ "build in public generator",
11
+ "build in public twitter",
12
+ "build in public reddit",
13
+ "Indie Hackers 發帖",
14
+ "公開構建帖子",
15
+ ],
16
+ inputSignal: "階段 + 進展 + GTM 假設 + 信號",
17
+ outputSignal: "多平臺草案 + 真實性檢查",
18
+ boundarySignal: "Review 原型;不自動發佈,不承諾增長結果",
19
+ },
20
+ examples: [
21
+ {
22
+ label: "GTM 假設公開記錄",
23
+ input: "產品:Tomako;階段:beta;本週驗證 Reddit 與 Indie Hackers 是否適合早期反饋;信號:3 個創始人回覆渠道選擇比發帖文案更痛。",
24
+ expectedOutput: "生成 Indie Hackers 長帖、Reddit 討論帖、X thread、LinkedIn 進展帖,以及營銷感、證據缺口和公開風險檢查。",
25
+ },
26
+ ],
27
+ guide: {
28
+ heroVisualAlt:
29
+ "創始人把產品進展、GTM 假設、指標和開放問題整理成透明的社區敘事素材。",
30
+ workspaceHeading: "生成透明、有數據、有疑問的公開進展帖",
31
+ workspaceHint:
32
+ "輸入產品階段、本週進展、Tomako 生成的 GTM 假設、已有信號和想請社區反饋的問題。結果會給出多平臺草案和真實性檢查。",
33
+ workspaceBadge: "Review 原型",
34
+ outputs: "你可以得到什麼",
35
+ outputItems: [
36
+ {
37
+ title: "敘事角度",
38
+ body: "先判斷這周適合講階段、假設、實驗、信號還是不確定,避免把早期學習包裝成成功故事。",
39
+ },
40
+ {
41
+ title: "四個平臺草案",
42
+ body: "同一素材分別生成 Indie Hackers 長帖、Reddit 討論帖、X thread 和 LinkedIn 進展帖。",
43
+ },
44
+ {
45
+ title: "真實性檢查",
46
+ body: "標出營銷味、證據缺口、過度公開和社區契約風險,提醒你發之前改掉。",
47
+ },
48
+ {
49
+ title: "反饋問題",
50
+ body: "把“大家怎麼看”改成更具體的判斷問題,讓社區有空間給出有用反饋。",
51
+ },
52
+ ],
53
+ supportHeading: "適合公開學習記錄,而不是普通社媒發帖",
54
+ supportVisualAlt:
55
+ "產品進展、假設和信號被整理成一份清晰的公開學習記錄。",
56
+ supportItems: [
57
+ "適合獨立開發者、早期 SaaS、開發者工具、AI 產品和正在驗證 GTM 渠道的小團隊。",
58
+ "尤其適合已經用 Tomako 生成過渠道選擇、發佈計劃或增長假設,但不知道怎麼把它講給社區聽的時候。",
59
+ "輸入可以很粗糙,但必須包含真實進展和一個想請教的問題;否則結果會像普通宣傳稿。",
60
+ "輸出定位為草案和複核材料,不是自動發佈、獲客保證或社區運營替代品。",
61
+ ],
62
+ platformHeading: "同一素材,不同社區契約",
63
+ platformVisualAlt:
64
+ "同一個 build-in-public 素材被適配成長帖、討論帖和 thread。",
65
+ platformItems: [
66
+ "Indie Hackers 適合完整講背景、假設、數字、學習和請教點。",
67
+ "Reddit 需要先降低宣傳感,把問題放在前面,並說明你不是來硬推產品。",
68
+ "X thread 要把每條拆成階段、行動、信號和不確定,不要只有口號。",
69
+ "LinkedIn 可以強調決策質量和學習過程,但不能寫成公司新聞稿。",
70
+ ],
71
+ boundaryHeading: "公開之前,先檢查哪些內容不該公開",
72
+ boundaryVisualAlt:
73
+ "帶有營銷味、無證據和敏感信息提示的公開帖複核材料。",
74
+ boundaryItems: [
75
+ "不要公開客戶姓名、敏感收入、未發佈路線圖、私密社區截圖或可識別用戶反饋。",
76
+ "指標可以寫成區間、相對變化或樣本數;沒有數據時要承認是定性信號。",
77
+ "Tomako 的 GTM 策略只能作為假設來源,不應被寫成已經驗證的市場結論。",
78
+ "如果帖子最後只有註冊鏈接或強 CTA,就不再是 build-in-public,而是廣告。",
79
+ ],
80
+ whyTomakoHeading: "為什麼這個工具屬於 Tomako,而不是普通發帖生成器",
81
+ whyTomakoItems: [
82
+ {
83
+ title: "從 GTM 假設出發",
84
+ body: "普通工具先問平臺和語氣;這裡先問階段、渠道假設、信號和不確定。",
85
+ },
86
+ {
87
+ title: "保留疑問",
88
+ body: "好的 build-in-public 不是把一切寫得很順,而是讓讀者看到你正在驗證什麼。",
89
+ },
90
+ {
91
+ title: "按社區改表達",
92
+ body: "Reddit、Indie Hackers、X 和 LinkedIn 的可接受表達不一樣,不能只換長短。",
93
+ },
94
+ {
95
+ title: "先複核再發布",
96
+ body: "結果會提醒哪些句子太像營銷、哪些結論沒有證據、哪些信息不適合公開。",
97
+ },
98
+ ],
99
+ reviewHeading: "把結果當成發佈前複核單",
100
+ reviewVisualAlt:
101
+ "公開敘事草案旁邊有證據、風險和反饋問題複核標記。",
102
+ reviewItems: [
103
+ "發佈前刪掉沒有證據支撐的絕對結論。",
104
+ "至少保留一個失敗、猶豫或待驗證問題。",
105
+ "把指標、用戶反饋和 Tomako 假設分開寫,避免混成一段宣傳。",
106
+ "對 Reddit 版本尤其要檢查是否像自我推廣。",
107
+ "複製前確認公開邊界:哪些數字、客戶、路線圖和內部決策不能發。",
108
+ ],
109
+ standardHeading: "好的 build-in-public 工具應該具體,也應該剋制",
110
+ standardVisualAlt:
111
+ "一份透明公開進展帖的標準卡,包含階段、信號和問題。",
112
+ standardItems: [
113
+ "質量:輸出應有真實結構,而不是把產品賣點換成社媒語氣。",
114
+ "可信:必須區分事實、假設、指標、定性觀察和未確認問題。",
115
+ "易用:第一版只需要產品階段、本週進展和反饋問題,不要求完整增長報告。",
116
+ "平臺匹配:不同平臺的草案應改變社交契約,而不只是改變字數。",
117
+ "安全:要提醒過度公開、客戶隱私、路線圖和社區自我推廣風險。",
118
+ ],
119
+ faq: "常見問題",
120
+ faqItems: [
121
+ {
122
+ question: "這個工具會自動發到 X、Reddit 或 LinkedIn 嗎?",
123
+ answer:
124
+ "不會。它只生成草案和複核清單。你需要人工編輯,並按各社區規則手動發佈。",
125
+ },
126
+ {
127
+ question: "沒有真實數據可以用嗎?",
128
+ answer:
129
+ "可以,但帖子應該明確說這是定性觀察或待驗證假設。沒有數據時不要偽造增長感。",
130
+ },
131
+ {
132
+ question: "它和普通 AI 發帖生成器有什麼區別?",
133
+ answer:
134
+ "普通工具通常從平臺和語氣開始。這個工具從階段、GTM 假設、證據、有效/不確定和社區反饋問題開始。",
135
+ },
136
+ {
137
+ question: "這個 review 版本是否接入了真實 Agent?",
138
+ answer:
139
+ "還沒有。當前是前端確定性原型,用於驗證交互和輸出結構;轉 published 前應確認是否升級為 Agent/Skill Result。",
140
+ },
141
+ ],
142
+ ctaHint:
143
+ "如果你還沒有可公開的 GTM 假設,可以先做渠道選擇;如果已有一段原始社媒素材,可以繼續做平臺適配。",
144
+ ctaPrimary: "適配已有社媒素材",
145
+ ctaSecondary: "選擇冷啟動渠道",
146
+ },
147
+ widget: {
148
+ formTitle: "公開進展 brief",
149
+ formHint:
150
+ "請寫真實進展,不要只寫賣點。結果會保留不確定和證據缺口,幫助你發得更像學習記錄。",
151
+ productNameLabel: "產品名",
152
+ productNamePlaceholder: "Tomako",
153
+ stageLabel: "當前階段",
154
+ productContextLabel: "產品背景",
155
+ productContextPlaceholder:
156
+ "Tomako 是面向獨立開發者的 AI GTM OS,幫助把產品上下文轉成渠道策略、發佈素材和增長動作。",
157
+ thisWeekLabel: "這周真實進展",
158
+ thisWeekPlaceholder:
159
+ "例如:我們用 Tomako 生成了冷啟動渠道排序,發現 Reddit 適合問具體判斷,Product Hunt 暫時不適合直接衝發佈。",
160
+ feedbackAskLabel: "這周想請社區反饋什麼?",
161
+ feedbackAskPlaceholder:
162
+ "例如:早期工具應該先定位成 GTM workspace,還是拆成幾個更具體的 launch 工具?",
163
+ advancedTitle: "補充 GTM 策略、數據和公開邊界",
164
+ gtmStrategyLabel: "Tomako 生成的 GTM 假設",
165
+ gtmStrategyPlaceholder:
166
+ "例如:優先驗證 Reddit/Indie Hackers 的反饋質量,暫緩 Product Hunt,先用公開學習帖測試定位。",
167
+ metricsLabel: "數據或信號",
168
+ metricsPlaceholder:
169
+ "例如:3 位 founder 回覆渠道選擇比文案生成更痛;1 條 Reddit 草案被認為太像自我推廣。",
170
+ uncertaintyLabel: "仍不確定的地方",
171
+ uncertaintyPlaceholder:
172
+ "例如:不確定 build-in-public 是獲客渠道,還是更適合作為產品學習和信任建設。",
173
+ boundaryLabel: "公開邊界",
174
+ generate: "生成公開敘事草案",
175
+ status: {
176
+ idle: "草案預覽",
177
+ done: "故事已生成",
178
+ error: "需要更具體輸入",
179
+ },
180
+ previewItems: [
181
+ "Indie Hackers、Reddit、X、LinkedIn 四版草案",
182
+ "營銷味、證據缺口和公開風險檢查",
183
+ "可複製 Markdown 導出",
184
+ ],
185
+ workspaceVisualAlt:
186
+ "粗糙進展筆記、指標信號和反饋問題被整理成公開構建草案。",
187
+ stages: {
188
+ idea: "想法驗證",
189
+ prototype: "原型驗證",
190
+ beta: "Beta 測試",
191
+ launched: "已發佈早期版本",
192
+ postLaunch: "發佈後學習",
193
+ },
194
+ boundaries: {
195
+ open: "可公開真實階段和非敏感指標",
196
+ blurMetrics: "指標寫成區間或相對變化",
197
+ avoidRoadmap: "不公開未發佈路線圖",
198
+ customerSafe: "客戶和用戶反饋全部匿名化",
199
+ },
200
+ channels: {
201
+ indieHackers: "Indie Hackers",
202
+ reddit: "Reddit",
203
+ xThread: "X Thread",
204
+ linkedin: "LinkedIn",
205
+ },
206
+ errors: {
207
+ validation: {
208
+ title: "先補齊最小公開進展 brief",
209
+ body: "需要產品名、產品背景、本週真實進展和一個具體反饋問題,才能生成有用草案。",
210
+ },
211
+ weakInput: {
212
+ title: "請輸入真實進展,而不是佔位內容",
213
+ body: "當前輸入過短或像測試文本。補充你做了什麼、看到什麼信號、哪裡還不確定。",
214
+ },
215
+ },
216
+ resultReady: "已生成公開敘事包",
217
+ copied: "已複製",
218
+ copy: "複製 Markdown",
219
+ download: "下載",
220
+ reset: "重置",
221
+ primaryRisk: "主要發佈風險",
222
+ recommendedLead: "建議開頭",
223
+ evidenceGaps: "證據缺口",
224
+ authenticityIssues: "真實性檢查",
225
+ communityFit: "社區表達原則",
226
+ reviewChecklist: "發佈前複核",
227
+ },
228
+ } as const;
229
+
230
+ export default buildInPublicStoryGenerator;
@@ -0,0 +1,440 @@
1
+ const coldStartChannelSelector = {
2
+ meta: {
3
+ title: "冷啟動渠道策略生成器",
4
+ description: "為早期產品制定冷啟動渠道策略。填入產品、目標客戶、時間和預算,取得優先測試渠道、選擇理由和下一步驗證信號。",
5
+ intro: "先確定冷啟動階段最值得測試的渠道,再用真實信號決定下一步。",
6
+ category: "增長策略工具",
7
+ keywords: [
8
+ "客戶獲取渠道",
9
+ "冷啟動渠道策略",
10
+ "新創公司客戶獲取渠道",
11
+ "如何選擇客戶獲取渠道",
12
+ "早期成長行銷策略",
13
+ ],
14
+ inputSignal: "產品 URL 或產品描述",
15
+ outputSignal: "冷啟動渠道策略 + 首個驗證計畫",
16
+ boundarySignal: "根據公開資訊和你提供的脈絡提出決策輔助;投入預算或長期執行前請人工複核",
17
+ },
18
+ examples: [
19
+ {
20
+ label: "剛上線的 Web SaaS",
21
+ input: "產品 URL https://example.com,目標市場北美,每週 3-7 小時,預算 500 美元以內",
22
+ expectedOutput: "輸出 3-5 個優先渠道、每個渠道的匹配理由、第一步動作、驗證指標、暫不優先渠道和 7 天執行計劃。",
23
+ },
24
+ {
25
+ label: "沒有官網的 App",
26
+ input: "手動描述一個面向中文用戶的效率 App,剛內測,無預算,每週 8-15 小時",
27
+ expectedOutput: "基於描述給出渠道排序,並把缺失的公開資料、目標用戶證據和商店素材列為 missingInfo。",
28
+ },
29
+ {
30
+ label: "開發者工具",
31
+ input: "產品 URL,一個面向 API 團隊的開源開發者工具,全球市場,已有 GitHub 倉庫",
32
+ expectedOutput: "優先考慮開發者社區、文檔型內容、GitHub/Show HN 等渠道,並解釋為什麼廣告或泛社媒暫不優先。",
33
+ },
34
+ ],
35
+ guide: {
36
+ workspaceTitle: "冷啟動渠道策略",
37
+ workspaceHint:
38
+ "輸入產品、客戶、時間和預算,取得適合目前階段的冷啟動渠道策略、選擇理由和驗證信號。",
39
+ workspaceBadge: "早期產品冷啟動渠道策略",
40
+ standard: {
41
+ benefits: {
42
+ title: "選一條現在就能行動的客戶獲取渠道",
43
+ cards: [
44
+ {
45
+ title: "先從一個能執行的選項開始",
46
+ body: "依目標用戶、階段、市場、時間和預算,排出 3–5 個客戶獲取渠道;第一輪只要專注其中一個。",
47
+ },
48
+ {
49
+ title: "看懂為什麼現在適合做",
50
+ body: "了解渠道為何符合目前情況、第一步要做什麼,以及為什麼其他選項應該先等等。",
51
+ },
52
+ {
53
+ title: "知道什麼結果會改變判斷",
54
+ body: "用一個小測試和明確信號——如回覆、試用、註冊或訪談——決定繼續、調整或換下一個渠道。",
55
+ },
56
+ ],
57
+ },
58
+ reportPreview: {
59
+ eyebrow: "渠道策略示例",
60
+ title: "你會得到怎樣的成長渠道策略",
61
+ intro:
62
+ "這份策略會結合你的產品、目標客戶、目前階段和資源限制,告訴你現在優先測試哪個渠道、為什麼值得先做、第一步怎麼做,以及出現什麼信號後值得繼續投入。",
63
+ inputLabel: "示例產品背景",
64
+ input:
65
+ "面向小型銷售團隊的 B2B SaaS,內測階段;北美市場;每週可投入 3–7 小時;測試預算低於 500 美元。",
66
+ outputLabel: "你會得到的渠道策略",
67
+ fields: [
68
+ {
69
+ label: "先測試哪個渠道",
70
+ body: "在現有時間、預算和證據下,最值得先測試的客戶獲取渠道。",
71
+ },
72
+ {
73
+ label: "為什麼符合現在",
74
+ body: "渠道和目標客戶、產品階段的匹配理由,以及可以馬上執行的最小一步。",
75
+ },
76
+ {
77
+ label: "第一步怎麼做",
78
+ body: "用最小的行動觸達目標客戶,盡快得到真實回饋。",
79
+ },
80
+ {
81
+ label: "什麼結果值得繼續",
82
+ body: "看到什麼信號時應該繼續、調整實驗,或測試下一個客戶獲取渠道。",
83
+ },
84
+ ],
85
+ },
86
+ imageTextSections: [
87
+ {
88
+ id: "channel-priority",
89
+ title: "新創公司最好的冷啟動渠道有哪些?",
90
+ body: [
91
+ "沒有一種冷啟動渠道對所有新創公司都最好。早期團隊較適合從目標客戶已經在留意、產品有機會建立信任,而且你能持續投入的地方開始。",
92
+ "SEO 和內容、創辦人外聯、社群、合作夥伴、發佈平臺、推薦和付費獲客都可能有效。填入公開產品 URL 或具體的尚未上線產品說明後,工具會依你的情況排出 3–5 個選項,而不是給你一份通用渠道清單。",
93
+ ],
94
+ image: {
95
+ src: "/tools/cold-start-channel-selector-section-priority-8bit-v3.webp",
96
+ alt: "產品說明變成聚焦的冷啟動渠道策略",
97
+ },
98
+ imageFirst: true,
99
+ },
100
+ {
101
+ id: "channel-tradeoffs",
102
+ title: "新創公司如何選擇第一條冷啟動渠道?",
103
+ body: [
104
+ "先選一個你能實際觸達的客戶群,再做一項可以重複的小型測試。比較目標客戶匹配度、產品階段、所需資產、回饋速度、成本,以及最小驗證動作能否帶來回覆、試用、註冊或訪談。",
105
+ "最適合先測試的,不一定是流量最大的渠道,而是能在你現有的產品、證據、時間和預算下,盡快帶來有效學習信號的渠道。",
106
+ ],
107
+ image: {
108
+ src: "/tools/cold-start-channel-selector-section-tradeoffs-8bit-v2.webp",
109
+ alt: "在立即測試與暫緩之間做平衡判斷",
110
+ },
111
+ background: "muted",
112
+ },
113
+ {
114
+ id: "channel-validation",
115
+ title: "新創公司應該先做自然獲客還是付費獲客?",
116
+ body: [
117
+ "當你還需要理解客戶語言和產品回饋時,自然渠道或創辦人主導的獲客通常更適合先測試。你可以透過對話、社群、內容和外聯,更快聽到真實回饋。",
118
+ "當目標用戶、轉換路徑、數據追蹤、單位經濟和測試預算都較清楚時,付費獲客才更有價值。這份策略會把取捨說清楚,而不是預設讓你投放廣告。",
119
+ ],
120
+ image: {
121
+ src: "/tools/cold-start-channel-selector-section-validation-8bit-v2.webp",
122
+ alt: "一輪小型外聯實驗得到早期回饋信號",
123
+ },
124
+ imageFirst: true,
125
+ },
126
+ ],
127
+ narrativeSections: [
128
+ {
129
+ id: "channel-validation",
130
+ title: "如何測試一條冷啟動渠道是否有效?",
131
+ body: [
132
+ "先用一條渠道、一個目標客戶、一項具體動作和一個可觀察信號做小型測試,再決定是否增加投入。有效信號可以是高品質回覆、試用、註冊、訪談,或任何證明目標客戶正在回應的結果。",
133
+ "把結果當作需要驗證的假設。執行建議的第一步,觀察對應信號,再決定繼續、調整測試,或換下一個渠道,然後再增加預算。",
134
+ ],
135
+ background: "muted",
136
+ },
137
+ {
138
+ id: "growth-strategy-context",
139
+ title: "冷啟動渠道策略如何放進成長行銷策略?",
140
+ body: [
141
+ "冷啟動渠道策略解決的是一個更早的決定:第一批客戶應該去哪裡找、從哪裡獲得學習信號。更完整的成長行銷策略還會涉及定位、轉換路徑、啟動、留存、衡量和一組持續的實驗。",
142
+ "先用這輪渠道測試理解哪些資訊和動作能打動客戶,再決定下一個渠道、下一則訊息或下一項實驗。它是成長行銷策略的第一步,不是對完整策略的替代。",
143
+ ],
144
+ },
145
+ ],
146
+ generation: {
147
+ title: "把第一輪渠道測試變成下一步成長決策",
148
+ ctaLabel: "取得我的渠道策略",
149
+ steps: [
150
+ {
151
+ title: "說明產品和目標客戶",
152
+ body: "輸入公開 URL,或簡單說明目標客戶、問題、產品和目前階段。內測或尚未上線的產品也可以直接填寫說明。",
153
+ },
154
+ {
155
+ title: "寫下實際能投入的資源",
156
+ body: "補充市場、階段、每週可用時間和測試預算,讓渠道策略符合你現在真正能執行的條件。",
157
+ },
158
+ {
159
+ title: "取得可測試的冷啟動渠道策略",
160
+ body: "查看哪些客戶獲取渠道現在最值得測試、為什麼適合、第一步做什麼,以及哪些選項應該先等等。",
161
+ },
162
+ {
163
+ title: "用結果決定下一步",
164
+ body: "先用回覆、註冊、試用、收藏或訪談決定繼續、調整,或換到下一個選項,再把學到的內容帶入下一輪成長實驗。",
165
+ },
166
+ ],
167
+ },
168
+ faqIntro: "在選擇、測試和調整客戶獲取渠道前,你可能會關心這些問題。",
169
+ faqCtaLabel: "取得我的渠道策略",
170
+ },
171
+ valueKicker: "你可以得到什麼",
172
+ valueTitle: "把增長渠道從“都想試”變成“先試這幾個”",
173
+ valueIntro:
174
+ "冷啟動最貴的不是沒有渠道,而是把有限時間平均撒到每個平臺。這個工具把產品形態、市場、階段和資源約束放在一起判斷。",
175
+ valueItems: [
176
+ {
177
+ title: "Top 渠道排序",
178
+ body: "按當前階段推薦 3-5 個優先渠道,並說明為什麼現在適合做。",
179
+ },
180
+ {
181
+ title: "暫不優先清單",
182
+ body: "把廣告、泛社媒、SEO 或發佈平臺中暫時不值得投入的選項說清楚。",
183
+ },
184
+ {
185
+ title: "第一步動作",
186
+ body: "每個渠道給出第一件可以做的小動作,避免停在策略建議。",
187
+ },
188
+ {
189
+ title: "7 天輕計劃",
190
+ body: "給出一份簡單執行節奏,方便你驗證第一個增長信號。",
191
+ },
192
+ ],
193
+ standardsKicker: "為什麼選 Tomako",
194
+ standardsTitle: "好的渠道選擇器應該先幫你排除噪音",
195
+ standardsIntro:
196
+ "普通清單會告訴你 Product Hunt、Reddit、小紅書、SEO、廣告都能做。真正有用的選擇器要解釋:為什麼是現在,為什麼是你,為什麼不是別的。",
197
+ standards: [
198
+ {
199
+ title: "貼合產品形態",
200
+ body: "開發者工具、消費 App、B2B SaaS 和內容產品不應該得到同一組渠道。",
201
+ },
202
+ {
203
+ title: "尊重資源約束",
204
+ body: "每週 3 小時和 15 小時、零預算和小預算,優先級必須不同。",
205
+ },
206
+ {
207
+ title: "說明反證條件",
208
+ body: "每個推薦都應說清什麼信號出現時要停下或換渠道。",
209
+ },
210
+ {
211
+ title: "保留不確定性",
212
+ body: "信息不足時應列出缺失信息和可信度,而不是編一個漂亮答案。",
213
+ },
214
+ ],
215
+ resultKicker: "結果怎麼用",
216
+ resultTitle: "把報告當作一輪驗證計劃,而不是最終答案",
217
+ resultGuidanceItems: [
218
+ "先做優先級第一的渠道,跑到能判斷是否有信號,再擴展第二和第三渠道。",
219
+ "如果結果裡有 missingInfo,先補齊這些信息;它們通常會改變渠道排序。",
220
+ "不要把低可信度建議直接變成長期戰略,先用 7 天計劃驗證能不能拿到回覆、註冊、收藏、試用或訪談。",
221
+ "把第一步動作複製到你的 Launch 或 Growth 看板,再根據真實反饋調整。",
222
+ ],
223
+ useCasesKicker: "適用場景",
224
+ useCasesTitle: "適合剛要開始增長,但不想亂試一圈的時候",
225
+ useCasesIntro:
226
+ "它不是代替增長負責人,而是幫你把第一輪渠道假設整理得更可執行。",
227
+ useCases: [
228
+ "獨立開發者剛上線一個 Web SaaS,不確定應該先做 SEO、社區還是發佈平臺。",
229
+ "App 還沒有完整官網,只能用產品描述和目標市場先判斷冷啟動方向。",
230
+ "開發者工具已有 GitHub 或文檔資產,需要判斷是走內容、社區還是開發者發佈渠道。",
231
+ ],
232
+ faqKicker: "常見問題",
233
+ faqTitle: "客戶獲取渠道選擇器常見問題",
234
+ faqItems: [
235
+ {
236
+ question: "什麼是冷啟動渠道策略生成器?",
237
+ answer:
238
+ "冷啟動渠道策略生成器是一種協助你決定先測試哪些獲客渠道的決策工具。Tomako 會比較產品、目標客戶、階段、市場、時間和預算,再提出渠道排序,而不是一份適用所有產品的通用行銷渠道清單。",
239
+ },
240
+ {
241
+ question: "冷啟動渠道策略生成器怎麼使用?",
242
+ answer:
243
+ "輸入公開產品 URL 或具體的產品說明,再選擇產品型態、目標市場、階段、每週時間和測試預算。冷啟動渠道策略生成器會依照這些限制產生渠道策略;繼續補充目標用戶、已有資產和試過的渠道,可以讓比較更具體。",
244
+ },
245
+ {
246
+ question: "客戶獲取渠道選擇器會產生什麼報告?",
247
+ answer:
248
+ "客戶獲取渠道報告包含 3–5 個優先渠道、目前匹配理由、第一步動作、所需資產、驗證指標、主要風險、暫緩渠道、簡短執行計畫、缺失資訊和可信邊界。",
249
+ },
250
+ {
251
+ question: "SaaS 或尚未上線的產品可以使用客戶獲取渠道選擇器嗎?",
252
+ answer:
253
+ "可以。公開網站會有幫助,但不是必填;SaaS、內測和尚未上線的團隊可以手動說明目標客戶、問題、產品和階段。公開證據較少時,客戶獲取渠道選擇器可能給出較低的可信度,並列出更多需要補充的資訊。",
254
+ },
255
+ {
256
+ question: "客戶獲取渠道選擇器能保證成長嗎?",
257
+ answer:
258
+ "不能。客戶獲取渠道選擇器提供的是需要驗證的渠道排序假設,不保證取得客戶或收入。投入長期預算或把它當作完整獲客策略前,仍要用真實回覆、註冊、試用、留存或使用者訪談驗證。",
259
+ },
260
+ ],
261
+ boundaryTitle: "支持與限制",
262
+ boundaryItems: [
263
+ "支持產品 URL、App/工具描述、目標市場、階段、預算和時間約束。",
264
+ "不處理登錄後內容、私密資料、付費數據庫或無法公開訪問的頁面。",
265
+ "不承諾增長結果、平臺收錄、廣告表現或收入增長。",
266
+ "結果基於公開資訊和你提供的上下文,僅作為決策輔助;投入預算或制定長期渠道計畫前請人工複核。",
267
+ ],
268
+ ctaHint: "想繼續檢查上線基礎?先用 GTM checklist 找出發佈前缺口。",
269
+ ctaPrimary: "檢查 GTM readiness",
270
+ ctaSecondary: "查看全部工具",
271
+ visualAlt: {
272
+ hero: "產品說明變成聚焦的冷啟動渠道策略",
273
+ standards: "在立即測試與暫緩之間做平衡判斷",
274
+ result: "一輪小型客戶獲取實驗得到早期信號",
275
+ useCases: "產品說明、資源限制和可複核的渠道建議",
276
+ },
277
+ },
278
+ widget: {
279
+ productUrlLabel: "產品 URL",
280
+ productUrlPlaceholder: "https://your-product.com",
281
+ descriptionLabel: "產品描述",
282
+ descriptionHint: "內測或尚未上線產品可填",
283
+ descriptionPlaceholder: "用 2-4 句話說明產品解決什麼問題、給誰用、當前階段是什麼。",
284
+ productFormLabel: "產品形態",
285
+ marketLabel: "目標市場",
286
+ stageLabel: "當前階段",
287
+ hoursLabel: "每週可投入時間",
288
+ budgetLabel: "預算",
289
+ audienceLabel: "目標用戶",
290
+ audiencePlaceholder: "例如:獨立開發者、跨境電商運營、B2B 銷售團隊",
291
+ assetsLabel: "已有資產",
292
+ assetsPlaceholder: "例如:官網、文檔、GitHub、郵件列表、社群、案例、內容庫",
293
+ triedLabel: "已嘗試渠道",
294
+ triedPlaceholder: "例如:發過 Product Hunt、寫過 SEO 文章、做過小紅書",
295
+ constraintsLabel: "限制或偏好",
296
+ constraintsPlaceholder: "例如:不想投廣告、不能公開客戶案例、只有一個人維護",
297
+ showAdvanced: "補充高級信息",
298
+ hideAdvanced: "收起高級信息",
299
+ submit: "取得渠道策略",
300
+ submitting: "正在準備渠道策略",
301
+ running: "正在產生渠道策略",
302
+ inputHint:
303
+ "只使用公開產品資訊。沒有 URL 時請補充具體產品說明和目標用戶;報告是需要驗證的假設,不承諾成長結果。",
304
+ previewTitle: "三步取得你的渠道策略",
305
+ previewSubtitle: "告訴我們你在做什麼,以及你現在能投入哪些資源;工具會把這些資訊變成可以立即開始測試的渠道策略。",
306
+ previewSteps: [
307
+ "說明產品和目標客戶",
308
+ "補充市場、階段、時間和預算",
309
+ "取得可測試的渠道策略",
310
+ ],
311
+ rightPanelHint: "提交後,這裡會顯示渠道策略和首個驗證計畫。",
312
+ previewItems: [
313
+ "現在最值得優先驗證的 3-5 個渠道。",
314
+ "暫時不建議投入的渠道和原因。",
315
+ "每個渠道的第一步動作、驗證指標和主要風險。",
316
+ "一份簡單的 7 天執行計劃。",
317
+ ],
318
+ runningTitle: "正在產生你的渠道策略",
319
+ runningHint:
320
+ "正在結合產品資訊和限制條件,產生你的首輪渠道策略,可能需要一兩分鐘。",
321
+ loadingSteps: [
322
+ { status: "complete", title: "讀取產品資訊", countdown: "" },
323
+ { status: "active", title: "比較渠道選項", countdown: "" },
324
+ { status: "pending", title: "準備首個測試", countdown: "" },
325
+ ],
326
+ loadingTip:
327
+ "冷啟動通常先驗證一個低成本社區、內容或夥伴渠道,再擴展到更重的廣告和長期 SEO。",
328
+ runningStatusLabel: "正在產生渠道策略",
329
+ runningTipLabel: "提示",
330
+ reportTitle: "客戶獲取渠道策略",
331
+ copyReport: "複製報告",
332
+ copiedReport: "已複製",
333
+ copyMarkdown: "複製 Markdown",
334
+ downloadHtml: "下載 HTML 報告",
335
+ analyzeAnother: "重新分析",
336
+ retry: "重試",
337
+ errorTitle: "暫時無法產生渠道策略",
338
+ sections: {
339
+ analysis: "分析依據",
340
+ priority: "優先渠道",
341
+ plan: "簡單執行計劃",
342
+ avoid: "暫不優先",
343
+ boundary: "可信邊界",
344
+ },
345
+ labels: {
346
+ productModel: "產品/商業模式",
347
+ userStructure: "使用者結構",
348
+ channelDiscovery: "候選渠道發現",
349
+ selectionCriteria: "選擇準則",
350
+ targetSegment: "目標客群",
351
+ whyNow: "為什麼現在做",
352
+ firstAction: "第一步動作",
353
+ selectionEvidence: "選擇依據",
354
+ disproofSignals: "證偽訊號",
355
+ assets: "需要準備",
356
+ metrics: "驗證指標",
357
+ risks: "風險",
358
+ actions: "行動",
359
+ expectedSignal: "預期信號",
360
+ missingInfo: "缺失信息",
361
+ },
362
+ fallback: {
363
+ unknown: "尚未判定",
364
+ },
365
+ segmentPriority: {
366
+ primary: "主要",
367
+ secondary: "次要",
368
+ supporting: "輔助",
369
+ },
370
+ priority: {
371
+ first: "第一優先",
372
+ second: "第二優先",
373
+ third: "第三優先",
374
+ later: "稍後考慮",
375
+ },
376
+ confidence: {
377
+ high: "高可信度",
378
+ medium: "中可信度",
379
+ low: "低可信度",
380
+ },
381
+ status: {
382
+ PENDING: "開始分析",
383
+ STREAMING: "正在分析",
384
+ AWAITING_INPUT: "正在準備報告",
385
+ SUCCEEDED: "正在讀取報告",
386
+ default: "處理中",
387
+ },
388
+ errors: {
389
+ missingInput: "請輸入產品 URL,或填寫一段足夠具體的產品描述。",
390
+ invalidUrl: "請輸入可公開存取的有效產品 URL,或清空 URL 後改用產品說明。",
391
+ weakDescription: "產品描述太短,請補充目標用戶、問題和當前階段。",
392
+ validation: "請先修正輸入內容。",
393
+ submit: "暫時無法開始分析,請稍後重試。",
394
+ task: "分析沒有完成,因此暫時無法顯示渠道策略。請重試。",
395
+ timeout: "分析耗時超過預期,請稍後重試。",
396
+ schema: "報告無法被安全讀取,請重新分析。",
397
+ },
398
+ productFormOptions: [
399
+ { value: "unknown", label: "不確定" },
400
+ { value: "web_app", label: "Web / SaaS" },
401
+ { value: "mobile_app", label: "移動 App" },
402
+ { value: "browser_extension", label: "瀏覽器插件" },
403
+ { value: "api_devtool", label: "API / 開發者工具" },
404
+ { value: "open_source", label: "開源項目" },
405
+ { value: "content_product", label: "內容 / 知識產品" },
406
+ { value: "other", label: "其他" },
407
+ ],
408
+ marketOptions: [
409
+ { value: "unknown", label: "不確定" },
410
+ { value: "global", label: "全球" },
411
+ { value: "china", label: "中國" },
412
+ { value: "north_america", label: "北美" },
413
+ { value: "europe", label: "歐洲" },
414
+ { value: "japan_korea", label: "日韓" },
415
+ { value: "southeast_asia", label: "東南亞" },
416
+ { value: "other", label: "其他" },
417
+ ],
418
+ stageOptions: [
419
+ { value: "idea", label: "想法階段" },
420
+ { value: "prototype", label: "原型階段" },
421
+ { value: "private_beta", label: "內測階段" },
422
+ { value: "launched", label: "剛上線" },
423
+ { value: "early_traction", label: "已有少量用戶" },
424
+ ],
425
+ weeklyHoursOptions: [
426
+ { value: "under_3", label: "少於 3 小時" },
427
+ { value: "3_7", label: "3-7 小時" },
428
+ { value: "8_15", label: "8-15 小時" },
429
+ { value: "16_plus", label: "16 小時以上" },
430
+ ],
431
+ budgetOptions: [
432
+ { value: "none", label: "無預算" },
433
+ { value: "under_500", label: "500 美元以內" },
434
+ { value: "500_2000", label: "500-2000 美元" },
435
+ { value: "2000_plus", label: "2000 美元以上" },
436
+ ],
437
+ },
438
+ } as const;
439
+
440
+ export default coldStartChannelSelector;