@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,422 @@
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
+ analyzeAnother: "重新分析",
334
+ retry: "重试",
335
+ errorTitle: "暂时无法生成渠道策略",
336
+ sections: {
337
+ priority: "优先渠道",
338
+ plan: "简单执行计划",
339
+ avoid: "暂不优先",
340
+ boundary: "可信边界",
341
+ },
342
+ labels: {
343
+ whyNow: "为什么现在做",
344
+ firstAction: "第一步动作",
345
+ assets: "需要准备",
346
+ metrics: "验证指标",
347
+ risks: "风险",
348
+ actions: "行动",
349
+ expectedSignal: "预期信号",
350
+ missingInfo: "缺失信息",
351
+ },
352
+ priority: {
353
+ first: "第一优先",
354
+ second: "第二优先",
355
+ third: "第三优先",
356
+ later: "稍后考虑",
357
+ },
358
+ confidence: {
359
+ high: "高可信度",
360
+ medium: "中可信度",
361
+ low: "低可信度",
362
+ },
363
+ status: {
364
+ PENDING: "开始分析",
365
+ STREAMING: "正在分析",
366
+ AWAITING_INPUT: "正在准备报告",
367
+ SUCCEEDED: "正在读取报告",
368
+ default: "处理中",
369
+ },
370
+ errors: {
371
+ missingInput: "请输入产品 URL,或填写一段足够具体的产品描述。",
372
+ invalidUrl: "请输入可公开访问的有效产品 URL,或清空 URL 后改用产品描述。",
373
+ weakDescription: "产品描述太短,请补充目标用户、问题和当前阶段。",
374
+ validation: "请先修正输入内容。",
375
+ submit: "暂时无法开始分析,请稍后重试。",
376
+ task: "分析没有完成,因此暂时无法显示渠道策略。请重试。",
377
+ timeout: "分析耗时超过预期,请稍后重试。",
378
+ schema: "报告无法被安全读取,请重新分析。",
379
+ },
380
+ productFormOptions: [
381
+ { value: "unknown", label: "不确定" },
382
+ { value: "web_app", label: "Web / SaaS" },
383
+ { value: "mobile_app", label: "移动 App" },
384
+ { value: "browser_extension", label: "浏览器插件" },
385
+ { value: "api_devtool", label: "API / 开发者工具" },
386
+ { value: "open_source", label: "开源项目" },
387
+ { value: "content_product", label: "内容 / 知识产品" },
388
+ { value: "other", label: "其他" },
389
+ ],
390
+ marketOptions: [
391
+ { value: "unknown", label: "不确定" },
392
+ { value: "global", label: "全球" },
393
+ { value: "china", label: "中国" },
394
+ { value: "north_america", label: "北美" },
395
+ { value: "europe", label: "欧洲" },
396
+ { value: "japan_korea", label: "日韩" },
397
+ { value: "southeast_asia", label: "东南亚" },
398
+ { value: "other", label: "其他" },
399
+ ],
400
+ stageOptions: [
401
+ { value: "idea", label: "想法阶段" },
402
+ { value: "prototype", label: "原型阶段" },
403
+ { value: "private_beta", label: "内测阶段" },
404
+ { value: "launched", label: "刚上线" },
405
+ { value: "early_traction", label: "已有少量用户" },
406
+ ],
407
+ weeklyHoursOptions: [
408
+ { value: "under_3", label: "少于 3 小时" },
409
+ { value: "3_7", label: "3-7 小时" },
410
+ { value: "8_15", label: "8-15 小时" },
411
+ { value: "16_plus", label: "16 小时以上" },
412
+ ],
413
+ budgetOptions: [
414
+ { value: "none", label: "无预算" },
415
+ { value: "under_500", label: "500 美元以内" },
416
+ { value: "500_2000", label: "500-2000 美元" },
417
+ { value: "2000_plus", label: "2000 美元以上" },
418
+ ],
419
+ },
420
+ } as const;
421
+
422
+ export default coldStartChannelSelector;