@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,287 @@
1
+ const socialPlatformAssetAdapter = {
2
+ meta: {
3
+ title: "Social Media Image Size Adapter",
4
+ description: "Upload an existing screenshot, cover, or product image, choose X, LinkedIn, Instagram, TikTok, YouTube Shorts, or Facebook, then create platform-sized image previews, downloads, and companion publishing copy.",
5
+ intro: "Turn one existing image into multi-platform social assets: generate common platform image sizes first, then add titles, captions, tags, format notes, and a human review checklist.",
6
+ category: "Social tools",
7
+ keywords: [
8
+ "social media image size adapter",
9
+ "social platform image resizer",
10
+ "Instagram cover size",
11
+ "LinkedIn image size",
12
+ "TikTok cover image",
13
+ "multi platform asset adapter",
14
+ ],
15
+ inputSignal: "Source image, title, copy, tags, target platforms",
16
+ outputSignal: "Platform images, titles, captions, tags, review checklist",
17
+ boundarySignal: "Browser-created image sizes; publishing copy requires structured writeback and does not auto-post",
18
+ },
19
+ examples: [
20
+ {
21
+ label: "Product launch hero image",
22
+ input: "Upload one product screenshot with a launch title, short product note, and starter tags for X, LinkedIn, Instagram, and TikTok.",
23
+ expectedOutput: "Platform-sized image previews and downloads plus titles, captions, tags, format notes, risk notes, and a review checklist.",
24
+ },
25
+ ],
26
+ guide: {
27
+ heroVisualAlt:
28
+ "One social image adapted into multiple platform sizes with titles, captions, tags, and review checks.",
29
+ workspaceHeading: "Turn one image into platform sizes and publishing drafts",
30
+ workspaceHint:
31
+ "Upload an existing screenshot, cover, product image, or mockup, then choose target platforms. The browser first creates platform-sized image previews and downloads; title, copy, tags, and constraints are sent to the generation task for companion publishing drafts.",
32
+ workspaceBadge: "Review image adapter",
33
+ outputs: "What you get",
34
+ outputItems: [
35
+ {
36
+ title: "Platform-sized images",
37
+ body: "Adapt the first uploaded image into common X, LinkedIn, Instagram, TikTok, YouTube Shorts, or Facebook publishing ratios with preview and download.",
38
+ },
39
+ {
40
+ title: "Companion titles and captions",
41
+ body: "Build platform-specific hooks, caption rhythm, emphasis, and action cues around the same visual asset.",
42
+ },
43
+ {
44
+ title: "Tags and format notes",
45
+ body: "Keep existing tags, add restrained platform tags, and surface ratio, framing, risk, and pre-publish checks.",
46
+ },
47
+ {
48
+ title: "Handoff-ready asset pack",
49
+ body: "Download image outputs and copy the text result as Markdown so social, design, or launch workflows can keep moving.",
50
+ },
51
+ ],
52
+ supportHeading: "Use it when you have an image but do not want to crop and rewrite for every platform",
53
+ supportVisualAlt:
54
+ "Product screenshots and cover images adapted into social platform asset packs.",
55
+ supportItems: [
56
+ "Fits product launches, feature updates, campaign teasers, case-study reuse, content distribution, and community operations.",
57
+ "Input can be incomplete: an image alone can produce sized previews; adding title, copy, tags, audience, or constraints makes the publishing draft more useful.",
58
+ "Image adaptation is deterministic in the browser: it preserves the source image, adds a soft background for mismatched ratios, and does not invent new visual content.",
59
+ "The output is a draft and review aid. It does not auto-publish and does not represent platform approval, trademark clearance, copyright clearance, or ad compliance.",
60
+ ],
61
+ boundaryHeading: "Image adaptation does not guarantee an optimal post on every platform",
62
+ boundaryVisualAlt:
63
+ "Social asset cards with platform ratios, safe framing, and human review markers.",
64
+ boundaryItems: [
65
+ "The tool does not log in to third-party platforms, check account permissions, read private content, auto-post, or schedule content.",
66
+ "Local image adaptation creates common size previews, but it does not perform smart cutouts, generative outpainting, subject detection, or real-time platform rule checks.",
67
+ "Medical, financial, legal, exaggerated-performance, personal-data, or paid-ad claims need human and professional review.",
68
+ "When proof, metrics, sources, or product limits are missing, the result should expose missing information and risk notes instead of inventing support.",
69
+ ],
70
+ failureHeading: "If results feel generic, add these inputs first",
71
+ failureItems: [
72
+ "Who the audience is and what this post should make them do.",
73
+ "Which image is the main visual and whether a logo, person, UI, or text area must stay visible.",
74
+ "Which lines from the original copy must stay and which are only temporary ideas.",
75
+ "Any forbidden words, brand voice rules, image ratios, subtitle safe zones, or compliance constraints per platform.",
76
+ ],
77
+ resultUseHeading: "Treat the result as a pre-publish social asset workspace",
78
+ resultUseVisualAlt:
79
+ "Platform-specific social assets moving into a launch calendar and human review checklist.",
80
+ resultUseItems: [
81
+ "Download platform-sized images first, then copy the Markdown into a publishing document for fact, length, and tone review.",
82
+ "Send format notes to a designer, image-generation workflow, or video editor for a more polished visual pass.",
83
+ "Keep risk notes and missing information visible so drafts are not mistaken for approved content.",
84
+ "Turn the best-performing platform version into profile updates, email templates, or launch workflow assets.",
85
+ ],
86
+ whyTomakoHeading: "Why not use a cropper or generic rewrite template",
87
+ whyTomakoItems: [
88
+ {
89
+ title: "Handle image and copy together",
90
+ body: "Resolve platform framing first, then generate titles, captions, tags, and review checks around the same visual.",
91
+ },
92
+ {
93
+ title: "Split intent by platform",
94
+ body: "The goal is not just making copy shorter; each platform version should carry a different communication job.",
95
+ },
96
+ {
97
+ title: "Make boundaries visible",
98
+ body: "Unsupported claims, framing risks, and human review points stay visible instead of being hidden behind polished wording.",
99
+ },
100
+ {
101
+ title: "Keep results handoff-ready",
102
+ body: "Outputs are downloadable, copyable, and usable by social operators and designers instead of being a loose set of sentences.",
103
+ },
104
+ ],
105
+ standardHeading: "A good social image adapter should balance size, context, and review",
106
+ standardVisualAlt:
107
+ "A social asset adaptation standards card showing platform size, copy context, and publishing review.",
108
+ standardItems: [
109
+ "Size: quickly produce common platform ratios while preserving the source image and safe framing.",
110
+ "Context: platform versions should differ meaningfully while preserving the same source facts.",
111
+ "Ease: the first pass should need an existing image and platform choices, not a full marketing brief.",
112
+ "Trust: missing proof, exaggerated claims, and sensitive platform language should trigger human review notes.",
113
+ "Handoff: results should be easy to download, copy, and pass to design or social operators.",
114
+ ],
115
+ faq: "FAQ",
116
+ faqItems: [
117
+ {
118
+ question: "Can it directly resize my uploaded image for target platforms?",
119
+ answer:
120
+ "Yes. This version uses the first uploaded image to create JPG previews and downloads in common target platform sizes. It preserves the source image and adds a soft background for mismatched ratios, but it does not do generative outpainting, smart cutouts, or live platform rule validation.",
121
+ },
122
+ {
123
+ question: "What does it generate besides images?",
124
+ answer:
125
+ "When the structured generation task succeeds, the page shows platform titles, captions, tags, format notes, risk notes, and a review checklist. Without a valid structured result, it will not fake final copy with a local template.",
126
+ },
127
+ {
128
+ question: "Can I publish the result directly?",
129
+ answer:
130
+ "Review it first. The tool returns image outputs and publishing drafts, but it does not replace platform rules, copyright, trademark, ad-compliance, or fact checks.",
131
+ },
132
+ {
133
+ question: "Will it post to X, LinkedIn, or TikTok?",
134
+ answer:
135
+ "No. It creates downloadable and copyable material only. It does not log in to third-party accounts, schedule posts, publish content, or check account permissions.",
136
+ },
137
+ ],
138
+ ctaHint:
139
+ "After adapting social images and publishing drafts, continue shaping profile assets or turn the same message into email templates.",
140
+ ctaPrimary: "Generate profile assets",
141
+ ctaSecondary: "Generate email templates",
142
+ },
143
+ widget: {
144
+ formTitle: "Image and publishing material",
145
+ formHint:
146
+ "Upload the image to adapt, then choose target platforms. Title, copy, and tags can include only what you already have. Images are adapted in the browser; copy results appear after a valid structured generation result returns.",
147
+ sourceTitleLabel: "Title",
148
+ sourceTitlePlaceholder:
149
+ "Example: Launch-ready visuals in minutes; or an existing hook, campaign theme, product name, or subtitle.",
150
+ sourceCopyLabel: "Copy",
151
+ sourceCopyPlaceholder:
152
+ "Example: Upload product context and generate screenshot notes, social covers, launch page assets, and review checklists.",
153
+ designAssetsLabel: "Source images",
154
+ designAssetsHint: "{count}/{max} images",
155
+ designAssetsButton: "Upload images",
156
+ designAssetsEmpty:
157
+ "Upload a screenshot, cover, product image, or mockup. Platform-sized images are generated from the first upload.",
158
+ designAssetsReady: "{count} image(s) ready",
159
+ designAssetsRemove: "Remove image",
160
+ designAssetMeta: "{width}x{height} · {size}",
161
+ imageErrors: {
162
+ unsupported: "Use PNG, JPG, or WebP images.",
163
+ tooLarge: "Each original image must be 3 MB or smaller.",
164
+ tooMany: "Up to 3 images can be attached.",
165
+ cannotRead: "This image could not be read. Try another file.",
166
+ compressedTooLarge:
167
+ "This image is still too large after compression. Try a smaller screenshot.",
168
+ },
169
+ tagsLabel: "Tags",
170
+ tagsPlaceholder:
171
+ "Example: #indiehackers #launch #design, or brand terms, topic keywords, account tags.",
172
+ platformsLabel: "Target platforms",
173
+ goalLabel: "Content goal",
174
+ toneLabel: "Tone",
175
+ advancedTitle: "Advanced context",
176
+ audienceLabel: "Audience",
177
+ audiencePlaceholder:
178
+ "Example: indie makers and early SaaS teams preparing their first public launch.",
179
+ constraintsLabel: "Constraints or must-keep details",
180
+ constraintsPlaceholder:
181
+ "Example: do not promise growth results; keep beta, waitlist, and free trial details.",
182
+ generate: "Create platform images and copy",
183
+ generating: "Generating",
184
+ status: {
185
+ idle: "Waiting for material",
186
+ submitting: "Processing",
187
+ running: "Generating copy",
188
+ awaitingResult: "Waiting for structured result",
189
+ done: "Assets generated",
190
+ error: "Needs attention",
191
+ },
192
+ previewCards: ["Platform images", "Safe framing", "Captions", "Review checks"],
193
+ workspaceVisualTitle: "Images adapt locally, copy returns structurally",
194
+ workspaceVisualBody:
195
+ "Uploaded images produce platform-sized previews and downloads. Titles, captions, tags, and checks are shown only after a valid structured result returns.",
196
+ mediaExportsTitle: "Platform-sized images",
197
+ mediaExportsPreparing:
198
+ "Adapting the first image to the common sizes for selected platforms.",
199
+ mediaExportsReady: "{count} platform-sized image(s) ready for review.",
200
+ mediaExportsEmpty: "Preparing image previews.",
201
+ mediaExportMeta: "{width}x{height} · {ratio} · JPG · {size}",
202
+ mediaExportSource: "Source: {file}",
203
+ mediaExportPreviewAlt: "{file} adapted for {platform}",
204
+ downloadImageAria: "Download {platform} platform image",
205
+ platforms: {
206
+ x: "X",
207
+ linkedin: "LinkedIn",
208
+ instagram: "Instagram",
209
+ tiktok: "TikTok",
210
+ youtubeShorts: "YouTube Shorts",
211
+ facebook: "Facebook",
212
+ },
213
+ goals: {
214
+ launch: "Product launch",
215
+ education: "Education",
216
+ community: "Community",
217
+ leadGeneration: "Lead generation",
218
+ retention: "Retention",
219
+ },
220
+ tones: {
221
+ clear: "Clear and restrained",
222
+ bold: "Bold and direct",
223
+ warm: "Warm and credible",
224
+ expert: "Expert advisor",
225
+ playful: "Light and playful",
226
+ },
227
+ resultPendingTitle: "Generating companion copy",
228
+ resultPendingHint:
229
+ "Image previews can be downloaded now. Titles, captions, tags, and review checks appear after a structured result returns and passes validation.",
230
+ errors: {
231
+ validation: {
232
+ title: "Add at least one real material type",
233
+ body: "Upload an image, or fill at least one of title, copy, or tags, and select at least one platform. Avoid test, demo, numeric-only, or very short inputs.",
234
+ },
235
+ submitFailed: {
236
+ title: "Task submission failed",
237
+ body: "The generation service is temporarily unavailable. Try again later, or download the platform-sized images already created.",
238
+ },
239
+ taskFailed: {
240
+ title: "Copy generation failed",
241
+ body: "The upstream generation task failed. Try reducing input complexity, or keep the image outputs for manual editing.",
242
+ },
243
+ resultTimeout: {
244
+ title: "No structured copy result received",
245
+ body: "The task may still be running, or the result may not have written back. The page will not fake final copy with a local template.",
246
+ },
247
+ wrongResultType: {
248
+ title: "Result type mismatch",
249
+ body: "The received result does not belong to this adapter. Please generate again.",
250
+ },
251
+ invalidResultSchema: {
252
+ title: "Incomplete result structure",
253
+ body: "The generated result is missing required fields, so it cannot be rendered safely. Please regenerate or adjust the input.",
254
+ },
255
+ },
256
+ resultReady: "Companion copy generated",
257
+ resultTitle: "{count} platform publishing draft(s) generated",
258
+ taskId: "Task ID: {taskId}",
259
+ copied: "Copied",
260
+ copy: "Copy Markdown",
261
+ download: "Download copy",
262
+ reset: "Reset",
263
+ contentAngles: "Content angles",
264
+ materialCoverage: "Material coverage",
265
+ materialFields: {
266
+ title: "Title",
267
+ copy: "Copy",
268
+ designMaterials: "Image assets",
269
+ tags: "Tags",
270
+ },
271
+ coverage: {
272
+ provided: "Provided",
273
+ inferred: "Inferred",
274
+ missing: "Missing",
275
+ },
276
+ missingInfo: "Missing information",
277
+ reviewChecklist: "Review checklist",
278
+ caption: "Caption draft",
279
+ designBrief: "Design notes",
280
+ formatNotes: "Format notes",
281
+ riskNotes: "Risk notes",
282
+ sourceBasis: "Source basis",
283
+ exportNotes: "Export and use notes",
284
+ },
285
+ } as const;
286
+
287
+ export default socialPlatformAssetAdapter;
@@ -0,0 +1,150 @@
1
+ const socialProfileKit = {
2
+ meta: {
3
+ title: "Social Media Profile Draft Generator",
4
+ description: "Turn a person or brand positioning brief into editable draft profile assets for X, Instagram, TikTok, YouTube, LinkedIn, Facebook, and more.",
5
+ intro: "Turn one brief into editable profile drafts.",
6
+ category: "Social Media Tools",
7
+ keywords: [
8
+ "social media profile",
9
+ "profile draft generator",
10
+ "bio generator",
11
+ "brand profile kit preview",
12
+ ],
13
+ inputSignal: "Name, positioning, audience, tone, and target platforms",
14
+ outputSignal: "Draft avatars, banners, bios, usernames, and downloadable profile kits",
15
+ boundarySignal: "Use results as editable drafts; they do not replace likeness rights, trademark checks, or platform review rules",
16
+ },
17
+ guide: {
18
+ heroVisualTitle: "PROFILE KIT PREVIEW",
19
+ heroVisualCaption: "Turn one positioning brief into editable profile drafts for each platform.",
20
+ heroVisualItems: ["Avatar drafts", "Banner drafts", "Platform bios", "Username ideas"],
21
+ heroImageAlt: "A visual bundle of multi-platform profile drafts, avatar direction, banner draft, and export file.",
22
+ workspaceVisualHeading: "From one positioning brief to a reviewable kit",
23
+ workspaceVisualBody:
24
+ "Add the minimum profile context, then use the canvas to review avatar crops, banners, bios, and username ideas. The image is a preview cue; editing and download stay in the workspace below.",
25
+ workspaceImageAlt: "A rough profile brief becoming avatar, banner, bio cards, and an exportable profile kit.",
26
+ whatYouGet: "What drafts you get",
27
+ whatYouGetBody: [
28
+ "Enter a name, positioning, audience, and tone to organize a cross-platform profile draft kit with avatar directions, banner directions, display names, usernames, bios, headlines, and descriptions.",
29
+ "The preview area mirrors each platform across desktop and mobile layouts so you can check copy length, visual focus, crop boundaries, and consistency before publishing.",
30
+ ],
31
+ valueImageAlt: "A social profile draft kit with copy cards, avatar draft, platform cards, and JSON export file.",
32
+ whatYouGetItems: [
33
+ "Editable profile copy: display names, usernames, bios, headlines, and descriptions can be copied or adjusted directly in the canvas.",
34
+ "Platform previews: review avatar, banner, and copy placement across X, LinkedIn, Instagram, TikTok, YouTube, and more.",
35
+ "Downloadable kit data: export the current platform or the full JSON kit for design, operations, or later editing.",
36
+ "Review prompts: keep likeness rights, trademarks, platform field limits, and brand compliance visible before launch.",
37
+ ],
38
+ deliverablesVisualTitle: "DELIVERABLES",
39
+ deliverablesVisualCaption: "Preview drafts first, then copy or download the current platform.",
40
+ deliverablesVisualItems: ["Avatar SVG draft", "Banner SVG draft", "Profile JSON", "Platform copy"],
41
+ sizes: "Platform sizing and field limits",
42
+ sizesBody: [
43
+ "Every social platform treats avatars, cover images, and bio fields differently. This tool separates sizes, fields, and preview surfaces so one brand kit does not get stretched, clipped, or truncated everywhere.",
44
+ "The first production spec focuses on X, LinkedIn personal profiles, LinkedIn Company pages, YouTube, and Instagram, with separate language for creator and company profiles. Instagram does not use a general profile banner, so the preview does not invent one for symmetry.",
45
+ ],
46
+ sizesVisualTitle: "PLATFORMS",
47
+ sizesVisualCaption: "Previewed per platform, not as one generic image.",
48
+ sizesVisualItems: ["X Header", "LinkedIn personal/company", "YouTube Banner", "Instagram avatar"],
49
+ supportImageAlt: "Visual explanation of avatar crops, banner surfaces, bio length, and no-banner platform boundaries.",
50
+ whyChoose: "Why not force-fit a template",
51
+ whyChooseIntro:
52
+ "A useful profile tool should do more than write a few bio lines. It should help you see whether one identity fits different platform surfaces before you publish.",
53
+ whyChooseCommon: "Common shortcut",
54
+ whyChooseTomako: "Tomako draft kit",
55
+ whyChooseItems: [
56
+ {
57
+ label: "Cross-platform fit",
58
+ ordinary: "Paste the same bio everywhere and only notice length, tone, or layout issues after publishing.",
59
+ tomako: "Split one positioning brief into platform fields so crops, copy length, and visual focus can be reviewed per platform.",
60
+ },
61
+ {
62
+ label: "Editable outputs",
63
+ ordinary: "Many templates are useful for screenshots, but awkward to hand off for design or operations work.",
64
+ tomako: "Copy the text, export platform data as JSON, and keep avatar or banner drafts editable outside the page.",
65
+ },
66
+ {
67
+ label: "Pre-launch review",
68
+ ordinary: "The result looks finished but does not remind you to check likeness, trademarks, copyright, or platform rules.",
69
+ tomako: "The page labels outputs as drafts and keeps rights, brand compliance, and platform review in the pre-publish workflow.",
70
+ },
71
+ ],
72
+ standardImageAlt: "Before-and-after visual showing scattered templates becoming one aligned profile draft kit.",
73
+ guidance: "How to use the drafts before publishing",
74
+ guidanceIntro:
75
+ "Use the kit as pre-publish alignment material: copy it, download it, hand it to your team, and still verify final details inside the target platform.",
76
+ handoffImageAlt: "A pre-publish handoff folder with profile draft assets, review checklist, and export materials.",
77
+ guidanceBlocks: [
78
+ {
79
+ heading: "Best use cases",
80
+ items: [
81
+ "Create a first social identity pass for a new brand, creator, product launch, or campaign account.",
82
+ "Compare how avatar crops, banner ratios, and bio copy behave across X, LinkedIn, YouTube, and Instagram.",
83
+ "Hand a structured draft kit to design, marketing, or founders for review instead of treating it as final artwork.",
84
+ ],
85
+ },
86
+ {
87
+ heading: "What it does not replace",
88
+ items: [
89
+ "It does not replace likeness permission, trademark search, copyright review, or platform policy judgment.",
90
+ "It does not guarantee every platform will accept the same copy or artwork.",
91
+ "It does not handle private accounts, logged-in content, automatic posting, or real social account connection.",
92
+ ],
93
+ },
94
+ {
95
+ heading: "How to use the result",
96
+ items: [
97
+ "Switch platform and device in the canvas to check truncation, crop focus, and visual balance.",
98
+ "Copy bio and username ideas, then download the current platform or full kit.",
99
+ "Before publishing, verify dimensions, field length, rights, and brand rules in the target platform.",
100
+ ],
101
+ },
102
+ ],
103
+ howItWorks: "Draft workflow",
104
+ howItWorksItems: [
105
+ "Choose personal creator or brand company mode.",
106
+ "Fill in positioning, audience, and tone, or describe the profile in natural language.",
107
+ "Generate, then switch platform, device, and theme in the preview.",
108
+ "Tune copy, colors, and elements before downloading the kit.",
109
+ "Before publishing, review likeness rights, brand usage, and field length rules per platform.",
110
+ ],
111
+ faq: "FAQ",
112
+ faqItems: [
113
+ {
114
+ question: "Can I publish the generated kit directly?",
115
+ answer:
116
+ "Treat it as a first draft and preview kit. Before publishing, still review likeness rights, trademarks, copyright, platform dimensions, bio length, and brand rules.",
117
+ },
118
+ {
119
+ question: "Which platforms and account types are supported?",
120
+ answer:
121
+ "The current version covers X, Bluesky, Threads, LinkedIn, LinkedIn Company, Instagram, TikTok, YouTube, and Facebook, with creator and company profile modes.",
122
+ },
123
+ {
124
+ question: "Why do some platforms not show a banner?",
125
+ answer:
126
+ "Profile surfaces differ by platform. Instagram and TikTok do not have a general profile banner, so the preview follows the available profile fields instead of inventing a cover area.",
127
+ },
128
+ {
129
+ question: "Will it automatically generate a realistic portrait avatar?",
130
+ answer:
131
+ "No. Brand accounts should upload a logo or continue through the logo generator; founder accounts should upload a real or commonly used profile photo. Without an avatar source, the canvas uses a neutral monogram placeholder for preview only.",
132
+ },
133
+ {
134
+ question: "What is included in the download?",
135
+ answer:
136
+ "You can download the current platform or the full JSON profile kit. Avatar previews are based on an uploaded image, logo, or neutral placeholder; banner directions can also be exported as SVG drafts for continued editing.",
137
+ },
138
+ {
139
+ question: "What if the draft does not fit my brand?",
140
+ answer:
141
+ "Add more specific positioning, audience, and tone, then regenerate. You can also edit copy directly in the canvas, rotate colors, or upload your own avatar and banner assets.",
142
+ },
143
+ ],
144
+ ctaPrimary: "Generate a logo",
145
+ ctaSecondary: "Back to all tools",
146
+ ctaHint: "Once the profile kit is aligned, continue shaping the logo, screenshots, and social assets into a launch-ready set.",
147
+ },
148
+ } as const;
149
+
150
+ export default socialProfileKit;
@@ -0,0 +1,170 @@
1
+ const startupIdeaResearch = {
2
+ meta: {
3
+ title: "Startup Idea Research Tool",
4
+ description: "Describe an idea and target users. Get public demand signals, products, payment hypotheses, risks, and the next validation test—not a success promise.",
5
+ intro: "Turn a rough startup idea into an evidence-aware validation report. The tool checks public competitors and user signals, assesses pain, segments, willingness to pay, and next experiments, then prepares recruiting assets you can publish yourself.",
6
+ category: "Startup research tools",
7
+ keywords: [
8
+ "startup idea research",
9
+ "startup idea validation",
10
+ "pain point analysis",
11
+ "willingness to pay",
12
+ "competitor research",
13
+ ],
14
+ },
15
+ examples: [
16
+ {
17
+ label: "Rough idea validation",
18
+ input: "A tool that helps indie hackers collect Reddit/PH/HN demand signals and turn them into validation experiments.",
19
+ expectedOutput: "Pain evidence, comparable products, likely payers, objections, validation experiments, risks, and a copyable recruiting draft.",
20
+ },
21
+ ],
22
+ widget: {
23
+ ideaLabel: "Startup idea",
24
+ ideaPlaceholder:
25
+ "Example: A tool that helps indie hackers collect Reddit, Product Hunt, and HN demand signals and turn them into validation experiments.",
26
+ targetUsersLabel: "Potential users (optional)",
27
+ targetUsersPlaceholder: "Indie hackers, early SaaS teams",
28
+ regionLabel: "Market / language (optional)",
29
+ regionPlaceholder: "US, China, English-speaking market",
30
+ stageLabel: "Current stage",
31
+ stage: {
32
+ raw: "Raw idea",
33
+ problem: "Problem validated",
34
+ prototype: "Prototype",
35
+ launched: "Launched",
36
+ pivot: "Considering pivot",
37
+ },
38
+ focusLabel: "Focus (optional)",
39
+ focusPlaceholder: "Willingness to pay, competitors, first channels",
40
+ inputHint:
41
+ "A rough brief is enough. Missing evidence is recorded in the report instead of requiring a full PRD first.",
42
+ submit: "Research this idea",
43
+ submitting: "Submitting…",
44
+ running: "Researching…",
45
+ emptyTitle: "The validation report will appear here",
46
+ emptyHint:
47
+ "The tool will research comparable products and public discussion, then assess pain, users, willingness to pay, and validation experiments.",
48
+ runningTitle: "Researching public signals",
49
+ runningHint:
50
+ "The task has been submitted. This page only shows status returned by the service and will display the report when it is ready; research may take a few minutes.",
51
+ status: {
52
+ default: "Researching",
53
+ PENDING: "Queued",
54
+ STREAMING: "Processing",
55
+ AWAITING_INPUT: "Waiting to continue",
56
+ AWAITING_RESULT: "Waiting for the result",
57
+ SUCCEEDED: "Reading the result",
58
+ },
59
+ retry: "Retry",
60
+ errors: {
61
+ invalid: "Describe a real idea in at least 20 characters and avoid test/demo placeholders.",
62
+ submit: "Submit failed. Check your network and try again.",
63
+ task: "The research task failed. Please try again later.",
64
+ timeout: "The research timed out. Public information may be hard to access.",
65
+ schema: "The returned result format was invalid. Please retry.",
66
+ },
67
+ analyzeAnother: "Analyze another idea",
68
+ visit: "View source",
69
+ emptyList: "No clear public signal yet",
70
+ disclaimerFallback:
71
+ "This is an evidence-aware assistant report from public information, not investment, legal, or commercial advice. Validate with interviews, tests, and actual payments.",
72
+ signals: { weak: "Weak", mixed: "Mixed", strong: "Strong" },
73
+ verdict: { pain: "Pain", pay: "Payment", market: "Timing" },
74
+ sections: {
75
+ pain: "Real pain signals",
76
+ users: "Potential user groups",
77
+ pay: "Willingness to pay",
78
+ competitors: "Comparable products and alternatives",
79
+ validation: "Next validation experiments",
80
+ risks: "Risks and missing evidence",
81
+ sources: "Public sources",
82
+ },
83
+ share: {
84
+ title: "Prepare recruiting assets",
85
+ hint:
86
+ "Nothing below is published automatically. Review the material, then copy or download it for a channel you actually use.",
87
+ postTitle: "Recruiting title",
88
+ posterPrompt: "Poster prompt",
89
+ body: "Recruiting copy",
90
+ copy: "Copy recruiting copy",
91
+ copied: "Copied",
92
+ copyFailed: "Clipboard access was blocked. Select and copy the text above manually.",
93
+ downloadText: "Download TXT",
94
+ posterStatus: "Optional recruiting poster",
95
+ posterStatusHint:
96
+ "Generate a downloadable poster draft from the current prompt. It will not be published automatically.",
97
+ generatePoster: "Generate poster draft",
98
+ posterPolling: "The poster is still being generated. Keep this page open.",
99
+ openPoster: "Open or download poster",
100
+ posterPromptRequired: "Add a poster prompt first.",
101
+ posterFailed: "Poster generation failed. Please try again later.",
102
+ posterTimeout: "Poster generation timed out. Keep the prompt and try again later.",
103
+ },
104
+ },
105
+ guide: {
106
+ workspaceHeading: "Validate a startup idea before you build",
107
+ workspaceHint: "Describe the idea and target users to get public demand signals, assumptions to challenge, and the next validation test.",
108
+ workspaceBadge: "Startup idea validation",
109
+ visualAlt: {
110
+ hero: "Startup idea validation report preview (asset pending)",
111
+ workspace: "From rough idea to validation report and recruiting assets (asset pending)",
112
+ value: "Pain, user, and payment signal visual (asset pending)",
113
+ support: "Comparable product and validation experiment visual (asset pending)",
114
+ useCase: "Recruiting copy and poster draft visual (asset pending)",
115
+ },
116
+ valueKicker: "What you get",
117
+ valueTitle: "Not a pep talk: an evidence map for the riskiest assumptions",
118
+ valueItems: [
119
+ "Pain reality verdict: separate strong signals, weak signals, and missing evidence so founder excitement does not masquerade as demand.",
120
+ "Potential user segments: who feels the pain, who has budget, and where they can be reached.",
121
+ "Willingness-to-pay hypotheses: pricing directions based on competitors, alternatives, and current user costs.",
122
+ "Recruiting asset draft: edit the title, copy, and poster prompt, then copy or download the material for your own channel.",
123
+ ],
124
+ standardKicker: "Good-tool standard",
125
+ standardTitle: "A good idea validation tool proves the problem before polishing the plan",
126
+ standardItems: [
127
+ "Evidence first: public discussions, complaints, alternatives, and comparable products before business-plan prose.",
128
+ "Reviewable conclusions: each key claim should show a source, confidence, or missing-information note.",
129
+ "Action oriented: the report should lead to interviews, landing pages, payment tests, or community recruiting.",
130
+ "No inflated promise: it cannot guarantee market size, funding value, or success. It only narrows what to test next.",
131
+ ],
132
+ resultKicker: "Result guidance",
133
+ resultTitle: "Use the report to test the most dangerous assumption first",
134
+ resultGuidanceItems: [
135
+ "If pain signals are weak, interview 5-10 target users before building.",
136
+ "If willingness to pay is mixed, test a pricing page, waitlist, pre-sale, or service delivery offer.",
137
+ "If competitors are crowded, focus on differentiation and reachable channels instead of feature volume.",
138
+ "Publish the recruiting copy in a community you actually use, then qualify people from real replies or sign-ups.",
139
+ ],
140
+ faqKicker: "FAQ",
141
+ faqTitle: "Startup idea validation FAQs",
142
+ faqItems: [
143
+ {
144
+ question: "Will this tell me whether the idea is worth building?",
145
+ answer:
146
+ "No final startup judgment. It grades public signals around pain, users, and willingness to pay, then lists assumptions that still need validation.",
147
+ },
148
+ {
149
+ question: "What comparable product data does it crawl?",
150
+ answer:
151
+ "The tool prioritizes public websites, pricing pages, launch pages, community discussions, reviews, and searchable material. It does not access private, logged-in, or paywalled pages.",
152
+ },
153
+ {
154
+ question: "Will Tomako publish my idea to a community?",
155
+ answer:
156
+ "No. The page only prepares editable recruiting copy and an optional poster draft. You decide whether and where to publish.",
157
+ },
158
+ {
159
+ question: "How can I export the recruiting assets?",
160
+ answer:
161
+ "Copy the recruiting text or download it as a TXT file. After poster generation succeeds, you can open or download the image. The page does not fabricate community comments, ratings, or participation.",
162
+ },
163
+ ],
164
+ ctaHint: "If the idea already has clear competitors, go deeper on one of them.",
165
+ ctaPrimary: "Analyze a competitor",
166
+ ctaSecondary: "View all tools",
167
+ },
168
+ } as const;
169
+
170
+ export default startupIdeaResearch;