@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,385 @@
1
+ const millionUserGrowthTest = {
2
+ meta: {
3
+ title: "測測產品多久到百萬用戶",
4
+ displayTitle: "測測你的產品啥時候到 100 萬用戶",
5
+ description: "輸入產品名、當前用戶規模和增長方式,生成一張娛樂向百萬用戶預測卡。結果由 Tomako AI 趣味生成,僅供娛樂,不代表真實預測或實際觀點。",
6
+ intro: "給你的產品發一張增長判決書:什麼時候到 100 萬用戶、屬於哪種創始人命格、為什麼可能卡住,以及一句適合截圖分享的吐槽。",
7
+ category: "趣味增長工具",
8
+ keywords: [
9
+ "百萬用戶測試",
10
+ "產品增長測試",
11
+ "創業產品趣味測試",
12
+ "AI 娛樂測試",
13
+ "營銷 AI Agent",
14
+ ],
15
+ inputSignal: "產品名、描述、用戶規模和增長方式",
16
+ outputSignal: "百萬用戶預測卡 + 分享文案",
17
+ boundarySignal: "娛樂生成內容,不代表真實商業預測或 Tomako 實際觀點",
18
+ },
19
+ examples: [
20
+ {
21
+ label: "剛上線的 AI 工具",
22
+ input: "產品名:PromptBox;當前用戶 1-100;增長方式靠內容;創始人每天發版",
23
+ expectedOutput: "生成一張娛樂預測卡,給出到達 100 萬用戶的誇張時間、三條定製理由和分享文案。",
24
+ },
25
+ {
26
+ label: "反覆改定位的 SaaS",
27
+ input: "產品名:OpsPilot;當前用戶 100-1000;增長方式靠社群;創始人天天想 pivot",
28
+ expectedOutput: "結果會更偏向創始人狀態吐槽,並保留僅供娛樂、不代表真實預測的提示。",
29
+ },
30
+ {
31
+ label: "預算型廣告增長",
32
+ input: "產品名:AdMint;當前用戶 1 萬以上;增長方式靠廣告;創始人主打銷售",
33
+ expectedOutput: "結果會把用戶規模和廣告增長方式納入文案,但仍定位為趣味測試。",
34
+ },
35
+ ],
36
+ widget: {
37
+ productNameLabel: "產品名",
38
+ productNamePlaceholder: "例如:Tomako",
39
+ productDescriptionLabel: "一句話介紹",
40
+ productDescriptionPlaceholder: "例如:幫獨立開發者生成營銷頁面和增長內容的 AI Agent",
41
+ currentUsersLabel: "現在大概多少用戶",
42
+ growthMotionLabel: "主要靠什麼增長",
43
+ founderModeLabel: "創始人最近更像",
44
+ submit: "生成預測",
45
+ localFallbackCredit:
46
+ "由 Tomako 趣味測試本地生成:Tomako 是一款幫產品做內容與增長實驗的營銷 AI Agent。",
47
+ formFootnote: "結果是娛樂生成內容,適合截圖和分享,不構成商業建議。",
48
+ previewProduct: "你的產品",
49
+ previewTitle: "結果卡預覽",
50
+ previewSubtitle: "生成後會得到一張適合截圖的增長判決書。",
51
+ previewCardKicker: "1M USER TEST",
52
+ previewEta: "下輩子 Q3",
53
+ resultKicker: "百萬用戶預測",
54
+ scoreLabel: "玄學指數",
55
+ shareCardLabel: "分享卡",
56
+ adviceLabel: "一句不太嚴肅的建議",
57
+ shareCopyLabel: "可複製分享文案",
58
+ copy: "複製結果",
59
+ copied: "已複製",
60
+ reset: "再測一次",
61
+ status: {
62
+ submitting: "正在請 Tomako AI 開始整活...",
63
+ running: "Tomako AI 正在把結果調到剛好能截圖的程度。狀態:{status}",
64
+ agentResult: "AI 結果來源:Tomako 任務 {taskId}。",
65
+ localFallback: "AI 結果暫時沒有回來,先展示本地娛樂版結果。",
66
+ },
67
+ errors: {
68
+ productName: "先給產品起個能被人類讀懂的名字。",
69
+ productDescription: "介紹再具體一點,至少說清楚它幫誰做什麼。",
70
+ },
71
+ currentUserOptions: [
72
+ { value: "zero", label: "0,還在等第一個陌生人" },
73
+ { value: "under_100", label: "1-100,朋友和早期用戶" },
74
+ { value: "under_1k", label: "100-1000,有一點真實信號" },
75
+ { value: "under_10k", label: "1000-10000,正在找突破口" },
76
+ { value: "over_10k", label: "1 萬以上,已經不是幻覺" },
77
+ ],
78
+ growthMotionOptions: [
79
+ { value: "content", label: "靠內容慢慢發酵" },
80
+ { value: "ads", label: "靠廣告買一點確定性" },
81
+ { value: "community", label: "靠社區和口碑" },
82
+ { value: "friends", label: "靠朋友支持和轉發" },
83
+ { value: "partnerships", label: "靠合作和渠道" },
84
+ { value: "mysticism", label: "靠玄學、運氣和算法眷顧" },
85
+ ],
86
+ founderModeOptions: [
87
+ { value: "shipping", label: "猛幹發版型" },
88
+ { value: "logo_tuning", label: "反覆改 logo 型" },
89
+ { value: "pivoting", label: "天天想 pivot 型" },
90
+ { value: "waiting", label: "等靈感降臨型" },
91
+ { value: "sales", label: "硬著頭皮銷售型" },
92
+ ],
93
+ previewItems: [
94
+ "預測什麼時候到 100 萬用戶",
95
+ "給一個創始人增長段位",
96
+ "生成三條有輸入痕跡的吐槽理由",
97
+ ],
98
+ copyBank: {
99
+ tomakoCredit: "由 Tomako AI 生成:營銷 AI Agent,幫產品做內容與增長實驗。",
100
+ disclaimer: "測試結果僅供娛樂,不代表真實預測、商業建議或 Tomako 的實際觀點。",
101
+ eta: {
102
+ hopeless: [
103
+ "下輩子都達不到",
104
+ "下輩子 Q3,前提是別再改定位",
105
+ "等第 1000001 個朋友轉發",
106
+ "2039 年,但需要先認識 10 個陌生用戶",
107
+ ],
108
+ slow: [
109
+ "2032 年的某個週二",
110
+ "等你第 47 次改首頁之後",
111
+ "大概在投資人忘記問增長的時候",
112
+ "先到 1000,再談 100 萬",
113
+ ],
114
+ possible: [
115
+ "2029 年,靠一個意外爆帖",
116
+ "三年後小火一把",
117
+ "等第一個真實渠道跑通後",
118
+ "某次你沒抱期待的發佈之後",
119
+ ],
120
+ promising: [
121
+ "18 個月後有機會摸到邊",
122
+ "下一輪增長實驗跑順之後",
123
+ "2027 年底,前提是別自廢武功",
124
+ "比你想的早,但比你 PPT 晚",
125
+ ],
126
+ rocket: [
127
+ "今晚就爆,但服務器先爆",
128
+ "6 個月內能嚇自己一跳",
129
+ "下一次正確傳播後",
130
+ "已經在路上,只差別把用戶嚇跑",
131
+ ],
132
+ },
133
+ archetype: {
134
+ shipping: ["深夜發版型創始人", "用提交記錄祈福型增長官", "猛幹但偶爾忘記吆喝型"],
135
+ logo_tuning: ["Logo 調參型增長官", "視覺微調到市場失憶型", "把品牌色當增長槓桿型"],
136
+ pivoting: ["戰略性換方向選手", "Pivot 雷達常開型", "每週重寫一句話定位型"],
137
+ waiting: ["靈感降臨等待者", "增長天象觀察員", "先收藏再行動型創始人"],
138
+ sales: ["硬著頭皮開口型", "能賣就還有救型", "陌生人溝通恢復訓練中"],
139
+ },
140
+ verdict: {
141
+ hopeless: [
142
+ "{product} 不是沒有未來,是未來正在申請延期。",
143
+ "AI 讀完 {product} 後沉默了三秒,決定先保護你的情緒。",
144
+ "{product} 到 100 萬用戶的路不堵,只是暫時還沒修。",
145
+ ],
146
+ slow: [
147
+ "{product} 有希望,但目前更像在給市場留懸念。",
148
+ "這不是慢增長,這是把增長做成了連續劇。",
149
+ "{product} 現在的狀態:能看見光,但還沒找到門。",
150
+ ],
151
+ possible: [
152
+ "{product} 有機會,不過需要一個真正能複用的傳播動作。",
153
+ "它不是不會爆,是還沒找到那個能讓陌生人秒懂的角度。",
154
+ "{product} 已經有一點信號,下一步別隻在熟人圈自嗨。",
155
+ ],
156
+ promising: [
157
+ "{product} 看起來有點東西,只要別把用戶教育成論文答辯。",
158
+ "如果持續把賣點講清楚,100 萬用戶不是完全離譜。",
159
+ "{product} 的增長命格不錯,但仍然需要少一點玄學,多一點覆盤。",
160
+ ],
161
+ rocket: [
162
+ "{product} 已經不像整活了,開始像一個會被轉發的東西。",
163
+ "這個輸入有增長味道,建議先擴服務器再擴野心。",
164
+ "{product} 離 100 萬用戶不算遙遠,離少開幾個會更近。",
165
+ ],
166
+ },
167
+ reasonByUsers: {
168
+ zero: [
169
+ "當前用戶數還在空氣中預熱,第一批陌生用戶比百萬用戶更緊急。",
170
+ "你的增長漏斗目前非常清爽,因為裡面基本沒有人。",
171
+ "{product} 最大的優勢是沒有流失,主要原因是還沒開始大量獲取。",
172
+ ],
173
+ under_100: [
174
+ "早期用戶像火苗,能點起來,但別急著拿它煮 100 萬用戶的飯。",
175
+ "朋友支持很寶貴,但百萬用戶通常不靠朋友圈集贊完成。",
176
+ "現在的信號足夠開始驗證,但還不足夠寫傳奇故事。",
177
+ ],
178
+ under_1k: [
179
+ "你已經有一點真實反饋,下一步要把偶然喜歡變成可重複獲客。",
180
+ "100-1000 用戶最危險的錯覺是覺得自己已經懂市場了。",
181
+ "{product} 有小樣本信號,但百萬用戶需要更粗的增長管道。",
182
+ ],
183
+ under_10k: [
184
+ "你已經不是從零開始,真正的問題變成哪條增長路徑能放大。",
185
+ "這個階段別再只問用戶喜不喜歡,要問他們會不會替你傳播。",
186
+ "用戶數說明產品有點吸引力,但還沒證明它能自己滾起來。",
187
+ ],
188
+ over_10k: [
189
+ "1 萬以上說明不是幻覺,接下來每個模糊定位都會被規模放大。",
190
+ "你已經有基礎盤,增長瓶頸更可能來自傳播效率而不是產品存在感。",
191
+ "{product} 不是沒機會,只是現在每次表達不清都會損失很多陌生人。",
192
+ ],
193
+ },
194
+ reasonByMotion: {
195
+ content: [
196
+ "內容增長有複利,但前提是每篇內容不是寫給另一個自己看。",
197
+ "內容路線適合 {keyword},但需要讓陌生人 3 秒內知道為什麼關心。",
198
+ "你在等爆款,爆款也在等一個更具體的標題。",
199
+ ],
200
+ ads: [
201
+ "廣告可以帶來流量,但如果表達不清,預算會先到 100 萬。",
202
+ "買流量沒問題,問題是落地頁不能像產品經理的內心獨白。",
203
+ "廣告路線會放大優點,也會放大一句話說不清的缺點。",
204
+ ],
205
+ community: [
206
+ "社區增長最吃真實感,太像廣告會被集體無視。",
207
+ "如果 {product} 能把用戶故事講出來,社區會比硬廣更友好。",
208
+ "社區不是許願池,需要先貢獻價值,再期待轉發。",
209
+ ],
210
+ friends: [
211
+ "朋友轉發是啟動器,不是發動機。",
212
+ "靠朋友支持可以破冰,但 100 萬用戶需要陌生人也願意開口。",
213
+ "現在最該驗證的是:不認識你的人能不能看懂 {product}。",
214
+ ],
215
+ partnerships: [
216
+ "合作渠道有機會,但對方首先要能一句話講清你解決什麼問題。",
217
+ "渠道不是魔法,它只會把清晰的價值放大。",
218
+ "如果 {product} 能給夥伴明確利益,增長會比單打獨鬥更快。",
219
+ ],
220
+ mysticism: [
221
+ "靠玄學也不是不行,只是算法最近也在看 KPI。",
222
+ "增長之神可能會路過,但最好先把按鈕和賣點放對位置。",
223
+ "運氣是好東西,不過它通常偏愛已經準備好的人。",
224
+ ],
225
+ },
226
+ reasonByFounder: {
227
+ shipping: [
228
+ "你很能發版,但用戶不會因為版本號自己長腿走來。",
229
+ "猛幹是優勢,別忘了把每次更新翻譯成用戶聽得懂的價值。",
230
+ "發版速度很健康,傳播肌肉還需要一起訓練。",
231
+ ],
232
+ logo_tuning: [
233
+ "Logo 又精緻了 3%,用戶理解度暫時沒有同步上漲。",
234
+ "視覺當然重要,但現在更缺的可能是一個能被複述的賣點。",
235
+ "如果品牌色能帶來用戶,你已經上市了。",
236
+ ],
237
+ pivoting: [
238
+ "方向感每週刷新一次,用戶剛想理解你,你已經去下一站了。",
239
+ "Pivot 可以救命,但太頻繁會讓傳播記憶清零。",
240
+ "建議先讓一個定位活過兩個星期。",
241
+ ],
242
+ waiting: [
243
+ "靈感確實會來,但它通常不會順手帶 100 萬用戶。",
244
+ "等風來也可以,最好同時把帆裝上。",
245
+ "收藏了 28 個增長方法後,下一步可能是用其中一個。",
246
+ ],
247
+ sales: [
248
+ "願意開口賣,已經超過很多隻會打磨產品的人。",
249
+ "銷售動作能帶來真實反饋,別把每次拒絕都當成宇宙否定。",
250
+ "你離增長更近,因為你至少在和市場發生真實摩擦。",
251
+ ],
252
+ },
253
+ advice: {
254
+ hopeless: [
255
+ "先別急著想 100 萬用戶,這周讓 10 個陌生人說出 {product} 是幹嘛的。",
256
+ "把願景收一收,先證明有人願意為 {keyword} 留下郵箱。",
257
+ "如果結果刺痛了你,恭喜,它至少證明你還在乎增長。",
258
+ ],
259
+ slow: [
260
+ "下一步不是再加功能,而是找一個能連續發佈 10 次的傳播角度。",
261
+ "先把一句話定位寫到朋友不用追問也能轉述。",
262
+ "別做年度增長計劃,先做一個本週能驗證的入口。",
263
+ ],
264
+ possible: [
265
+ "把現在最有效的一條渠道拆成動作清單,然後連續重複兩週。",
266
+ "選擇一個用戶最願意截圖的結果,把它做成傳播資產。",
267
+ "不要平均用力,先找到一個能讓陌生人主動試用的場景。",
268
+ ],
269
+ promising: [
270
+ "保留現在的勢頭,同時把每次增長嘗試變成可覆盤實驗。",
271
+ "把用戶最常說的一句話放到首頁,比多做三個功能更值。",
272
+ "你可以樂觀一點,但別讓樂觀替代渠道紀律。",
273
+ ],
274
+ rocket: [
275
+ "趁信號還熱,把用戶願意分享的那一刻產品化。",
276
+ "別隻慶祝增長,馬上記錄它從哪裡來、為什麼發生。",
277
+ "現在最該做的是減少摩擦,不要讓想分享的人找不到入口。",
278
+ ],
279
+ },
280
+ shareTitle: [
281
+ "我測了 {product} 到 100 萬用戶的時間:{score} 分玄學指數",
282
+ "Tomako 說 {product} 的百萬用戶命運有點離譜",
283
+ "{product} 的 100 萬用戶預測出來了,我先笑一下",
284
+ ],
285
+ shareBody: [
286
+ "結果:{product} 大概是「{keyword}」賽道里最會製造懸念的選手。",
287
+ "這不是商業預測,是創始人精神狀態體檢。",
288
+ "如果你也在做產品,建議測一下,至少能得到一句好笑但有點痛的建議。",
289
+ ],
290
+ },
291
+ },
292
+ guide: {
293
+ workspaceHint: "填 5 個信息,生成一張有吐槽、有產品名、有免責聲明的百萬用戶預測卡。",
294
+ workspaceBadge: "娛樂測試",
295
+ valueKicker: "為什麼會想分享",
296
+ valueTitle: "好笑只是入口,重點是結果像自己",
297
+ valueIntro:
298
+ "這個測試不追求預測準確,而是把產品階段、增長方式和創始人狀態組合成一張能截圖、能自嘲、能引發討論的結果卡。",
299
+ valueItems: [
300
+ {
301
+ title: "有輸入痕跡",
302
+ body: "結果會帶入產品名、描述關鍵詞、用戶規模和增長方式,不是所有人拿到同一句話。",
303
+ },
304
+ {
305
+ title: "輕微冒犯",
306
+ body: "文案會扎一下,但不羞辱用戶;“下輩子都達不到”是娛樂梗,不是評價產品。",
307
+ },
308
+ {
309
+ title: "品牌輕露出",
310
+ body: "結果底部說明 Tomako 是營銷 AI Agent,讓用戶知道這不是單純整活頁面。",
311
+ },
312
+ ],
313
+ standardsKicker: "好的趣味測試",
314
+ standardsTitle: "傳播性來自可截圖、可複述、可自嘲",
315
+ standardsIntro:
316
+ "普通測試只給一個數字,用戶看完就走。更適合傳播的結果應該像社交名片:表達自己的狀態,也能順手讓別人試一下。",
317
+ standards: [
318
+ {
319
+ title: "結果夠短",
320
+ body: "大結論、段位、三條理由和一句建議,控制在一屏內看懂。",
321
+ },
322
+ {
323
+ title: "邊界夠清楚",
324
+ body: "明確寫出 AI 趣味生成、僅供娛樂、不代表真實預測或實際觀點。",
325
+ },
326
+ {
327
+ title: "產品定位不硬塞",
328
+ body: "Tomako 的說明放在結果卡底部和頁面說明裡,服務信任,不搶走玩笑本身。",
329
+ },
330
+ ],
331
+ useCasesKicker: "適合什麼場景",
332
+ useCasesTitle: "用注意力打開增長對話",
333
+ useCasesIntro:
334
+ "這個頁面更像營銷增長裡的輕量傳播實驗,不是嚴肅分析工具。它應該讓用戶先笑,再知道 Tomako 能幫產品做內容與增長實驗。",
335
+ useCases: [
336
+ {
337
+ title: "社區發帖",
338
+ body: "創始人可以把結果卡發到社群,引出產品階段、增長方式和真實困境的討論。",
339
+ },
340
+ {
341
+ title: "發佈前預熱",
342
+ body: "新產品可以用這個測試製造一個低門檻互動,先讓人記住名字。",
343
+ },
344
+ {
345
+ title: "Tomako 能力樣例",
346
+ body: "頁面展示 Tomako 可以把一個營銷點子包裝成可發佈的互動工具。",
347
+ },
348
+ ],
349
+ faqKicker: "邊界和問題",
350
+ faqTitle: "先說清楚:這不是增長預測",
351
+ boundaryKicker: "免責聲明",
352
+ boundaryTitle: "結果只適合娛樂分享",
353
+ boundaryBody:
354
+ "測試不會讀取真實業務數據,也不會判斷產品商業價值。所有結果都是娛樂生成內容,不構成建議、承諾、評價或投資判斷。",
355
+ faqItems: [
356
+ {
357
+ question: "結果準嗎?",
358
+ answer:
359
+ "不準,也不應該當真。它的目標是生成一張有傳播性的趣味結果卡,而不是判斷一個產品的真實增長上限。",
360
+ },
361
+ {
362
+ question: "為什麼會出現“下輩子都達不到”?",
363
+ answer:
364
+ "這是結果庫裡的誇張娛樂表達,只用於自嘲和分享。頁面會同時顯示僅供娛樂、不代表實際觀點的提示。",
365
+ },
366
+ {
367
+ question: "Tomako 在這裡是什麼?",
368
+ answer:
369
+ "Tomako 是一款營銷 AI Agent,幫助產品團隊和獨立開發者做營銷內容、工具頁和增長實驗。這個測試是一個輕量娛樂樣例。",
370
+ },
371
+ ],
372
+ ctaHint: "想繼續看 Tomako 的其他營銷工具,可以從工具列表開始。",
373
+ ctaPrimary: "瀏覽更多工具",
374
+ ctaSecondary: "檢查社區發帖風險",
375
+ visualAlt: {
376
+ hero: "一張娛樂增長預測卡和產品傳播素材的視覺組合",
377
+ workspace: "產品信息生成分享卡的示意圖",
378
+ value: "從粗略產品想法變成可分享結果卡的視覺示意",
379
+ share: "社交平臺上分享百萬用戶測試結果的視覺場景",
380
+ boundary: "娛樂測試免責聲明和品牌署名的視覺示意",
381
+ },
382
+ },
383
+ };
384
+
385
+ export default millionUserGrowthTest;
@@ -0,0 +1,173 @@
1
+ const ogImageGenerator = {
2
+ meta: {
3
+ title: "OG Image Generator:社群連結預覽圖工具",
4
+ displayTitle: "OG Image Generator",
5
+ description: "從 URL 或 brief 製作 Open Graph 連結預覽圖,調整文案與版面後預覽,並下載 PNG、JPEG 或 WebP 用於網站和社群分享。",
6
+ intro: "為產品發佈、部落格文章或連結分享製作預覽圖。輸入頁面 URL 或 brief,審閱文案和版面建議後,再預覽並下載最終檔案。",
7
+ category: "內容營銷工具",
8
+ keywords: [
9
+ "AI og image generator",
10
+ "open graph image",
11
+ "twitter header image",
12
+ "blog featured image",
13
+ ],
14
+ inputSignal: "頁面 URL、brief、標題、副標題、品牌名、配色、尺寸和模板",
15
+ outputSignal: "AI 建議方向、OG 圖片、X Header、Blog Featured、PNG/JPEG/WebP",
16
+ boundarySignal: "AI 可以提供文案、配色和版面方向;請在瀏覽器中確認預覽後再下載圖片",
17
+ },
18
+ guide: {
19
+ heroVisualAlt:
20
+ "AI 社媒圖片生成器視覺圖,展示 Open Graph 圖片、X header、博客封面和導出格式。",
21
+ workspaceHeading: "從 URL 或 brief 製作 OG 圖片",
22
+ workspaceHint:
23
+ "左側輸入 URL、brief、尺寸和模板,右側實時預覽。AI 建議寫回後仍可手動調整,再下載 PNG、JPEG 或 WebP。",
24
+ workspaceBadge: "AI + PNG / JPEG / WebP",
25
+ whyEyebrow: "Why Tomako",
26
+ whyHeading: "為什麼用 Tomako 創建 OG images",
27
+ valueVisualAlt: "社媒圖片資源包視覺圖,包含鏈接預覽、封面圖片和可下載文件。",
28
+ whyItems: [
29
+ {
30
+ title: "從 URL 讀取真實 Open Graph 數據",
31
+ body: "你可以先通過 API Request 獲取頁面 title、description、site name 和 og image,再讓 AI 基於真實頁面上下文生成方向。",
32
+ },
33
+ {
34
+ title: "AI 只負責創意方向,文件導出更穩定",
35
+ body: "AI 返回標題、摘要、模板和配色建議;最終圖片由瀏覽器 Canvas 精確渲染,避免生成結果不可控或無法下載。",
36
+ },
37
+ {
38
+ title: "同一 brief 覆蓋多個渠道",
39
+ body: "Open Graph、Twitter/X Header 和 Blog Featured image 使用同一套文案與品牌系統,減少重複設計工作。",
40
+ },
41
+ ],
42
+ implementationHeading: "生成後的 OG 素材如何引用",
43
+ implementationIntro:
44
+ "下載圖片後,把文件上傳到你的 public 目錄、CMS 或對象存儲,再在頁面 metadata 中引用絕對 URL。社媒平臺經常緩存預覽圖,發佈後需要用對應平臺的調試工具刷新緩存。",
45
+ implementationItems: [
46
+ {
47
+ title: "HTML",
48
+ body: "適合普通靜態頁、官網落地頁或任何服務端模板。",
49
+ code: `<meta property="og:title" content="Your page title" />
50
+ <meta property="og:description" content="A short preview summary." />
51
+ <meta property="og:image" content="https://example.com/og-image.png" />
52
+ <meta name="twitter:card" content="summary_large_image" />
53
+ <meta name="twitter:image" content="https://example.com/og-image.png" />`,
54
+ },
55
+ {
56
+ title: "Next.js App Router",
57
+ body: "適合 Next.js 13+ 的 metadata API。圖片 URL 建議使用絕對地址。",
58
+ code: `export const metadata = {
59
+ openGraph: {
60
+ title: "Your page title",
61
+ description: "A short preview summary.",
62
+ images: ["https://example.com/og-image.png"],
63
+ },
64
+ twitter: {
65
+ card: "summary_large_image",
66
+ images: ["https://example.com/og-image.png"],
67
+ },
68
+ };`,
69
+ },
70
+ {
71
+ title: "Nuxt",
72
+ body: "適合 Nuxt 3 頁面或 layout,通過 useSeoMeta 寫入 OG 和 X/Twitter metadata。",
73
+ code: `useSeoMeta({
74
+ ogTitle: "Your page title",
75
+ ogDescription: "A short preview summary.",
76
+ ogImage: "https://example.com/og-image.png",
77
+ twitterCard: "summary_large_image",
78
+ twitterImage: "https://example.com/og-image.png",
79
+ });`,
80
+ },
81
+ {
82
+ title: "Vue",
83
+ body: "普通 Vue 項目可以配合 head 管理庫,或由服務端模板輸出這些 meta 標籤。",
84
+ code: `useHead({
85
+ meta: [
86
+ { property: "og:title", content: "Your page title" },
87
+ { property: "og:image", content: "https://example.com/og-image.png" },
88
+ { name: "twitter:card", content: "summary_large_image" },
89
+ { name: "twitter:image", content: "https://example.com/og-image.png" },
90
+ ],
91
+ });`,
92
+ },
93
+ ],
94
+ tipsEyebrow: "More Tips",
95
+ tipsHeading: "發佈前多檢查這幾件事",
96
+ sizesVisualAlt: "支持尺寸視覺圖,展示 Open Graph、X Header 和 Blog Featured 三種畫布比例。",
97
+ tipsItems: [
98
+ {
99
+ title: "把關鍵信息放在中心安全區",
100
+ body: "X Header 和部分 CMS 縮略圖會裁切邊緣。標題、品牌名和主要圖形不要貼邊。",
101
+ },
102
+ {
103
+ title: "一個畫面只保留一個重點",
104
+ body: "社媒預覽圖不是海報詳情頁。標題越短、對比越清楚,鏈接預覽越容易被點擊。",
105
+ },
106
+ {
107
+ title: "優先用 PNG 做最終質量檢查",
108
+ body: "PNG 更適合銳利文字和 UI 感圖形;確認效果後,如果發佈系統需要更小文件,再導出 JPEG 或 WebP。",
109
+ },
110
+ ],
111
+ whatYouGetEyebrow: "輸出與可編輯項",
112
+ whatYouGetHeading: "你可以審閱和下載什麼",
113
+ whatYouGetItems: [
114
+ {
115
+ title: "Open Graph 圖片",
116
+ body: "1200 x 630 鏈接預覽圖,可用於官網、產品頁、發佈頁和社媒分享卡片。",
117
+ },
118
+ {
119
+ title: "Twitter/X Header 圖片",
120
+ body: "1500 x 500 賬號頭圖或活動頭圖,適合產品發佈、活動階段和個人品牌。",
121
+ },
122
+ {
123
+ title: "Blog Featured 圖片",
124
+ body: "1600 x 900 文章封面,適合博客、Newsletter、內容中心和 CMS 縮略圖。",
125
+ },
126
+ {
127
+ title: "可編輯 AI 建議",
128
+ body: "AI 返回多個標題、摘要、模板和配色方向,你可以選擇後繼續手動編輯。",
129
+ },
130
+ {
131
+ title: "可下載文件",
132
+ body: "生成 PNG、JPEG 或 WebP 文件,便於上傳到 public 目錄、CMS、對象存儲或社媒後臺。",
133
+ },
134
+ {
135
+ title: "失敗邊界提示",
136
+ body: "URL 無法訪問、OG 數據缺失或 AI 寫回失敗時,頁面會顯示具體狀態而不是假結果。",
137
+ },
138
+ ],
139
+ faq: "常見問題",
140
+ ctaPrimary: "生成社群資料包",
141
+ ctaSecondary: "返回全部工具",
142
+ ctaHint:
143
+ "OG 圖片準備好後,可用同一套視覺方向繼續統一頭像、帳號頭圖、簡介和其他社群資料。",
144
+ faqItems: [
145
+ {
146
+ question: "什麼是 OG 圖片?",
147
+ answer: "OG 圖片是分享網頁連結時,Slack、LinkedIn、Facebook 和 X 等平臺可能展示的預覽圖。你仍需在網站的 Open Graph 或 Twitter Card 標籤中填寫該圖片的公開絕對 URL。",
148
+ },
149
+ {
150
+ question: "什麼是 X Header 圖片?",
151
+ answer: "X Header 圖片是 X 個人資料頂部的橫幅,與網頁連結分享時的 OG 預覽圖不同。匯出前請確認選擇了正確的畫布尺寸。",
152
+ },
153
+ {
154
+ question: "什麼是 Blog Featured 圖片?",
155
+ answer: "Blog Featured 圖片是 CMS、文章列表或 newsletter 使用的文章封面。它可以重用 OG 圖片的核心資訊,但裁切和排版要求可能不同。",
156
+ },
157
+ {
158
+ question: "什麼是 AI 建議?",
159
+ answer: "AI 會提供可編輯的文案、配色、模板和版面方向。請在發佈前檢查最終文案、對比度和品牌使用是否合適。",
160
+ },
161
+ {
162
+ question: "什麼是可下載文件?",
163
+ answer: "可下載 PNG、JPEG 或 WebP。將檔案上傳到 CMS、public 目錄或圖片託管服務後,再把它的公開絕對 URL 配置到頁面 metadata 中。",
164
+ },
165
+ {
166
+ question: "什麼是失敗邊界提示?",
167
+ answer: "本工具不提供永久公開圖片 URL,也不會自動把 Open Graph 標籤發佈到你的網站。URL 讀取和 AI 建議也可能失敗,因此請檢查預覽並自行發佈最終檔案。",
168
+ },
169
+ ]
170
+ },
171
+ } as const;
172
+
173
+ export default ogImageGenerator;