@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,302 @@
|
|
|
1
|
+
const emailTemplateGenerator = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "郵件模板生成器",
|
|
4
|
+
description: "輸入營銷或高頻交易郵件需求,由在線 Agent 生成 MJML-first 郵件模板包,包含可預覽 HTML、純文本、變量、複核項和開發交付說明。",
|
|
5
|
+
intro: "把粗略郵件需求轉成可預覽、可修改、可導出的 MJML 郵件模板包,適合營銷活動、驗證碼、賬單、訂閱成功和賬號通知等場景。",
|
|
6
|
+
category: "營銷工具",
|
|
7
|
+
keywords: [
|
|
8
|
+
"郵件模板生成器",
|
|
9
|
+
"MJML 郵件模板",
|
|
10
|
+
"HTML 郵件生成器",
|
|
11
|
+
"營銷郵件模板",
|
|
12
|
+
],
|
|
13
|
+
inputSignal: "郵件需求、受眾、場景、品牌語氣",
|
|
14
|
+
outputSignal: "MJML、HTML、純文本、變量和交付說明",
|
|
15
|
+
boundarySignal: "營銷合規需人工複核",
|
|
16
|
+
},
|
|
17
|
+
guide: {
|
|
18
|
+
heroImageAlt: "粗略郵件需求轉成 MJML、HTML、純文本、變量和導出包的視覺圖。",
|
|
19
|
+
workspaceHeading: "工具工作臺",
|
|
20
|
+
workspaceHint:
|
|
21
|
+
"描述郵件目標、受眾、場景和品牌語氣,Agent 會返回結構化的 MJML-first 郵件模板包,可預覽、修改、複製和導出。",
|
|
22
|
+
workspaceBadge: "MJML 模板包",
|
|
23
|
+
outputs: "你會得到什麼",
|
|
24
|
+
outputsIntro:
|
|
25
|
+
"生成結果不是一段只能閱讀的文案,而是一組可交付開發的郵件材料:源碼、渲染版本、純文本、變量和複核說明都在同一個結構化結果裡。",
|
|
26
|
+
outputItems: [
|
|
27
|
+
{
|
|
28
|
+
title: "MJML 源文件",
|
|
29
|
+
body: "把 MJML 作為可編輯源文件,用來維護響應式郵件佈局、間距、區塊、按鈕和頁腳結構。",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
title: "HTML 郵件版本",
|
|
33
|
+
body: "同時拿到匹配的 HTML 版本,用於郵件服務導入、開發檢查和頁面預覽。",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
title: "純文本 fallback",
|
|
37
|
+
body: "生成適合無 HTML 郵件客戶端、可訪問性和送達率檢查的純文本版本。",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: "變量和佔位符",
|
|
41
|
+
body: "返回 {{first_name}}、{{cta_url}}、{{verification_code}}、{{invoice_url}} 等可替換變量及示例說明。",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "複核說明",
|
|
45
|
+
body: "在交付開發前看到營銷合規、無障礙、渲染兼容和缺失信息等檢查項。",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: "Agent 修改循環",
|
|
49
|
+
body: "生成後可以描述要改的文案、模塊或結構,重新由 Agent 寫回新的結構化結果。",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
valueVisualAlt: "包含 MJML、HTML、變量和開發交付說明的郵件模板包視覺圖。",
|
|
53
|
+
standards: "好的郵件模板生成器應該具備什麼",
|
|
54
|
+
standardsIntro:
|
|
55
|
+
"真正有用的郵件生成器不只是寫幾段好看的文案,還應該產出營銷、生命週期和研發團隊可以繼續落地的格式。",
|
|
56
|
+
standardsItems: [
|
|
57
|
+
{
|
|
58
|
+
title: "格式可交付",
|
|
59
|
+
body: "MJML、HTML 和純文本分開輸出,讓源文件、渲染模板和 fallback 各自有清楚用途。",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
title: "理解場景差異",
|
|
63
|
+
body: "營銷活動、生命週期郵件、驗證碼、賬單和訂閱通知需要不同語氣、CTA 和合規處理。",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
title: "方便開發接手",
|
|
67
|
+
body: "變量、缺失信息、預覽文案和實現說明能減少營銷與研發之間的反覆溝通。",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
title: "邊界可複核",
|
|
71
|
+
body: "工具會提示退訂、交易/營銷邊界、無障礙和渲染檢查,而不是假裝每封郵件都可以直接發送。",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
title: "迭代速度快",
|
|
75
|
+
body: "粗略 brief 可以先生成第一版,再通過 Agent 修改結構、措辭和模塊。",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
title: "預覽真實有用",
|
|
79
|
+
body: "HTML 預覽、源碼、純文本和交付說明放在一起,方便用戶在導出前檢查。",
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
boundary: "支持場景、邊界和失敗恢復",
|
|
83
|
+
boundaryIntro:
|
|
84
|
+
"營銷郵件和交易郵件有相同的投遞限制,但寫法不能混在一起。這個工具會把這些差異在結果裡顯式保留。",
|
|
85
|
+
boundaryGroups: [
|
|
86
|
+
{
|
|
87
|
+
title: "適合處理",
|
|
88
|
+
items: [
|
|
89
|
+
"營銷 newsletter、產品發佈、促銷活動、用戶激活和生命週期培育郵件。",
|
|
90
|
+
"驗證碼、賬單、收據、訂閱成功、賬號通知等常見交易/系統郵件模板。",
|
|
91
|
+
"需要 MJML 源碼、HTML 導出、純文本、變量和開發說明的郵件模板交付場景。",
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
title: "需要人工複核",
|
|
96
|
+
items: [
|
|
97
|
+
"CAN-SPAM、GDPR/ePrivacy、CASL、退訂鏈接、發件人身份、法律頁腳、營銷承諾、折扣和抽獎規則。",
|
|
98
|
+
"冷郵件、強監管產品、金融承諾、醫療聲明和高風險促銷等送達率或合規敏感內容。",
|
|
99
|
+
"品牌關鍵文案、本地化、圖片資產、變量命名和郵件服務商特殊要求。",
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
title: "失敗時怎麼恢復",
|
|
104
|
+
items: [
|
|
105
|
+
"如果結果太泛,補充真實產品價值、用戶分群、優惠內容、CTA、反對意見和品牌示例。",
|
|
106
|
+
"如果交易郵件顯得過度營銷,切換到交易場景,或要求 Agent 移除銷售性措辭。",
|
|
107
|
+
"如果缺少變量或鏈接,把需要的變量名寫進修改要求,再通過修改框重新生成。",
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
supportVisualAlt: "營銷、驗證碼、收據和複核郵件卡片的視覺圖。",
|
|
112
|
+
guidance: "如何使用生成結果",
|
|
113
|
+
guidanceIntro:
|
|
114
|
+
"把生成包當作可交付開發的起點。先預覽,再檢查變量和說明,最後放到郵件服務商裡做真實測試。",
|
|
115
|
+
guidanceItems: [
|
|
116
|
+
"需要調整佈局、間距、按鈕、模塊或頁腳時,從 MJML 源文件開始改。",
|
|
117
|
+
"HTML 導出適合預覽、開發評審,或導入支持原始 HTML 的郵件系統。",
|
|
118
|
+
"純文本版本要和核心消息及 CTA 保持一致,不要把可訪問性和送達率放到最後才補。",
|
|
119
|
+
"發送前檢查桌面和移動端渲染、退訂或偏好鏈接、變量、預覽文案、發件人身份和追蹤要求。",
|
|
120
|
+
],
|
|
121
|
+
exportVisualAlt: "可編輯郵件草案、響應式預覽、MJML 源碼和導出文件夾的視覺圖。",
|
|
122
|
+
useCases: "適用場景",
|
|
123
|
+
useCaseItems: [
|
|
124
|
+
{
|
|
125
|
+
title: "活動和發佈郵件",
|
|
126
|
+
body: "把產品發佈、功能更新、季節促銷或 newsletter 需求轉成第一版 MJML 模板包。",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
title: "生命週期營銷",
|
|
130
|
+
body: "生成激活、入門引導、升級、召回和留存郵件,並附帶清楚 CTA 與後續檢查項。",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
title: "交易/系統模板",
|
|
134
|
+
body: "起草驗證碼、賬單、收據、訂閱成功和賬號通知郵件,避免把系統通知寫成廣告。",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
title: "營銷交付開發",
|
|
138
|
+
body: "給研發一組 MJML、HTML、變量、純文本和複核說明,而不是一份鬆散文案文檔。",
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
faq: "常見問題",
|
|
142
|
+
faqItems: [
|
|
143
|
+
{
|
|
144
|
+
question: "這個工具生成 HTML 還是 MJML?",
|
|
145
|
+
answer:
|
|
146
|
+
"兩個都會生成。MJML 是可編輯源文件,HTML 用於預覽、導入和開發交付。",
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
question: "可以處理交易郵件嗎?",
|
|
150
|
+
answer:
|
|
151
|
+
"可以。它支持驗證碼、賬單、收據、訂閱成功和賬號通知等高頻場景,這些郵件會保持更事實化、更少營銷味。",
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
question: "生成後可以修改嗎?",
|
|
155
|
+
answer:
|
|
156
|
+
"可以。你可以查看模塊,並把修改要求發回 Agent。下一版會作為新的結構化結果寫回。",
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
question: "生成的 HTML 可以直接發送嗎?",
|
|
160
|
+
answer:
|
|
161
|
+
"它是高質量起點,但發送前仍要在郵件服務商裡測試,並複核退訂、發件人身份、營銷承諾、變量和渲染兼容。",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
question: "我需要提供哪些信息?",
|
|
165
|
+
answer:
|
|
166
|
+
"產品名稱、受眾、場景、目標、優惠或觸發條件、品牌語氣、CTA 和必須包含的信息,就足夠生成第一版。",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
question: "結果太泛怎麼辦?",
|
|
170
|
+
answer:
|
|
171
|
+
"補充產品證據、用戶分群、反對意見、優惠細節、發件人身份、變量名和更明確的 CTA,然後通過修改框重新生成。",
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
ctaTitle: "繼續完善上線系統",
|
|
175
|
+
ctaPrimary: "試試產品命名工具",
|
|
176
|
+
ctaSecondary: "返回全部工具",
|
|
177
|
+
ctaHint:
|
|
178
|
+
"郵件模板整理好後,可以繼續打磨產品命名、上線文案和開發交付材料。",
|
|
179
|
+
},
|
|
180
|
+
widget: {
|
|
181
|
+
formTitle: "先生成可用的第一版",
|
|
182
|
+
formHint: "先填寫必要信息。品牌規則和必須包含的內容可以放到高級設置裡。",
|
|
183
|
+
productNameLabel: "產品名稱",
|
|
184
|
+
productNamePlaceholder: "例如 Tomako Launch",
|
|
185
|
+
audienceLabel: "目標受眾",
|
|
186
|
+
audiencePlaceholder: "例如還沒有完成設置的試用用戶",
|
|
187
|
+
scenarioLabel: "郵件場景",
|
|
188
|
+
toneLabel: "語氣",
|
|
189
|
+
languageLabel: "語言",
|
|
190
|
+
briefLabel: "郵件需求",
|
|
191
|
+
briefPlaceholder:
|
|
192
|
+
"說明這封郵件的目標、觸發條件、優惠或通知內容、用戶背景、核心信息,以及希望用戶下一步做什麼。",
|
|
193
|
+
ctaLabel: "主要 CTA",
|
|
194
|
+
ctaPlaceholder: "例如 完成設置",
|
|
195
|
+
brandNotesLabel: "品牌與風格說明",
|
|
196
|
+
brandNotesPlaceholder:
|
|
197
|
+
"可以寫品牌語氣、禁用詞、發件人身份、顏色、已有郵件示例或文案偏好。",
|
|
198
|
+
mustIncludeLabel: "必須包含",
|
|
199
|
+
mustIncludePlaceholder:
|
|
200
|
+
"可以寫變量名、鏈接、免責聲明、頁腳要求、優惠細節或驗證碼佔位符。",
|
|
201
|
+
advancedTitle: "高級設置",
|
|
202
|
+
optional: "可選",
|
|
203
|
+
generate: "生成郵件模板",
|
|
204
|
+
submitting: "正在提交請求...",
|
|
205
|
+
running: "正在生成模板包...",
|
|
206
|
+
retry: "重試",
|
|
207
|
+
emptyTitle: "生成結果會顯示在這裡",
|
|
208
|
+
emptyHint:
|
|
209
|
+
"結果包含 HTML 預覽、MJML 源碼、HTML、純文本、變量、複核說明和導出動作。",
|
|
210
|
+
runningTitle: "Agent 正在生成郵件模板包",
|
|
211
|
+
runningHint:
|
|
212
|
+
"它會生成 MJML、匹配的 HTML、純文本、變量和複核說明。結構化結果短暫延遲是正常的。",
|
|
213
|
+
previewInput: "輸入",
|
|
214
|
+
previewOutput: "輸出",
|
|
215
|
+
previewTitle: "工作臺預覽",
|
|
216
|
+
previewHint: "右側會從需求預覽切換到生成中狀態,完成後顯示真實 HTML 預覽。",
|
|
217
|
+
previewDraft: "草稿",
|
|
218
|
+
previewReady: "已生成",
|
|
219
|
+
previewProductFallback: "你的產品",
|
|
220
|
+
previewAudienceFallback: "目標受眾",
|
|
221
|
+
previewBriefFallback:
|
|
222
|
+
"描述活動、觸發條件、用戶背景、核心信息、CTA 和所需變量。",
|
|
223
|
+
previewItems: ["MJML 源碼", "HTML 預覽", "純文本", "變量", "複核說明"],
|
|
224
|
+
previewFooter: "生成後,下方會展示完整模板包,包括源碼 tab、交付說明、複製、下載和繼續修改動作。",
|
|
225
|
+
resultReady: "模板包已生成",
|
|
226
|
+
copyPackage: "複製完整包",
|
|
227
|
+
downloadPackage: "下載完整包",
|
|
228
|
+
copied: "已複製",
|
|
229
|
+
tabs: {
|
|
230
|
+
preview: "預覽",
|
|
231
|
+
plain: "純文本",
|
|
232
|
+
handoff: "交付說明",
|
|
233
|
+
},
|
|
234
|
+
htmlPreviewTitle: "生成的 HTML 郵件預覽",
|
|
235
|
+
sectionsTitle: "可修改模塊",
|
|
236
|
+
copyMjml: "複製 MJML",
|
|
237
|
+
downloadMjml: "下載 MJML",
|
|
238
|
+
copyHtml: "複製 HTML",
|
|
239
|
+
downloadHtml: "下載 HTML",
|
|
240
|
+
copyPlain: "複製純文本",
|
|
241
|
+
downloadPlain: "下載 TXT",
|
|
242
|
+
handoff: {
|
|
243
|
+
variables: "變量",
|
|
244
|
+
compliance: "合規提示",
|
|
245
|
+
developer: "開發說明",
|
|
246
|
+
accessibility: "無障礙說明",
|
|
247
|
+
render: "渲染檢查",
|
|
248
|
+
missing: "缺失信息",
|
|
249
|
+
empty: "沒有返回相關項目。",
|
|
250
|
+
},
|
|
251
|
+
revisionLabel: "讓 Agent 修改",
|
|
252
|
+
revisionHint: "寫具體修改要求",
|
|
253
|
+
revisionPlaceholder:
|
|
254
|
+
"例如:縮短首屏,把 CTA 改成預約演示,並增加 {{calendar_url}} 變量。",
|
|
255
|
+
sendRevision: "發送修改要求",
|
|
256
|
+
status: {
|
|
257
|
+
PENDING: "排隊中",
|
|
258
|
+
STREAMING: "生成中",
|
|
259
|
+
AWAITING_INPUT: "等待結構化結果",
|
|
260
|
+
SUCCEEDED: "正在完成結果",
|
|
261
|
+
default: "處理中",
|
|
262
|
+
},
|
|
263
|
+
errors: {
|
|
264
|
+
invalid: "請填寫真實產品名稱、目標受眾和郵件需求。佔位或純數字輸入無法生成有用模板。",
|
|
265
|
+
revision: "發送給 Agent 前,請寫清楚具體修改要求。",
|
|
266
|
+
copy: "複製失敗。你仍然可以手動選中文本複製。",
|
|
267
|
+
submit: "請求提交失敗。",
|
|
268
|
+
task: "生成任務失敗。",
|
|
269
|
+
timeout: "結構化結果沒有在限定時間內返回。",
|
|
270
|
+
schema: "Agent 返回的結果不符合郵件模板 schema。",
|
|
271
|
+
generic: "郵件模板生成失敗。",
|
|
272
|
+
recover:
|
|
273
|
+
"請檢查郵件需求,或補充更具體的產品、受眾、CTA 和變量信息後重試。",
|
|
274
|
+
},
|
|
275
|
+
copy: {
|
|
276
|
+
scenarios: {
|
|
277
|
+
newsletter: "Newsletter",
|
|
278
|
+
productLaunch: "產品發佈",
|
|
279
|
+
promoCampaign: "促銷活動",
|
|
280
|
+
lifecycleNurture: "生命週期培育",
|
|
281
|
+
verificationCode: "驗證碼",
|
|
282
|
+
invoiceReceipt: "賬單或收據",
|
|
283
|
+
subscriptionConfirmation: "訂閱成功",
|
|
284
|
+
accountNotification: "賬號通知",
|
|
285
|
+
},
|
|
286
|
+
tones: {
|
|
287
|
+
clear: "清晰直接",
|
|
288
|
+
friendly: "友好",
|
|
289
|
+
premium: "高級剋制",
|
|
290
|
+
urgent: "有緊迫感",
|
|
291
|
+
minimal: "極簡",
|
|
292
|
+
technical: "技術專業",
|
|
293
|
+
},
|
|
294
|
+
languages: {
|
|
295
|
+
zh: "中文",
|
|
296
|
+
en: "英文",
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export default emailTemplateGenerator;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** package 驅動工具 widget(archetype 引擎)的共享文案。 */
|
|
2
|
+
const engine = {
|
|
3
|
+
submit: "開始生成",
|
|
4
|
+
submitting: "提交中",
|
|
5
|
+
reset: "重置",
|
|
6
|
+
advancedSettings: "更多選項",
|
|
7
|
+
copyMarkdown: "複製 Markdown",
|
|
8
|
+
copyValue: "複製",
|
|
9
|
+
copied: "已複製",
|
|
10
|
+
taskId: "任務 ID:{taskId}",
|
|
11
|
+
resultReady: "結構化結果",
|
|
12
|
+
pendingTitle: "正在準備結果",
|
|
13
|
+
pendingHint: "Tomako 會先理解你的輸入,再返回可複核的結構化結果。請保持頁面打開。",
|
|
14
|
+
invalidField: "請補充真實信息——佔位文本或測試字符會被攔截。",
|
|
15
|
+
modelLabel: "模型",
|
|
16
|
+
modelOptions: {
|
|
17
|
+
flash: "Flash · 更快",
|
|
18
|
+
pro: "V4 Pro · 更強",
|
|
19
|
+
},
|
|
20
|
+
status: {
|
|
21
|
+
idle: "等待輸入",
|
|
22
|
+
submitting: "提交中",
|
|
23
|
+
running: "Tomako 正在生成",
|
|
24
|
+
awaitingResult: "等待結構化結果",
|
|
25
|
+
done: "結果已就緒",
|
|
26
|
+
error: "需要處理",
|
|
27
|
+
},
|
|
28
|
+
errors: {
|
|
29
|
+
validation: {
|
|
30
|
+
title: "請補充真實上下文",
|
|
31
|
+
body: "必填字段需要具體信息。測試文本、純數字和模糊佔位會被攔截。",
|
|
32
|
+
},
|
|
33
|
+
authRequired: {
|
|
34
|
+
title: "請先登錄",
|
|
35
|
+
body: "工具生成需要登錄賬號。正在跳轉登錄頁,登錄後會回到當前工具繼續。",
|
|
36
|
+
},
|
|
37
|
+
submitFailed: {
|
|
38
|
+
title: "任務提交失敗",
|
|
39
|
+
body: "生成任務未能創建。輸入已保留,可稍後重試或檢查任務服務。",
|
|
40
|
+
},
|
|
41
|
+
taskFailed: {
|
|
42
|
+
title: "生成任務失敗",
|
|
43
|
+
body: "任務執行失敗,沒有可展示的結構化結果。可憑任務 ID 排查日誌。",
|
|
44
|
+
},
|
|
45
|
+
resultTimeout: {
|
|
46
|
+
title: "等待結果超時",
|
|
47
|
+
body: "任務可能仍在執行,但頁面在等待窗口內沒有收到結構化結果。",
|
|
48
|
+
},
|
|
49
|
+
wrongResultType: {
|
|
50
|
+
title: "結果類型不符",
|
|
51
|
+
body: "後端返回了其他工具的結果,頁面不會將其展示為成功。",
|
|
52
|
+
},
|
|
53
|
+
invalidResultSchema: {
|
|
54
|
+
title: "結果結構無效",
|
|
55
|
+
body: "後端返回了結果,但與頁面可渲染的結構不匹配。",
|
|
56
|
+
},
|
|
57
|
+
resultWritebackMissing: {
|
|
58
|
+
title: "缺少寫回結果",
|
|
59
|
+
body: "任務已完成但未找到結構化結果。請檢查後端寫回與 API 地址。",
|
|
60
|
+
},
|
|
61
|
+
computeFailed: {
|
|
62
|
+
title: "無法處理當前輸入",
|
|
63
|
+
body: "這組輸入無法完成轉換。請檢查輸入內容後重試。",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
} as const;
|
|
67
|
+
|
|
68
|
+
export default engine;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
const gtmReadinessChecklist = {
|
|
2
|
+
meta: {
|
|
3
|
+
title: "GTM 上市檢查清單:上線前 9 項自檢",
|
|
4
|
+
description:
|
|
5
|
+
"用九項檢查核對定位、管道、素材與衡量是否就緒;把未勾選項變成發佈前應優先補齊的 GTM 待辦,再決定是否對外推廣。",
|
|
6
|
+
intro:
|
|
7
|
+
"在開始外聯、內容發佈或投放前,用這份 9 項 GTM 檢查清單找出需要優先補齊的上線缺口。",
|
|
8
|
+
category: "GTM 工具",
|
|
9
|
+
keywords: [
|
|
10
|
+
"GTM 檢查清單",
|
|
11
|
+
"GTM 就緒度自檢",
|
|
12
|
+
"上市檢查清單",
|
|
13
|
+
"上線前檢查",
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
widget: {
|
|
17
|
+
howToUse: "逐項勾選。未勾選項即為下一衝刺的 GTM 待辦。",
|
|
18
|
+
score: "就緒度得分",
|
|
19
|
+
gaps: "待補齊項",
|
|
20
|
+
allDone: "全部完成",
|
|
21
|
+
sections: {
|
|
22
|
+
positioning: "定位與受眾",
|
|
23
|
+
channels: "渠道與素材",
|
|
24
|
+
metrics: "衡量與迭代",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
guide: {
|
|
28
|
+
useCasesHeading: "何時使用這份上線就緒清單",
|
|
29
|
+
useCaseItems: [
|
|
30
|
+
"首次公開發佈前:產品已完成,但訊息表達、管道重點或衡量計畫仍不夠清楚。",
|
|
31
|
+
"投放或外聯前:需要判斷到達網頁、推廣素材和來源追蹤是否已準備好。",
|
|
32
|
+
"開始小規模管道實驗前:創辦人與成長負責人需要對上線缺口有同一份判斷。",
|
|
33
|
+
"早期發佈後:需要安排一次短覆盤,並把學到的內容變成下一輪 GTM 待辦。",
|
|
34
|
+
],
|
|
35
|
+
faqHeading: "GTM 上市檢查清單常見問題",
|
|
36
|
+
faqItems: [
|
|
37
|
+
{
|
|
38
|
+
question: "什麼是 GTM 就緒度檢查清單?",
|
|
39
|
+
answer:
|
|
40
|
+
"GTM 就緒度檢查清單用於在對外推廣前,快速確認產品定位、管道與素材,以及上線後的衡量和覆盤條件是否具備。本頁是一份 9 項的基礎自檢。",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: "這 9 項 GTM 檢查分別是什麼?",
|
|
44
|
+
answer:
|
|
45
|
+
"它檢查一句話價值主張、具體 ICP、競品差異、1–2 個主要管道、到達網頁 CTA、可重複使用推廣素材、階段指標、來源追蹤和發佈後覆盤時間。",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
question: "得分較低或處於試營運階段,下一步該做什麼?",
|
|
49
|
+
answer:
|
|
50
|
+
"完成 0–3 項時,先補定位和 ICP,再推廣;完成 4–6 項時,只在一個主要管道做小範圍測試,同時補齊素材和衡量基礎。把未勾選項寫成具體衝刺待辦後再檢查。",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
question: "高 GTM 得分就代表可以正式上線嗎?",
|
|
54
|
+
answer:
|
|
55
|
+
"不代表。高分只說明這九個規劃條件已具備。在投入較多預算或判斷上線成功前,仍需獨立複核產品品質、合規、平台規則、創意品質和真實客戶回饋。",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
question: "可以自訂這份 GTM 檢查清單嗎?",
|
|
59
|
+
answer:
|
|
60
|
+
"為了讓小團隊能快速比較,本頁固定了這九項共通檢查。完成基礎項後,可以把團隊或某次發佈特有的要求加入衝刺待辦。",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: "勾選會把答案送到伺服器嗎?",
|
|
64
|
+
answer:
|
|
65
|
+
"不會。得分只根據你在目前頁面勾選的狀態在瀏覽器內計算,不需要呼叫 API。",
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
workspaceTitle: "對外推廣前,先檢查 GTM 是否就緒",
|
|
69
|
+
workspaceHint:
|
|
70
|
+
"只勾選你今天已能確認的事項。得分用於呈現缺口,並不保證這次上線會成功。",
|
|
71
|
+
workspaceBadge: "9 項上線檢查",
|
|
72
|
+
whatItChecksHeading: "這 9 項 GTM 檢查涵蓋什麼",
|
|
73
|
+
whatItChecksIntro:
|
|
74
|
+
"這是發佈前的聚焦自檢,不是一份完整 GTM 計畫。以下三組內容與上方的實際檢查項一一對應。",
|
|
75
|
+
whatItChecksItems: [
|
|
76
|
+
{
|
|
77
|
+
title: "定位與受眾",
|
|
78
|
+
body: "核對一句話價值主張、具體 ICP 情境,以及與替代方案的清楚差異。",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
title: "管道與上線素材",
|
|
82
|
+
body: "確認 1–2 個主要管道、到達網頁唯一主 CTA,以及可重複使用的推廣素材。",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
title: "衡量與迭代",
|
|
86
|
+
body: "定義目前階段的指標、可區分流量來源,並在上線後兩週內安排覆盤。",
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
howToUseHeading: "把得分轉成下一次上線決策",
|
|
90
|
+
howToUseIntro:
|
|
91
|
+
"結果刻意保持簡潔:它幫助你判斷先補哪一項、是否只做小範圍測試,或是否應暫緩更大規模的推廣。",
|
|
92
|
+
howToUseSteps: [
|
|
93
|
+
"只勾選今天已有證據的事項,而不是計畫之後再完成的事情。",
|
|
94
|
+
"從未勾選的定位、管道和衡量項開始,把它們拆成下一衝刺中最小的具體待辦。",
|
|
95
|
+
"擴大推廣前再檢查一次;上線後兩週內結合來源資料和實際回饋完成覆盤。",
|
|
96
|
+
],
|
|
97
|
+
scoreHeading: "如何解讀 GTM 就緒度得分",
|
|
98
|
+
scoreIntro:
|
|
99
|
+
"得分匯總九項檢查的完成情況。它幫助你決定下一步投入的範圍,而非預測需求、收入或上線結果。",
|
|
100
|
+
scoreItems: [
|
|
101
|
+
{
|
|
102
|
+
title: "完成 0–3 項",
|
|
103
|
+
body: "先補齊定位和 ICP 缺口,再對外推廣。更清楚的訊息通常比增加更多管道更重要。",
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
title: "完成 4–6 項",
|
|
107
|
+
body: "可在一個主要管道做小範圍測試,同時補齊缺少的素材和衡量基礎。",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: "完成 7–9 項",
|
|
111
|
+
body: "可逐步增加投入,但仍要保留來源追蹤,並依既定時間覆盤下一輪。",
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
useCasesIntro:
|
|
115
|
+
"把它用在需要做決定的時刻,而不是把它當作使用者研究、產品 QA 或特定管道上線計畫的替代品。",
|
|
116
|
+
boundaryHeading: "這份清單不檢查什麼",
|
|
117
|
+
boundaryIntro:
|
|
118
|
+
"勾選某項只說明一個規劃條件已具備;它不能證明產品、市場回饋或管道執行本身已經準備好。",
|
|
119
|
+
boundaryGroups: [
|
|
120
|
+
{
|
|
121
|
+
title: "仍需單獨複核",
|
|
122
|
+
items: [
|
|
123
|
+
"產品品質、安全、法務或合規要求,以及各管道的具體平台規則。",
|
|
124
|
+
"你的定位是否真正打動客戶,而不只是文件已經寫好。",
|
|
125
|
+
"某個管道測試的創意品質、預算匹配度和真實成效。",
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
title: "得分為什麼仍然有用",
|
|
130
|
+
items: [
|
|
131
|
+
"把「好像還沒準備好」變成團隊可看見、可討論的缺口。",
|
|
132
|
+
"讓小團隊在投入更多時間或預算前,有一套可重複使用的發佈前討論方式。",
|
|
133
|
+
"它不預測客戶需求、收入,也不預測一次上線的結果。",
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
ctaHeading: "把一個就緒缺口變成更小的首輪測試",
|
|
138
|
+
ctaPrimary: "重新檢查 9 項",
|
|
139
|
+
ctaSecondary: "選擇首個管道",
|
|
140
|
+
ctaHint:
|
|
141
|
+
"基礎項具備後,先選一條管道開始測試;補齊缺口後也可回到這裡再檢查。兩者都不能代替真實的客戶驗證。",
|
|
142
|
+
},
|
|
143
|
+
items: {
|
|
144
|
+
positioning_one_liner: "能用一句話說明「為誰解決什麼問題」",
|
|
145
|
+
icp_specific: "目標用戶畫像有具體場景,而非「所有人」",
|
|
146
|
+
competitor_diff: "與主要競品相比有清晰差異點",
|
|
147
|
+
primary_channels: "已選定 1–2 個主渠道(而非同時鋪 8 個平臺)",
|
|
148
|
+
landing_cta: "落地頁有單一主 CTA",
|
|
149
|
+
social_templates: "至少有 1 套可複用的社媒/廣告素材模板",
|
|
150
|
+
north_star_metric: "定義了北極星或階段核心指標",
|
|
151
|
+
utm_tracking: "能區分流量來源(UTM 或等價方案)",
|
|
152
|
+
retro_schedule: "有發佈後 2 周內的覆盤時間點",
|
|
153
|
+
},
|
|
154
|
+
tiers: {
|
|
155
|
+
early: "先補齊定位與 ICP",
|
|
156
|
+
pilot: "可以小範圍試運營",
|
|
157
|
+
scale: "可加大渠道投入",
|
|
158
|
+
},
|
|
159
|
+
recommendations: {
|
|
160
|
+
early: "建議先完成定位、ICP 與競品差異三項,再啟動對外推廣。",
|
|
161
|
+
pilot: "核心素材與衡量指標基本就緒,可小範圍測試主渠道。",
|
|
162
|
+
scale: "GTM 基礎紮實,可加大內容產出與渠道投放。",
|
|
163
|
+
},
|
|
164
|
+
} as const;
|
|
165
|
+
|
|
166
|
+
export default gtmReadinessChecklist;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import appIconResizer from "./app-icon-resizer";
|
|
2
|
+
import appStoreScreenshotGenerator from "./app-store-screenshot-generator";
|
|
3
|
+
import buildInPublicStoryGenerator from "./build-in-public-story-generator";
|
|
4
|
+
import coldStartChannelSelector from "./cold-start-channel-selector";
|
|
5
|
+
import commercialBpGenerator from "./commercial-bp-generator";
|
|
6
|
+
import communityFeedbackInbox from "./community-feedback-inbox";
|
|
7
|
+
import communityPainPointExtractor from "./community-pain-point-extractor";
|
|
8
|
+
import communityPostRiskChecker from "./community-post-risk-checker";
|
|
9
|
+
import competitorAnalysis from "./competitor-analysis";
|
|
10
|
+
import emailTemplateGenerator from "./email-template-generator";
|
|
11
|
+
import engine from "./engine";
|
|
12
|
+
import gtmReadinessChecklist from "./gtm-readiness-checklist";
|
|
13
|
+
import marketForecastReport from "./market-forecast-report";
|
|
14
|
+
import kokoCodexAssistant from "./koko-codex-assistant";
|
|
15
|
+
import logoGenerator from "./logo-generator";
|
|
16
|
+
import millionUserGrowthTest from "./million-user-growth-test";
|
|
17
|
+
import ogImageGenerator from "./og-image-generator";
|
|
18
|
+
import pitchDeckGenerator from "./pitch-deck-generator";
|
|
19
|
+
import productAgreementGenerator from "./product-agreement-generator";
|
|
20
|
+
import productHuntLaunchPlanner from "./product-hunt-launch-planner";
|
|
21
|
+
import productNameGenerator from "./product-name-generator";
|
|
22
|
+
import productPosterGenerator from "./product-poster-generator";
|
|
23
|
+
import productUiGenerator from "./product-ui-generator";
|
|
24
|
+
import redditPainPointFinder from "./reddit-pain-point-finder";
|
|
25
|
+
import shared from "./shared";
|
|
26
|
+
import socialListeningResearchReport from "./social-listening-research-report";
|
|
27
|
+
import socialMediaProfileGenerator from "./social-media-profile-generator";
|
|
28
|
+
import socialPlatformAssetAdapter from "./social-platform-asset-adapter";
|
|
29
|
+
import socialProfileKit from "./social-profile-kit";
|
|
30
|
+
import startupIdeaResearch from "./startup-idea-research";
|
|
31
|
+
import tarotReading from "./tarot-reading";
|
|
32
|
+
import twitterGifDownloader from "./twitter-gif-downloader";
|
|
33
|
+
import userInterviewInsightReportGenerator from "./user-interview-insight-report-generator";
|
|
34
|
+
import userInterviewRecordGenerator from "./user-interview-record-generator";
|
|
35
|
+
|
|
36
|
+
const toolsPages = {
|
|
37
|
+
shared,
|
|
38
|
+
engine,
|
|
39
|
+
appIconResizer,
|
|
40
|
+
buildInPublicStoryGenerator,
|
|
41
|
+
coldStartChannelSelector,
|
|
42
|
+
commercialBpGenerator,
|
|
43
|
+
communityFeedbackInbox,
|
|
44
|
+
communityPainPointExtractor,
|
|
45
|
+
communityPostRiskChecker,
|
|
46
|
+
pitchDeckGenerator,
|
|
47
|
+
productNameGenerator,
|
|
48
|
+
productPosterGenerator,
|
|
49
|
+
productUiGenerator,
|
|
50
|
+
productAgreementGenerator,
|
|
51
|
+
productHuntLaunchPlanner,
|
|
52
|
+
emailTemplateGenerator,
|
|
53
|
+
competitorAnalysis,
|
|
54
|
+
redditPainPointFinder,
|
|
55
|
+
socialListeningResearchReport,
|
|
56
|
+
socialMediaProfileGenerator,
|
|
57
|
+
gtmReadinessChecklist,
|
|
58
|
+
marketForecastReport,
|
|
59
|
+
kokoCodexAssistant,
|
|
60
|
+
logoGenerator,
|
|
61
|
+
millionUserGrowthTest,
|
|
62
|
+
ogImageGenerator,
|
|
63
|
+
appStoreScreenshotGenerator,
|
|
64
|
+
twitterGifDownloader,
|
|
65
|
+
socialPlatformAssetAdapter,
|
|
66
|
+
socialProfileKit,
|
|
67
|
+
startupIdeaResearch,
|
|
68
|
+
tarotReading,
|
|
69
|
+
userInterviewInsightReportGenerator,
|
|
70
|
+
userInterviewRecordGenerator,
|
|
71
|
+
} as const;
|
|
72
|
+
|
|
73
|
+
export default toolsPages;
|