@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,383 @@
|
|
|
1
|
+
const productNameGenerator = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "产品取名器:App 和 SaaS 起名工具",
|
|
4
|
+
displayTitle: "产品取名器",
|
|
5
|
+
description: "输入产品想法、目标用户、命名风格和域名后缀,生成 3-5 个可继续评估的产品名,展开单个候选后再做域名、搜索与商标预筛。",
|
|
6
|
+
intro: "为 App、Web 工具、SaaS 和 AI 产品早期命名设计。先拿到少量有理由的候选名,再按需深查域名、搜索噪音和商标入口,避免一次性把成本花在会被淘汰的名字上。",
|
|
7
|
+
category: "品牌工具",
|
|
8
|
+
keywords: [
|
|
9
|
+
"产品取名器",
|
|
10
|
+
"产品起名",
|
|
11
|
+
"App 起名",
|
|
12
|
+
"SaaS 命名",
|
|
13
|
+
"AI 产品命名",
|
|
14
|
+
"域名预筛",
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
guide: {
|
|
18
|
+
workspaceHeading: "产品取名器",
|
|
19
|
+
workspaceHint:
|
|
20
|
+
"输入产品想法,生成候选名与预筛线索。",
|
|
21
|
+
workspaceBadge: "3-5 个候选名",
|
|
22
|
+
standard: {
|
|
23
|
+
benefits: {
|
|
24
|
+
title: "这个产品取名器能帮你拿到什么",
|
|
25
|
+
cards: [
|
|
26
|
+
{
|
|
27
|
+
title: "可讨论的短名单",
|
|
28
|
+
body: "首轮只返回 3-5 个候选名,并附上核心理念和基础品牌信号,让命名会先聚焦少数方向。",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
title: "更少的早期误判",
|
|
32
|
+
body: "读音、长度、风格、域名后缀和搜索噪音会分层呈现,帮助你先排掉不值得深查的名字。",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
title: "清楚的复核边界",
|
|
36
|
+
body: "域名和商标只做预筛入口与风险提示,不把 AI 候选名包装成可直接商用的法律结论。",
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
imageTextSections: [
|
|
41
|
+
{
|
|
42
|
+
id: "name-shortlist",
|
|
43
|
+
title: "把粗糙想法整理成\n可评审的候选名",
|
|
44
|
+
body: [
|
|
45
|
+
"产品早期起名最怕一次拿到几十个相似词,却没有理由判断。这个工具先把产品想法、目标用户和命名气质转成少量候选。",
|
|
46
|
+
"每个名字都带核心理念和基础信息,方便产品、设计、增长和创始团队快速决定哪些方向值得继续看。",
|
|
47
|
+
],
|
|
48
|
+
image: {
|
|
49
|
+
src: "/tools/product-name-generator-section-primary-8bit-v2.webp",
|
|
50
|
+
alt: "像素风产品取名器配图,展示产品想法被整理成候选名短名单。",
|
|
51
|
+
},
|
|
52
|
+
imageFirst: true,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "name-variations",
|
|
56
|
+
title: "用风格、市场和域名偏好\n控制命名方向",
|
|
57
|
+
body: [
|
|
58
|
+
"同一个产品可以走清晰直接、技术感、友好轻量、高级可信或自造词方向。表单只保留会真正影响结果的核心选择。",
|
|
59
|
+
"目标市场和域名后缀会影响候选名的读音、长度和后续检查路径,避免把所有 App、SaaS 和 AI 工具套进同一套名字。",
|
|
60
|
+
],
|
|
61
|
+
image: {
|
|
62
|
+
src: "/tools/product-name-generator-section-variation-8bit-v2.webp",
|
|
63
|
+
alt: "像素风命名方向配图,展示风格、市场和域名偏好影响候选名。",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: "name-review",
|
|
68
|
+
title: "先判断名字是否值得保留\n再做深查",
|
|
69
|
+
body: [
|
|
70
|
+
"域名、搜索和商标预筛只在你展开单个候选后继续触发。这样可以减少等待,也避免把预算和注意力花在早就会被淘汰的名字上。",
|
|
71
|
+
"深查结果会提供可打开的搜索入口、风险提示和下一步检查清单,正式商用前仍需要注册商确认和专业商标复核。",
|
|
72
|
+
],
|
|
73
|
+
image: {
|
|
74
|
+
src: "/tools/product-name-generator-section-support-8bit-v2.webp",
|
|
75
|
+
alt: "像素风候选名复核配图,展示域名、搜索和商标预筛线索。",
|
|
76
|
+
},
|
|
77
|
+
imageFirst: true,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
generation: {
|
|
81
|
+
title: "如何生成一份\n产品名短名单",
|
|
82
|
+
imageAlt: "像素风产品取名流程配图,展示从产品 brief 到候选名和复核材料。",
|
|
83
|
+
ctaLabel: "生成候选名",
|
|
84
|
+
steps: [
|
|
85
|
+
{
|
|
86
|
+
title: "写下产品想法",
|
|
87
|
+
body: "用几句话说明产品做什么、给谁用、解决什么问题。粗糙想法也可以开始,但不要只输入占位词。",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
title: "选择命名约束",
|
|
91
|
+
body: "确认目标用户、命名风格、目标市场和域名后缀。已有工作名或候选名可以放到高级设置里一起筛。",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
title: "生成首轮短名单",
|
|
95
|
+
body: "工具会返回 3-5 个候选名,并附核心理念、基础信息、快筛维度和可复制结果。",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
title: "展开候选做复核",
|
|
99
|
+
body: "对真正有感觉的名字再展开深查,查看域名、搜索、商标入口、风险提示和下一步检查。",
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
faqIntro: "这些问题帮助你理解候选名如何使用、哪些结果需要人工复核,以及为什么深查不会在首轮全部执行。",
|
|
104
|
+
faqCtaLabel: "查看问题",
|
|
105
|
+
},
|
|
106
|
+
outputs: "你可以得到什么",
|
|
107
|
+
outputItems: [
|
|
108
|
+
{
|
|
109
|
+
title: "产品名短名单",
|
|
110
|
+
body:
|
|
111
|
+
"首轮返回少量候选名,每个名字都附核心理念和基础信息,方便团队直接讨论。",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
title: "基础品牌信号",
|
|
115
|
+
body:
|
|
116
|
+
"优先检查读音、长度、命名风格和你选择的域名后缀,先排掉明显不值得深查的方向。",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
title: "单名深查入口",
|
|
120
|
+
body:
|
|
121
|
+
"只对你展开的候选名继续看域名、搜索噪音、商标官方入口、风险提示和下一步检查。",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
title: "可复制的决策素材",
|
|
125
|
+
body:
|
|
126
|
+
"候选名、理由、快筛维度和风险提示可以复制给产品、设计、增长或法务同事继续评审。",
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
howToUse: "如何使用产品取名器",
|
|
130
|
+
howToUseSteps: [
|
|
131
|
+
"填写产品想法、目标用户、命名气质和已有工作名。",
|
|
132
|
+
"选择目标市场、域名后缀和可接受预算,首轮先保持轻量。",
|
|
133
|
+
"生成 3-5 个候选名后,先看核心理念、读音和基础信息。",
|
|
134
|
+
"对有感觉的名字点击展开,再单独做域名、搜索和商标预筛。",
|
|
135
|
+
],
|
|
136
|
+
capabilityNote:
|
|
137
|
+
"首轮优先解决「有没有值得继续看的名字」。域名价格、搜索噪音和商标安全不会在首轮强行承诺,深查也只作为预筛,不替代注册商确认或法律意见。",
|
|
138
|
+
stagedOutput: "为什么分阶段输出",
|
|
139
|
+
stageLabel: "阶段",
|
|
140
|
+
stagedOutputBullets: [
|
|
141
|
+
"第一阶段只解决「有没有值得继续看的名字」:减少等待时间和不必要的深查成本。",
|
|
142
|
+
"第二阶段只分析用户点击的候选名:域名、搜索、商标入口和风险点按需展开。",
|
|
143
|
+
"第三阶段适合最终决策:把 2-3 个候选名放在一起做红黄绿判断和下一步清单。",
|
|
144
|
+
],
|
|
145
|
+
resultGuidance: "拿到候选名后怎么判断",
|
|
146
|
+
resultGuidanceBullets: [
|
|
147
|
+
"先淘汰读音不顺、过于泛化、和竞品太近或看不出产品方向的名字,不急着买域名。",
|
|
148
|
+
"把 2-3 个候选名读给真实用户或团队成员听,观察他们能否复述、拼写和猜到产品大概用途。",
|
|
149
|
+
"只对最终候选展开深查,核对域名价格、搜索噪音、商标官方入口和需要人工复核的风险点。",
|
|
150
|
+
],
|
|
151
|
+
whyTomako: "为什么选这个取名器",
|
|
152
|
+
whyTomakoItems: [
|
|
153
|
+
{
|
|
154
|
+
title: "短名单优先,而不是词库轰炸",
|
|
155
|
+
body:
|
|
156
|
+
"好的起名工具应该帮你减少选择成本。页面默认只给 3-5 个可继续评估的方向,而不是一次塞满几十个相似词。",
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
title: "围绕产品语境筛选",
|
|
160
|
+
body:
|
|
161
|
+
"候选名会结合产品想法、目标用户、命名风格、已有工作名和目标市场,不把所有 App、SaaS、AI 工具套进同一套名字。",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
title: "先判断名字,再决定是否深查",
|
|
165
|
+
body:
|
|
166
|
+
"域名、搜索和商标预筛放在展开后按需触发,适合早期命名会、产品方向还在变化的阶段。",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
title: "边界清楚,方便复核",
|
|
170
|
+
body:
|
|
171
|
+
"页面会把域名状态、商标入口和法律边界说清楚,让候选名成为决策起点,而不是冒充最终清关结论。",
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
strongName: "好产品名的判断标准",
|
|
175
|
+
strongNameBullets: [
|
|
176
|
+
"可读可念:团队、用户和投资人第一次听到时不费劲。",
|
|
177
|
+
"可延展:不锁死在今天的单一功能,能承载产品线升级。",
|
|
178
|
+
"可检索:品牌搜索、App Store、GitHub、社媒和域名仍有可得空间。",
|
|
179
|
+
"可讲述:名字背后的隐喻能和产品定位、用户场景或品牌语气自然连上。",
|
|
180
|
+
"差异感:与同类软件、AI 工具或头部竞品在拼写和读音上拉开距离。",
|
|
181
|
+
],
|
|
182
|
+
mistakes: "命名时最容易踩的坑",
|
|
183
|
+
mistakeBullets: [
|
|
184
|
+
"把「.com 是否可买」当成唯一标准,忽略目标市场和用户记忆。",
|
|
185
|
+
"一次生成几十个好听名字,却没有域名、SEO、商标和品类冲突的分层筛选。",
|
|
186
|
+
"过早追求抽象高级感,导致用户不知道产品解决什么问题。",
|
|
187
|
+
"为了包含关键词把名字做得太长,最后既不像品牌,也不利于口头传播。",
|
|
188
|
+
],
|
|
189
|
+
useCases: "适合哪些场景",
|
|
190
|
+
useCaseBullets: [
|
|
191
|
+
"独立开发者给新 App、Web 工具、插件或 AI 小产品定名字。",
|
|
192
|
+
"早期团队在产品定位还会变化时,先拿到可延展的命名方向。",
|
|
193
|
+
"已经有 2-5 个候选名,需要判断哪个更适合继续买域名和做品牌。",
|
|
194
|
+
"出海产品需要同时考虑英文可读性、中文语感和全球搜索噪音。",
|
|
195
|
+
"产品、设计和增长团队开命名会前,用同一套标准先生成可讨论的短名单。",
|
|
196
|
+
],
|
|
197
|
+
faq: "常见问题",
|
|
198
|
+
faqItems: [
|
|
199
|
+
{
|
|
200
|
+
question: "为什么不一次性返回所有域名和商标分析?",
|
|
201
|
+
answer:
|
|
202
|
+
"命名初期大部分候选会被淘汰。先轻量生成和快筛,再只对用户点开的名字做深查,可以明显降低等待时间和不必要的分析成本。",
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
question: "我需要写很完整的产品定位吗?",
|
|
206
|
+
answer:
|
|
207
|
+
"不需要。写清产品做什么、给谁用、想传达什么感觉即可;如果只有粗糙想法,也可以先生成方向,再用候选名反推定位是否清楚。",
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
question: "工具会保证域名可以买到吗?",
|
|
211
|
+
answer:
|
|
212
|
+
"不会。域名状态来自 RDAP/DNS 等快筛信号,价格和最终可购买性必须以注册商页面为准,尤其是溢价域名。",
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
question: "商标预筛可以替代律师吗?",
|
|
216
|
+
answer:
|
|
217
|
+
"不可以。工具会提供官方数据库入口、搜索查询和风险提示,但不能给出法律清关结论。正式投入品牌资产前应做专业检索和法律复核。",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
question: "已有候选名也能分析吗?",
|
|
221
|
+
answer:
|
|
222
|
+
"可以。把候选名按行填到表单里,工具会把它们纳入首轮筛选,也会根据产品定位生成相近变体。",
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
question: "提交的产品想法会如何使用?",
|
|
226
|
+
answer:
|
|
227
|
+
"表单内容会用于生成候选名和深查所需的上下文。不要提交机密源码、未公开商业秘密、客户隐私或其他敏感个人信息。",
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
question: "生成的名字可以直接商用吗?",
|
|
231
|
+
answer:
|
|
232
|
+
"候选名可以作为命名起点,但正式商用前仍要确认域名、应用商店、社媒账号、商标近似和目标市场语义,必要时请做专业商标检索。",
|
|
233
|
+
},
|
|
234
|
+
],
|
|
235
|
+
ctaPrimary: "继续做 GTM 自检",
|
|
236
|
+
ctaSecondary: "返回全部工具",
|
|
237
|
+
ctaHint:
|
|
238
|
+
"确定候选名后,继续评估定位、渠道、素材和衡量指标是否准备好上线。",
|
|
239
|
+
visualAlt: {
|
|
240
|
+
hero: "产品取名器首屏视觉,展示粗略想法被整理成候选方向和检查信号。",
|
|
241
|
+
value: "聚焦短名单视觉,展示零散命名想法被筛成少量高质量候选方向。",
|
|
242
|
+
checks: "候选名预筛视觉,展示域名、搜索和人工复核等检查入口。",
|
|
243
|
+
decision: "命名决策包视觉,展示候选方向进入保留、复核和决策流程。",
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
widget: {
|
|
247
|
+
formTitle: "生成产品名候选",
|
|
248
|
+
formHint:
|
|
249
|
+
"先生成可评估的候选名;深度查询留到卡片展开后再做。",
|
|
250
|
+
workingNameLabel: "已有产品名或工作名",
|
|
251
|
+
workingNamePlaceholder: "例如 Kitepath,可留空",
|
|
252
|
+
descriptionLabel: "产品想法",
|
|
253
|
+
descriptionPlaceholder:
|
|
254
|
+
"描述产品做什么、给谁用、解决什么问题。例如:一个帮独立开发者自动生成上线素材和渠道计划的 AI 工作台。",
|
|
255
|
+
targetUsersLabel: "目标用户",
|
|
256
|
+
targetUsersPlaceholder: "例如 独立开发者、SaaS 创始人、出海小团队",
|
|
257
|
+
desiredVibeLabel: "希望传达的感觉",
|
|
258
|
+
desiredVibePlaceholder: "例如 清爽、可信、技术感、轻一点、不要太企业",
|
|
259
|
+
styleLabel: "命名风格",
|
|
260
|
+
marketLabel: "目标市场 / 语言",
|
|
261
|
+
marketPlaceholder: "选择目标市场",
|
|
262
|
+
domainLabel: "优先查询的域名后缀",
|
|
263
|
+
domainPlaceholder: "选择域名后缀",
|
|
264
|
+
maxPriceLabel: "最高可接受价格(美元)",
|
|
265
|
+
countLabel: "返回数量",
|
|
266
|
+
advancedLabel: "更多筛选设置",
|
|
267
|
+
fallbackLabel: "允许备选组合域名",
|
|
268
|
+
fallbackHint: "例如 get + 名称、try + 名称、名称 + app、名称 + hq。",
|
|
269
|
+
candidateNamesLabel: "已有候选名",
|
|
270
|
+
candidateNamesPlaceholder: "每行一个,或用逗号分隔。例如:\nKitepath\nNimbly\nAuralis",
|
|
271
|
+
optional: "可选",
|
|
272
|
+
generateAgent: "开始生成候选名",
|
|
273
|
+
generatingAgent: "正在生成候选名",
|
|
274
|
+
retryAgent: "重新生成候选名",
|
|
275
|
+
reset: "重置",
|
|
276
|
+
emptyTitle: "等待生成候选名",
|
|
277
|
+
emptyHint:
|
|
278
|
+
"首轮结果会逐个展示,每张卡片先只放核心理念和基础信息;域名、SEO、商标预筛在展开后单独触发。",
|
|
279
|
+
emptyBullets: ["3-5 个候选名", "核心理念与基础信息", "按需触发二次深查"],
|
|
280
|
+
workspaceVisualAlt:
|
|
281
|
+
"工作台右侧视觉,展示粗略命名输入被整理成三个候选方向和域名后缀信号。",
|
|
282
|
+
loadingTitle: "正在生成与快筛",
|
|
283
|
+
loadingStatus: "正在准备候选名短名单",
|
|
284
|
+
loadingCountdown: "约 1 分钟内",
|
|
285
|
+
loadingHint:
|
|
286
|
+
"正在根据产品想法生成候选名,并做基础读音、长度和域名后缀快筛。首轮不会做完整商标清关。",
|
|
287
|
+
loadingSteps: [
|
|
288
|
+
"生成命名策略和候选名",
|
|
289
|
+
"运行读音、长度和基础品牌筛选",
|
|
290
|
+
"只检查你选择的域名后缀",
|
|
291
|
+
"准备可展开的深查入口",
|
|
292
|
+
],
|
|
293
|
+
errorTitle: "暂时没有拿到取名结果",
|
|
294
|
+
agentResult: "候选名快筛",
|
|
295
|
+
resultTitle: "首轮候选名",
|
|
296
|
+
copyAll: "复制全部候选",
|
|
297
|
+
copyName: "复制名称",
|
|
298
|
+
copied: "已复制",
|
|
299
|
+
expandDetail: "展开查看更多",
|
|
300
|
+
detailLoading: "深查中",
|
|
301
|
+
detailRunning: "正在整理深查结果",
|
|
302
|
+
detailAwaiting: "深查已完成初步分析,正在整理可展示结果。",
|
|
303
|
+
score: "评分",
|
|
304
|
+
coreIdea: "核心理念",
|
|
305
|
+
basics: "基础信息",
|
|
306
|
+
domains: "域名快照",
|
|
307
|
+
checks: "快筛维度",
|
|
308
|
+
seoDetail: "SEO / 搜索预筛",
|
|
309
|
+
trademarkDetail: "商标预筛",
|
|
310
|
+
risks: "风险提示",
|
|
311
|
+
nextChecks: "下一步检查",
|
|
312
|
+
openLink: "打开链接",
|
|
313
|
+
taskIdLabel: "任务 ID",
|
|
314
|
+
styles: {
|
|
315
|
+
clear: "清晰直接",
|
|
316
|
+
technical: "技术感",
|
|
317
|
+
friendly: "友好轻量",
|
|
318
|
+
premium: "高级可信",
|
|
319
|
+
invented: "自造词",
|
|
320
|
+
},
|
|
321
|
+
markets: {
|
|
322
|
+
globalEnglish: "全球英文",
|
|
323
|
+
mainlandChina: "中国大陆",
|
|
324
|
+
us: "美国",
|
|
325
|
+
eu: "欧盟",
|
|
326
|
+
japan: "日本",
|
|
327
|
+
sea: "东南亚",
|
|
328
|
+
},
|
|
329
|
+
tlds: {
|
|
330
|
+
ai: ".ai",
|
|
331
|
+
com: ".com",
|
|
332
|
+
io: ".io",
|
|
333
|
+
app: ".app",
|
|
334
|
+
dev: ".dev",
|
|
335
|
+
co: ".co",
|
|
336
|
+
so: ".so",
|
|
337
|
+
studio: ".studio",
|
|
338
|
+
},
|
|
339
|
+
verdicts: {
|
|
340
|
+
green: "绿色",
|
|
341
|
+
light_yellow: "浅黄",
|
|
342
|
+
yellow: "黄色",
|
|
343
|
+
orange: "橙色",
|
|
344
|
+
red: "红色",
|
|
345
|
+
unknown: "未知",
|
|
346
|
+
manual_required: "需人工确认",
|
|
347
|
+
},
|
|
348
|
+
stages: {
|
|
349
|
+
unchecked_idea: "未检查想法",
|
|
350
|
+
fast_screened: "已快筛",
|
|
351
|
+
domain_checked: "已查域名",
|
|
352
|
+
deep_researched: "已深查",
|
|
353
|
+
},
|
|
354
|
+
errors: {
|
|
355
|
+
required: "请至少填写产品想法,并选择目标市场和域名后缀。",
|
|
356
|
+
fixFields: "请先修正表单中标注的位置,再生成候选名。",
|
|
357
|
+
descriptionRequired: "请先填写产品想法。",
|
|
358
|
+
descriptionShort: "产品想法再补充一点点就能开始,至少写 4 个字。",
|
|
359
|
+
descriptionMeaningful: "请填写真实的产品想法,不要只输入数字或占位符。",
|
|
360
|
+
market: "请至少选择一个目标市场或语言。",
|
|
361
|
+
domain: "请至少选择一个要优先查询的域名后缀。",
|
|
362
|
+
maxPrice: "最高可接受价格需要是 0 到 50000 之间的数字。",
|
|
363
|
+
candidateNames: "已有候选名太长了,请控制在 500 个字符以内。",
|
|
364
|
+
copy: "当前浏览器无法复制,请稍后重试。",
|
|
365
|
+
agent:
|
|
366
|
+
"取名任务提交或生成失败。请稍后重试;当前没有拿到可展示的取名结果。",
|
|
367
|
+
gateway:
|
|
368
|
+
"在线任务服务暂时不可用,任务没有创建成功。这不是表单选择问题,请稍后重试。",
|
|
369
|
+
noResult:
|
|
370
|
+
"取名流程结束后没有返回可展示的结构化结果。请稍后重试。",
|
|
371
|
+
invalidResult:
|
|
372
|
+
"返回结果的结构或内容不符合取名器要求。请重新生成。",
|
|
373
|
+
demoFallbackResult:
|
|
374
|
+
"返回的候选名疑似示例或兜底名单,页面已拒绝展示。请重新生成,或确认远端取名流程已更新。",
|
|
375
|
+
noDetail:
|
|
376
|
+
"深查任务结束后没有返回可展示结果。请重试。",
|
|
377
|
+
invalidDetailResult:
|
|
378
|
+
"深查返回内容不符合本工具需要的结构。请重试。",
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
} as const;
|
|
382
|
+
|
|
383
|
+
export default productNameGenerator;
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
const productPosterGenerator = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "AI 产品海报生成器:把产品截图、卖点和 CTA 生成品牌海报图",
|
|
4
|
+
displayTitle: "AI产品海报生成器",
|
|
5
|
+
description:
|
|
6
|
+
"输入产品名称、卖点、目标用户、CTA,可补充产品 URL、Logo 和截图,生成适合官网、社媒、广告和 OG 分享的产品宣传海报图。",
|
|
7
|
+
intro: "把产品上下文整理成可下载的宣传海报图。",
|
|
8
|
+
category: "SEO 营销工具",
|
|
9
|
+
keywords: [
|
|
10
|
+
"AI 产品海报生成器",
|
|
11
|
+
"产品宣传海报生成器",
|
|
12
|
+
"产品宣传图生成器",
|
|
13
|
+
"SaaS 营销图生成器",
|
|
14
|
+
"产品截图海报",
|
|
15
|
+
"App 宣传海报生成器",
|
|
16
|
+
"Web 产品广告图",
|
|
17
|
+
"品牌一致广告图",
|
|
18
|
+
],
|
|
19
|
+
inputSignal: "产品名称 / 卖点 / 截图 / Logo",
|
|
20
|
+
outputSignal: "产品海报图 / PNG",
|
|
21
|
+
boundarySignal: "下载前需人工复核",
|
|
22
|
+
},
|
|
23
|
+
examples: [
|
|
24
|
+
{
|
|
25
|
+
label: "SaaS 官网宣传图",
|
|
26
|
+
input: "产品名称、Dashboard 截图、3 条核心卖点、CTA:Book demo",
|
|
27
|
+
expectedOutput: "一张适合官网首屏和社媒发布的产品海报图,附带发布前复核清单。",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: "App 发布海报",
|
|
31
|
+
input: "App 截图、Logo、目标用户、渠道:Product Hunt / X",
|
|
32
|
+
expectedOutput: "发布海报预览图、渠道比例线索、素材使用状态和下一步检查项。",
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
guide: {
|
|
36
|
+
workspaceHeading: "AI 产品海报生成器",
|
|
37
|
+
workspaceHint:
|
|
38
|
+
"填写产品名称、卖点、目标用户、CTA 和用途;需要时补充 URL、Logo、截图、尺寸和品牌色。生成后可直接预览并下载 PNG。",
|
|
39
|
+
workspaceBadge: "生成 PNG 海报",
|
|
40
|
+
standard: {
|
|
41
|
+
benefits: {
|
|
42
|
+
title: "这个 AI 产品海报生成器能帮你完成什么",
|
|
43
|
+
cards: [
|
|
44
|
+
{
|
|
45
|
+
title: "生成可下载的产品海报图",
|
|
46
|
+
body: "把产品名称、核心卖点、目标用户和 CTA 组合成一张可预览、可下载的产品宣传海报图。",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: "保持产品与品牌一致",
|
|
50
|
+
body: "可补充 Logo、截图和品牌色,让海报围绕真实产品界面和品牌素材展开,而不是套通用模板。",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
title: "发布前留出复核边界",
|
|
54
|
+
body: "结果会提醒你检查截图隐私、广告承诺、裁切安全区和素材授权,避免把草稿当成投放终稿。",
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
imageTextSections: [
|
|
59
|
+
{
|
|
60
|
+
id: "poster-brief",
|
|
61
|
+
title: "从产品上下文\n生成可下载海报图",
|
|
62
|
+
body: [
|
|
63
|
+
"产品宣传图不只是好看的背景。它需要说清产品是什么、给谁用、主推什么价值,以及希望用户点击什么 CTA。",
|
|
64
|
+
"你先填写少量核心信息,工具会把产品说明、受众、用途和素材整理成一张产品海报预览,适合继续交给官网、社媒或增长流程使用。",
|
|
65
|
+
],
|
|
66
|
+
image: {
|
|
67
|
+
src: "/tools/product-poster-generator-section-primary-8bit-v2.webp",
|
|
68
|
+
alt: "像素风 AI 产品海报生成器配图,展示产品上下文变成可下载海报图。",
|
|
69
|
+
},
|
|
70
|
+
imageFirst: true,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "poster-variations",
|
|
74
|
+
title: "同一套产品素材\n适配不同发布渠道",
|
|
75
|
+
body: [
|
|
76
|
+
"官网首屏、社媒发布、广告测试、Product Hunt 和 OG 分享图的信息密度不同,不能只靠同一张图硬裁。",
|
|
77
|
+
"你可以选择目标用途、尺寸和视觉风格,让海报先按渠道安排标题、截图、卖点和 CTA 的优先级。",
|
|
78
|
+
],
|
|
79
|
+
image: {
|
|
80
|
+
src: "/tools/product-poster-generator-section-variation-8bit-v2.webp",
|
|
81
|
+
alt: "像素风产品海报渠道适配配图,展示 Web、Social 和 Ad 等多种比例。",
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: "poster-review",
|
|
86
|
+
title: "下载前先复核\n截图、承诺和裁切",
|
|
87
|
+
body: [
|
|
88
|
+
"生成图可以进入设计、发布或投放流程,但不等于已经完成品牌、法务和平台审核。",
|
|
89
|
+
"下载前请确认 UI 截图没有客户隐私或测试数据,广告承诺没有夸大,品牌素材有权使用,并按目标渠道检查裁切安全区。",
|
|
90
|
+
],
|
|
91
|
+
image: {
|
|
92
|
+
src: "/tools/product-poster-generator-section-support-8bit-v2.webp",
|
|
93
|
+
alt: "像素风产品海报复核配图,展示 PNG 下载、素材检查和发布前复核。",
|
|
94
|
+
},
|
|
95
|
+
imageFirst: true,
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
generation: {
|
|
99
|
+
title: "如何生成一张\n产品宣传海报图",
|
|
100
|
+
imageAlt: "像素风产品海报生成流程配图,展示从产品 brief 到 PNG 下载。",
|
|
101
|
+
ctaLabel: "生成产品海报",
|
|
102
|
+
steps: [
|
|
103
|
+
{
|
|
104
|
+
title: "填写产品 brief",
|
|
105
|
+
body: "输入产品名称、产品上下文、目标用户和主 CTA。卖点越具体,海报越容易聚焦。",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
title: "选择海报用途",
|
|
109
|
+
body: "从官网、社媒、广告、Product Hunt 或 OG 分享中选择目标用途,确定信息层级和基础比例。",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
title: "补充品牌素材",
|
|
113
|
+
body: "按需上传 Logo、产品截图,并选择尺寸、视觉风格和品牌色。没有素材也可以先生成第一版。",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
title: "预览并下载 PNG",
|
|
117
|
+
body: "生成完成后查看海报图、素材状态和发布前检查项,再下载 PNG 进入发布或设计流程。",
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
faqIntro:
|
|
122
|
+
"这些问题帮助你确认输入素材、适用场景、商用边界,以及它和通用海报模板的区别。",
|
|
123
|
+
faqCtaLabel: "查看问题",
|
|
124
|
+
},
|
|
125
|
+
faq: "常见问题",
|
|
126
|
+
faqItems: [
|
|
127
|
+
{
|
|
128
|
+
question: "产品宣传海报生成需要准备哪些内容?",
|
|
129
|
+
answer:
|
|
130
|
+
"至少需要产品名称、产品说明、目标用户和 CTA。更好的输入包括产品 URL、Logo、1 到 4 张 UI 截图、品牌色和目标发布渠道。",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
question: "这个产品截图海报生成器适合哪些产品?",
|
|
134
|
+
answer:
|
|
135
|
+
"更适合 SaaS、App、Web 工具、插件、AI 产品和开发者工具。你可以用它准备官网首屏图、社媒发布图、广告图、Product Hunt 图和 OG 分享图。",
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
question: "生成的产品宣传海报图可以直接商用吗?",
|
|
139
|
+
answer:
|
|
140
|
+
"海报图可以进入商用设计流程,但正式发布前仍要检查截图隐私、商标授权、广告承诺、平台尺寸和投放规范。",
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
question: "没有品牌色或 Logo,还能生成 App 宣传海报吗?",
|
|
144
|
+
answer:
|
|
145
|
+
"可以。你先提供产品说明、目标用户和截图,工具会使用默认视觉方向。品牌稳定后,再用 Logo 和品牌色生成更一致的版本。",
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
question: "它和 Canva、Adobe Express 海报模板有什么区别?",
|
|
149
|
+
answer:
|
|
150
|
+
"通用设计工具适合从模板开始排版。这个工具更适合先理解产品上下文、UI 截图、卖点和渠道需求,再生成互联网产品宣传图。",
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
ctaPrimary: "生成应用商店上架图",
|
|
154
|
+
ctaSecondary: "先生成 Logo",
|
|
155
|
+
ctaHint:
|
|
156
|
+
"如果你要做 App 商店素材,可以先生成上架图。如果品牌标识还不稳定,可以先生成 Logo 方向。",
|
|
157
|
+
},
|
|
158
|
+
widget: {
|
|
159
|
+
productNameLabel: "产品名称",
|
|
160
|
+
productNamePlaceholder: "例如 Tomako Launch",
|
|
161
|
+
productUrlLabel: "产品 URL",
|
|
162
|
+
productUrlPlaceholder: "https://yourproduct.com",
|
|
163
|
+
contextLabel: "产品上下文和核心卖点",
|
|
164
|
+
contextPlaceholder:
|
|
165
|
+
"写清产品做什么、最想突出哪 2-3 个卖点。例如:为独立开发者生成上线所需的营销物料。",
|
|
166
|
+
audienceLabel: "目标用户",
|
|
167
|
+
audiencePlaceholder: "例如 SaaS 创始人、增长团队、独立开发者",
|
|
168
|
+
ctaLabel: "主 CTA",
|
|
169
|
+
ctaPlaceholder: "Try it free / Book demo / Download app",
|
|
170
|
+
posterIntentLabel: "目标用途",
|
|
171
|
+
formatLabel: "海报尺寸",
|
|
172
|
+
styleLabel: "视觉风格",
|
|
173
|
+
brandColorsLabel: "品牌色",
|
|
174
|
+
optional: "可选",
|
|
175
|
+
advancedLabel: "补充素材和样式",
|
|
176
|
+
logoUpload: "上传 Logo",
|
|
177
|
+
logoChoose: "选择 Logo",
|
|
178
|
+
logoReplace: "更换 Logo",
|
|
179
|
+
logoRemove: "移除 Logo",
|
|
180
|
+
screenshotUpload: "上传产品截图",
|
|
181
|
+
screenshotUploadHint: "最多 4 张 PNG / JPG / WebP 截图",
|
|
182
|
+
screenshotChoose: "选择截图",
|
|
183
|
+
screenshotRemove: "移除截图",
|
|
184
|
+
screenshotCount: "{count} 张截图",
|
|
185
|
+
uploadHint: "PNG / JPG / WebP",
|
|
186
|
+
submit: "生成产品海报",
|
|
187
|
+
submitLoading: "正在生成...",
|
|
188
|
+
reset: "重置",
|
|
189
|
+
reviewNote: "请只上传可公开素材。下载前复核截图隐私、品牌授权、广告承诺和平台尺寸。",
|
|
190
|
+
emptyPreviewTitle: "填写信息后生成海报",
|
|
191
|
+
emptyPreviewHint:
|
|
192
|
+
"产品名称、卖点、目标用户、CTA 和用途会决定海报的主标题、画面层级和下载结果。",
|
|
193
|
+
loadingTitle: "正在生成产品海报",
|
|
194
|
+
loadingTipLabel: "提示",
|
|
195
|
+
loadingTip: "通常需要几十秒。保持本页打开,生成完成后会在右侧显示可下载 PNG。",
|
|
196
|
+
loadingSteps: {
|
|
197
|
+
prepare: "整理产品上下文",
|
|
198
|
+
compose: "组合标题、卖点和 CTA",
|
|
199
|
+
render: "渲染海报预览图",
|
|
200
|
+
finish: "准备下载结果",
|
|
201
|
+
},
|
|
202
|
+
errorTitle: "先补充关键产品信息",
|
|
203
|
+
submitErrorTitle: "海报生成请求未成功",
|
|
204
|
+
taskErrorTitle: "海报生成失败",
|
|
205
|
+
resultErrorTitle: "暂时没有拿到海报结果",
|
|
206
|
+
unreadableResultTitle: "结果暂时无法读取",
|
|
207
|
+
timeoutErrorTitle: "生成时间过长",
|
|
208
|
+
retry: "重新生成",
|
|
209
|
+
errors: {
|
|
210
|
+
required: "请补充必填信息,再生成产品海报。",
|
|
211
|
+
productName: "请填写产品名称。它会用于海报标题、文件名和产品定位。",
|
|
212
|
+
productContext: "请补充产品上下文和核心卖点。至少写清产品做什么,以及你最想突出的价值。",
|
|
213
|
+
audience: "请填写目标用户。比如 SaaS 创始人、增长团队、独立开发者或企业采购。",
|
|
214
|
+
primaryCta: "请填写主 CTA。比如 Try it free、Book demo、立即体验或下载 App。",
|
|
215
|
+
invalidUrl: "产品 URL 需要是有效的 http 或 https 地址,或者先留空。",
|
|
216
|
+
weakContext: "产品上下文太像占位内容。请补充产品做什么、主要卖点是什么。",
|
|
217
|
+
submitFailed: "海报生成服务暂时不可用,请稍后重试。",
|
|
218
|
+
pollFailed: "还没有拿到海报结果,请稍后重试。",
|
|
219
|
+
imageFailed: "海报图没有生成成功。可以简化卖点、换一个尺寸,或稍后再试。",
|
|
220
|
+
unreadableResult: "结果暂时无法读取。请稍后重试。",
|
|
221
|
+
timeout: "生成时间较长。请稍后重试。",
|
|
222
|
+
},
|
|
223
|
+
readyKicker: "海报已生成",
|
|
224
|
+
readyTitle: "产品宣传海报图已生成",
|
|
225
|
+
readyHint: "你可以预览并下载 PNG。正式发布前,请复核截图隐私、广告承诺和品牌授权。",
|
|
226
|
+
downloadPng: "下载 PNG",
|
|
227
|
+
generatedPosterAlt: "根据产品上下文生成的产品宣传海报预览图。",
|
|
228
|
+
posterDetails: "海报设置",
|
|
229
|
+
posterChecklist: "发布前检查",
|
|
230
|
+
assetLogoApplied: "Logo:已作为精确图层合成到最终 PNG",
|
|
231
|
+
assetLogoUploadedNotApplied: "Logo:已上传,请复核最终图中是否完成合成",
|
|
232
|
+
assetLogoMissing: "Logo:未上传,海报不会虚构品牌标识",
|
|
233
|
+
assetScreenshotReferenceCount: "产品截图:{count} 张已作为生图参考",
|
|
234
|
+
assetScreenshotInventoryOnly: "产品截图:{count} 张仅作为文件清单,未进入生图参考",
|
|
235
|
+
assetScreenshotMissing: "产品截图:未上传,生图不会虚构真实界面",
|
|
236
|
+
assetFinalLogoLayer: "最终下载图:已保留模型生成图,并叠加上传 Logo",
|
|
237
|
+
posterChecklistItems: [
|
|
238
|
+
"确认主标题是否说清产品价值,不要只写抽象口号。",
|
|
239
|
+
"检查截图里是否包含客户隐私、测试账号或未授权品牌。",
|
|
240
|
+
"按目标平台复核裁切比例,确认 CTA 在移动端也清楚可读。",
|
|
241
|
+
"正式投放前复核品牌授权、广告承诺和平台规范。",
|
|
242
|
+
],
|
|
243
|
+
posterIntentLabels: {
|
|
244
|
+
websiteConversion: "官网首屏转化",
|
|
245
|
+
websiteFeature: "官网功能介绍",
|
|
246
|
+
socialLaunch: "社媒新品发布",
|
|
247
|
+
socialContent: "社媒内容封面",
|
|
248
|
+
paidAcquisition: "广告获客测试",
|
|
249
|
+
paidRetargeting: "再营销广告图",
|
|
250
|
+
productHuntLaunch: "Product Hunt 发布",
|
|
251
|
+
ogBlogCover: "博客 / OG 分享图",
|
|
252
|
+
},
|
|
253
|
+
formatLabels: {
|
|
254
|
+
multiSize: "智能",
|
|
255
|
+
ultrawide: "21:9",
|
|
256
|
+
landscape: "16:9",
|
|
257
|
+
landscape32: "3:2",
|
|
258
|
+
landscape43: "4:3",
|
|
259
|
+
square: "1:1",
|
|
260
|
+
portrait34: "3:4",
|
|
261
|
+
portrait: "2:3",
|
|
262
|
+
story: "9:16",
|
|
263
|
+
},
|
|
264
|
+
styleLabels: {
|
|
265
|
+
cleanSaas: "简洁 SaaS",
|
|
266
|
+
boldLaunch: "大胆发布感",
|
|
267
|
+
premiumEditorial: "高级编辑感",
|
|
268
|
+
playfulApp: "活泼 App 风",
|
|
269
|
+
enterpriseTrust: "企业可信感",
|
|
270
|
+
},
|
|
271
|
+
brandPaletteLabels: {
|
|
272
|
+
auto: "自动",
|
|
273
|
+
tomako: "Tomako",
|
|
274
|
+
ocean: "科技绿",
|
|
275
|
+
violet: "发布紫",
|
|
276
|
+
mono: "黑白灰",
|
|
277
|
+
sunset: "暖橙",
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
} as const;
|
|
281
|
+
|
|
282
|
+
export default productPosterGenerator;
|