@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;