@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,401 @@
1
+ const productAgreementGenerator = {
2
+ meta: {
3
+ title: "隐私政策生成器:用户协议和服务条款草案",
4
+ description: "输入产品信息,生成隐私政策、用户协议、服务条款、Cookie 说明和数据处理草案,并附带风险提示、缺失信息与上线前复核清单。",
5
+ intro: "面向 App、Web、SaaS 和 AI 产品上线前准备。先用少量真实产品事实生成可复制、可下载的协议草案,再补充主体、邮箱、SDK、付款和地区信息继续修改。",
6
+ category: "合规工具",
7
+ keywords: [
8
+ "隐私政策生成器",
9
+ "用户协议生成器",
10
+ "服务条款生成器",
11
+ "产品协议生成器",
12
+ "App 隐私政策",
13
+ "Cookie 政策生成器",
14
+ ],
15
+ inputSignal: "产品信息、上线地区、协议类型",
16
+ outputSignal: "隐私政策、用户协议、复核清单",
17
+ boundarySignal: "草案,不是法律意见",
18
+ },
19
+ guide: {
20
+ heroImageAlt: "从产品简要信息整理成协议草案包和复核清单的视觉图。",
21
+ workspaceHeading: "生成隐私政策和用户协议草案",
22
+ workspaceHint: "填写产品名称、形态、上线地区和一句真实业务说明,先生成可审阅草案;主体、邮箱、SDK 等信息可以生成后再补。",
23
+ workspaceBadge: "隐私政策 + 用户协议",
24
+ outputs: "生成后可以拿到什么",
25
+ outputsIntro:
26
+ "这不是一份空白隐私政策模板或用户协议模板。它会把产品事实整理成可复制、可下载、可继续修改的协议草案包,并把缺口和风险一起摆出来。",
27
+ outputItems: [
28
+ {
29
+ title: "隐私政策和用户协议草案",
30
+ body: "按选择输出隐私政策、用户协议、服务条款、Cookie 说明、DPA、账号注销说明或儿童隐私说明。",
31
+ },
32
+ {
33
+ title: "风险提示",
34
+ body: "把儿童、定位、支付、广告、AI 输入、跨境传输和多地区上线等容易漏掉的隐私与合规风险单独标出来。",
35
+ },
36
+ {
37
+ title: "待确认信息",
38
+ body: "运营主体、联系邮箱、第三方 SDK、数据保存期限等未知项不会被硬编,而是作为后续补充项返回。",
39
+ },
40
+ {
41
+ title: "上线前复核清单",
42
+ body: "把发布前需要人工核对的条款、主体、数据字段、服务商和地区规则整理成清单。",
43
+ },
44
+ {
45
+ title: "可继续修改的版本",
46
+ body: "生成后可以通过对话补充事实、批量调整措辞,或只修改某一份协议。",
47
+ },
48
+ ],
49
+ valueVisualAlt: "协议草案包、风险提示和可下载文件夹的视觉图。",
50
+ whyTomako: "为什么不用普通协议模板",
51
+ whyTomakoIntro:
52
+ "搜索隐私政策生成器或用户协议生成器时,用户真正需要的不是一篇通用示例,而是一份能按产品事实继续补全的审阅材料。Tomako 更适合早期团队把上线前必须准备的协议、风险和待确认信息放到同一个工作流里。",
53
+ whyTomakoItems: [
54
+ {
55
+ title: "输入成本低",
56
+ body: "第一步只要求产品名称、形态、地区、说明和要生成的文件;主体、邮箱、SDK 等细节可以生成后再补。",
57
+ },
58
+ {
59
+ title: "结果结构清楚",
60
+ body: "草案、风险、缺失信息、地区提示和复核清单分开返回,方便产品、运营、律师或负责人各自检查。",
61
+ },
62
+ {
63
+ title: "比模板更贴近业务",
64
+ body: "输出会围绕产品类型、上线地区、数据处理和功能范围组织,而不是让用户手动改一整份通用模板。",
65
+ },
66
+ {
67
+ title: "比直接聊天更可控",
68
+ body: "页面固定输出结构和下载/复制入口,也会拦截明显占位输入,减少拿到空泛隐私政策或用户协议的概率。",
69
+ },
70
+ {
71
+ title: "适合交给专业人士复核",
72
+ body: "结果保留待确认事项和风险标记,可以作为律师、合规负责人或客户审核前的材料包。",
73
+ },
74
+ {
75
+ title: "支持渐进补全",
76
+ body: "不确定的数据类型、第三方服务和商业条款可以后续补充,工具会重新生成更新后的内容。",
77
+ },
78
+ ],
79
+ howToUse: "如何生成隐私政策和用户协议",
80
+ howToUseSteps: [
81
+ "先填写产品名称、产品形态、主要上线地区和一句真实产品说明。",
82
+ "选择隐私政策、用户协议、服务条款、Cookie 说明等要输出的文件,点击生成草案。",
83
+ "阅读草案里的风险提示和待确认信息,再补充数据、功能、主体和联系方式。",
84
+ "需要调整时,用对话说明修改要求,确认后复制或下载 TXT。",
85
+ ],
86
+ mockNote:
87
+ "生成结果是产品上线和法务复核的起点,不是最终法律意见。越接近真实业务事实,草案越容易被复核和落地。",
88
+ boundary: "支持范围、法律边界和失败恢复",
89
+ boundaryIntro:
90
+ "协议、隐私和数据处理属于高风险内容。页面会尽量把未知项标出来,但不会替代律师或合规负责人的最终判断。",
91
+ boundaryGroups: [
92
+ {
93
+ title: "适合处理",
94
+ items: [
95
+ "App、Web、SaaS、AI 产品、开发者工具和小型电商的基础协议草案。",
96
+ "隐私政策、用户协议、服务条款、Cookie 说明、DPA、账号注销和儿童隐私说明。",
97
+ "早期上线、应用商店审核、官网页脚、隐私中心和律师复核前的初稿整理。",
98
+ ],
99
+ },
100
+ {
101
+ title: "不适合直接替代",
102
+ items: [
103
+ "最终法律意见、跨地区完整合规审计、行业强监管场景或复杂 B2B 合同谈判。",
104
+ "涉及医疗、金融、安全、未成年人、高敏感数据或大型企业客户时,需要专项复核。",
105
+ "不要提交密钥、未公开商业秘密、大量用户个人信息或无权处理的数据。",
106
+ ],
107
+ },
108
+ {
109
+ title: "失败时怎么恢复",
110
+ items: [
111
+ "如果生成失败,先检查产品说明是否像占位文本,或稍后重试生成服务。",
112
+ "如果结果不够具体,补充真实数据字段、第三方服务、付费模式、地区和联系渠道。",
113
+ "如果官网无法读取,可以直接把产品事实写进补充说明,不依赖链接。",
114
+ ],
115
+ },
116
+ ],
117
+ boundaryVisualAlt: "协议草案旁边显示缺失信息、地区和复核标记的视觉图。",
118
+ resultGuidance: "如何使用生成结果",
119
+ resultGuidanceIntro:
120
+ "拿到草案后,不要只看正文是否完整。更重要的是核对事实、处理风险项,并把缺失信息逐步补进最终版本。",
121
+ reviewVisualAlt: "协议草案被继续编辑并导出为可复核文件包的视觉图。",
122
+ guidanceBullets: [
123
+ "先核对事实:产品名称、运营主体、联系邮箱、官网或应用链接必须真实。",
124
+ "高风险信号要单独处理:儿童、定位、支付、广告、AI 输入、跨境业务通常需要更细的告知和授权。",
125
+ "上线前要补全第三方 SDK、支付服务、分析工具、云服务商和数据保存周期。",
126
+ "不同地区的 PIPL、GDPR、CCPA 等要求可能不同,面向多地区用户时需要当地合规复核。",
127
+ ],
128
+ useCases: "适用场景",
129
+ useCaseItems: [
130
+ {
131
+ title: "独立开发者批量上线小产品",
132
+ body: "一次性准备多个 App、Web 工具或 SaaS 小产品的基础协议,再按产品差异补充细节。",
133
+ },
134
+ {
135
+ title: "创业团队准备应用商店审核",
136
+ body: "在 App Store、官网页脚、隐私中心或登录页上线前,快速形成可审阅草案。",
137
+ },
138
+ {
139
+ title: "产品团队整理律师 brief",
140
+ body: "把产品功能、数据处理、第三方 SDK 和商业规则整理成律师更容易审阅的材料。",
141
+ },
142
+ {
143
+ title: "GTM 前做合规清点",
144
+ body: "上线前确认用户权利、数据处理、账号注销、订阅退款和商业条款是否齐备。",
145
+ },
146
+ ],
147
+ faq: "常见问题",
148
+ faqItems: [
149
+ {
150
+ question: "生成的协议可以直接上线吗?",
151
+ answer:
152
+ "不建议直接上线。工具输出是标准草案和复核清单,仍需要根据真实业务、司法辖区、合同主体和第三方服务做最终审阅。",
153
+ },
154
+ {
155
+ question: "信息不完整也能使用吗?",
156
+ answer:
157
+ "可以。你可以先填写已经确认的产品事实,运营主体、联系邮箱、第三方服务等内容可以在生成后继续补充。",
158
+ },
159
+ {
160
+ question: "需要先选择所有数据类型和产品功能吗?",
161
+ answer:
162
+ "不需要。第一步只填写最关键的产品事实。拿不准的数据类型、第三方服务、付费模式和地区细节可以留到结果出来后再补。",
163
+ },
164
+ {
165
+ question: "隐私政策生成器和用户协议模板有什么区别?",
166
+ answer:
167
+ "模板通常只给固定文本,你需要自己判断哪些条款适合产品。这个生成器会根据产品形态、上线地区、数据类型和功能生成草案,并把缺失信息和风险提示一起返回。",
168
+ },
169
+ {
170
+ question: "可以生成服务条款或 Terms of Service 吗?",
171
+ answer:
172
+ "可以。选择基础协议包或服务与交易方向后,可以生成用户协议、用户服务条款或服务条款草案,并根据订阅、支付、退款、账号注销等事实继续补充。",
173
+ },
174
+ {
175
+ question: "可以直接对话说明我要怎么改吗?",
176
+ answer:
177
+ "可以。生成结果后可以通过对话入口补充事实、要求批量改措辞或调整某份文件,工具会重新生成更新后的内容。",
178
+ },
179
+ {
180
+ question: "生成失败或结果太泛怎么办?",
181
+ answer:
182
+ "先确认产品名称不是示例或纯数字,产品说明里包含真实功能、目标用户和上线地区。结果太泛时,可以补充真实数据字段、SDK、付款方式、保存期限和第三方服务。",
183
+ },
184
+ {
185
+ question: "结果能复制或下载吗?",
186
+ answer:
187
+ "可以。生成成功后可以复制全部草案,也可以下载 TXT 文件,再放入官网、应用内页面、隐私中心或交给负责人复核。",
188
+ },
189
+ {
190
+ question: "会保存我输入的产品信息吗?",
191
+ answer:
192
+ "在线生成时,产品事实和公开链接会用于生成结果。不要提交密钥、未公开商业秘密或敏感个人信息。",
193
+ },
194
+ ],
195
+ ctaPrimary: "继续做 GTM 自检",
196
+ ctaSecondary: "返回全部工具",
197
+ ctaHint:
198
+ "协议草案整理好后,可以继续检查上线定位、渠道、素材和衡量指标是否准备充分。",
199
+ },
200
+ widget: {
201
+ formTitle: "生成隐私政策和用户协议",
202
+ formHint:
203
+ "先选择协议方向,填写少量基础信息。生成后再补充主体、SDK、付款和地区细节。",
204
+ agreementTypeLabel: "协议类型",
205
+ agreementTabs: {
206
+ starter: {
207
+ label: "基础协议包",
208
+ },
209
+ privacy: {
210
+ label: "隐私与数据",
211
+ },
212
+ commercial: {
213
+ label: "服务与交易",
214
+ },
215
+ },
216
+ preview: {
217
+ beforeTitle: "输入",
218
+ afterTitle: "输出",
219
+ productFallback: "你的产品",
220
+ briefFallback: "说明产品做什么、给谁用、主要功能和上线地区。",
221
+ reviewItems: ["协议草案包", "风险提示", "待确认事项", "上线前复核清单"],
222
+ },
223
+ modules: {
224
+ core: {
225
+ label: "产品信息",
226
+ hint: "填写产品名称、类型、地区和说明。",
227
+ badge: "必填",
228
+ },
229
+ risk: {
230
+ label: "数据与功能",
231
+ hint: "选择已确认的数据类型和功能。",
232
+ badge: "可选",
233
+ },
234
+ publish: {
235
+ label: "发布信息",
236
+ hint: "补充主体、官网和联系邮箱。",
237
+ badge: "可选",
238
+ },
239
+ },
240
+ supplementModules: {
241
+ risk: {
242
+ label: "数据与功能",
243
+ hint: "补充产品实际收集的数据、已上线功能、第三方服务和特殊风险。",
244
+ },
245
+ publish: {
246
+ label: "发布信息",
247
+ hint: "补充协议正文里需要出现的主体、官网、应用链接和联系方式。",
248
+ },
249
+ notes: {
250
+ label: "补充事实",
251
+ hint: "用自然语言说明你想补进协议里的业务事实或修改方向。",
252
+ },
253
+ },
254
+ productNameLabel: "产品名称",
255
+ productNamePlaceholder: "例如 Tomako Launch",
256
+ operatorLabel: "运营主体",
257
+ operatorPlaceholder: "例如 上海某某科技有限公司",
258
+ productTypeLabel: "产品形态",
259
+ regionLabel: "主要上线地区",
260
+ descriptionLabel: "产品说明",
261
+ descriptionPlaceholder:
262
+ "例如:一个面向独立开发者的 SaaS 工具,用户可以登录、连接 Stripe、生成上线素材,主要收集账号、邮箱、项目内容和使用日志。",
263
+ urlLabel: "官网或应用链接",
264
+ urlPlaceholder: "https://example.com",
265
+ contactLabel: "隐私或客服邮箱",
266
+ contactPlaceholder: "privacy@example.com",
267
+ notesLabel: "补充事实",
268
+ notesPlaceholder:
269
+ "例如已使用 Stripe、Firebase、友盟、OpenAI API;是否有自动续费、企业客户、跨境团队、未成年人限制等。",
270
+ optional: "可选",
271
+ riskModuleTitle: "数据与功能",
272
+ riskModuleHint:
273
+ "只选择产品确实会涉及的内容。拿不准的项目可以先留空。",
274
+ publishModuleTitle: "发布信息",
275
+ publishModuleHint:
276
+ "这些字段会进入协议正文,发布前请核对准确。",
277
+ dataTitle: "收集或处理的数据",
278
+ dataHint: "不确定可留空",
279
+ dataPlaceholder: "选择已确认的数据类型",
280
+ featureTitle: "产品功能",
281
+ featureHint: "只选已经确认具备的功能",
282
+ featurePlaceholder: "选择已确认的产品功能",
283
+ documentTitle: "需要生成的文件",
284
+ documentHint: "选择要输出的文件",
285
+ documentPlaceholder: "选择需要输出的协议文件",
286
+ generate: "生成草案包",
287
+ generateAgent: "生成协议草案",
288
+ generatingAgent: "正在生成草案",
289
+ regenerateAgent: "重新生成协议",
290
+ updateDraft: "用补充信息更新草案",
291
+ updatingAgent: "正在更新草案",
292
+ applySupplement: "更新协议内容",
293
+ retryAgent: "重试生成",
294
+ reset: "重置",
295
+ loadingTitle: "正在起草协议",
296
+ loadingHint:
297
+ "正在生成协议内容,请稍等。公开链接只用于补充产品背景。",
298
+ errorTitle: "暂时没有拿到生成结果",
299
+ agentResult: "协议草案",
300
+ revisingStatus: "正在更新草案",
301
+ resultTitle: "协议草案包",
302
+ missingPromptTitle: "还需要确认的信息",
303
+ supplement: {
304
+ title: "继续补充信息",
305
+ hint: "根据结果里的待确认事项补充事实,系统会把变化写回协议。",
306
+ },
307
+ checksTitle: "检查与复核",
308
+ checksHint: "风险、缺失信息和上线前复核项默认收起,需要时逐项打开确认。",
309
+ copyAll: "复制全部草案",
310
+ copied: "已复制",
311
+ downloadAll: "下载 TXT",
312
+ conversation: {
313
+ title: "继续对话修改",
314
+ hint: "补充事实、调整措辞或指定某份文件修改,系统会重新生成结果。",
315
+ placeholder: "例如:把用户服务条款里的责任限制语气改得更温和,并补充自动续费取消说明。",
316
+ send: "发送修改要求",
317
+ updated: "已根据你的补充更新草案。",
318
+ },
319
+ revisionExamples: [
320
+ "把措辞改得更适合个人开发者产品",
321
+ "补充使用 Stripe 自动续费的条款",
322
+ "把隐私政策里的第三方 SDK 单独列出来",
323
+ ],
324
+ revision: {
325
+ coreInstruction: "请根据我更新后的产品信息重新整理草案,并刷新待确认事项。",
326
+ riskInstruction: "请根据我补充的数据、功能和第三方事实更新所有相关协议。",
327
+ publishInstruction: "请把运营主体、官网和联系邮箱补进正式条款,并刷新占位内容。",
328
+ notesInstruction: "请根据我补充的事实或说明更新协议内容,并同步刷新待确认事项。",
329
+ },
330
+ download: {
331
+ riskHeading: "风险提示",
332
+ missingInfoHeading: "缺失信息",
333
+ jurisdictionHeading: "地区合规提示",
334
+ reviewHeading: "上线前复核清单",
335
+ },
336
+ errors: {
337
+ required: "请至少填写产品名称、产品说明,并选择一份协议文件。",
338
+ productNameRequired: "请填写真实产品名称。",
339
+ productNamePlaceholder: "产品名称看起来像示例或占位内容,请换成真实产品名。",
340
+ descriptionRequired: "请用一句话说明产品做什么、给谁用。",
341
+ descriptionPlaceholder:
342
+ "产品说明太像占位内容,请补充真实功能、目标用户或业务场景。",
343
+ documents: "请至少选择一份要生成的协议文件。",
344
+ email: "请填写有效的邮箱地址,或先留空。",
345
+ copy: "当前浏览器无法复制,请尝试下载文本。",
346
+ agent: "生成失败,请稍后重试。",
347
+ gateway: "生成服务暂时不可用,请稍后重试。",
348
+ notReady: "上一轮生成还没有进入可补充状态,请等当前轮次完成后再发送修改。",
349
+ noResult: "暂时没有拿到协议结果,请重试。",
350
+ resultInvalid: "生成结果格式不完整,已停止展示。请重试或稍后再试。",
351
+ },
352
+ productTypes: {
353
+ mobileApp: "移动 App",
354
+ webApp: "Web 应用",
355
+ saas: "SaaS 产品",
356
+ ecommerce: "电商产品",
357
+ developerTool: "开发者工具",
358
+ aiProduct: "AI 产品",
359
+ },
360
+ regions: {
361
+ mainlandChina: "中国大陆",
362
+ global: "全球用户",
363
+ us: "美国",
364
+ eu: "欧盟 / 欧洲经济区",
365
+ },
366
+ dataCategories: {
367
+ account: "账号信息",
368
+ contact: "联系方式",
369
+ device: "设备与日志",
370
+ location: "位置信息",
371
+ payment: "支付信息",
372
+ content: "用户内容",
373
+ analytics: "行为分析",
374
+ cookies: "Cookie",
375
+ aiInput: "AI 输入内容",
376
+ children: "儿童数据",
377
+ },
378
+ features: {
379
+ login: "登录注册",
380
+ payments: "支付交易",
381
+ subscription: "订阅计费",
382
+ analytics: "数据分析",
383
+ ads: "广告投放",
384
+ userContent: "用户发布内容",
385
+ messaging: "站内消息",
386
+ aiFeature: "AI 功能",
387
+ thirdPartyIntegrations: "第三方集成",
388
+ exportData: "数据导出",
389
+ },
390
+ documentLabels: {
391
+ privacyPolicy: "隐私政策",
392
+ termsOfService: "用户服务条款",
393
+ cookiePolicy: "Cookie 与追踪技术说明",
394
+ dataProcessingAddendum: "数据处理补充协议",
395
+ accountDeletion: "账号注销与数据删除说明",
396
+ childrenPrivacy: "儿童隐私保护说明",
397
+ },
398
+ },
399
+ } as const;
400
+
401
+ export default productAgreementGenerator;
@@ -0,0 +1,267 @@
1
+ const productHuntLaunchPlanner = {
2
+ meta: {
3
+ title: "Product Hunt 发布工作流生成器",
4
+ description: "输入产品介绍、目标用户和发布准备状态,生成一份 Product Hunt 发布 checklist、页面素材包、launch day 作战表和平台规则风险提示。",
5
+ intro: "把零散产品信息整理成可逐项执行的 Product Hunt 发布计划:先补什么、发布页写什么、当天谁负责、哪些话术要避开。",
6
+ category: "发布工具",
7
+ keywords: [
8
+ "Product Hunt 发布",
9
+ "Product Hunt launch checklist",
10
+ "Product Hunt 发布计划",
11
+ "PH 发布素材",
12
+ "产品发布工作流",
13
+ ],
14
+ inputSignal: "产品简介 + 发布准备状态",
15
+ outputSignal: "Checklist + 素材包 + launch day 表",
16
+ boundarySignal: "Review 原型;不自动发布,不生成拉票任务",
17
+ },
18
+ examples: [
19
+ {
20
+ label: "AI 发布物料工具",
21
+ input: "产品:帮助独立开发者生成上线设计物料的工具;目标用户:准备 Product Hunt 或 App Store 发布的 maker;阶段:beta。",
22
+ expectedOutput: "输出账号准备、发布页素材、launch day 值守、评论回复、外联边界、复盘动作和可复制 Markdown。",
23
+ },
24
+ ],
25
+ guide: {
26
+ heroVisualAlt:
27
+ "Product Hunt 发布素材包,包含清单卡片、发布文案和珊瑚色 launch 视觉重点。",
28
+ workspaceHeading: "生成 Product Hunt 发布 checklist 和素材包",
29
+ workspaceHint:
30
+ "输入最少产品上下文和当前准备状态。这个 review 版会提交在线任务,并只渲染结构化写回的发布清单、页面文案、launch day 作战表和复核提示。",
31
+ workspaceBadge: "Review 原型",
32
+ outputs: "你可以得到什么",
33
+ outputItems: [
34
+ {
35
+ title: "发布就绪判断",
36
+ body: "检查账号、社区、素材、产品链接和时间安排是否足够支撑一次正式发布。",
37
+ },
38
+ {
39
+ title: "执行 checklist",
40
+ body: "按账号准备、发布页素材、launch day、复盘四个阶段拆成可分配任务。",
41
+ },
42
+ {
43
+ title: "发布页素材包",
44
+ body: "生成 tagline、short description、maker 首评、topic、gallery brief 和社媒文案草稿。",
45
+ },
46
+ {
47
+ title: "规则与复核提示",
48
+ body: "把拉票话术、未上线承诺、缺少 proof 和人工复核点提前暴露出来。",
49
+ },
50
+ ],
51
+ supportHeading: "适合需要发布计划,而不是又一份通用模板的时候",
52
+ supportVisualAlt: "凌乱发布笔记被整理成清晰的 Product Hunt 发布素材包。",
53
+ supportItems: [
54
+ "适合独立开发者、早期 SaaS、开发者工具、App、开源项目,以及可以作为重大更新发布的产品。",
55
+ "有公开 URL 时结果更具体;beta、waitlist 或尚未公开的产品也可以从手动 brief 开始。",
56
+ "重点覆盖 Product Hunt 页面素材、评论准备、外联边界和当天执行。",
57
+ "把 Product Hunt 视为人工发布工作流;最终提交仍然在 Product Hunt 网站完成。",
58
+ ],
59
+ boundaryHeading: "这个原型会把 Product Hunt 边界放在明处",
60
+ boundaryVisualAlt: "带有发布规则标记和人工复核清单的审查工作台。",
61
+ boundaryItems: [
62
+ "提交在线 Agent 任务做计划生成,但不连接 Product Hunt,不创建账号,不提交产品,不追踪排名,也不调用 Product Hunt API。",
63
+ "不生成 upvote 任务、付费投票计划、假评论或组织化拉票指令。",
64
+ "外联文案会写成试用、评论和反馈邀请,而不是点赞请求。",
65
+ "输出始终是草稿,需要人工结合真实产品和 Product Hunt 规则复核。",
66
+ ],
67
+ failureHeading: "如果结果太弱,先检查这些输入",
68
+ failureItems: [
69
+ "产品描述过泛,导致 tagline 无法表达明确用户收益。",
70
+ "目标用户过宽,让首评和外联文案听起来像普通宣传。",
71
+ "缺少公开 URL、demo、waitlist 或 proof,发布页难以建立信任。",
72
+ "Product Hunt 账号或视觉素材还没准备好,应该推迟排期。",
73
+ ],
74
+ resultUseHeading: "把结果当成 launch day 作战文档",
75
+ resultUseVisualAlt: "Product Hunt 发布当天的时间线、评论回复卡和复盘便签。",
76
+ resultUseItems: [
77
+ "复制 Markdown 到发布文档,先分配负责人,再定正式日期。",
78
+ "tagline、short description 和 maker 首评要人工复核后再粘贴到 Product Hunt。",
79
+ "给暖用户的外联文案要保持试用和反馈导向,不写强制点赞。",
80
+ "发布后把重复评论整理成 FAQ、社媒 follow-up 和产品修改清单。",
81
+ ],
82
+ whyTomakoHeading: "为什么不用静态 PH 模板",
83
+ whyTomakoItems: [
84
+ {
85
+ title: "先看准备状态",
86
+ body: "普通模板默认你已经准备好;这个工具会暴露账号、用户、URL 和素材还卡在哪里。",
87
+ },
88
+ {
89
+ title: "区分素材和运营",
90
+ body: "Product Hunt 不只是写一句 tagline,还需要当天值守、评论回复和复盘学习。",
91
+ },
92
+ {
93
+ title: "把平台风险放进流程",
94
+ body: "拉票和过度承诺是需要复核的风险,不是应该自动化的增长技巧。",
95
+ },
96
+ {
97
+ title: "输出可交付文档",
98
+ body: "结果结构足够清晰,可以复制进发布文档、分配负责人并继续修改。",
99
+ },
100
+ ],
101
+ standardHeading: "好的 Product Hunt 发布规划器应该具体,也应该克制",
102
+ standardVisualAlt: "带有 Product Hunt 素材与复核点的发布规划标准卡。",
103
+ standardItems: [
104
+ "质量:输出应包含真实可改的文案,而不是只告诉你要写文案。",
105
+ "易用:第一版只需要产品基础信息,不要求用户先写完整 PRD。",
106
+ "可信:必须说清不能做什么、哪些地方需要人工复核。",
107
+ "平台匹配:外联应该邀请试用和反馈,而不是鼓励组织化 upvote。",
108
+ "可执行:每个 checklist 项都应该有负责人、状态和下一步动作。",
109
+ ],
110
+ faq: "常见问题",
111
+ faqItems: [
112
+ {
113
+ question: "这个工具会帮我发布到 Product Hunt 吗?",
114
+ answer:
115
+ "不会。它只生成发布计划和素材草稿。最终提交、排期和账号操作必须由你在 Product Hunt 网站手动完成。",
116
+ },
117
+ {
118
+ question: "没有产品 URL 可以用吗?",
119
+ answer:
120
+ "可以,但结果会更泛。官网、demo、waitlist 或文档页能提供 proof,让发布文案更具体。",
121
+ },
122
+ {
123
+ question: "它会帮我获得更多 upvote 吗?",
124
+ answer:
125
+ "它会帮你准备更清楚的发布页和反馈邀请,不会生成投票任务、激励方案或组织化点赞活动。",
126
+ },
127
+ {
128
+ question: "这已经接入真实 Agent 了吗?",
129
+ answer:
130
+ "这个 review 版本会提交在线 Agent 任务,并等待 Skills-OL 写回结构化结果;它仍然不是 Product Hunt 自动发布工具。",
131
+ },
132
+ ],
133
+ ctaHint:
134
+ "如果还没准备好 Product Hunt,可以先做 GTM readiness 自检,或者判断 Product Hunt 是否应该作为第一发布渠道。",
135
+ ctaPrimary: "检查 GTM readiness",
136
+ ctaSecondary: "比较冷启动渠道",
137
+ },
138
+ widget: {
139
+ formTitle: "发布 brief",
140
+ formHint:
141
+ "尽量输入真实产品描述和目标用户。结果只来自在线任务结构化写回;如果写回失败,不会用前端模板兜底。",
142
+ productNameLabel: "产品名",
143
+ productNamePlaceholder: "Tomako",
144
+ productUrlLabel: "产品 URL",
145
+ productUrlPlaceholder: "https://example.com",
146
+ oneLinerLabel: "产品帮助用户完成什么?",
147
+ oneLinerPlaceholder:
148
+ "帮助独立开发者把产品上下文变成可发布的营销素材和当天执行工作流。",
149
+ audienceLabel: "这次发布主要给谁看?",
150
+ audiencePlaceholder: "准备第一次公开发布的独立开发者和早期 SaaS 团队。",
151
+ stageLabel: "产品阶段",
152
+ goalLabel: "发布目标",
153
+ advancedTitle: "准备状态",
154
+ launchDateLabel: "目标发布日期",
155
+ launchDatePlaceholder: "下周二 / 2026-07-14",
156
+ accountLabel: "Product Hunt 账号",
157
+ communityLabel: "已有受众",
158
+ assetLabel: "素材准备",
159
+ generate: "生成发布工作流",
160
+ generating: "生成中...",
161
+ status: {
162
+ idle: "草稿预览",
163
+ submitting: "正在提交",
164
+ running: "正在生成",
165
+ done: "计划已生成",
166
+ error: "需要处理",
167
+ },
168
+ previewItems: [
169
+ "Checklist、素材包和当天作战表",
170
+ "不自动发布,不生成拉票任务",
171
+ "可复制 Markdown 导出",
172
+ ],
173
+ stages: {
174
+ idea: "想法验证",
175
+ beta: "Beta 或 waitlist",
176
+ launched: "已经上线",
177
+ majorUpdate: "重大更新或 relaunch",
178
+ },
179
+ goals: {
180
+ feedback: "收集反馈",
181
+ traffic: "获得访问",
182
+ users: "转化首批用户",
183
+ credibility: "建立公开背书",
184
+ },
185
+ accountStates: {
186
+ yes: "已准备好",
187
+ no: "还没创建",
188
+ unsure: "不确定",
189
+ },
190
+ communityStates: {
191
+ none: "暂无受众",
192
+ small: "小规模暖用户",
193
+ active: "已有活跃用户或社区",
194
+ },
195
+ assetStates: {
196
+ rough: "只有粗略笔记",
197
+ some: "有部分文案或视觉",
198
+ ready: "发布素材已准备",
199
+ },
200
+ statusLabels: {
201
+ ready: "已就绪",
202
+ needsWork: "需补齐",
203
+ manual: "手动执行",
204
+ },
205
+ errors: {
206
+ validation: {
207
+ title: "先补齐最小发布 brief",
208
+ body: "需要产品名、具体产品结果和目标用户,才能生成有用的 Product Hunt 发布清单。",
209
+ },
210
+ weakInput: {
211
+ title: "请输入真实产品描述",
212
+ body: "当前 brief 像占位符或过短文本。补充产品做什么、谁会用、为什么这次发布重要。",
213
+ },
214
+ submitFailed: {
215
+ title: "在线任务提交失败",
216
+ body: "当前没有成功创建生成任务。请稍后重试,或检查任务网关是否可用。",
217
+ },
218
+ taskFailed: {
219
+ title: "生成任务失败",
220
+ body: "Agent 任务没有完成。可以保留任务号检查日志,确认 Skills-OL 是否已部署并可写回。",
221
+ },
222
+ resultTimeout: {
223
+ title: "还没有等到结构化结果",
224
+ body: "任务可能仍在运行,或者 Skills-OL 没有完成写回。这个页面不会用本地模板假装成功。",
225
+ },
226
+ wrongResultType: {
227
+ title: "结果类型不匹配",
228
+ body: "写回的结果不是 Product Hunt 发布计划类型,前端已拒绝渲染。",
229
+ },
230
+ invalidResultSchema: {
231
+ title: "结果结构不符合约定",
232
+ body: "Agent 写回了结果,但字段没有通过 schema 校验。需要修正 Skills-OL 输出契约。",
233
+ },
234
+ resultWritebackMissing: {
235
+ title: "缺少结构化写回",
236
+ body: "任务完成后没有找到 Skill Result。请确认写回脚本使用了正确 taskId 和 HTTPS API 地址。",
237
+ },
238
+ },
239
+ resultPendingTitle: "正在让 Agent 生成发布计划",
240
+ resultPendingHint:
241
+ "页面会等待 Skills-OL 写回结构化结果。没有通过 resultType 和 schema 校验前,不展示最终计划。",
242
+ taskId: "任务号:{taskId}",
243
+ resultReady: "已生成发布工作流",
244
+ copied: "已复制",
245
+ copy: "复制 Markdown",
246
+ download: "下载",
247
+ reset: "重置",
248
+ primaryRisk: "主要风险",
249
+ missingInfo: "缺失信息",
250
+ checklist: "执行 checklist",
251
+ assetPack: "发布页素材包",
252
+ taglines: "Tagline 候选",
253
+ topics: "Topic 建议",
254
+ description: "Short description",
255
+ thumbnail: "缩略图 brief",
256
+ makerComment: "Maker 首评",
257
+ gallery: "Gallery brief",
258
+ socialPost: "社媒发布文案",
259
+ supporterNote: "暖用户邀请文案",
260
+ launchDay: "Launch day 作战表",
261
+ reviewChecklist: "人工复核清单",
262
+ risks: "风险提示",
263
+ owner: "负责人:{owner}",
264
+ },
265
+ } as const;
266
+
267
+ export default productHuntLaunchPlanner;