@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.
- package/README.md +12 -0
- package/package.json +629 -0
- package/src/assets/icons/brands/social/bluesky-icon.tsx +9 -0
- package/src/assets/icons/brands/social/facebook-icon.tsx +9 -0
- package/src/assets/icons/brands/social/index.ts +8 -0
- package/src/assets/icons/brands/social/instagram-icon.tsx +9 -0
- package/src/assets/icons/brands/social/linkedin-icon.tsx +9 -0
- package/src/assets/icons/brands/social/threads-icon.tsx +9 -0
- package/src/assets/icons/brands/social/tiktok-icon.tsx +10 -0
- package/src/assets/icons/brands/social/x-icon.tsx +9 -0
- package/src/assets/icons/brands/social/youtube-icon.tsx +9 -0
- package/src/assets/icons/social-profile/facebook-icon.tsx +12 -0
- package/src/assets/icons/social-profile/index.ts +29 -0
- package/src/assets/icons/social-profile/instagram-icon.tsx +18 -0
- package/src/assets/icons/social-profile/linkedin-icon.tsx +12 -0
- package/src/assets/icons/social-profile/tiktok-icon.tsx +12 -0
- package/src/assets/icons/social-profile/x-icon.tsx +13 -0
- package/src/assets/icons/social-profile/youtube-icon.tsx +12 -0
- package/src/components/tools/engine/form-builder.tsx +219 -0
- package/src/components/tools/engine/package-widget-loader.tsx +38 -0
- package/src/components/tools/engine/package-widget-runtime.tsx +409 -0
- package/src/components/tools/engine/package-widget.tsx +77 -0
- package/src/components/tools/engine/result-view.tsx +596 -0
- package/src/components/tools/engine/use-legacy-llm-task.ts +64 -0
- package/src/components/tools/engine/use-tool-task.ts +195 -0
- package/src/components/tools/market-forecast-report.tsx +1150 -0
- package/src/components/tools/registry.ts +13 -0
- package/src/components/tools/workspace/index.ts +39 -0
- package/src/components/tools/workspace/tool-action-bar.tsx +99 -0
- package/src/components/tools/workspace/tool-empty-panel.tsx +32 -0
- package/src/components/tools/workspace/tool-error-panel.tsx +40 -0
- package/src/components/tools/workspace/tool-field.tsx +124 -0
- package/src/components/tools/workspace/tool-file-upload.tsx +112 -0
- package/src/components/tools/workspace/tool-form-section.tsx +21 -0
- package/src/components/tools/workspace/tool-form-shell.tsx +36 -0
- package/src/components/tools/workspace/tool-loading-panel.tsx +269 -0
- package/src/components/tools/workspace/tool-option-row.tsx +97 -0
- package/src/components/tools/workspace/tool-preview-panel.tsx +31 -0
- package/src/components/tools/workspace/tool-result-actions.tsx +67 -0
- package/src/components/tools/workspace/tool-result-file-actions.ts +31 -0
- package/src/components/tools/workspace/tool-result-header.tsx +39 -0
- package/src/components/tools/workspace/tool-status.tsx +13 -0
- package/src/components/tools/workspace/tool-workspace-layout.tsx +226 -0
- package/src/constants/LKS.ts +29 -0
- package/src/constants/related-tools.ts +18 -0
- package/src/constants/social-profile-kit.ts +284 -0
- package/src/constants/tool-assets.ts +7 -0
- package/src/env.d.ts +3 -0
- package/src/features/tools/_templates/standard-tool.container.tsx +90 -0
- package/src/features/tools/app-icon-resizer/app-icon-resizer.container.tsx +11 -0
- package/src/features/tools/app-icon-resizer/app-icon-resizer.spec.ts +15 -0
- package/src/features/tools/app-icon-resizer/widget/app-icon-resizer.tsx +444 -0
- package/src/features/tools/app-icon-resizer/widget/constants.ts +19 -0
- package/src/features/tools/app-icon-resizer/widget/helpers.ts +314 -0
- package/src/features/tools/app-icon-resizer/widget/index.ts +7 -0
- package/src/features/tools/app-icon-resizer/widget/platform-icons.tsx +59 -0
- package/src/features/tools/app-icon-resizer/widget/preview-dialogs.tsx +139 -0
- package/src/features/tools/app-icon-resizer/widget/result-shell.tsx +165 -0
- package/src/features/tools/app-icon-resizer/widget/types.ts +36 -0
- package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.container.tsx +108 -0
- package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.spec.ts +14 -0
- package/src/features/tools/app-store-screenshot-generator/config.ts +3 -0
- package/src/features/tools/app-store-screenshot-generator/widget/app-store-screenshot-generator.tsx +1250 -0
- package/src/features/tools/app-store-screenshot-generator/widget/asset-slots.ts +76 -0
- package/src/features/tools/app-store-screenshot-generator/widget/constants.ts +43 -0
- package/src/features/tools/app-store-screenshot-generator/widget/form-controls.tsx +214 -0
- package/src/features/tools/app-store-screenshot-generator/widget/generation.ts +528 -0
- package/src/features/tools/app-store-screenshot-generator/widget/index.ts +7 -0
- package/src/features/tools/app-store-screenshot-generator/widget/input-media.ts +175 -0
- package/src/features/tools/app-store-screenshot-generator/widget/types.ts +60 -0
- package/src/features/tools/app-store-screenshot-generator/widget/zip.ts +119 -0
- package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.container.tsx +135 -0
- package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.spec.ts +15 -0
- package/src/features/tools/build-in-public-story-generator/widget/build-in-public-story-generator.tsx +314 -0
- package/src/features/tools/build-in-public-story-generator/widget/constants.ts +3 -0
- package/src/features/tools/build-in-public-story-generator/widget/helpers.ts +25 -0
- package/src/features/tools/build-in-public-story-generator/widget/index.ts +7 -0
- package/src/features/tools/build-in-public-story-generator/widget/preview-panels.tsx +58 -0
- package/src/features/tools/build-in-public-story-generator/widget/result-shell.tsx +164 -0
- package/src/features/tools/build-in-public-story-generator/widget/types.ts +6 -0
- package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.container.tsx +30 -0
- package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.spec.ts +15 -0
- package/src/features/tools/cold-start-channel-selector/widget/cold-start-channel-selector.tsx +417 -0
- package/src/features/tools/cold-start-channel-selector/widget/constants.ts +46 -0
- package/src/features/tools/cold-start-channel-selector/widget/form-controls.tsx +41 -0
- package/src/features/tools/cold-start-channel-selector/widget/helpers.ts +75 -0
- package/src/features/tools/cold-start-channel-selector/widget/index.ts +7 -0
- package/src/features/tools/cold-start-channel-selector/widget/preview-panels.tsx +250 -0
- package/src/features/tools/cold-start-channel-selector/widget/result-shell.tsx +199 -0
- package/src/features/tools/cold-start-channel-selector/widget/types.ts +21 -0
- package/src/features/tools/commercial-bp-generator/commercial-bp-generator.container.tsx +102 -0
- package/src/features/tools/commercial-bp-generator/commercial-bp-generator.spec.ts +14 -0
- package/src/features/tools/commercial-bp-generator/widget/commercial-bp-generator.tsx +676 -0
- package/src/features/tools/commercial-bp-generator/widget/constants.ts +32 -0
- package/src/features/tools/commercial-bp-generator/widget/helpers.ts +147 -0
- package/src/features/tools/commercial-bp-generator/widget/index.ts +7 -0
- package/src/features/tools/commercial-bp-generator/widget/result-shell.tsx +271 -0
- package/src/features/tools/commercial-bp-generator/widget/style-option.tsx +54 -0
- package/src/features/tools/commercial-bp-generator/widget/types.ts +33 -0
- package/src/features/tools/community-feedback-inbox/community-feedback-inbox.container.tsx +126 -0
- package/src/features/tools/community-feedback-inbox/community-feedback-inbox.spec.ts +15 -0
- package/src/features/tools/community-feedback-inbox/widget/community-feedback-inbox.tsx +271 -0
- package/src/features/tools/community-feedback-inbox/widget/constants.ts +3 -0
- package/src/features/tools/community-feedback-inbox/widget/helpers.ts +28 -0
- package/src/features/tools/community-feedback-inbox/widget/index.ts +7 -0
- package/src/features/tools/community-feedback-inbox/widget/preview-panels.tsx +92 -0
- package/src/features/tools/community-feedback-inbox/widget/result-shell.tsx +266 -0
- package/src/features/tools/community-feedback-inbox/widget/types.ts +6 -0
- package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.container.tsx +124 -0
- package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.spec.ts +15 -0
- package/src/features/tools/community-pain-point-extractor/widget/community-pain-point-extractor.tsx +404 -0
- package/src/features/tools/community-pain-point-extractor/widget/constants.ts +41 -0
- package/src/features/tools/community-pain-point-extractor/widget/helpers.ts +76 -0
- package/src/features/tools/community-pain-point-extractor/widget/index.ts +8 -0
- package/src/features/tools/community-pain-point-extractor/widget/progress-panels.tsx +251 -0
- package/src/features/tools/community-pain-point-extractor/widget/result-shell.tsx +478 -0
- package/src/features/tools/community-pain-point-extractor/widget/types.ts +33 -0
- package/src/features/tools/community-post-risk-checker/community-post-risk-checker.package.ts +792 -0
- package/src/features/tools/competitor-analysis/competitor-analysis.container.tsx +136 -0
- package/src/features/tools/competitor-analysis/competitor-analysis.spec.ts +15 -0
- package/src/features/tools/competitor-analysis/widget/competitor-analysis.tsx +241 -0
- package/src/features/tools/competitor-analysis/widget/constants.ts +9 -0
- package/src/features/tools/competitor-analysis/widget/index.ts +7 -0
- package/src/features/tools/competitor-analysis/widget/preview-panels.tsx +60 -0
- package/src/features/tools/competitor-analysis/widget/result-shell.tsx +418 -0
- package/src/features/tools/competitor-analysis/widget/types.ts +13 -0
- package/src/features/tools/disclaimer-generator/disclaimer-generator.package.ts +339 -0
- package/src/features/tools/email-template-generator/email-template-generator.container.tsx +224 -0
- package/src/features/tools/email-template-generator/email-template-generator.spec.ts +14 -0
- package/src/features/tools/email-template-generator/widget/email-template-generator.tsx +358 -0
- package/src/features/tools/email-template-generator/widget/helpers.ts +39 -0
- package/src/features/tools/email-template-generator/widget/index.ts +7 -0
- package/src/features/tools/email-template-generator/widget/preview-panel.tsx +311 -0
- package/src/features/tools/email-template-generator/widget/result-text-block.tsx +7 -0
- package/src/features/tools/email-template-generator/widget/types.ts +24 -0
- package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.container.tsx +75 -0
- package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.spec.ts +15 -0
- package/src/features/tools/gtm-readiness-checklist/widget/gtm-readiness-checklist.tsx +122 -0
- package/src/features/tools/gtm-readiness-checklist/widget/index.ts +7 -0
- package/src/features/tools/investor-matching-planner/investor-matching-planner.package.ts +869 -0
- package/src/features/tools/koko-codex-assistant/koko-codex-assistant.container.tsx +151 -0
- package/src/features/tools/koko-codex-assistant/koko-codex-assistant.spec.ts +14 -0
- package/src/features/tools/koko-codex-assistant/widget/index.ts +7 -0
- package/src/features/tools/koko-codex-assistant/widget/koko-codex-assistant-download.tsx +192 -0
- package/src/features/tools/logo-generator/logo-generator.container.tsx +112 -0
- package/src/features/tools/logo-generator/logo-generator.spec.ts +15 -0
- package/src/features/tools/logo-generator/widget/index.ts +7 -0
- package/src/features/tools/logo-generator/widget/logo-generator.tsx +1244 -0
- package/src/features/tools/market-forecast-report/market-forecast-report.container.tsx +73 -0
- package/src/features/tools/market-forecast-report/market-forecast-report.spec.ts +15 -0
- package/src/features/tools/million-user-growth-test/million-user-growth-test.container.tsx +123 -0
- package/src/features/tools/million-user-growth-test/million-user-growth-test.spec.ts +14 -0
- package/src/features/tools/million-user-growth-test/widget/index.ts +7 -0
- package/src/features/tools/million-user-growth-test/widget/million-user-growth-test.tsx +433 -0
- package/src/features/tools/module-loader.ts +107 -0
- package/src/features/tools/og-image-generator/og-image-generator.container.tsx +86 -0
- package/src/features/tools/og-image-generator/og-image-generator.spec.ts +14 -0
- package/src/features/tools/og-image-generator/widget/constants.ts +38 -0
- package/src/features/tools/og-image-generator/widget/form-fields.tsx +240 -0
- package/src/features/tools/og-image-generator/widget/index.ts +7 -0
- package/src/features/tools/og-image-generator/widget/og-image-generator.tsx +742 -0
- package/src/features/tools/og-image-generator/widget/preview-panel.tsx +305 -0
- package/src/features/tools/og-image-generator/widget/types.ts +1 -0
- package/src/features/tools/package/direct-models.ts +20 -0
- package/src/features/tools/package/form.ts +38 -0
- package/src/features/tools/package/l10n.ts +22 -0
- package/src/features/tools/package/package-container.tsx +285 -0
- package/src/features/tools/package/package-loaders.ts +22 -0
- package/src/features/tools/package/package-registry.ts +36 -0
- package/src/features/tools/package/result-markdown.ts +142 -0
- package/src/features/tools/package/schema.ts +379 -0
- package/src/features/tools/package/to-tool-module.ts +20 -0
- package/src/features/tools/package/to-tool-spec.ts +52 -0
- package/src/features/tools/package/types.ts +381 -0
- package/src/features/tools/pitch-deck-generator/pitch-deck-generator.container.tsx +175 -0
- package/src/features/tools/pitch-deck-generator/pitch-deck-generator.spec.ts +14 -0
- package/src/features/tools/pitch-deck-generator/pitch-deck-library-data.ts +476 -0
- package/src/features/tools/pitch-deck-generator/pitch-deck-library.tsx +159 -0
- package/src/features/tools/pitch-deck-generator/widget/ceremony-line.tsx +27 -0
- package/src/features/tools/pitch-deck-generator/widget/constants.ts +27 -0
- package/src/features/tools/pitch-deck-generator/widget/index.ts +7 -0
- package/src/features/tools/pitch-deck-generator/widget/pitch-deck-generator.tsx +763 -0
- package/src/features/tools/pitch-deck-generator/widget/result-helpers.ts +102 -0
- package/src/features/tools/pitch-deck-generator/widget/result-shell.tsx +263 -0
- package/src/features/tools/pitch-deck-generator/widget/slide-frame.tsx +106 -0
- package/src/features/tools/pitch-deck-generator/widget/slide-lightbox.tsx +149 -0
- package/src/features/tools/pitch-deck-generator/widget/style-option.tsx +54 -0
- package/src/features/tools/pitch-deck-generator/widget/types.ts +44 -0
- package/src/features/tools/product-agreement-generator/product-agreement-generator.container.tsx +137 -0
- package/src/features/tools/product-agreement-generator/product-agreement-generator.spec.ts +14 -0
- package/src/features/tools/product-agreement-generator/widget/constants.ts +27 -0
- package/src/features/tools/product-agreement-generator/widget/form-controls.tsx +218 -0
- package/src/features/tools/product-agreement-generator/widget/helpers.ts +68 -0
- package/src/features/tools/product-agreement-generator/widget/index.ts +7 -0
- package/src/features/tools/product-agreement-generator/widget/product-agreement-generator.tsx +671 -0
- package/src/features/tools/product-agreement-generator/widget/result-shell.tsx +473 -0
- package/src/features/tools/product-agreement-generator/widget/types.ts +89 -0
- package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.container.tsx +122 -0
- package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.spec.ts +15 -0
- package/src/features/tools/product-hunt-launch-planner/widget/constants.ts +5 -0
- package/src/features/tools/product-hunt-launch-planner/widget/helpers.ts +44 -0
- package/src/features/tools/product-hunt-launch-planner/widget/index.ts +7 -0
- package/src/features/tools/product-hunt-launch-planner/widget/preview-panel.tsx +143 -0
- package/src/features/tools/product-hunt-launch-planner/widget/product-hunt-launch-planner.tsx +504 -0
- package/src/features/tools/product-hunt-launch-planner/widget/result-shell.tsx +176 -0
- package/src/features/tools/product-hunt-launch-planner/widget/types.ts +20 -0
- package/src/features/tools/product-name-generator/product-name-generator.container.tsx +14 -0
- package/src/features/tools/product-name-generator/product-name-generator.spec.ts +15 -0
- package/src/features/tools/product-name-generator/widget/candidate-card.tsx +273 -0
- package/src/features/tools/product-name-generator/widget/constants.ts +21 -0
- package/src/features/tools/product-name-generator/widget/form-controls.tsx +136 -0
- package/src/features/tools/product-name-generator/widget/helpers.ts +41 -0
- package/src/features/tools/product-name-generator/widget/index.ts +7 -0
- package/src/features/tools/product-name-generator/widget/product-name-generator.tsx +776 -0
- package/src/features/tools/product-name-generator/widget/types.ts +36 -0
- package/src/features/tools/product-positioning-analyzer/product-positioning-analyzer.package.ts +801 -0
- package/src/features/tools/product-poster-generator/product-poster-generator.container.tsx +14 -0
- package/src/features/tools/product-poster-generator/product-poster-generator.spec.ts +15 -0
- package/src/features/tools/product-poster-generator/widget/constants.ts +125 -0
- package/src/features/tools/product-poster-generator/widget/form-controls.tsx +204 -0
- package/src/features/tools/product-poster-generator/widget/helpers.ts +155 -0
- package/src/features/tools/product-poster-generator/widget/index.ts +7 -0
- package/src/features/tools/product-poster-generator/widget/product-poster-generator.tsx +663 -0
- package/src/features/tools/product-poster-generator/widget/result-shell.tsx +12 -0
- package/src/features/tools/product-poster-generator/widget/types.ts +83 -0
- package/src/features/tools/product-ui-generator/product-ui-generator.container.tsx +116 -0
- package/src/features/tools/product-ui-generator/product-ui-generator.spec.ts +14 -0
- package/src/features/tools/product-ui-generator/widget/constants.ts +18 -0
- package/src/features/tools/product-ui-generator/widget/helpers.ts +11 -0
- package/src/features/tools/product-ui-generator/widget/index.ts +7 -0
- package/src/features/tools/product-ui-generator/widget/preview-panels.tsx +73 -0
- package/src/features/tools/product-ui-generator/widget/product-ui-generator.tsx +304 -0
- package/src/features/tools/product-ui-generator/widget/result-shell.tsx +118 -0
- package/src/features/tools/product-ui-generator/widget/types.ts +9 -0
- package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.container.tsx +113 -0
- package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.spec.ts +15 -0
- package/src/features/tools/reddit-pain-point-finder/widget/constants.ts +5 -0
- package/src/features/tools/reddit-pain-point-finder/widget/index.ts +7 -0
- package/src/features/tools/reddit-pain-point-finder/widget/preview-panels.tsx +73 -0
- package/src/features/tools/reddit-pain-point-finder/widget/reddit-pain-point-finder.tsx +281 -0
- package/src/features/tools/reddit-pain-point-finder/widget/result-shell.tsx +203 -0
- package/src/features/tools/reddit-pain-point-finder/widget/types.ts +15 -0
- package/src/features/tools/registry.ts +288 -0
- package/src/features/tools/runtime-registry.ts +186 -0
- package/src/features/tools/shared/create-guide-stack-container.tsx +176 -0
- package/src/features/tools/shared/create-standard-landing-container.tsx +163 -0
- package/src/features/tools/shared/tool-content-sections.tsx +659 -0
- package/src/features/tools/shared/tool-cta.tsx +66 -0
- package/src/features/tools/shared/tool-draft-view.tsx +53 -0
- package/src/features/tools/shared/tool-guide-section.tsx +191 -0
- package/src/features/tools/shared/tool-handoff.tsx +38 -0
- package/src/features/tools/shared/tool-mcp-badge.tsx +23 -0
- package/src/features/tools/shared/tool-message-translator.ts +37 -0
- package/src/features/tools/shared/tool-page-shell.tsx +348 -0
- package/src/features/tools/shared/tool-standard-generation-steps.tsx +52 -0
- package/src/features/tools/shared/tool-standard-landing-sections.tsx +447 -0
- package/src/features/tools/shared/tool-ui-registry.ts +237 -0
- package/src/features/tools/shared/tool-widget-slot.tsx +29 -0
- package/src/features/tools/slogan-generator/slogan-generator.package.ts +641 -0
- package/src/features/tools/social-listening-research-report/social-listening-research-report.container.tsx +124 -0
- package/src/features/tools/social-listening-research-report/social-listening-research-report.spec.ts +15 -0
- package/src/features/tools/social-listening-research-report/widget/constants.ts +4 -0
- package/src/features/tools/social-listening-research-report/widget/index.ts +7 -0
- package/src/features/tools/social-listening-research-report/widget/preview-panels.tsx +73 -0
- package/src/features/tools/social-listening-research-report/widget/result-shell.tsx +216 -0
- package/src/features/tools/social-listening-research-report/widget/social-listening-research-report.tsx +303 -0
- package/src/features/tools/social-listening-research-report/widget/types.ts +15 -0
- package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.container.tsx +123 -0
- package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.spec.ts +15 -0
- package/src/features/tools/social-platform-asset-adapter/widget/constants.ts +43 -0
- package/src/features/tools/social-platform-asset-adapter/widget/helpers.ts +249 -0
- package/src/features/tools/social-platform-asset-adapter/widget/index.ts +7 -0
- package/src/features/tools/social-platform-asset-adapter/widget/result-shell.tsx +350 -0
- package/src/features/tools/social-platform-asset-adapter/widget/section-heading.tsx +18 -0
- package/src/features/tools/social-platform-asset-adapter/widget/social-platform-asset-adapter.tsx +641 -0
- package/src/features/tools/social-platform-asset-adapter/widget/types.ts +40 -0
- package/src/features/tools/social-profile-kit/social-profile-kit.container.tsx +177 -0
- package/src/features/tools/social-profile-kit/social-profile-kit.spec.ts +15 -0
- package/src/features/tools/social-profile-kit/widget/context-editor.tsx +171 -0
- package/src/features/tools/social-profile-kit/widget/generation-runtime.ts +281 -0
- package/src/features/tools/social-profile-kit/widget/index.ts +7 -0
- package/src/features/tools/social-profile-kit/widget/input-panel.tsx +294 -0
- package/src/features/tools/social-profile-kit/widget/platform-dock.tsx +115 -0
- package/src/features/tools/social-profile-kit/widget/profile-canvas.tsx +318 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/bluesky-preview.tsx +188 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/facebook-preview.tsx +168 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/index.ts +1 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/instagram-preview.tsx +278 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/linkedin-preview.tsx +358 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/profile-preview.tsx +348 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/shared.tsx +391 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/threads-preview.tsx +148 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/tiktok-preview.tsx +319 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/x-preview.tsx +341 -0
- package/src/features/tools/social-profile-kit/widget/profile-preview/youtube-preview.tsx +297 -0
- package/src/features/tools/social-profile-kit/widget/social-profile-kit-generator.tsx +1059 -0
- package/src/features/tools/social-profile-kit/widget/types.ts +104 -0
- package/src/features/tools/spec-registry.ts +158 -0
- package/src/features/tools/startup-idea-research/startup-idea-research.container.tsx +111 -0
- package/src/features/tools/startup-idea-research/startup-idea-research.spec.ts +15 -0
- package/src/features/tools/startup-idea-research/widget/constants.ts +11 -0
- package/src/features/tools/startup-idea-research/widget/index.ts +7 -0
- package/src/features/tools/startup-idea-research/widget/preview-panels.tsx +67 -0
- package/src/features/tools/startup-idea-research/widget/result-shell.tsx +323 -0
- package/src/features/tools/startup-idea-research/widget/startup-idea-research.tsx +272 -0
- package/src/features/tools/startup-idea-research/widget/types.ts +21 -0
- package/src/features/tools/tarot-reading/tarot-reading.container.tsx +412 -0
- package/src/features/tools/tarot-reading/tarot-reading.spec.ts +15 -0
- package/src/features/tools/tarot-reading/widget/cards.tsx +152 -0
- package/src/features/tools/tarot-reading/widget/constants.ts +69 -0
- package/src/features/tools/tarot-reading/widget/deck-view.tsx +86 -0
- package/src/features/tools/tarot-reading/widget/deck.ts +86 -0
- package/src/features/tools/tarot-reading/widget/index.ts +7 -0
- package/src/features/tools/tarot-reading/widget/landing-view.tsx +209 -0
- package/src/features/tools/tarot-reading/widget/reading-copy.tsx +138 -0
- package/src/features/tools/tarot-reading/widget/reading-view.tsx +189 -0
- package/src/features/tools/tarot-reading/widget/reveal-view.tsx +50 -0
- package/src/features/tools/tarot-reading/widget/ritual-view.tsx +276 -0
- package/src/features/tools/tarot-reading/widget/tarot-reading.tsx +262 -0
- package/src/features/tools/tarot-reading/widget/types.ts +22 -0
- package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.container.tsx +114 -0
- package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.spec.ts +14 -0
- package/src/features/tools/twitter-gif-downloader/widget/index.ts +7 -0
- package/src/features/tools/twitter-gif-downloader/widget/twitter-gif-downloader.tsx +351 -0
- package/src/features/tools/types.ts +68 -0
- package/src/features/tools/user-interview-guide-generator/user-interview-guide-generator.package.ts +774 -0
- package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.container.tsx +23 -0
- package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.spec.ts +14 -0
- package/src/features/tools/user-interview-insight-report-generator/widget/constants.ts +8 -0
- package/src/features/tools/user-interview-insight-report-generator/widget/helpers.ts +4 -0
- package/src/features/tools/user-interview-insight-report-generator/widget/index.ts +7 -0
- package/src/features/tools/user-interview-insight-report-generator/widget/preview-panels.tsx +55 -0
- package/src/features/tools/user-interview-insight-report-generator/widget/result-shell.tsx +122 -0
- package/src/features/tools/user-interview-insight-report-generator/widget/types.ts +16 -0
- package/src/features/tools/user-interview-insight-report-generator/widget/user-interview-insight-report-generator.tsx +293 -0
- package/src/features/tools/user-interview-record-generator/user-interview-record-generator.container.tsx +18 -0
- package/src/features/tools/user-interview-record-generator/user-interview-record-generator.spec.ts +14 -0
- package/src/features/tools/user-interview-record-generator/widget/constants.ts +9 -0
- package/src/features/tools/user-interview-record-generator/widget/helpers.ts +4 -0
- package/src/features/tools/user-interview-record-generator/widget/index.ts +7 -0
- package/src/features/tools/user-interview-record-generator/widget/preview-panels.tsx +48 -0
- package/src/features/tools/user-interview-record-generator/widget/result-shell.tsx +128 -0
- package/src/features/tools/user-interview-record-generator/widget/types.ts +16 -0
- package/src/features/tools/user-interview-record-generator/widget/user-interview-record-generator.tsx +305 -0
- package/src/features/tools/utm-builder/utm-builder.package.ts +846 -0
- package/src/features/tools/widget-registry.ts +73 -0
- package/src/generated/mcp-tools-registry.json +17 -0
- package/src/host/client-proxy.test.ts +33 -0
- package/src/host/client.ts +678 -0
- package/src/host/server.ts +119 -0
- package/src/i18n/client.ts +11 -0
- package/src/i18n/locale-fallback.ts +38 -0
- package/src/i18n/locale.ts +18 -0
- package/src/i18n/messages/en/page/tools.ts +124 -0
- package/src/i18n/messages/en/tools/app-icon-resizer.ts +244 -0
- package/src/i18n/messages/en/tools/app-store-screenshot-generator.ts +145 -0
- package/src/i18n/messages/en/tools/build-in-public-story-generator.ts +229 -0
- package/src/i18n/messages/en/tools/cold-start-channel-selector.ts +423 -0
- package/src/i18n/messages/en/tools/commercial-bp-generator.ts +304 -0
- package/src/i18n/messages/en/tools/community-feedback-inbox.ts +218 -0
- package/src/i18n/messages/en/tools/community-pain-point-extractor.ts +230 -0
- package/src/i18n/messages/en/tools/community-post-risk-checker.ts +209 -0
- package/src/i18n/messages/en/tools/competitor-analysis.ts +197 -0
- package/src/i18n/messages/en/tools/email-template-generator.ts +302 -0
- package/src/i18n/messages/en/tools/engine.ts +69 -0
- package/src/i18n/messages/en/tools/gtm-readiness-checklist.ts +166 -0
- package/src/i18n/messages/en/tools/index.ts +73 -0
- package/src/i18n/messages/en/tools/koko-codex-assistant.ts +171 -0
- package/src/i18n/messages/en/tools/logo-generator.ts +173 -0
- package/src/i18n/messages/en/tools/market-forecast-report.ts +228 -0
- package/src/i18n/messages/en/tools/million-user-growth-test.ts +386 -0
- package/src/i18n/messages/en/tools/og-image-generator.ts +172 -0
- package/src/i18n/messages/en/tools/pitch-deck-generator.ts +358 -0
- package/src/i18n/messages/en/tools/product-agreement-generator.ts +411 -0
- package/src/i18n/messages/en/tools/product-hunt-launch-planner.ts +272 -0
- package/src/i18n/messages/en/tools/product-name-generator.ts +383 -0
- package/src/i18n/messages/en/tools/product-poster-generator.ts +294 -0
- package/src/i18n/messages/en/tools/product-ui-generator.ts +234 -0
- package/src/i18n/messages/en/tools/reddit-pain-point-finder.ts +163 -0
- package/src/i18n/messages/en/tools/shared.ts +24 -0
- package/src/i18n/messages/en/tools/social-listening-research-report.ts +185 -0
- package/src/i18n/messages/en/tools/social-media-profile-generator.ts +22 -0
- package/src/i18n/messages/en/tools/social-platform-asset-adapter.ts +287 -0
- package/src/i18n/messages/en/tools/social-profile-kit.ts +150 -0
- package/src/i18n/messages/en/tools/startup-idea-research.ts +170 -0
- package/src/i18n/messages/en/tools/tarot-reading.ts +230 -0
- package/src/i18n/messages/en/tools/twitter-gif-downloader.ts +145 -0
- package/src/i18n/messages/en/tools/user-interview-insight-report-generator.ts +242 -0
- package/src/i18n/messages/en/tools/user-interview-record-generator.ts +244 -0
- package/src/i18n/messages/en/tools-ui.ts +704 -0
- package/src/i18n/messages/zh/page/tools.ts +124 -0
- package/src/i18n/messages/zh/tools/app-icon-resizer.ts +242 -0
- package/src/i18n/messages/zh/tools/app-store-screenshot-generator.ts +145 -0
- package/src/i18n/messages/zh/tools/build-in-public-story-generator.ts +230 -0
- package/src/i18n/messages/zh/tools/cold-start-channel-selector.ts +422 -0
- package/src/i18n/messages/zh/tools/commercial-bp-generator.ts +302 -0
- package/src/i18n/messages/zh/tools/community-feedback-inbox.ts +217 -0
- package/src/i18n/messages/zh/tools/community-pain-point-extractor.ts +230 -0
- package/src/i18n/messages/zh/tools/community-post-risk-checker.ts +200 -0
- package/src/i18n/messages/zh/tools/competitor-analysis.ts +192 -0
- package/src/i18n/messages/zh/tools/email-template-generator.ts +302 -0
- package/src/i18n/messages/zh/tools/engine.ts +68 -0
- package/src/i18n/messages/zh/tools/gtm-readiness-checklist.ts +166 -0
- package/src/i18n/messages/zh/tools/index.ts +73 -0
- package/src/i18n/messages/zh/tools/koko-codex-assistant.ts +170 -0
- package/src/i18n/messages/zh/tools/logo-generator.ts +172 -0
- package/src/i18n/messages/zh/tools/market-forecast-report.ts +228 -0
- package/src/i18n/messages/zh/tools/million-user-growth-test.ts +385 -0
- package/src/i18n/messages/zh/tools/og-image-generator.ts +173 -0
- package/src/i18n/messages/zh/tools/pitch-deck-generator.ts +358 -0
- package/src/i18n/messages/zh/tools/product-agreement-generator.ts +401 -0
- package/src/i18n/messages/zh/tools/product-hunt-launch-planner.ts +267 -0
- package/src/i18n/messages/zh/tools/product-name-generator.ts +383 -0
- package/src/i18n/messages/zh/tools/product-poster-generator.ts +282 -0
- package/src/i18n/messages/zh/tools/product-ui-generator.ts +234 -0
- package/src/i18n/messages/zh/tools/reddit-pain-point-finder.ts +162 -0
- package/src/i18n/messages/zh/tools/shared.ts +24 -0
- package/src/i18n/messages/zh/tools/social-listening-research-report.ts +181 -0
- package/src/i18n/messages/zh/tools/social-media-profile-generator.ts +22 -0
- package/src/i18n/messages/zh/tools/social-platform-asset-adapter.ts +284 -0
- package/src/i18n/messages/zh/tools/social-profile-kit.ts +150 -0
- package/src/i18n/messages/zh/tools/startup-idea-research.ts +165 -0
- package/src/i18n/messages/zh/tools/tarot-reading.ts +228 -0
- package/src/i18n/messages/zh/tools/twitter-gif-downloader.ts +138 -0
- package/src/i18n/messages/zh/tools/user-interview-insight-report-generator.ts +224 -0
- package/src/i18n/messages/zh/tools/user-interview-record-generator.ts +226 -0
- package/src/i18n/messages/zh/tools-ui.ts +684 -0
- package/src/i18n/messages/zh-tw/page/tools.ts +115 -0
- package/src/i18n/messages/zh-tw/tools/app-icon-resizer.ts +242 -0
- package/src/i18n/messages/zh-tw/tools/app-store-screenshot-generator.ts +145 -0
- package/src/i18n/messages/zh-tw/tools/build-in-public-story-generator.ts +230 -0
- package/src/i18n/messages/zh-tw/tools/cold-start-channel-selector.ts +440 -0
- package/src/i18n/messages/zh-tw/tools/commercial-bp-generator.ts +302 -0
- package/src/i18n/messages/zh-tw/tools/community-feedback-inbox.ts +217 -0
- package/src/i18n/messages/zh-tw/tools/community-pain-point-extractor.ts +230 -0
- package/src/i18n/messages/zh-tw/tools/community-post-risk-checker.ts +200 -0
- package/src/i18n/messages/zh-tw/tools/competitor-analysis.ts +192 -0
- package/src/i18n/messages/zh-tw/tools/email-template-generator.ts +302 -0
- package/src/i18n/messages/zh-tw/tools/engine.ts +68 -0
- package/src/i18n/messages/zh-tw/tools/gtm-readiness-checklist.ts +166 -0
- package/src/i18n/messages/zh-tw/tools/index.ts +73 -0
- package/src/i18n/messages/zh-tw/tools/koko-codex-assistant.ts +170 -0
- package/src/i18n/messages/zh-tw/tools/logo-generator.ts +71 -0
- package/src/i18n/messages/zh-tw/tools/market-forecast-report.ts +228 -0
- package/src/i18n/messages/zh-tw/tools/million-user-growth-test.ts +385 -0
- package/src/i18n/messages/zh-tw/tools/og-image-generator.ts +173 -0
- package/src/i18n/messages/zh-tw/tools/pitch-deck-generator.ts +358 -0
- package/src/i18n/messages/zh-tw/tools/product-agreement-generator.ts +401 -0
- package/src/i18n/messages/zh-tw/tools/product-hunt-launch-planner.ts +267 -0
- package/src/i18n/messages/zh-tw/tools/product-name-generator.ts +383 -0
- package/src/i18n/messages/zh-tw/tools/product-poster-generator.ts +282 -0
- package/src/i18n/messages/zh-tw/tools/product-ui-generator.ts +234 -0
- package/src/i18n/messages/zh-tw/tools/reddit-pain-point-finder.ts +162 -0
- package/src/i18n/messages/zh-tw/tools/shared.ts +24 -0
- package/src/i18n/messages/zh-tw/tools/social-listening-research-report.ts +181 -0
- package/src/i18n/messages/zh-tw/tools/social-media-profile-generator.ts +22 -0
- package/src/i18n/messages/zh-tw/tools/social-platform-asset-adapter.ts +284 -0
- package/src/i18n/messages/zh-tw/tools/social-profile-kit.ts +150 -0
- package/src/i18n/messages/zh-tw/tools/startup-idea-research.ts +165 -0
- package/src/i18n/messages/zh-tw/tools/tarot-reading.ts +228 -0
- package/src/i18n/messages/zh-tw/tools/twitter-gif-downloader.ts +138 -0
- package/src/i18n/messages/zh-tw/tools/user-interview-insight-report-generator.ts +224 -0
- package/src/i18n/messages/zh-tw/tools/user-interview-record-generator.ts +226 -0
- package/src/i18n/messages/zh-tw/tools-ui.ts +525 -0
- package/src/index.ts +15 -0
- package/src/lib/activity-task-handoff.ts +404 -0
- package/src/lib/api/errors.ts +39 -0
- package/src/lib/app-origin.ts +30 -0
- package/src/lib/fact-claim-contract.ts +68 -0
- package/src/lib/fake-delay.ts +3 -0
- package/src/lib/file/download.ts +10 -0
- package/src/lib/routing/locale-paths.ts +27 -0
- package/src/lib/seo-meta.ts +3 -0
- package/src/lib/tools/app-icon-resizer-schema.ts +191 -0
- package/src/lib/tools/app-store-screenshot-generator-schema.ts +185 -0
- package/src/lib/tools/build-in-public-story-generator-schema.ts +67 -0
- package/src/lib/tools/build-in-public-story-generator.format.ts +507 -0
- package/src/lib/tools/cold-start-channel-selector-schema.ts +147 -0
- package/src/lib/tools/commercial-bp-generator-schema.ts +222 -0
- package/src/lib/tools/community-feedback-inbox-schema.ts +125 -0
- package/src/lib/tools/community-feedback-inbox.format.ts +764 -0
- package/src/lib/tools/community-pain-point-extractor-schema.ts +166 -0
- package/src/lib/tools/community-post-risk-checker-schema.ts +99 -0
- package/src/lib/tools/community-post-risk-checker.format.ts +557 -0
- package/src/lib/tools/competitor-analysis-schema.ts +144 -0
- package/src/lib/tools/draft-preview-access.ts +3 -0
- package/src/lib/tools/draft-store.ts +69 -0
- package/src/lib/tools/email-template-generator-schema.ts +124 -0
- package/src/lib/tools/gtm-checklist-copy.ts +57 -0
- package/src/lib/tools/gtm-checklist-structure.ts +37 -0
- package/src/lib/tools/image-download.ts +68 -0
- package/src/lib/tools/input-quality.ts +97 -0
- package/src/lib/tools/logo-generator-schema.ts +224 -0
- package/src/lib/tools/market-forecast-report-schema.ts +299 -0
- package/src/lib/tools/mcp-registry.ts +16 -0
- package/src/lib/tools/mcp-types.ts +18 -0
- package/src/lib/tools/million-user-growth-test-schema.ts +49 -0
- package/src/lib/tools/million-user-growth-test.ts +181 -0
- package/src/lib/tools/og-image-generator-render.ts +448 -0
- package/src/lib/tools/og-image-generator-schema.ts +140 -0
- package/src/lib/tools/ops-catalog.ts +102 -0
- package/src/lib/tools/pitch-deck-generator-schema.ts +182 -0
- package/src/lib/tools/pitch-deck-package.ts +0 -0
- package/src/lib/tools/product-agreement-generator-schema.ts +168 -0
- package/src/lib/tools/product-hunt-launch-planner-schema.ts +136 -0
- package/src/lib/tools/product-hunt-launch-planner.format.ts +72 -0
- package/src/lib/tools/product-name-generator-schema.ts +563 -0
- package/src/lib/tools/product-poster-generator-schema.ts +215 -0
- package/src/lib/tools/product-ui-generator-schema.ts +157 -0
- package/src/lib/tools/reddit-pain-point-finder-schema.ts +88 -0
- package/src/lib/tools/resolve-tool-locale-copy.ts +75 -0
- package/src/lib/tools/slug.ts +60 -0
- package/src/lib/tools/social-listening-research-report-schema.ts +105 -0
- package/src/lib/tools/social-platform-asset-adapter-schema.ts +152 -0
- package/src/lib/tools/social-profile-kit.constants.ts +12 -0
- package/src/lib/tools/social-profile-kit.generation.ts +257 -0
- package/src/lib/tools/social-profile-kit.input.ts +290 -0
- package/src/lib/tools/social-profile-kit.manual.ts +481 -0
- package/src/lib/tools/social-profile-kit.package.ts +220 -0
- package/src/lib/tools/social-profile-kit.schema.ts +328 -0
- package/src/lib/tools/startup-idea-research-schema.ts +107 -0
- package/src/lib/tools/tarot-imagery.ts +89 -0
- package/src/lib/tools/tarot-reading.ts +1044 -0
- package/src/lib/tools/tool-message-keys.ts +18 -0
- package/src/lib/tools/types.ts +32 -0
- package/src/lib/tools/user-interview.format.ts +147 -0
- package/src/lib/tools/user-interview.generation.ts +670 -0
- package/src/lib/tools/user-interview.schema.ts +192 -0
- package/src/lib/zip.ts +106 -0
- package/src/services/tools/handlers/gtm-readiness-checklist.ts +71 -0
- package/src/services/tools/handlers/types.ts +7 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
const appStoreScreenshotGenerator = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "App Store Screenshot Generator",
|
|
4
|
+
displayTitle: "App Store Screenshot Generator",
|
|
5
|
+
description:
|
|
6
|
+
"Upload UI screenshots, add product context when useful, and generate App Store or Google Play listing images as a complete review-ready set.",
|
|
7
|
+
intro: "Create a coherent screenshot set, feature graphic direction, and benefit-led listing visuals with product context before checking the latest store rules.",
|
|
8
|
+
category: "ASO tools",
|
|
9
|
+
keywords: [
|
|
10
|
+
"app store screenshot generator",
|
|
11
|
+
"Google Play screenshots",
|
|
12
|
+
"App Store listing images",
|
|
13
|
+
"ASO creatives",
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
guide: {
|
|
17
|
+
heroVisualAlt:
|
|
18
|
+
"Hero visual for an app store listing image generator, showing a complete app store screenshot set.",
|
|
19
|
+
workspaceHeading: "Upload UI screenshots to generate listing images",
|
|
20
|
+
workspaceHint:
|
|
21
|
+
"Upload real UI screenshots. A cloud Agent uses Skills-OL to fetch supporting context, plan the complete set, and submit live image tasks.",
|
|
22
|
+
whatYouGetHeading: "What you get after generation",
|
|
23
|
+
valueVisualAlt:
|
|
24
|
+
"App store listing image export bundle with phone screenshots, a feature graphic, PNG files, and SVG files.",
|
|
25
|
+
whatYouGetItems: [
|
|
26
|
+
{
|
|
27
|
+
title: "Platform-shaped image set",
|
|
28
|
+
body: "Generate up to 10 App Store screenshots, or a Google Play feature graphic plus up to 8 phone screenshots, so you can judge the full set early.",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
title: "Downloadable PNG",
|
|
32
|
+
body: "Select one listing image and download a PNG for team review, store console upload, or design critique.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
title: "Handoff SVG wrapper",
|
|
36
|
+
body: "Download an SVG wrapper that preserves the generated image, dimensions, and prompt metadata for review and design polish.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: "Clear source boundary",
|
|
40
|
+
body: "UI screenshots are required visual source material. A URL is optional brief input for public context, so avoid private data or unauthorized brands in screenshots.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: "Recoverable failure hints",
|
|
44
|
+
body: "Missing URLs, missing screenshots, unsupported file types, and export failures return actionable messages instead of empty creatives.",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
comparisonHeading: "What a good app store screenshot generator should do",
|
|
48
|
+
comparisonItems: [
|
|
49
|
+
{
|
|
50
|
+
standard: "Clear dimensions",
|
|
51
|
+
manual: "Manual templates often reuse one composition across App Store portraits, Google Play phone shots, and feature graphics.",
|
|
52
|
+
tomako: "Tomako starts with the selected platform and layout, so you can see how each asset shape changes the composition.",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
standard: "Fast exploration",
|
|
56
|
+
manual: "Starting from blank artboards makes every headline, size, and visual direction feel expensive to test.",
|
|
57
|
+
tomako: "Real UI screenshots are enough to produce a first creative set grounded in the actual interface, so teams can filter direction before design polish.",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
standard: "Editable output",
|
|
61
|
+
manual: "Many generators only export flat PNGs, making later copy, color, or screenshot changes awkward.",
|
|
62
|
+
tomako: "Each live image result can be downloaded as PNG, with an SVG wrapper carrying image and prompt metadata for design handoff.",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
standard: "Trustworthy limits",
|
|
66
|
+
manual: "Some tools imply generated assets are ready for store approval and skip policy, privacy, trademark, or sizing risk.",
|
|
67
|
+
tomako: "The page and result guidance state that final platform and brand review is still required.",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
standard: "Safer assets",
|
|
71
|
+
manual: "Uploading unreleased product screenshots to unknown tools makes it hard to reason about file handling.",
|
|
72
|
+
tomako: "This page states when screenshots are sent to the image task, so teams can remove private or unlicensed content before generation.",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
supportHeading: "Supported inputs and failure boundaries",
|
|
76
|
+
supportVisualAlt:
|
|
77
|
+
"Support boundary visual for app store listing images, showing phone images, a feature graphic, privacy marker, and review checklist.",
|
|
78
|
+
supportBody: [
|
|
79
|
+
"You must upload local UI screenshots. Product URL, App Store or Google Play links, product name, and selling points provide supporting context for title, description, and page-summary clues.",
|
|
80
|
+
"Apple App Store and Google Play directions are supported, including complete screenshot sets, portrait screenshots, and feature graphics.",
|
|
81
|
+
"This version uses a cloud Agent and Skills-OL to submit live image tasks, but it does not connect to App Store Connect or Google Play Console.",
|
|
82
|
+
"If a screenshot includes test accounts, real users, private data, or unauthorized brands, redact it before use.",
|
|
83
|
+
"If no result appears, check that the URL is not empty, the uploaded file is PNG/JPG/WebP, browser file reading is allowed, and the selected input source matches your data.",
|
|
84
|
+
"Before real submission, review the latest platform dimensions, review policies, trademark or copyright permissions, privacy content, copy claims, and readability on target devices.",
|
|
85
|
+
],
|
|
86
|
+
resultGuidanceHeading: "How to use the downloaded listing images",
|
|
87
|
+
useCaseVisualAlt:
|
|
88
|
+
"Product and design team arranging app store listing assets, screenshot boards, feature graphics, colors, and export folders.",
|
|
89
|
+
resultGuidanceBody: [
|
|
90
|
+
"Use PNG as a direction image or review image. First confirm whether the first screenshot explains the core user benefit clearly.",
|
|
91
|
+
"Hand the SVG wrapper to a designer when the team needs prompt traceability, final product screens, brand fonts, store whitespace, or localized variants.",
|
|
92
|
+
"Do not blindly reuse one image across App Store and Google Play. Portrait screenshots, iPad shots, and feature graphics need separate composition checks.",
|
|
93
|
+
"If a generated image feels crowded, remove small labels, secondary features, and long subheadlines before adding more decoration.",
|
|
94
|
+
"Before uploading to a real store console, check the latest official specs and review guidance for size, content, privacy, trademark, copyright, and exaggerated claims.",
|
|
95
|
+
],
|
|
96
|
+
useCasesHeading: "Use cases",
|
|
97
|
+
useCaseItems: [
|
|
98
|
+
"Indie builders preparing first App Store or Google Play listing assets and needing a fast visual direction.",
|
|
99
|
+
"Growth teams comparing ASO screenshot, benefit-led creative, and feature graphic styles before launch.",
|
|
100
|
+
"Product teams turning new-version UI screenshots into store update assets for release planning or campaign review.",
|
|
101
|
+
"Designers receiving a rough product brief and generating a low-fidelity direction before final artboards.",
|
|
102
|
+
"Remote or outsourced teams aligning on copy, composition, and brand colors with PNG/SVG files.",
|
|
103
|
+
"Launch teams checking whether app icons, store screenshots, and social assets use the same visual language.",
|
|
104
|
+
],
|
|
105
|
+
faqHeading: "FAQ",
|
|
106
|
+
faqItems: [
|
|
107
|
+
{
|
|
108
|
+
question: "Does this tool crawl the product URL automatically?",
|
|
109
|
+
answer:
|
|
110
|
+
"It fetches public title, description, OG metadata, headings, and a short page summary to infer product benefits and screenshot copy. Logged-in, blocked, or anti-scraping pages may fail.",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
question: "Are uploaded UI screenshots stored on a server?",
|
|
114
|
+
answer:
|
|
115
|
+
"When UI screenshot mode is selected, the screenshot is sent to the image task as a reference. Do not upload real user data, unredacted admin screens, customer information, or unauthorized brand assets.",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
question: "Can the generated PNG go straight into App Store or Google Play?",
|
|
119
|
+
answer:
|
|
120
|
+
"It can be used for upload preview or team review, but before publishing you still need to check the latest platform dimensions, content policy, privacy, trademark, and copyright requirements.",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
question: "Why export SVG as well as PNG?",
|
|
124
|
+
answer:
|
|
125
|
+
"The SVG is a handoff wrapper for the generated image. It preserves the image reference, dimensions, and prompt metadata so a designer can review and refine the direction.",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
question: "Can I use it without a real product screenshot?",
|
|
129
|
+
answer:
|
|
130
|
+
"No. Upload real UI screenshots first. Product URL or product name can add context, but cannot replace real product screens.",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
question: "Does this check the latest store review rules?",
|
|
134
|
+
answer:
|
|
135
|
+
"No. It generates visual results and does not connect to App Store Connect, Google Play Console, or live policy APIs. Review official store guidance before submission.",
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
ctaPrimary: "Prepare App Icons",
|
|
139
|
+
ctaSecondary: "Back to all tools",
|
|
140
|
+
ctaHint:
|
|
141
|
+
"Store screenshots are usually reviewed together with the app icon. If the icon package is not ready yet, prepare app icon assets first and keep the listing visuals consistent.",
|
|
142
|
+
},
|
|
143
|
+
} as const;
|
|
144
|
+
|
|
145
|
+
export default appStoreScreenshotGenerator;
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
const buildInPublicStoryGenerator = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "Build-in-Public Story Generator",
|
|
4
|
+
description: "Enter this week's product progress, GTM assumptions, signals, and feedback ask to generate transparent build-in-public drafts for Indie Hackers, Reddit, X, and LinkedIn.",
|
|
5
|
+
intro: "Turn real Tomako GTM progress into community-acceptable public storytelling: stage, assumption, action, signal, uncertainty, and feedback ask instead of promotional copy.",
|
|
6
|
+
category: "Community growth tools",
|
|
7
|
+
keywords: [
|
|
8
|
+
"build in public story generator",
|
|
9
|
+
"build in public post generator",
|
|
10
|
+
"build in public twitter thread",
|
|
11
|
+
"build in public reddit post",
|
|
12
|
+
"Indie Hackers post template",
|
|
13
|
+
"founder progress update",
|
|
14
|
+
],
|
|
15
|
+
inputSignal: "Stage + progress + GTM hypothesis + signal",
|
|
16
|
+
outputSignal: "Platform drafts + authenticity review",
|
|
17
|
+
boundarySignal: "Review prototype; no auto-posting or growth promise",
|
|
18
|
+
},
|
|
19
|
+
examples: [
|
|
20
|
+
{
|
|
21
|
+
label: "GTM hypothesis update",
|
|
22
|
+
input: "Product: Tomako; stage: beta; this week tested whether Reddit and Indie Hackers are better for early feedback; signal: 3 founders replied that channel choice hurts more than post copy.",
|
|
23
|
+
expectedOutput: "Indie Hackers long post, Reddit discussion post, X thread, LinkedIn update, plus promo-risk, evidence-gap, and public-boundary checks.",
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
guide: {
|
|
27
|
+
heroVisualAlt:
|
|
28
|
+
"Founder progress, GTM assumptions, metrics, and open questions organized into transparent community story material.",
|
|
29
|
+
workspaceHeading: "Generate transparent build-in-public updates with evidence and questions",
|
|
30
|
+
workspaceHint:
|
|
31
|
+
"Enter your product stage, weekly progress, Tomako GTM hypothesis, current signals, and feedback ask. The prototype returns platform drafts plus an authenticity review.",
|
|
32
|
+
workspaceBadge: "Review prototype",
|
|
33
|
+
outputs: "What you get from the generator",
|
|
34
|
+
outputItems: [
|
|
35
|
+
{
|
|
36
|
+
title: "Story angle",
|
|
37
|
+
body: "Decide whether this week should lead with stage, assumption, experiment, signal, or uncertainty instead of packaging learning as success.",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: "Four platform drafts",
|
|
41
|
+
body: "Generate an Indie Hackers long post, Reddit discussion post, X thread, and LinkedIn progress update from the same material.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "Authenticity review",
|
|
45
|
+
body: "Flag promotional language, evidence gaps, oversharing risk, and community-contract issues before you post.",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: "Sharper feedback ask",
|
|
49
|
+
body: "Turn vague asks into a specific question the community can actually respond to.",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
supportHeading: "Use it for public learning notes, not generic social posts",
|
|
53
|
+
supportVisualAlt:
|
|
54
|
+
"Product progress, assumptions, and signals becoming a clear public learning note.",
|
|
55
|
+
supportItems: [
|
|
56
|
+
"Useful for indie makers, early SaaS teams, developer tools, AI products, and small teams validating GTM channels.",
|
|
57
|
+
"Especially useful after Tomako has produced channel choices, launch plans, or growth assumptions and you need to explain the learning publicly.",
|
|
58
|
+
"The input can be rough, but it needs real progress and a real feedback question. Otherwise the output will sound like promotion.",
|
|
59
|
+
"The result is a draft and review aid. It does not auto-post, guarantee acquisition, or replace community judgment.",
|
|
60
|
+
],
|
|
61
|
+
platformHeading: "Same source material, different community contracts",
|
|
62
|
+
platformVisualAlt:
|
|
63
|
+
"One build-in-public source story adapted into a long post, discussion post, and thread.",
|
|
64
|
+
platformItems: [
|
|
65
|
+
"Indie Hackers can carry the full context: background, assumption, numbers, learning, and a founder ask.",
|
|
66
|
+
"Reddit needs less promotion, the question near the top, and a clear reason the post is asking for judgment.",
|
|
67
|
+
"X threads should break the story into stage, action, signal, and uncertainty, not slogans.",
|
|
68
|
+
"LinkedIn can emphasize decision quality and learning, but it should not read like a company announcement.",
|
|
69
|
+
],
|
|
70
|
+
boundaryHeading: "Check what should not be public before posting",
|
|
71
|
+
boundaryVisualAlt:
|
|
72
|
+
"A public post review sheet with flags for promotional wording, missing proof, and sensitive information.",
|
|
73
|
+
boundaryItems: [
|
|
74
|
+
"Do not reveal customer names, sensitive revenue, private roadmap, private community screenshots, or identifiable user feedback.",
|
|
75
|
+
"Metrics can be shared as ranges, relative movement, or sample sizes. If you do not have data, say it is a qualitative signal.",
|
|
76
|
+
"Tomako's GTM strategy should be framed as an input to your hypothesis, not as validated market truth.",
|
|
77
|
+
"If the ending is only a signup link or heavy CTA, it stops being build-in-public and becomes an ad.",
|
|
78
|
+
],
|
|
79
|
+
whyTomakoHeading: "Why this belongs in Tomako instead of a generic post generator",
|
|
80
|
+
whyTomakoItems: [
|
|
81
|
+
{
|
|
82
|
+
title: "It starts from GTM assumptions",
|
|
83
|
+
body: "Generic tools ask for platform and tone. This asks for stage, channel hypothesis, signal, and uncertainty.",
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
title: "It preserves open questions",
|
|
87
|
+
body: "Good build-in-public writing is not perfectly polished. It shows what you are still trying to learn.",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
title: "It adapts the social contract",
|
|
91
|
+
body: "Reddit, Indie Hackers, X, and LinkedIn do not accept the same framing with different lengths.",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
title: "It reviews before publishing",
|
|
95
|
+
body: "The result flags copy that feels promotional, claims without evidence, and details that should stay private.",
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
reviewHeading: "Treat the result as a pre-publish review sheet",
|
|
99
|
+
reviewVisualAlt:
|
|
100
|
+
"A public story draft with evidence, risk, and feedback-question review markers.",
|
|
101
|
+
reviewItems: [
|
|
102
|
+
"Remove absolute conclusions that do not have evidence.",
|
|
103
|
+
"Keep at least one failure, hesitation, or unresolved question.",
|
|
104
|
+
"Separate metrics, user feedback, and Tomako assumptions instead of blending them into promo copy.",
|
|
105
|
+
"Review the Reddit version especially hard for self-promotion tone.",
|
|
106
|
+
"Before copying, confirm which numbers, customers, roadmap items, and internal decisions should stay private.",
|
|
107
|
+
],
|
|
108
|
+
standardHeading: "A good build-in-public tool should be specific and restrained",
|
|
109
|
+
standardVisualAlt:
|
|
110
|
+
"A transparent public progress post standard card with stage, signal, and question markers.",
|
|
111
|
+
standardItems: [
|
|
112
|
+
"Quality: output should have a real story structure, not product claims rewritten in social tone.",
|
|
113
|
+
"Trust: it should distinguish facts, assumptions, metrics, qualitative signals, and unresolved questions.",
|
|
114
|
+
"Ease of use: the first version should need only stage, weekly progress, and a feedback ask, not a complete growth report.",
|
|
115
|
+
"Platform fit: platform drafts should change the social contract, not only the character count.",
|
|
116
|
+
"Safety: it should warn about oversharing, customer privacy, roadmap leaks, and self-promotion risk.",
|
|
117
|
+
],
|
|
118
|
+
faq: "FAQ",
|
|
119
|
+
faqItems: [
|
|
120
|
+
{
|
|
121
|
+
question: "Does this post to X, Reddit, or LinkedIn for me?",
|
|
122
|
+
answer:
|
|
123
|
+
"No. It creates drafts and a review checklist. You still edit manually and post according to each community's rules.",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
question: "Can I use it without real metrics?",
|
|
127
|
+
answer:
|
|
128
|
+
"Yes, but the post should say it is a qualitative observation or unvalidated hypothesis. Do not invent momentum.",
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
question: "How is this different from a normal AI post generator?",
|
|
132
|
+
answer:
|
|
133
|
+
"Normal tools usually start from platform and tone. This starts from stage, GTM hypothesis, evidence, what worked or did not, and the feedback question.",
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
question: "Is this review version connected to a live Agent?",
|
|
137
|
+
answer:
|
|
138
|
+
"Not yet. This is a deterministic frontend prototype to validate the interaction and output structure. Before publishing, the team should decide whether to upgrade it to Agent/Skill Result output.",
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
ctaHint:
|
|
142
|
+
"If you do not have a public GTM hypothesis yet, compare cold-start channels first. If you already have rough social copy, adapt it to each platform next.",
|
|
143
|
+
ctaPrimary: "Adapt existing social assets",
|
|
144
|
+
ctaSecondary: "Choose cold-start channels",
|
|
145
|
+
},
|
|
146
|
+
widget: {
|
|
147
|
+
formTitle: "Public progress brief",
|
|
148
|
+
formHint:
|
|
149
|
+
"Use real progress, not only product claims. The output keeps uncertainty and evidence gaps visible so the post reads like a learning note.",
|
|
150
|
+
productNameLabel: "Product name",
|
|
151
|
+
productNamePlaceholder: "Tomako",
|
|
152
|
+
stageLabel: "Current stage",
|
|
153
|
+
productContextLabel: "Product context",
|
|
154
|
+
productContextPlaceholder:
|
|
155
|
+
"Tomako is an AI GTM OS for indie makers that turns product context into channel strategy, launch assets, and growth actions.",
|
|
156
|
+
thisWeekLabel: "What actually happened this week",
|
|
157
|
+
thisWeekPlaceholder:
|
|
158
|
+
"Example: We used Tomako to rank cold-start channels and learned that Reddit is better for asking a specific judgment question, while Product Hunt is not ready yet.",
|
|
159
|
+
feedbackAskLabel: "What do you want feedback on this week?",
|
|
160
|
+
feedbackAskPlaceholder:
|
|
161
|
+
"Example: Should an early tool position as a GTM workspace, or as a set of sharper launch tools?",
|
|
162
|
+
advancedTitle: "Add GTM strategy, signals, and public boundaries",
|
|
163
|
+
gtmStrategyLabel: "GTM hypothesis from Tomako",
|
|
164
|
+
gtmStrategyPlaceholder:
|
|
165
|
+
"Example: Prioritize Reddit and Indie Hackers for feedback quality, delay Product Hunt, and use public learning posts to test positioning.",
|
|
166
|
+
metricsLabel: "Metrics or signals",
|
|
167
|
+
metricsPlaceholder:
|
|
168
|
+
"Example: 3 founders replied that channel choice hurts more than copy generation; 1 Reddit-style draft felt too self-promotional.",
|
|
169
|
+
uncertaintyLabel: "What is still uncertain",
|
|
170
|
+
uncertaintyPlaceholder:
|
|
171
|
+
"Example: Not sure whether build-in-public is an acquisition channel or mainly a trust and learning mechanism.",
|
|
172
|
+
boundaryLabel: "Public boundary",
|
|
173
|
+
generate: "Generate public story drafts",
|
|
174
|
+
status: {
|
|
175
|
+
idle: "Draft preview",
|
|
176
|
+
done: "Story ready",
|
|
177
|
+
error: "Needs better input",
|
|
178
|
+
},
|
|
179
|
+
previewItems: [
|
|
180
|
+
"Indie Hackers, Reddit, X, and LinkedIn drafts",
|
|
181
|
+
"Promo tone, evidence gap, and public-risk review",
|
|
182
|
+
"Copyable Markdown export",
|
|
183
|
+
],
|
|
184
|
+
workspaceVisualAlt:
|
|
185
|
+
"Rough progress notes, evidence signals, and feedback questions organized into public build-in-public drafts.",
|
|
186
|
+
stages: {
|
|
187
|
+
idea: "Idea validation",
|
|
188
|
+
prototype: "Prototype validation",
|
|
189
|
+
beta: "Beta testing",
|
|
190
|
+
launched: "Early launched version",
|
|
191
|
+
postLaunch: "Post-launch learning",
|
|
192
|
+
},
|
|
193
|
+
boundaries: {
|
|
194
|
+
open: "Share stage and non-sensitive metrics directly",
|
|
195
|
+
blurMetrics: "Use ranges or relative movement for metrics",
|
|
196
|
+
avoidRoadmap: "Do not reveal unreleased roadmap",
|
|
197
|
+
customerSafe: "Anonymize all customer and user feedback",
|
|
198
|
+
},
|
|
199
|
+
channels: {
|
|
200
|
+
indieHackers: "Indie Hackers",
|
|
201
|
+
reddit: "Reddit",
|
|
202
|
+
xThread: "X Thread",
|
|
203
|
+
linkedin: "LinkedIn",
|
|
204
|
+
},
|
|
205
|
+
errors: {
|
|
206
|
+
validation: {
|
|
207
|
+
title: "Add the minimum public progress brief",
|
|
208
|
+
body: "Product name, product context, real weekly progress, and a specific feedback ask are required.",
|
|
209
|
+
},
|
|
210
|
+
weakInput: {
|
|
211
|
+
title: "Use real progress, not placeholder text",
|
|
212
|
+
body: "The input is too short or looks like a test. Add what you did, what signal you saw, and what is still uncertain.",
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
resultReady: "Generated public story pack",
|
|
216
|
+
copied: "Copied",
|
|
217
|
+
copy: "Copy Markdown",
|
|
218
|
+
download: "Download",
|
|
219
|
+
reset: "Reset",
|
|
220
|
+
primaryRisk: "Primary posting risk",
|
|
221
|
+
recommendedLead: "Recommended lead",
|
|
222
|
+
evidenceGaps: "Evidence gaps",
|
|
223
|
+
authenticityIssues: "Authenticity review",
|
|
224
|
+
communityFit: "Community fit principles",
|
|
225
|
+
reviewChecklist: "Pre-publish review",
|
|
226
|
+
},
|
|
227
|
+
} as const;
|
|
228
|
+
|
|
229
|
+
export default buildInPublicStoryGenerator;
|