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