@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,228 @@
|
|
|
1
|
+
const tarotReading = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "三张牌塔罗占卜",
|
|
4
|
+
displayTitle: "三张牌塔罗占卜",
|
|
5
|
+
description: "输入一个感情、事业、金钱或选择问题,从完整 78 张韦特塔罗牌中抽取三张,得到过去、现在、未来的反思式塔罗解读和下一步建议。",
|
|
6
|
+
intro: "把模糊的问题整理成一段可以继续思考的塔罗牌解读。三张牌会连接成故事线,提醒你当前模式、可能走向和可调整的一步。",
|
|
7
|
+
category: "灵感与内容工具",
|
|
8
|
+
keywords: [
|
|
9
|
+
"三张牌占卜",
|
|
10
|
+
"塔罗牌占卜",
|
|
11
|
+
"AI 塔罗占卜",
|
|
12
|
+
"在线塔罗",
|
|
13
|
+
"感情塔罗",
|
|
14
|
+
],
|
|
15
|
+
inputSignal: "你的问题 + 问题类型",
|
|
16
|
+
outputSignal: "三张牌解读 + 整体故事 + 下一步建议",
|
|
17
|
+
boundarySignal: "本地生成,适合娱乐和自我反思;不提供法律、医疗、财务或固定未来承诺",
|
|
18
|
+
},
|
|
19
|
+
examples: [
|
|
20
|
+
{
|
|
21
|
+
label: "感情关系",
|
|
22
|
+
input: "我和对方最近沟通变少,这段关系接下来应该怎么处理?",
|
|
23
|
+
expectedOutput: "输出过去、现在、未来三张牌的故事线,并给出沟通或边界上的下一步建议。",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: "事业选择",
|
|
27
|
+
input: "我应该继续留在现在的岗位,还是开始准备新的方向?",
|
|
28
|
+
expectedOutput: "把当前资源、犹豫点和可能趋势拆开解释,避免给出绝对 yes/no。",
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
guide: {
|
|
32
|
+
heroCards: ["Past", "Now", "Next"],
|
|
33
|
+
heroDeck: "DECK · WAITE TAROT · 78 · 正位 + 逆位",
|
|
34
|
+
heroReady: "READY · ⌘ + ↵ TO BEGIN",
|
|
35
|
+
heroTitle: "请输入你想要占卜的问题",
|
|
36
|
+
heroIntro:
|
|
37
|
+
"像打开一张安静的牌桌:先写下问题,选择问题类型,再抽三张牌看见过去、现在、未来和下一步。",
|
|
38
|
+
workspaceHint:
|
|
39
|
+
"输入一个具体问题,选择问题类型,然后从完整 78 张韦特塔罗牌里抽三张。解读会把过去、现在和未来连成故事,并给出一条可执行的调整建议。",
|
|
40
|
+
workspaceBadge: "三张牌解读",
|
|
41
|
+
valueEyebrow: "你可以得到什么",
|
|
42
|
+
valueTitle: "不是一句玄学答案,而是一段能继续思考的故事线",
|
|
43
|
+
valueIntro:
|
|
44
|
+
"适合用来做自我反思、关系沟通前的梳理、事业选择的轻量复盘,也适合把塔罗流量承接成可分享内容。",
|
|
45
|
+
valueItems: [
|
|
46
|
+
{
|
|
47
|
+
title: "过去、现在、未来三张牌",
|
|
48
|
+
body: "每张牌都带位置含义、正逆位解释和关键词,帮助你看见问题的起点、核心和可能走向。",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
title: "整组牌的故事",
|
|
52
|
+
body: "不把三张牌割裂成碎片,而是连接成一段有前因、现在支点和调整空间的叙事。",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
title: "可复制的下一步",
|
|
56
|
+
body: "结果会给出一个实际行动或反思问题,方便复制到笔记、社群互动或私域内容里。",
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
flowEyebrow: "怎么使用",
|
|
60
|
+
flowTitle: "让问题越具体,塔罗解读越有用",
|
|
61
|
+
flowIntro:
|
|
62
|
+
"这版不是预测固定未来,而是用三牌牌阵帮助你梳理当前模式。问题越贴近真实情境,建议越能落到行动。",
|
|
63
|
+
flowHint: "结果可复制,适合做内容灵感和互动素材。",
|
|
64
|
+
flowItems: [
|
|
65
|
+
{
|
|
66
|
+
title: "写下具体问题",
|
|
67
|
+
body: "比起“我会幸福吗”,更适合写“这段关系最近沟通变少,我现在应该先看见什么”。",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
title: "选择问题类型",
|
|
71
|
+
body: "感情、事业、金钱、选择和自我探索会使用不同的解释框架,避免所有问题都得到同一种话术。",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
title: "把结果当作镜子",
|
|
75
|
+
body: "阅读整体故事和调整建议,再判断哪一句真的对应你的处境,哪些还需要事实验证。",
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
marketingEyebrow: "营销引流用法",
|
|
79
|
+
marketingTitle: "把塔罗流量承接成社媒互动和私域素材",
|
|
80
|
+
marketingIntro:
|
|
81
|
+
"塔罗牌天然适合低门槛互动,但要避免过度承诺。这个页面把结果写成温和、可分享、可继续讨论的内容。",
|
|
82
|
+
marketingItems: [
|
|
83
|
+
{
|
|
84
|
+
title: "评论区互动",
|
|
85
|
+
body: "把示例问题改成“抽一张你当前的行动建议”,引导用户留言问题,再用结果继续对话。",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: "私域引导",
|
|
89
|
+
body: "用户拿到三牌结果后,可以引导他们保存、截图或进入下一步咨询,但不要承诺固定结果。",
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
title: "内容选题",
|
|
93
|
+
body: "把常见问题类型整理成短视频、小红书笔记、社群日签或邮件主题,提高复访和分享概率。",
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
faqEyebrow: "常见问题",
|
|
97
|
+
faqTitle: "使用前需要知道的边界",
|
|
98
|
+
faqIntro:
|
|
99
|
+
"塔罗适合启发和自我整理,不适合替代专业判断。页面会把边界放在结果前后,而不是藏在最后。",
|
|
100
|
+
faqItems: [
|
|
101
|
+
{
|
|
102
|
+
question: "这是完整 78 张塔罗牌吗?",
|
|
103
|
+
answer:
|
|
104
|
+
"是。当前抽牌池包含 22 张大阿尔卡那与 56 张小阿尔卡那,并使用经典韦特牌面作为正面图像。",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
question: "能问感情或复合问题吗?",
|
|
108
|
+
answer:
|
|
109
|
+
"可以,但结果会强调沟通、边界、互相回应和真实行为,不会保证复合、结婚或对方一定怎么想。",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
question: "金钱和事业问题可以直接照做吗?",
|
|
113
|
+
answer:
|
|
114
|
+
"不建议。结果只能作为反思和决策辅助,涉及投资、借贷、合同、职业重大选择时仍需要事实验证和专业建议。",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
question: "我的问题会被保存吗?",
|
|
118
|
+
answer:
|
|
119
|
+
"当前版本在浏览器本地生成结果,不调用云端 Agent,也不会把问题提交到后端。请仍然避免输入敏感个人信息。",
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
boundaryEyebrow: "支持与限制",
|
|
123
|
+
boundaryTitle: "适合作为引导,不适合作为保证",
|
|
124
|
+
boundaryIntro: "这能让页面更适合长期引流,也更不容易因为玄学承诺造成信任风险。",
|
|
125
|
+
boundaryItems: [
|
|
126
|
+
{
|
|
127
|
+
title: "支持",
|
|
128
|
+
body: "感情、事业、金钱、选择、自我探索和一般问题的三牌反思式解读。",
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
title: "不支持",
|
|
132
|
+
body: "不处理医疗、法律、投资建议、死亡疾病预测、具体彩票或保证性结果。",
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
title: "失败恢复",
|
|
136
|
+
body: "如果结果太泛,改写成更具体的问题:包含对象、最近发生的事、你正在犹豫的选择。",
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
ctaHint: "想把塔罗互动继续变成账号内容?先整理你的社媒主页和下一步转化入口。",
|
|
140
|
+
ctaPrimary: "生成社媒主页套件",
|
|
141
|
+
ctaSecondary: "试试产品取名器",
|
|
142
|
+
},
|
|
143
|
+
widget: {
|
|
144
|
+
questionLabel: "你的问题",
|
|
145
|
+
questionHint: "至少写一句具体情境",
|
|
146
|
+
questionPlaceholder: "例如:我的事业发展方向如何?",
|
|
147
|
+
typeLabel: "问题类型",
|
|
148
|
+
privacyHint:
|
|
149
|
+
"当前版本在浏览器本地生成结果,不保存问题。请不要输入身份证、联系方式、客户资料或其它敏感信息。",
|
|
150
|
+
drawButton: "开始占卜",
|
|
151
|
+
quickTitle: "创业者最近常问",
|
|
152
|
+
quickRefresh: "换一批",
|
|
153
|
+
quickQuestions: [
|
|
154
|
+
"产品现在最该解决什么?", "该坚持方向,还是调整定位?",
|
|
155
|
+
"本月最适合从哪获客?", "用户为什么没被产品打动?",
|
|
156
|
+
"这次发布最容易卡在哪?", "该先做品牌、内容还是增长?",
|
|
157
|
+
"这个产品名值得保留吗?", "该先做社区还是内容营销?",
|
|
158
|
+
"现在适合融资吗?", "产品最该改善哪个卖点?",
|
|
159
|
+
"该继续打磨还是开始推广?", "下一阶段该投入什么资源?",
|
|
160
|
+
],
|
|
161
|
+
sampleTitle: "示例问题",
|
|
162
|
+
sampleQuestions: [
|
|
163
|
+
{
|
|
164
|
+
label: "感情",
|
|
165
|
+
value: "这段关系最近沟通变少,我现在应该先看见什么?",
|
|
166
|
+
type: "love",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
label: "事业",
|
|
170
|
+
value: "我应该继续留在现在的岗位,还是开始准备新的方向?",
|
|
171
|
+
type: "career",
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
label: "选择",
|
|
175
|
+
value: "面对这个机会,我最需要确认的风险是什么?",
|
|
176
|
+
type: "decision",
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
questionTypes: [
|
|
180
|
+
{ value: "general", label: "一般问题", description: "适合还没分类的困惑" },
|
|
181
|
+
{ value: "love", label: "感情关系", description: "关注沟通、边界与回应" },
|
|
182
|
+
{ value: "career", label: "事业工作", description: "关注资源、节奏与执行" },
|
|
183
|
+
{ value: "money", label: "金钱资源", description: "关注风险、周期与选择" },
|
|
184
|
+
{ value: "decision", label: "选择判断", description: "关注标准与后果" },
|
|
185
|
+
{ value: "self", label: "自我探索", description: "关注模式与调整" },
|
|
186
|
+
],
|
|
187
|
+
previewEyebrow: "抽牌前",
|
|
188
|
+
previewTitle: "你的三张牌会出现在这里",
|
|
189
|
+
previewBody:
|
|
190
|
+
"抽牌后,你会看到过去、现在和未来三张牌,以及每张牌的主题、正逆位解释、整体故事和主要调整点。",
|
|
191
|
+
boundaryHint:
|
|
192
|
+
"塔罗结果适合娱乐和自我反思,不应替代心理咨询、法律、医疗、投资或其它专业建议。",
|
|
193
|
+
ritual: {
|
|
194
|
+
focusPrompt: "洗牌中...请在心中默念所想问题",
|
|
195
|
+
completeShuffle: "完成洗牌",
|
|
196
|
+
shuffling: "Shuffling",
|
|
197
|
+
shufflingTitle: "洗牌中,请想着你的问题",
|
|
198
|
+
shufflingHint: "牌组正在打散。稍等片刻,然后从牌阵中选择三张牌。",
|
|
199
|
+
choose: "Choose · 3 cards",
|
|
200
|
+
chooseTitle: "从牌阵里选择三张牌",
|
|
201
|
+
chooseHint: "已选择 {count} / 3。点击后牌会在原位置微微抬起,三张选完后只保留你的三张牌。",
|
|
202
|
+
emptySlot: "等待",
|
|
203
|
+
reveal: "Reveal",
|
|
204
|
+
revealTitle: "你的三张牌正在显现",
|
|
205
|
+
revealHint: "三张牌会短暂停留,随后进入完整解读。",
|
|
206
|
+
},
|
|
207
|
+
reading: {
|
|
208
|
+
cardsTitle: "Selected cards",
|
|
209
|
+
chatTitle: "AI 牌意解读",
|
|
210
|
+
},
|
|
211
|
+
resultEyebrow: "你的塔罗牌解读",
|
|
212
|
+
resultTitle: "三张牌故事线",
|
|
213
|
+
storyTitle: "整体故事",
|
|
214
|
+
adjustmentTitle: "主要调整",
|
|
215
|
+
copy: "复制完整解读",
|
|
216
|
+
copied: "已复制完整解读",
|
|
217
|
+
reset: "重新占卜",
|
|
218
|
+
orientation: {
|
|
219
|
+
upright: "正位",
|
|
220
|
+
reversed: "逆位",
|
|
221
|
+
},
|
|
222
|
+
errors: {
|
|
223
|
+
question: "请写下一个更具体的问题,不要只输入测试、数字或单个词。",
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
} as const;
|
|
227
|
+
|
|
228
|
+
export default tarotReading;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
const twitterGifDownloader = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "Twitter / X GIF 下载器:公开帖子动图保存",
|
|
4
|
+
description: "粘贴公开 X 或 Twitter 帖子链接,预览媒体后下载真正的 GIF 或 MP4;保存前先了解链接、访问与复用边界。",
|
|
5
|
+
intro: "把公开 X 或 Twitter 帖子中的动图保存为可复用文件。粘贴帖子链接、预览可转换媒体后,在可用时下载 GIF 或 MP4。",
|
|
6
|
+
category: "社媒工具",
|
|
7
|
+
keywords: [
|
|
8
|
+
"Twitter GIF downloader",
|
|
9
|
+
"download Twitter GIF",
|
|
10
|
+
"X GIF downloader",
|
|
11
|
+
"save GIF from Twitter",
|
|
12
|
+
"推特动图下载",
|
|
13
|
+
],
|
|
14
|
+
inputSignal: "公开 twitter.com 或 x.com 帖子链接",
|
|
15
|
+
outputSignal: "GIF 预览、.gif 文件、MP4 源文件",
|
|
16
|
+
boundarySignal: "私密、删除、受限或登录后内容通常无法解析",
|
|
17
|
+
},
|
|
18
|
+
widget: {
|
|
19
|
+
workspaceTitle: "粘贴 Tweet 链接",
|
|
20
|
+
workspaceIntro: "粘贴公开 X/Twitter 帖子链接,保存可预览的 GIF,并保留 MP4 源文件。",
|
|
21
|
+
urlLabel: "Tweet 或 X 帖子 URL",
|
|
22
|
+
submit: "下载 Twitter GIF",
|
|
23
|
+
working: "正在处理",
|
|
24
|
+
idleTitle: "等待链接",
|
|
25
|
+
idleBody: "粘贴一条公开 Tweet 或 X 帖子链接后,这里会显示解析进度、GIF 预览、GIF 下载和 MP4 下载操作。",
|
|
26
|
+
lookupTitle: "正在查找媒体",
|
|
27
|
+
engineTitle: "正在准备转换",
|
|
28
|
+
convertTitle: "正在转换 GIF",
|
|
29
|
+
loadingBody: "较长或较大的动图可能需要几十秒。请保持页面打开。",
|
|
30
|
+
doneTitle: "GIF 已准备好",
|
|
31
|
+
errorTitle: "无法完成转换",
|
|
32
|
+
invalidUrl: "请输入包含 /status/ 的公开 twitter.com 或 x.com 帖子链接。",
|
|
33
|
+
lookupError: "媒体解析服务暂时不可用。",
|
|
34
|
+
noMedia: "这条帖子没有可转换的视频或 GIF 媒体,或内容不是公开可访问。",
|
|
35
|
+
conversionError: "转换失败。请换一条公开 GIF 帖子,或下载 MP4 源文件后本地转换。",
|
|
36
|
+
tryAgain: "重新尝试",
|
|
37
|
+
downloadGif: "下载 GIF",
|
|
38
|
+
downloadMp4: "下载 MP4",
|
|
39
|
+
previewAlt: "从 Tweet 媒体转换得到的 GIF 预览",
|
|
40
|
+
},
|
|
41
|
+
guide: {
|
|
42
|
+
heroVisualAlt: "公开 X 帖子链接转换成 GIF 和 MP4 下载文件的 Hero 背景图",
|
|
43
|
+
workspaceHeading: "从公开 X 或 Twitter 帖子下载 GIF",
|
|
44
|
+
workspaceHint: "粘贴带 /status/ 的公开帖子链接,预览可转换媒体后保存 GIF 或 MP4。私密、受限、已删除或没有媒体的帖子无法使用。",
|
|
45
|
+
workspaceBadge: "公开链接 → GIF 或 MP4",
|
|
46
|
+
resultHeading: "你会得到什么",
|
|
47
|
+
resultBody: [
|
|
48
|
+
"粘贴公开 X/Twitter 帖子链接后,页面会查找帖子里的动图媒体,显示处理状态,并在成功后提供 GIF 预览、.gif 文件下载和可用时的 MP4 下载。",
|
|
49
|
+
"很多用户搜索 Twitter GIF downloader 或 download Twitter GIF,其实是想把平台里的动图保存成真正可复用的文件。Tomako 把链接识别、媒体预览、格式选择和下载动作放在同一个工作台里,你可以先确认动图内容,再决定保存 GIF 还是保留更小的 MP4。",
|
|
50
|
+
],
|
|
51
|
+
resultVisualAlt: "公开帖子链接转换成 GIF 和 MP4 下载文件的素材包视觉",
|
|
52
|
+
supportVisualAlt: "公开链接可下载、受限链接无法解析的边界说明视觉",
|
|
53
|
+
standardsHeading: "好的 Twitter GIF 下载器应该具备什么",
|
|
54
|
+
standardsBody: [
|
|
55
|
+
"选择同类工具时,先看它能不能同时识别 twitter.com 和 x.com 公开帖子链接、能不能先预览再下载、是否提供 GIF 与 MP4 两种保存方式,以及失败原因是否说得明白。",
|
|
56
|
+
"Tomako 把公开链接识别、预览、格式选择和转换放在同一个工作台里。你不需要自己寻找媒体地址,也不必处理浏览器插件、脚本或转换参数。",
|
|
57
|
+
"请只使用你有权访问和保存的公开帖子链接。下载后的 GIF 或 MP4 是否能复用,取决于原内容版权、平台规则和你的使用场景。",
|
|
58
|
+
],
|
|
59
|
+
comparisonHeading: "为什么比手动找视频地址更省事",
|
|
60
|
+
comparisonBefore: "常见麻烦",
|
|
61
|
+
comparisonAfter: "Tomako 处理方式",
|
|
62
|
+
comparisonItems: [
|
|
63
|
+
{
|
|
64
|
+
pain: "需要自己从页面源码或开发者工具里找视频地址。",
|
|
65
|
+
tomako: "粘贴公开 twitter.com 或 x.com 帖子链接后,页面会自动寻找可转换媒体。",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
pain: "下载前不知道保存的是 GIF、视频,还是无效文件。",
|
|
69
|
+
tomako: "成功后先显示 GIF 预览,再提供 GIF 和 MP4 下载动作。",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
pain: "失败时只看到空结果,不知道该换链接还是重试。",
|
|
73
|
+
tomako: "结果区会区分链接无效、没有媒体、受限内容或转换失败。",
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
resultGuidanceHeading: "下载失败或拿到结果后怎么处理",
|
|
77
|
+
useCaseVisualAlt: "GIF、MP4 和素材归档包组成的下载结果使用视觉",
|
|
78
|
+
resultGuidanceItems: [
|
|
79
|
+
{
|
|
80
|
+
title: "先确认链接是否公开",
|
|
81
|
+
body: "如果页面提示无法解析,先检查链接是否来自 twitter.com 或 x.com、是否包含 /status/,帖子是否公开可访问,媒体是否仍然存在。",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
title: "按用途选择格式",
|
|
85
|
+
body: "需要跨工具粘贴、演示和快速分享时保存 GIF;需要体积更小、画质更稳或继续剪辑时保留 MP4。",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: "复用前确认权限",
|
|
89
|
+
body: "下载文件不等于获得版权授权。用于广告、商用发布或公开素材库前,请确认原作者授权和目标平台规则。",
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
useCases: "适用场景",
|
|
93
|
+
useCaseItems: [
|
|
94
|
+
"保存公开 Tweet 或 X 帖子里的动图,用于素材库、演示文稿或社媒复盘。",
|
|
95
|
+
"把 Twitter/X 平台内嵌的 GIF 动画转成通用 GIF 文件,方便在其他工具里继续使用。",
|
|
96
|
+
"同时保留 MP4 源文件,用于更小体积、更清晰的视频型素材。",
|
|
97
|
+
"整理公开用户反馈、竞品发布或营销案例时,把动图素材保存到本地资料库。"
|
|
98
|
+
],
|
|
99
|
+
faq: "常见问题",
|
|
100
|
+
faqItems: [
|
|
101
|
+
{
|
|
102
|
+
question: "为什么 Twitter GIF 需要转换?",
|
|
103
|
+
answer:
|
|
104
|
+
"Twitter/X 通常把 GIF 作为 MP4 动画视频分发。下载器需要先拿到视频源,再转换成真正的 .gif 文件。",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
question: "支持 x.com 链接吗?",
|
|
108
|
+
answer:
|
|
109
|
+
"支持公开 x.com 和 twitter.com 帖子链接。链接需要包含 /status/ 和帖子 ID,且帖子媒体必须能公开访问。",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
question: "可以只下载 MP4,不转成 GIF 吗?",
|
|
113
|
+
answer:
|
|
114
|
+
"可以。成功解析后,页面会同时提供 GIF 下载和 MP4 源文件下载。MP4 通常体积更小,也更适合剪辑或长期归档。",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
question: "支持私密或登录后可见的帖子吗?",
|
|
118
|
+
answer:
|
|
119
|
+
"不支持。请使用公开可访问的 X/Twitter 帖子链接。私密、删除、受限或登录后可见内容通常无法解析,也不应该绕过原作者或平台的访问限制。",
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
question: "为什么有些帖子无法下载?",
|
|
123
|
+
answer:
|
|
124
|
+
"私密、删除、受限、没有媒体、解析服务被限流,或 X 平台改变公开数据结构时都可能失败。可以先确认帖子是公开动图,再换一条链接重试。",
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
question: "下载后的 GIF 可以直接商用吗?",
|
|
128
|
+
answer:
|
|
129
|
+
"工具只负责把你提供的公开媒体转换为文件,不授予内容版权。公开发布、广告投放或商业使用前,请确认你有权使用原内容,并遵守 X/Twitter 和目标平台规则。",
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
ctaPrimary: "制作 OG 图片",
|
|
133
|
+
ctaSecondary: "返回全部工具",
|
|
134
|
+
ctaHint: "当你需要为分享链接制作统一的静态视觉时,可以把文案、配色和视觉方向整理成 OG 图片。",
|
|
135
|
+
},
|
|
136
|
+
} as const;
|
|
137
|
+
|
|
138
|
+
export default twitterGifDownloader;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
const userInterviewInsightReportGenerator = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "用户访谈洞察报告生成器",
|
|
4
|
+
description: "把多份访谈记录综合成带证据边界的洞察报告,输出主题聚类、痛点排序、机会地图、MVP 假设、定价信号、样本限制和下一步实验。",
|
|
5
|
+
intro: "把多场访谈从“很多纪要”变成可讨论的产品决策材料。重点不是再次总结每个人说什么,而是识别重复模式、矛盾、证据强度和下一步实验。",
|
|
6
|
+
category: "用户研究工具",
|
|
7
|
+
keywords: [
|
|
8
|
+
"用户访谈分析",
|
|
9
|
+
"用户研究洞察",
|
|
10
|
+
"访谈报告生成器",
|
|
11
|
+
"用户访谈总结",
|
|
12
|
+
"产品机会分析",
|
|
13
|
+
],
|
|
14
|
+
inputSignal: "多份访谈记录",
|
|
15
|
+
outputSignal: "洞察报告 + 机会地图",
|
|
16
|
+
boundarySignal: "小样本研究草案,不是市场结论",
|
|
17
|
+
},
|
|
18
|
+
guide: {
|
|
19
|
+
workspaceHeading: "把多场访谈合成为带证据边界的决策报告",
|
|
20
|
+
workspaceHint:
|
|
21
|
+
"粘贴多份结构化访谈记录,Tomako 会生成主题聚类、痛点排序、机会地图、MVP 假设、定价信号、样本限制和下一步实验。",
|
|
22
|
+
workspaceBadge: "多场综合分析",
|
|
23
|
+
outputs: "多场访谈综合后会看到什么",
|
|
24
|
+
outputItems: [
|
|
25
|
+
{
|
|
26
|
+
title: "主题聚类",
|
|
27
|
+
body: "把多场访谈中的重复问题、替代方案、触发场景和用户语言聚到一起。",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: "证据强度",
|
|
31
|
+
body: "区分高置信、中置信、低置信和互相矛盾的发现,避免把小样本说成结论。",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
title: "机会地图",
|
|
35
|
+
body: "把痛点和现有方案缺口转成可讨论的产品机会和优先级。",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: "下一步实验",
|
|
39
|
+
body: "把洞察落到 MVP、定价测试、落地页文案或下一轮访谈计划。",
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
supportHeading: "从多份记录里找重复模式",
|
|
43
|
+
supportItems: [
|
|
44
|
+
"你已经整理出 3 份以上结构化访谈记录。",
|
|
45
|
+
"你需要判断哪些痛点重复出现,哪些只是个例。",
|
|
46
|
+
"你要把访谈证据转成 MVP 范围、定价假设或下一轮实验。",
|
|
47
|
+
"你需要向团队说明:我们听到了什么、证据有多强、下一步做什么。",
|
|
48
|
+
],
|
|
49
|
+
unsupportedHeading: "不要把小样本包装成市场结论",
|
|
50
|
+
unsupportedItems: [
|
|
51
|
+
"不能替代问卷、行为数据、付款测试或市场规模估算。",
|
|
52
|
+
"不能把 2-3 个样本包装成确定的市场结论。",
|
|
53
|
+
"不能自动判断产品一定值得做,仍需原型、转化或付费实验验证。",
|
|
54
|
+
"如果记录太短、只有测试文本或无法区分多份记录,页面会阻止提交。",
|
|
55
|
+
],
|
|
56
|
+
failureHeading: "证据不足时怎么处理",
|
|
57
|
+
failureItems: [
|
|
58
|
+
"任务提交失败时,输入会保留,补充记录后可以重试。",
|
|
59
|
+
"后台没有返回结构化结果时,页面会展示任务号用于排查。",
|
|
60
|
+
"如果返回结果属于其他工具或结构不匹配,页面不会展示伪成功报告。",
|
|
61
|
+
"证据不足时,结果应写入 sampleLimitations、missingInfo 和 reviewChecklist。",
|
|
62
|
+
],
|
|
63
|
+
resultUseHeading: "把洞察转成下一步实验",
|
|
64
|
+
resultUseItems: [
|
|
65
|
+
"先检查每个主题是否能追溯到多份访谈证据。",
|
|
66
|
+
"把矛盾发现和样本限制保留在决策材料里,不要只挑支持预期的内容。",
|
|
67
|
+
"把高置信洞察转成最小实验,而不是直接进入完整产品路线图。",
|
|
68
|
+
"用 missingInfo 规划下一轮访谈或补充数据。",
|
|
69
|
+
],
|
|
70
|
+
whyTomakoHeading: "为什么不用手动贴便利贴",
|
|
71
|
+
whyTomakoItems: [
|
|
72
|
+
{
|
|
73
|
+
title: "重视证据强度",
|
|
74
|
+
body: "报告会把重复证据、矛盾信号、样本限制和未知问题拆开。",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
title: "连接到产品决策",
|
|
78
|
+
body: "输出不止是总结,还会落到机会、MVP 假设、定价信号和下一步实验。",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
title: "保留小样本边界",
|
|
82
|
+
body: "不会把访谈综合包装成统计结论,适合作为产品探索和实验设计输入。",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
title: "减少手动归类",
|
|
86
|
+
body: "多份记录里的痛点、替代方案和用户语言会被整理成稳定结构,便于团队讨论。",
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
standardHeading: "好洞察报告必须保留什么",
|
|
90
|
+
standardItems: [
|
|
91
|
+
"每个主题都要能追溯到访谈证据。",
|
|
92
|
+
"矛盾和样本限制必须保留,不应被平均掉。",
|
|
93
|
+
"建议要落到下一步实验,而不是宽泛路线图。",
|
|
94
|
+
"结果必须可复制、可复核、可交接,并保留任务号。",
|
|
95
|
+
],
|
|
96
|
+
faq: "常见问题",
|
|
97
|
+
faqItems: [
|
|
98
|
+
{
|
|
99
|
+
question: "多少场访谈才适合综合分析?",
|
|
100
|
+
answer:
|
|
101
|
+
"3 场可以看早期方向,5-10 场更适合看重复模式。少于 3 场时应明确标记为低置信方向,而不是结论。",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
question: "这能替代问卷或数据分析吗?",
|
|
105
|
+
answer:
|
|
106
|
+
"不能。访谈适合解释为什么和如何发生,不适合单独估算比例或市场规模。比例问题需要问卷、行为数据或实验验证。",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
question: "报告里的 MVP 建议可以直接照做吗?",
|
|
110
|
+
answer:
|
|
111
|
+
"建议把它当成下一步实验设计。高置信洞察可以影响优先级,但仍需要原型、支付、转化或使用行为验证。",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
question: "如果访谈记录格式很乱,会影响结果吗?",
|
|
115
|
+
answer:
|
|
116
|
+
"会。记录越清楚区分事实、原话、推断和代价,综合结果越可复核。格式混乱时建议先用单场记录整理工具清洗。",
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
ctaPrimary: "生成访谈提纲",
|
|
120
|
+
ctaSecondary: "整理单场记录",
|
|
121
|
+
ctaHint:
|
|
122
|
+
"还没有访谈记录时,先生成访谈提纲;已有单场转写时,先整理成结构化记录。",
|
|
123
|
+
heroVisualAlt: "团队把多场访谈记录聚类成机会地图和实验计划的插画。",
|
|
124
|
+
supportVisualAlt: "多份访谈证据记录被输入到洞察综合工作区的插画。",
|
|
125
|
+
failureVisualAlt: "单个薄弱故事和多份证据主题被分开标记的插画。",
|
|
126
|
+
resultUseVisualAlt: "团队把访谈洞察主题转成下一步实验卡片的插画。",
|
|
127
|
+
standardVisualAlt: "洞察报告保留证据强度、矛盾信号和样本限制的插画。",
|
|
128
|
+
hero: {
|
|
129
|
+
label: "Evidence synthesis",
|
|
130
|
+
cards: ["聚类重复主题", "标记证据强度", "输出下一步实验"],
|
|
131
|
+
signals: ["痛点排序", "机会地图", "MVP 建议"],
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
widget: {
|
|
135
|
+
formTitle: "访谈记录集合",
|
|
136
|
+
formHint:
|
|
137
|
+
"粘贴多份结构化访谈记录。每份记录之间可以用 ---、Record 1 或空行分隔;小样本结果只能作为方向和实验假设。",
|
|
138
|
+
recordsLabel: "多份访谈记录",
|
|
139
|
+
recordsPlaceholder:
|
|
140
|
+
"粘贴 3-10 份访谈记录。例如:Record 1: Participant... Pain... Alternatives... Buying signal... --- Record 2...",
|
|
141
|
+
advancedTitle: "补充研究目标",
|
|
142
|
+
advancedHint: "这些信息帮助结果聚焦要支持的产品决策。",
|
|
143
|
+
researchGoalLabel: "本轮研究目标",
|
|
144
|
+
researchGoalPlaceholder:
|
|
145
|
+
"例如:判断独立开发者上线设计物料工具的 MVP 应该先做哪类发布物料。",
|
|
146
|
+
decisionLabel: "需要支持的产品决策",
|
|
147
|
+
decisionPlaceholder:
|
|
148
|
+
"例如:是否先做 Product Hunt / 社媒 launch kit,以及按次收费是否成立。",
|
|
149
|
+
generate: "生成洞察报告",
|
|
150
|
+
generating: "正在综合",
|
|
151
|
+
reset: "重置",
|
|
152
|
+
copy: "复制 Markdown",
|
|
153
|
+
copied: "已复制",
|
|
154
|
+
workspaceVisualTitle: "综合不是把纪要再总结一遍",
|
|
155
|
+
workspaceVisualBody:
|
|
156
|
+
"右侧预览展示的是多份记录、主题聚类、证据强度和机会地图。结果会保留矛盾和样本限制,帮助你决定下一步实验。",
|
|
157
|
+
workspaceVisualAlt: "桌面上有多份访谈记录、主题聚类图和机会地图的洞察综合工作区插画。",
|
|
158
|
+
workspaceVisualItems: ["提交多份记录", "综合主题和证据", "检查后展示和复制"],
|
|
159
|
+
status: {
|
|
160
|
+
idle: "等待输入",
|
|
161
|
+
submitting: "正在提交",
|
|
162
|
+
running: "Tomako 正在综合",
|
|
163
|
+
awaitingResult: "等待结构化结果",
|
|
164
|
+
done: "结果已生成",
|
|
165
|
+
error: "需要处理",
|
|
166
|
+
},
|
|
167
|
+
resultPendingTitle: "正在综合访谈洞察",
|
|
168
|
+
resultPendingHint:
|
|
169
|
+
"Tomako 会提取模式、矛盾、样本限制和下一步实验。请保持页面打开。",
|
|
170
|
+
resultReady: "结构化洞察报告",
|
|
171
|
+
fallbackReportTitle: "访谈洞察报告",
|
|
172
|
+
taskId: "任务号:{taskId}",
|
|
173
|
+
executiveSummary: "执行摘要",
|
|
174
|
+
participantSegments: "用户分群",
|
|
175
|
+
themeClusters: "主题聚类",
|
|
176
|
+
evidence: "证据",
|
|
177
|
+
painPointRanking: "痛点排序",
|
|
178
|
+
alternativeMap: "替代方案地图",
|
|
179
|
+
evidenceStrength: "证据强度",
|
|
180
|
+
opportunityMap: "机会地图",
|
|
181
|
+
mvpRecommendation: "MVP 建议",
|
|
182
|
+
pricingSignals: "定价信号",
|
|
183
|
+
messagingSignals: "用户语言 / 定位信号",
|
|
184
|
+
nextExperiments: "下一步实验",
|
|
185
|
+
risksAndUnknowns: "风险和未知",
|
|
186
|
+
sampleLimitations: "样本限制",
|
|
187
|
+
missingInfo: "缺失信息",
|
|
188
|
+
reviewChecklist: "人工复核清单",
|
|
189
|
+
confidence: "置信度",
|
|
190
|
+
noEvidence: "当前记录里没有找到足够证据,建议补充记录或回到单场记录检查。",
|
|
191
|
+
fieldErrors: {
|
|
192
|
+
recordsText:
|
|
193
|
+
"请粘贴多份可区分的访谈记录,至少能看出不同受访者、痛点、原话、替代方案或信号。",
|
|
194
|
+
},
|
|
195
|
+
errors: {
|
|
196
|
+
validation: {
|
|
197
|
+
title: "请粘贴更多结构化访谈记录",
|
|
198
|
+
body: "综合分析需要跨记录比较。测试文本、过短内容或无法区分多份记录的输入不会提交。",
|
|
199
|
+
},
|
|
200
|
+
submitFailed: {
|
|
201
|
+
title: "任务提交失败",
|
|
202
|
+
body: "生成任务没有成功创建。请保留输入内容,稍后重试或检查任务服务。",
|
|
203
|
+
},
|
|
204
|
+
taskFailed: {
|
|
205
|
+
title: "生成任务失败",
|
|
206
|
+
body: "任务执行失败,没有可展示的结构化报告。请用任务号排查日志。",
|
|
207
|
+
},
|
|
208
|
+
resultTimeout: {
|
|
209
|
+
title: "等待结果超时",
|
|
210
|
+
body: "任务可能仍在运行,但页面在限定时间内没有拿到结构化结果。",
|
|
211
|
+
},
|
|
212
|
+
wrongResultType: {
|
|
213
|
+
title: "结果类型不匹配",
|
|
214
|
+
body: "后台返回了其他工具的结果,页面不会把错误结果展示为成功。",
|
|
215
|
+
},
|
|
216
|
+
invalidResultSchema: {
|
|
217
|
+
title: "结果结构不合法",
|
|
218
|
+
body: "后台返回了结果,但结构不符合页面可展示格式,需要修正生成输出。",
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
} as const;
|
|
223
|
+
|
|
224
|
+
export default userInterviewInsightReportGenerator;
|