@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;
|