@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,230 @@
|
|
|
1
|
+
const communityPainPointExtractor = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "社区痛点抓取器",
|
|
4
|
+
displayTitle: "社区痛点抓取器",
|
|
5
|
+
description: "输入产品方向,从 Reddit、X 和 Hacker News 的公开讨论中整理重复抱怨、可核对原话、付费信号与一个可执行的 landing page 测试;证据不足会明确标出。",
|
|
6
|
+
intro: "把一个粗糙方向变成可复核的社区痛点报告。先找公开讨论和真实抱怨,再输出高频痛点、原话证据、付费意愿和可落地的页面切入角度。",
|
|
7
|
+
category: "用户调研工具",
|
|
8
|
+
keywords: [
|
|
9
|
+
"社区痛点抓取器",
|
|
10
|
+
"Reddit 痛点分析",
|
|
11
|
+
"用户痛点调研",
|
|
12
|
+
"Hacker News 用户研究",
|
|
13
|
+
"landing page 角度",
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
examples: [
|
|
17
|
+
{
|
|
18
|
+
label: "Shopify 客服方向",
|
|
19
|
+
input: "AI customer support tool for Shopify sellers",
|
|
20
|
+
expectedOutput: "相关 Reddit/X/HN 社区、高频订单/物流抱怨、用户原话、付费意愿、可切入的小 widget 和 landing page 角度。",
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
widget: {
|
|
24
|
+
directionLabel: "产品方向",
|
|
25
|
+
directionPlaceholder: "例如:AI customer support tool for Shopify sellers",
|
|
26
|
+
targetUsersLabel: "目标用户(可选)",
|
|
27
|
+
targetUsersPlaceholder: "例如 Shopify 独立卖家、客服负责人",
|
|
28
|
+
marketLabel: "市场/语言(可选)",
|
|
29
|
+
marketPlaceholder: "例如 北美、英文市场",
|
|
30
|
+
platformLabel: "优先平台",
|
|
31
|
+
platform: {
|
|
32
|
+
all: "Reddit + X + Hacker News",
|
|
33
|
+
reddit: "Reddit",
|
|
34
|
+
x: "X",
|
|
35
|
+
hackernews: "Hacker News",
|
|
36
|
+
other: "其他公开来源",
|
|
37
|
+
},
|
|
38
|
+
focusLabel: "重点关注(可选)",
|
|
39
|
+
focusPlaceholder: "例如 付费意愿、可切入小功能、landing page 文案",
|
|
40
|
+
inputHint:
|
|
41
|
+
"第一轮只需要一个方向。工具只使用公开信息;私密社区、登录后内容和无法验证的 quote 会被标成缺失证据。",
|
|
42
|
+
submit: "抓取社区痛点",
|
|
43
|
+
submitting: "提交中…",
|
|
44
|
+
running: "抓取中…",
|
|
45
|
+
emptyTitle: "社区痛点报告会显示在这里",
|
|
46
|
+
emptyHint:
|
|
47
|
+
"提交后会查找相关 Reddit、X、Hacker News 公开讨论,整理高频抱怨、原话证据、付费信号和 landing page 角度。",
|
|
48
|
+
runningTitle: "正在研究公开社区信号",
|
|
49
|
+
runningHint:
|
|
50
|
+
"正在先并发收集公开证据,再聚类成痛点报告。多数方向会比完整人工翻社区更快完成。",
|
|
51
|
+
partialTitle: "报告已开始生成",
|
|
52
|
+
partialHint: "已完成的模块会先显示出来,后续社区、痛点和页面角度会继续追加。",
|
|
53
|
+
progressTitle: "最近进展",
|
|
54
|
+
progressSteps: [
|
|
55
|
+
"已收到方向,正在拆成可检索的用户问题。",
|
|
56
|
+
"正在并发收集 Reddit、X、Hacker News 和公开网页线索。",
|
|
57
|
+
"正在筛选 evidence pack 中的重复抱怨、用户原话和现有替代方案。",
|
|
58
|
+
"正在判断出现频率、痛感强度和潜在付费信号。",
|
|
59
|
+
"正在整理可切入小功能、landing page 角度和验证实验。",
|
|
60
|
+
],
|
|
61
|
+
progressResultReady: "结构化报告已写回,正在读取并校验结果。",
|
|
62
|
+
status: {
|
|
63
|
+
default: "研究中",
|
|
64
|
+
PENDING: "排队中",
|
|
65
|
+
STREAMING: "研究中",
|
|
66
|
+
AWAITING_INPUT: "分析中",
|
|
67
|
+
AWAITING_RESULT: "汇总结果中",
|
|
68
|
+
PARTIAL_RESULT: "持续生成中",
|
|
69
|
+
SUCCEEDED: "即将完成",
|
|
70
|
+
},
|
|
71
|
+
retry: "重试",
|
|
72
|
+
errors: {
|
|
73
|
+
invalid: "请用 10 个字符以上描述真实产品方向,避免 test/demo/占位内容。",
|
|
74
|
+
submit: "提交失败,请检查网络后重试。",
|
|
75
|
+
task: "社区研究任务失败,请稍后重试。",
|
|
76
|
+
timeout: "研究超时,公开信息可能较难获取,请稍后重试。",
|
|
77
|
+
schema: "返回结果格式异常,请重试。",
|
|
78
|
+
},
|
|
79
|
+
taskId: "任务",
|
|
80
|
+
partialTaskFallback: "生成中",
|
|
81
|
+
partialReportTitle: "社区痛点报告生成中",
|
|
82
|
+
partialBadge: "部分结果,仍在继续生成",
|
|
83
|
+
moduleLoading: {
|
|
84
|
+
currentPrefix: "当前处理",
|
|
85
|
+
stepLabel: "步骤",
|
|
86
|
+
estimatePrefix: "预计剩余",
|
|
87
|
+
elapsedPrefix: "已用",
|
|
88
|
+
seconds: "秒",
|
|
89
|
+
overTime: "仍在处理",
|
|
90
|
+
generatedPrefix: "已生成",
|
|
91
|
+
painClusterUnit: "个痛点",
|
|
92
|
+
progressAria: "报告模块生成进度",
|
|
93
|
+
overallProgressAria: "报告整体生成进度",
|
|
94
|
+
modules: {
|
|
95
|
+
summary: {
|
|
96
|
+
title: "任务摘要",
|
|
97
|
+
hint: "正在把输入方向整理成报告标题和总览结论。",
|
|
98
|
+
},
|
|
99
|
+
communities: {
|
|
100
|
+
title: "相关社区",
|
|
101
|
+
hint: "正在筛选最相关的 Reddit、X、Hacker News 和公开讨论来源。",
|
|
102
|
+
},
|
|
103
|
+
paidIntent: {
|
|
104
|
+
title: "付费意愿",
|
|
105
|
+
hint: "正在区分预算信号、价格阻力、替代方案和购买语气。",
|
|
106
|
+
},
|
|
107
|
+
entryFeatures: {
|
|
108
|
+
title: "切入功能",
|
|
109
|
+
hint: "正在把痛点压缩成能先验证的小功能切口。",
|
|
110
|
+
},
|
|
111
|
+
painClusters: {
|
|
112
|
+
title: "高频痛点",
|
|
113
|
+
hint: "正在追加下一个高频痛点卡片、用户原话和可落地角度。",
|
|
114
|
+
},
|
|
115
|
+
landing: {
|
|
116
|
+
title: "Landing page 角度",
|
|
117
|
+
hint: "正在把最强痛点转成首屏承诺、目标人群和 CTA。",
|
|
118
|
+
},
|
|
119
|
+
experiments: {
|
|
120
|
+
title: "验证实验",
|
|
121
|
+
hint: "正在整理下一步可以低成本验证的渠道、方法和指标。",
|
|
122
|
+
},
|
|
123
|
+
sources: {
|
|
124
|
+
title: "公开来源",
|
|
125
|
+
hint: "正在收拢来源链接、缺失证据和公开信息边界。",
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
copyReport: "复制报告",
|
|
130
|
+
analyzeAnother: "分析另一个方向",
|
|
131
|
+
visit: "查看来源",
|
|
132
|
+
emptyList: "暂无明确公开信号",
|
|
133
|
+
paidIntentSignal: "付费信号",
|
|
134
|
+
paidIntentObjection: "付费阻力",
|
|
135
|
+
frequencyLabel: "频率",
|
|
136
|
+
severityLabel: "痛感",
|
|
137
|
+
userQuotes: "用户原话",
|
|
138
|
+
microFeature: "可切入小功能",
|
|
139
|
+
landingAngle: "Landing page 角度",
|
|
140
|
+
paySignal: "付费意愿判断",
|
|
141
|
+
missingEvidence: "仍缺的证据",
|
|
142
|
+
disclaimerFallback:
|
|
143
|
+
"以上为基于公开信息的辅助用户研究,不构成市场规模、收入或成功承诺。请用访谈、落地页测试和真实成交继续验证。",
|
|
144
|
+
frequency: { low: "低", medium: "中", high: "高" },
|
|
145
|
+
severity: { low: "低", medium: "中", high: "高" },
|
|
146
|
+
confidence: { low: "低置信", medium: "中置信", high: "高置信" },
|
|
147
|
+
sections: {
|
|
148
|
+
communities: "相关社区",
|
|
149
|
+
paidIntent: "付费意愿",
|
|
150
|
+
entryFeatures: "切入功能",
|
|
151
|
+
painClusters: "高频痛点 cluster",
|
|
152
|
+
landing: "Landing page 角度",
|
|
153
|
+
experiments: "验证实验",
|
|
154
|
+
sources: "公开来源",
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
guide: {
|
|
158
|
+
workspaceHeading: "找到用户在公开社区反复提到的痛点",
|
|
159
|
+
workspaceHint: "输入产品方向,获得公开讨论、可复核证据、付费线索和下一步最小测试。",
|
|
160
|
+
workspaceBadge: "社区痛点调研",
|
|
161
|
+
visualAlt: {
|
|
162
|
+
hero: "社区讨论信号汇入痛点报告包的视觉物料",
|
|
163
|
+
workspace: "粗糙产品方向转成痛点、原话和角度的视觉物料",
|
|
164
|
+
value: "社区抱怨聚类为机会地图的视觉物料",
|
|
165
|
+
boundary: "公开来源、用户原话和置信度边界的视觉物料",
|
|
166
|
+
useCase: "痛点报告转成小功能和 landing page 测试的视觉物料",
|
|
167
|
+
},
|
|
168
|
+
valueKicker: "你会得到什么",
|
|
169
|
+
valueTitle: "不是一句“用户需要更好体验”,而是可验证的社区证据",
|
|
170
|
+
valueItems: [
|
|
171
|
+
"相关社区清单:先告诉你该看哪些 subreddit、X 讨论和 HN 线索,而不是让你自己翻半天。",
|
|
172
|
+
"高频抱怨和原话:按重复程度、痛感和平台来源整理,让你看到用户怎么说这个问题。",
|
|
173
|
+
"付费意愿判断:把预算、替代方案、价格抱怨和购买语气分开,不把热闹当成愿意付费。",
|
|
174
|
+
"切入功能和页面角度:把痛点转成小 widget、首屏承诺、CTA 和下一轮验证实验。",
|
|
175
|
+
],
|
|
176
|
+
standardKicker: "好工具标准",
|
|
177
|
+
standardTitle: "一个靠谱的痛点抓取工具要先证明抱怨重复出现",
|
|
178
|
+
standardItems: [
|
|
179
|
+
"来源要具体:报告必须能指出社区、帖子或公开搜索线索,不能只给泛泛总结。",
|
|
180
|
+
"原话要可复核:能引用就给短 quote 和来源;不能验证就改成 evidence note,不伪装成原话。",
|
|
181
|
+
"频率要分层:区分偶发吐槽、反复抱怨和高痛感问题,避免为少数声音过度设计。",
|
|
182
|
+
"结果要能行动:最终要落到切入功能、landing page 角度和验证实验,而不是停在情绪总结。",
|
|
183
|
+
],
|
|
184
|
+
boundaryKicker: "支持与边界",
|
|
185
|
+
boundaryTitle: "只研究公开信号,缺证据会明确标出来",
|
|
186
|
+
boundaryItems: [
|
|
187
|
+
"支持 Reddit、X、Hacker News 和公开网页搜索线索;不同平台可访问性会影响结果完整度。",
|
|
188
|
+
"不访问私密、登录后、删除、付费墙或受权限限制的内容;平台规则和用户隐私需要你自行确认。",
|
|
189
|
+
"出现频率是研究判断,不是精确统计;报告会用 low / medium / high 表示相对强弱。",
|
|
190
|
+
"如果公开 quote 不足,工具会列出缺失证据和下一步访谈问题,而不是编造看起来漂亮的结论。",
|
|
191
|
+
],
|
|
192
|
+
resultKicker: "结果使用",
|
|
193
|
+
resultTitle: "拿到报告后,先做最小切入和页面测试",
|
|
194
|
+
resultGuidanceItems: [
|
|
195
|
+
"先选一个高频、高痛感且能用小功能解决的 cluster,不要一次覆盖所有抱怨。",
|
|
196
|
+
"把用户原话改写成 landing page 首屏承诺,再用来源和场景证明它不是团队自嗨。",
|
|
197
|
+
"如果付费信号弱,先做访谈、等候名单或人工服务交付,不急着做完整 SaaS。",
|
|
198
|
+
"如果某个社区反复出现同一抱怨,优先用小 widget、Chrome extension 或插件测试解决意愿。",
|
|
199
|
+
],
|
|
200
|
+
faqKicker: "常见问题",
|
|
201
|
+
faqTitle: "社区痛点调研常见问题",
|
|
202
|
+
faqItems: [
|
|
203
|
+
{
|
|
204
|
+
question: "这个工具会自动翻完整个 Reddit、X 和 Hacker News 吗?",
|
|
205
|
+
answer:
|
|
206
|
+
"不会承诺全量抓取。它会研究公开可搜索的社区、帖子和网页线索,并在来源不足时标注缺失证据。",
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
question: "用户原话一定是真实 quote 吗?",
|
|
210
|
+
answer:
|
|
211
|
+
"报告要求可验证 quote 才作为原话展示,并尽量带来源链接。无法验证的内容应该被写成证据备注,而不是直接引号引用。",
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
question: "付费意愿判断可靠吗?",
|
|
215
|
+
answer:
|
|
216
|
+
"它是方向性判断,会看预算语气、替代方案、价格抱怨和现有付费工具。最终仍需要落地页、访谈或真实支付验证。",
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
question: "结果可以直接写进 landing page 吗?",
|
|
220
|
+
answer:
|
|
221
|
+
"可以作为首屏角度、功能切口和 CTA 草案,但建议保留人工复核,避免把未经验证的 quote、数量或平台结论写成确定事实。",
|
|
222
|
+
},
|
|
223
|
+
],
|
|
224
|
+
ctaHint: "如果痛点方向看起来强,下一步可以验证整个创业 idea 或补一份访谈提纲。",
|
|
225
|
+
ctaPrimary: "验证创业 idea",
|
|
226
|
+
ctaSecondary: "生成用户访谈提纲",
|
|
227
|
+
},
|
|
228
|
+
} as const;
|
|
229
|
+
|
|
230
|
+
export default communityPainPointExtractor;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
const communityPostRiskChecker = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "Community Post Risk Checker",
|
|
4
|
+
displayTitle: "Community Post Risk Checker",
|
|
5
|
+
description: "粘贴一篇 Reddit、r/SaaS、r/indiehackers 或 Indie Hackers 草稿,检查标题广告感、CTA 时机、真实过程、自我推广段落和社区语气风险。",
|
|
6
|
+
intro: "在发布前先做一次社区风险体检:哪些地方像广告,CTA 应该放正文、评论区还是暂时不放,哪些段落需要补真实过程和透明身份。",
|
|
7
|
+
category: "社区增长工具",
|
|
8
|
+
keywords: [
|
|
9
|
+
"community post risk checker",
|
|
10
|
+
"Reddit self promotion checker",
|
|
11
|
+
"r/SaaS post review",
|
|
12
|
+
"indie hackers post checker",
|
|
13
|
+
"社区帖子广告风险检测",
|
|
14
|
+
],
|
|
15
|
+
inputSignal: "社区帖子标题 + 正文草稿 + 目标社区 + CTA 计划",
|
|
16
|
+
outputSignal: "风险分数 + 段落标注 + CTA 建议 + 重写清单",
|
|
17
|
+
boundarySignal: "公开启发式工具;降低广告感和 self-promotion 风险,不保证任何平台审核结果",
|
|
18
|
+
},
|
|
19
|
+
examples: [
|
|
20
|
+
{
|
|
21
|
+
label: "r/SaaS 草稿",
|
|
22
|
+
input: "标题:We launched an AI tool that helps SaaS founders get more users. 正文里包含产品介绍、注册链接和请求反馈。",
|
|
23
|
+
expectedOutput: "指出标题卖点过强、CTA 太早、正文缺少真实过程,并建议把链接移到评论区或等别人追问。",
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
guide: {
|
|
27
|
+
heroVisualAlt: "带有标题、CTA 和自我推广风险标注的社区帖子草稿",
|
|
28
|
+
workspaceBadge: "公开 SEO 工具",
|
|
29
|
+
workspaceHeading: "检查社区帖是否读起来像广告",
|
|
30
|
+
workspaceHint:
|
|
31
|
+
"粘贴你从任何地方生成或自己写的草稿。工具会给出推广风险分、标出危险段落,并建议 CTA 应该放正文、评论区,还是暂时不放。",
|
|
32
|
+
workspaceVisualAlt: "展示帖子草稿和审核风险标注的工作区界面",
|
|
33
|
+
outputs: "工具会输出什么",
|
|
34
|
+
outputItems: [
|
|
35
|
+
{
|
|
36
|
+
title: "推广风险分",
|
|
37
|
+
body: "从标题广告感、CTA 时机、真实过程、社区语气、自我推广和身份透明度六个维度给出 0-100 分。",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: "段落风险标注",
|
|
41
|
+
body: "指出正文里哪些段落可能被社区读成 self-promotion、过早 CTA 或产品营销。",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "CTA 放置建议",
|
|
45
|
+
body: "建议正文不放、放评论区、放正文末尾,或只有别人追问时再给链接。",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: "修改清单",
|
|
49
|
+
body: "给出具体改法,让帖子更像真实创业者复盘,而不是产品公告。",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
useCaseHeading: "适合发 Reddit 和 Indie Hackers 前使用",
|
|
53
|
+
useCaseVisualAlt: "带有安全 CTA 和真实过程证据的社区帖子准备流程",
|
|
54
|
+
useCaseItems: [
|
|
55
|
+
"检查 r/SaaS、r/indiehackers、Indie Hackers、创始人论坛和垂直小社区草稿。",
|
|
56
|
+
"提前发现最常见问题:你脑子里觉得是在分享,但读者眼里像发布公告。",
|
|
57
|
+
"把帖子拉回真实过程:试过什么、哪里失败、后来怎么改、到底想问什么。",
|
|
58
|
+
"判断链接应该放正文、首条评论、回复线程,还是完全不放。",
|
|
59
|
+
],
|
|
60
|
+
boundaryHeading: "它降低风险,但不保证过审",
|
|
61
|
+
boundaryVisualAlt: "从草稿检查到修改发布的平台审核边界流程",
|
|
62
|
+
boundaryItems: [
|
|
63
|
+
"这是启发式发布前检查,不是 Reddit 或 Indie Hackers 的审核引擎。",
|
|
64
|
+
"它不应该被包装成绕过平台规则或隐藏商业意图的工具。",
|
|
65
|
+
"Tomako 内部最好的体验仍然是自动化:生成给用户前就应该通过类似检查。",
|
|
66
|
+
"公开工具服务的是外部草稿、竞品文案和已经在别处写好内容的创始人。",
|
|
67
|
+
],
|
|
68
|
+
seoHeading: "为什么它适合做 SEO 获客页",
|
|
69
|
+
seoVisualAlt: "包含标题、CTA、过程、语气和透明度检查的风险报告",
|
|
70
|
+
seoItems: [
|
|
71
|
+
"搜索意图很明确:用户已经担心自己的帖子会不会像 self-promotion。",
|
|
72
|
+
"工具能立刻给价值,不要求用户先理解完整 Tomako 工作台。",
|
|
73
|
+
"它自然把公开流量引到 Tomako 的社区发帖和 build-in-public 工作流。",
|
|
74
|
+
"它比自动发帖更可信,因为它帮助用户尊重社区规范,而不是批量发布。",
|
|
75
|
+
],
|
|
76
|
+
whyTomakoHeading: "为什么 Tomako 应该做这个",
|
|
77
|
+
whyTomakoItems: [
|
|
78
|
+
{
|
|
79
|
+
title: "更接近真实分发难点",
|
|
80
|
+
body: "北美创始人社区的失败点通常不是写不出来,而是写出来像在索取注意力。",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
title: "可内化为质量门",
|
|
84
|
+
body: "同一套 rubric 可以成为隐藏生成门,让 Tomako 默认输出更安全的草稿。",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
title: "建立公开信任",
|
|
88
|
+
body: "在要求用户生成帖子前,先证明 Tomako 理解社区礼仪。",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
title: "SEO 切入清晰",
|
|
92
|
+
body: "Reddit self-promotion、post review、community posting 相关搜索都有直接创始人意图。",
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
standardHeading: "判断标准",
|
|
96
|
+
standardVisualAlt: "包含标题广告感、早期 CTA、过程缺失和身份说明的检查清单",
|
|
97
|
+
standardItems: [
|
|
98
|
+
"一篇好帖子即使删掉产品名和链接,仍然对社区有用。",
|
|
99
|
+
"安全 CTA 通常靠后、放评论区,或只有别人追问时出现。",
|
|
100
|
+
"可信的创始人帖子会包含不确定性、过程、限制和一个具体问题。",
|
|
101
|
+
"透明的帖子会在请求关注前说明自己与产品的关系。",
|
|
102
|
+
],
|
|
103
|
+
faq: "常见问题",
|
|
104
|
+
faqItems: [
|
|
105
|
+
{
|
|
106
|
+
question: "它能保证 Reddit 不删帖吗?",
|
|
107
|
+
answer:
|
|
108
|
+
"不能。它只是基于常见社区信号做发布前风险检查,最终仍取决于具体社区规则和版主判断。",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
question: "这个能力也应该在 Tomako 生成器内部吗?",
|
|
112
|
+
answer:
|
|
113
|
+
"应该。公开工具适合外部草稿和 SEO 获客;Tomako 自己生成的帖子,应该在输出前自动过类似质量门。",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
question: "为什么要单独检查 CTA 位置?",
|
|
117
|
+
answer:
|
|
118
|
+
"一篇真实复盘可能因为注册链接出现太早,瞬间被读成 self-promotion。位置会改变读者对意图的判断。",
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
question: "支持中文草稿吗?",
|
|
122
|
+
answer:
|
|
123
|
+
"支持。界面跟随当前语言,启发式检查也包含中文和英文的推广信号。",
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
ctaHint:
|
|
127
|
+
"先用工具检查已有草稿,再根据报告生成更安全的 build-in-public 内容。",
|
|
128
|
+
ctaPrimary: "生成 build-in-public 故事",
|
|
129
|
+
ctaSecondary: "整理社区反馈",
|
|
130
|
+
},
|
|
131
|
+
widget: {
|
|
132
|
+
formTitle: "发布前风险检查",
|
|
133
|
+
formHint:
|
|
134
|
+
"检查标题广告感、过早 CTA、真实过程缺失、Reddit 风格 self-promotion 信号和身份说明问题。",
|
|
135
|
+
titleLabel: "帖子标题",
|
|
136
|
+
titlePlaceholder: "例如:我做了一个给 SaaS 创始人用的 AI 工具,想听反馈",
|
|
137
|
+
communityLabel: "目标社区",
|
|
138
|
+
goalLabel: "发帖目的",
|
|
139
|
+
ctaLabel: "CTA 计划",
|
|
140
|
+
bodyLabel: "帖子正文",
|
|
141
|
+
bodyPlaceholder:
|
|
142
|
+
"把完整社区帖草稿粘贴到这里。请保留链接、请求、产品上下文和结尾,就像你真实准备发布的版本。",
|
|
143
|
+
checkButton: "检查风险",
|
|
144
|
+
resetButton: "重置",
|
|
145
|
+
copyButton: "复制报告",
|
|
146
|
+
copiedButton: "已复制",
|
|
147
|
+
downloadButton: "下载",
|
|
148
|
+
emptyTitle: "风险报告会显示在这里",
|
|
149
|
+
emptyBody: "请粘贴有足够上下文的真实草稿。过短样例和占位文本会被拒绝。",
|
|
150
|
+
flaggedHeading: "可能被读成 self-promotion 的段落",
|
|
151
|
+
noFlags: "本次没有段落超过风险阈值。发布前仍建议核对目标社区规则。",
|
|
152
|
+
ctaAdviceHeading: "CTA 建议",
|
|
153
|
+
revisionHeading: "修改清单",
|
|
154
|
+
paragraphLabel: "第 {index} 段",
|
|
155
|
+
status: {
|
|
156
|
+
idle: "等待草稿",
|
|
157
|
+
error: "需要真实草稿",
|
|
158
|
+
done: "检查完成",
|
|
159
|
+
},
|
|
160
|
+
errors: {
|
|
161
|
+
validation: "请补充真实标题和正文。正文需要足够长,才能判断上下文和 CTA 位置。",
|
|
162
|
+
weakInput: "这看起来太短或像占位文本。请粘贴你真实准备发布的帖子草稿。",
|
|
163
|
+
},
|
|
164
|
+
preview: [
|
|
165
|
+
"风险",
|
|
166
|
+
"标注",
|
|
167
|
+
"段落",
|
|
168
|
+
"CTA 建议会显示在这里",
|
|
169
|
+
"分析后会显示最重要的修改方向。",
|
|
170
|
+
"工具检查推广风险,不保证平台审核结果。",
|
|
171
|
+
],
|
|
172
|
+
riskLevels: {
|
|
173
|
+
low: "低风险",
|
|
174
|
+
medium: "中风险",
|
|
175
|
+
high: "高风险",
|
|
176
|
+
},
|
|
177
|
+
communities: {
|
|
178
|
+
redditSaas: "r/SaaS",
|
|
179
|
+
redditIndieHackers: "r/indiehackers",
|
|
180
|
+
indieHackers: "Indie Hackers",
|
|
181
|
+
other: "其他社区",
|
|
182
|
+
},
|
|
183
|
+
goals: {
|
|
184
|
+
askFeedback: "请求反馈",
|
|
185
|
+
shareLearning: "分享经验",
|
|
186
|
+
launchUpdate: "发布更新",
|
|
187
|
+
findBeta: "寻找 beta 用户",
|
|
188
|
+
askAdvice: "请教建议",
|
|
189
|
+
},
|
|
190
|
+
ctaPlans: {
|
|
191
|
+
none: "不放 CTA",
|
|
192
|
+
body: "正文里放 CTA",
|
|
193
|
+
comment: "评论区放 CTA",
|
|
194
|
+
onlyIfAsked: "被问到再发",
|
|
195
|
+
unsure: "还不确定",
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
} as const;
|
|
199
|
+
|
|
200
|
+
export default communityPostRiskChecker;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
const competitorAnalysis = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "竞品分析工具",
|
|
4
|
+
description: "输入一个竞品的网址,云端 Agent 调研公开信息,输出结构化的竞品档案:产品概览、流量与增长、业务规模、团队与融资,并附来源和可信度。",
|
|
5
|
+
intro: "把一个竞品 URL 变成一页看懂的竞品档案。基于公开网页和检索的估算,每个维度都标注可信度,帮助你做定位、增长和竞争决策。",
|
|
6
|
+
category: "市场调研工具",
|
|
7
|
+
keywords: [
|
|
8
|
+
"竞品分析工具",
|
|
9
|
+
"竞品分析",
|
|
10
|
+
"竞品调研",
|
|
11
|
+
"竞品流量分析",
|
|
12
|
+
"竞品融资查询",
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
examples: [
|
|
16
|
+
{
|
|
17
|
+
label: "已上线 SaaS 竞品",
|
|
18
|
+
input: "竞品 URL https://linear.app",
|
|
19
|
+
expectedOutput: "产品概览、流量量级与趋势、定价与规模估算、创始团队、融资轮次、来源链接,以及每个维度的可信度。",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: "带关注点的竞品",
|
|
23
|
+
input: "竞品 URL https://www.notion.so,备注 关注定价与团队规模",
|
|
24
|
+
expectedOutput: "围绕定价与团队规模重点输出,并对缺失数据降低可信度而非编造。",
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
widget: {
|
|
28
|
+
urlLabel: "竞品网址",
|
|
29
|
+
urlPlaceholder: "https://competitor.com",
|
|
30
|
+
nameLabel: "竞品名称(可选)",
|
|
31
|
+
namePlaceholder: "例如 Linear",
|
|
32
|
+
notesLabel: "关注点(可选)",
|
|
33
|
+
notesPlaceholder: "想重点了解什么?例如定价、团队规模、增长渠道。",
|
|
34
|
+
inputHint: "仅基于公开信息调研,请填写竞品的公开官网地址。",
|
|
35
|
+
submit: "开始分析",
|
|
36
|
+
submitting: "提交中…",
|
|
37
|
+
running: "调研中…",
|
|
38
|
+
emptyTitle: "竞品档案会显示在这里",
|
|
39
|
+
emptyHint: "输入一个竞品网址,云端 Agent 会调研公开信息并生成结构化档案。",
|
|
40
|
+
runningTitle: "正在调研这个竞品",
|
|
41
|
+
runningHint: "Agent 正在读取官网并检索公开信号,整理流量、规模、团队和融资。通常需要 1-3 分钟。",
|
|
42
|
+
status: {
|
|
43
|
+
default: "调研中",
|
|
44
|
+
PENDING: "排队中",
|
|
45
|
+
STREAMING: "研究中",
|
|
46
|
+
AWAITING_INPUT: "分析中",
|
|
47
|
+
AWAITING_RESULT: "汇总结果中",
|
|
48
|
+
SUCCEEDED: "即将完成",
|
|
49
|
+
},
|
|
50
|
+
retry: "重试",
|
|
51
|
+
errors: {
|
|
52
|
+
invalidUrl: "请输入有效的竞品网址(含 https://)。",
|
|
53
|
+
submit: "提交失败,请检查网络后重试。",
|
|
54
|
+
task: "调研任务失败,请稍后重试。",
|
|
55
|
+
timeout: "调研超时,竞品信息可能较难获取,请稍后重试。",
|
|
56
|
+
schema: "返回结果格式异常,请重试。",
|
|
57
|
+
generic: "出现问题,请重试。",
|
|
58
|
+
},
|
|
59
|
+
noData: "暂无公开数据",
|
|
60
|
+
unknownCompetitor: "未识别竞品",
|
|
61
|
+
visitSite: "访问官网",
|
|
62
|
+
analyzeAnother: "分析另一个竞品",
|
|
63
|
+
disclaimerFallback:
|
|
64
|
+
"以上为基于公开信息的估算,可能不完整或滞后,非官方实时数据,请结合多方来源判断。",
|
|
65
|
+
confidence: {
|
|
66
|
+
label: "可信度",
|
|
67
|
+
low: "低",
|
|
68
|
+
medium: "中",
|
|
69
|
+
high: "高",
|
|
70
|
+
},
|
|
71
|
+
sections: {
|
|
72
|
+
overview: "产品概览",
|
|
73
|
+
traffic: "流量与增长",
|
|
74
|
+
businessScale: "业务规模",
|
|
75
|
+
team: "团队",
|
|
76
|
+
funding: "融资",
|
|
77
|
+
positioning: "定位与机会",
|
|
78
|
+
sources: "信息来源",
|
|
79
|
+
},
|
|
80
|
+
overview: {
|
|
81
|
+
category: "品类",
|
|
82
|
+
businessModel: "商业模式",
|
|
83
|
+
founded: "成立时间",
|
|
84
|
+
hq: "总部",
|
|
85
|
+
},
|
|
86
|
+
traffic: {
|
|
87
|
+
monthlyVisits: "月访问量(估算)",
|
|
88
|
+
trend: "增长趋势",
|
|
89
|
+
trendTitle: "近期流量趋势",
|
|
90
|
+
channels: "流量渠道",
|
|
91
|
+
geographies: "主要地区",
|
|
92
|
+
trendLabels: {
|
|
93
|
+
growing: "上升",
|
|
94
|
+
flat: "平稳",
|
|
95
|
+
declining: "下降",
|
|
96
|
+
unknown: "未知",
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
businessScale: {
|
|
100
|
+
pricing: "定价模式",
|
|
101
|
+
priceRange: "价格区间",
|
|
102
|
+
revenue: "营收(估算)",
|
|
103
|
+
employees: "员工规模",
|
|
104
|
+
segments: "目标客户",
|
|
105
|
+
customers: "代表客户",
|
|
106
|
+
},
|
|
107
|
+
team: {
|
|
108
|
+
teamSize: "团队规模",
|
|
109
|
+
founders: "创始团队",
|
|
110
|
+
keyPeople: "核心成员",
|
|
111
|
+
},
|
|
112
|
+
funding: {
|
|
113
|
+
totalRaised: "累计融资",
|
|
114
|
+
stage: "最新轮次",
|
|
115
|
+
amount: "金额",
|
|
116
|
+
date: "时间",
|
|
117
|
+
leadInvestors: "领投方",
|
|
118
|
+
investors: "投资方",
|
|
119
|
+
},
|
|
120
|
+
positioning: {
|
|
121
|
+
strengths: "优势",
|
|
122
|
+
weaknesses: "短板",
|
|
123
|
+
opportunities: "你的切入机会",
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
guide: {
|
|
127
|
+
visualAlt: {
|
|
128
|
+
hero: "竞品档案报告预览(配图待补)",
|
|
129
|
+
howToUse: "竞品分析使用流程示意(配图待补)",
|
|
130
|
+
result: "竞品档案结果解读示意(配图待补)",
|
|
131
|
+
},
|
|
132
|
+
howToUseKicker: "使用流程",
|
|
133
|
+
howToUse: "如何分析一个竞品",
|
|
134
|
+
howToUseSteps: [
|
|
135
|
+
"粘贴竞品的公开官网网址,可选填竞品名称和你重点关注的维度。",
|
|
136
|
+
"提交后,云端 Agent 会读取官网并检索公开信号,整理流量、规模、团队和融资。",
|
|
137
|
+
"结果以结构化档案返回:每个维度都带可信度,数据缺失时降级而非编造。",
|
|
138
|
+
"先看概览和流量趋势,再把“定位与机会”转成你的定位、定价或渠道假设。",
|
|
139
|
+
],
|
|
140
|
+
runtimeNote:
|
|
141
|
+
"调研由云端 Agent 完成,仅基于公开网页和检索的估算。页面只渲染结构化结果,不提供本地模板兜底。",
|
|
142
|
+
resultKicker: "结果解读",
|
|
143
|
+
resultGuidance: "如何看懂竞品档案",
|
|
144
|
+
guidanceBullets: [
|
|
145
|
+
"可信度标签决定权重:low 仅作线索,medium 可参考,high 才适合作为决策依据。",
|
|
146
|
+
"流量趋势比绝对数字更重要——上升说明在抢占心智,下降可能是切入窗口。",
|
|
147
|
+
"业务规模和融资帮你判断对手的资源厚度,以及你能否在细分人群上错位竞争。",
|
|
148
|
+
"“你的切入机会”是行动项:落到首页定位、定价策略、关键功能或首发渠道上。",
|
|
149
|
+
],
|
|
150
|
+
useCasesKicker: "适用场景",
|
|
151
|
+
useCases: "适合的场景",
|
|
152
|
+
useCasesIntro: "把一个竞品 URL 变成可执行的竞争情报,而不是零散搜索结果的堆砌。",
|
|
153
|
+
useCaseBullets: [
|
|
154
|
+
"进入新赛道前,快速摸清头部竞品的规模、资源和增长态势。",
|
|
155
|
+
"重写官网、定价页或冷启动文案前,先看清对手怎么定位、面向谁。",
|
|
156
|
+
"做竞品页、alternative 页或 vs 页之前,确认真实的比较对象和差异点。",
|
|
157
|
+
],
|
|
158
|
+
faqKicker: "常见问题",
|
|
159
|
+
faq: "常见问题",
|
|
160
|
+
faqItems: [
|
|
161
|
+
{
|
|
162
|
+
question: "数据是真实的吗?",
|
|
163
|
+
answer:
|
|
164
|
+
"是基于公开网页和检索的估算,不是官方实时数据。流量、营收、融资等可能滞后或缺失,每个维度都标注了可信度。",
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
question: "需要填什么?",
|
|
168
|
+
answer: "只需竞品的公开官网网址;可选填名称和你关注的维度,让结果更聚焦。",
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
question: "会处理私有或登录后的页面吗?",
|
|
172
|
+
answer: "不会。Agent 只读取公开页面和公开检索结果,不抓取私有、登录或付费墙后的内容。",
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
question: "拿到结果后该做什么?",
|
|
176
|
+
answer:
|
|
177
|
+
"用“定位与机会”里的行动项,去调整你的定位、定价、关键功能或首发渠道,并结合多方来源复核高影响决策。",
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
faqBoundaryTitle: "能力边界",
|
|
181
|
+
faqBoundaryBullets: [
|
|
182
|
+
"仅公开信息的估算,非官方实时数据。",
|
|
183
|
+
"冷门或信息稀少的竞品,部分维度可能为空。",
|
|
184
|
+
"高影响决策请结合多方来源人工复核。",
|
|
185
|
+
],
|
|
186
|
+
ctaHint: "拿到竞品档案后,下一步把它转成你的上市准备。",
|
|
187
|
+
ctaPrimary: "去做 GTM 准备清单",
|
|
188
|
+
ctaSecondary: "查看全部工具",
|
|
189
|
+
},
|
|
190
|
+
} as const;
|
|
191
|
+
|
|
192
|
+
export default competitorAnalysis;
|