@tomako/tools-runtime 0.1.5 → 0.1.7

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.
Files changed (47) hide show
  1. package/package.json +2 -1
  2. package/src/components/tools/engine/package-widget-runtime.tsx +5 -1
  3. package/src/components/tools/engine/task-recovery.test.ts +65 -0
  4. package/src/components/tools/engine/task-recovery.ts +109 -0
  5. package/src/components/tools/engine/use-legacy-llm-task.ts +16 -3
  6. package/src/components/tools/engine/use-tool-task.ts +77 -53
  7. package/src/features/tools/app-store-screenshot-generator/widget/app-store-screenshot-generator.tsx +88 -16
  8. package/src/features/tools/app-store-screenshot-generator/widget/asset-slots.test.ts +52 -0
  9. package/src/features/tools/app-store-screenshot-generator/widget/asset-slots.ts +3 -2
  10. package/src/features/tools/app-store-screenshot-generator/widget/generation.test.ts +126 -0
  11. package/src/features/tools/app-store-screenshot-generator/widget/generation.ts +52 -14
  12. package/src/features/tools/app-store-screenshot-generator/widget/input-media.test.ts +81 -0
  13. package/src/features/tools/app-store-screenshot-generator/widget/input-media.ts +20 -8
  14. package/src/features/tools/cold-start-channel-selector/widget/cold-start-channel-selector.tsx +45 -16
  15. package/src/features/tools/competitor-analysis/competitor-analysis.container.tsx +26 -20
  16. package/src/features/tools/competitor-analysis/widget/competitor-analysis.tsx +47 -16
  17. package/src/features/tools/disclaimer-generator/disclaimer-generator.package.ts +3 -3
  18. package/src/features/tools/email-template-generator/widget/email-template-generator.tsx +37 -4
  19. package/src/features/tools/package/to-tool-module.ts +15 -0
  20. package/src/features/tools/product-name-generator/widget/product-name-generator.tsx +60 -27
  21. package/src/features/tools/product-poster-generator/widget/constants.ts +3 -1
  22. package/src/features/tools/product-poster-generator/widget/helpers.test.ts +51 -0
  23. package/src/features/tools/product-poster-generator/widget/helpers.ts +27 -0
  24. package/src/features/tools/product-poster-generator/widget/product-poster-generator.tsx +112 -12
  25. package/src/features/tools/slogan-generator/slogan-generator.package.ts +28 -28
  26. package/src/i18n/messages/en/tools/app-icon-resizer.ts +1 -1
  27. package/src/i18n/messages/en/tools/app-store-screenshot-generator.ts +2 -2
  28. package/src/i18n/messages/en/tools/cold-start-channel-selector.ts +4 -4
  29. package/src/i18n/messages/en/tools/competitor-analysis.ts +9 -8
  30. package/src/i18n/messages/en/tools/email-template-generator.ts +10 -10
  31. package/src/i18n/messages/en/tools/product-poster-generator.ts +1 -0
  32. package/src/i18n/messages/zh/tools/app-store-screenshot-generator.ts +3 -3
  33. package/src/i18n/messages/zh/tools/cold-start-channel-selector.ts +2 -2
  34. package/src/i18n/messages/zh/tools/competitor-analysis.ts +10 -9
  35. package/src/i18n/messages/zh/tools/email-template-generator.ts +11 -11
  36. package/src/i18n/messages/zh/tools/product-poster-generator.ts +1 -0
  37. package/src/i18n/messages/zh-tw/tools/app-store-screenshot-generator.ts +44 -44
  38. package/src/i18n/messages/zh-tw/tools/cold-start-channel-selector.ts +105 -105
  39. package/src/i18n/messages/zh-tw/tools/competitor-analysis.ts +41 -40
  40. package/src/i18n/messages/zh-tw/tools/email-template-generator.ts +111 -111
  41. package/src/i18n/messages/zh-tw/tools/product-name-generator.ts +92 -92
  42. package/src/i18n/messages/zh-tw/tools/product-poster-generator.ts +74 -73
  43. package/src/i18n/messages/zh-tw/tools/twitter-gif-downloader.ts +47 -47
  44. package/src/lib/tools/cold-start-channel-selector-schema.test.ts +39 -0
  45. package/src/lib/tools/cold-start-channel-selector-schema.ts +8 -4
  46. package/src/lib/tools/competitor-analysis-schema.test.ts +69 -0
  47. package/src/lib/tools/competitor-analysis-schema.ts +53 -5
@@ -1,77 +1,77 @@
1
1
  const coldStartChannelSelector = {
2
2
  meta: {
3
- title: "冷啟動渠道策略生成器",
4
- description: "為早期產品制定冷啟動渠道策略。填入產品、目標客戶、時間和預算,取得優先測試渠道、選擇理由和下一步驗證信號。",
5
- intro: "先確定冷啟動階段最值得測試的渠道,再用真實信號決定下一步。",
3
+ title: "客戶開發通路選擇器",
4
+ description: "為早期產品挑選最值得先測試的客戶開發通路。填入產品、目標客群、時間與預算,取得排序、第一步行動與驗證指標。",
5
+ intro: "先選出最值得測試的客戶開發通路,再用真實指標決定下一步。",
6
6
  category: "增長策略工具",
7
7
  keywords: [
8
- "客戶獲取渠道",
9
- "冷啟動渠道策略",
10
- "新創公司客戶獲取渠道",
11
- "如何選擇客戶獲取渠道",
8
+ "客戶獲取通路",
9
+ "冷啟動通路策略",
10
+ "新創公司客戶獲取通路",
11
+ "如何選擇客戶獲取通路",
12
12
  "早期成長行銷策略",
13
13
  ],
14
14
  inputSignal: "產品 URL 或產品描述",
15
- outputSignal: "冷啟動渠道策略 + 首個驗證計畫",
15
+ outputSignal: "冷啟動通路策略 + 首個驗證計畫",
16
16
  boundarySignal: "根據公開資訊和你提供的脈絡提出決策輔助;投入預算或長期執行前請人工複核",
17
17
  },
18
18
  examples: [
19
19
  {
20
20
  label: "剛上線的 Web SaaS",
21
21
  input: "產品 URL https://example.com,目標市場北美,每週 3-7 小時,預算 500 美元以內",
22
- expectedOutput: "輸出 3-5 個優先渠道、每個渠道的匹配理由、第一步動作、驗證指標、暫不優先渠道和 7 天執行計劃。",
22
+ expectedOutput: "輸出 3-5 個優先通路、每個通路的匹配理由、第一步動作、驗證指標、暫不優先通路和 7 天執行計劃。",
23
23
  },
24
24
  {
25
25
  label: "沒有官網的 App",
26
- input: "手動描述一個面向中文用戶的效率 App,剛內測,無預算,每週 8-15 小時",
27
- expectedOutput: "基於描述給出渠道排序,並把缺失的公開資料、目標用戶證據和商店素材列為 missingInfo。",
26
+ input: "手動描述一個面向中文使用者的效率 App,剛內測,無預算,每週 8-15 小時",
27
+ expectedOutput: "基於描述給出通路排序,並把缺失的公開資料、目標使用者證據和商店素材列為 missingInfo。",
28
28
  },
29
29
  {
30
30
  label: "開發者工具",
31
31
  input: "產品 URL,一個面向 API 團隊的開源開發者工具,全球市場,已有 GitHub 倉庫",
32
- expectedOutput: "優先考慮開發者社區、文檔型內容、GitHub/Show HN 等渠道,並解釋為什麼廣告或泛社媒暫不優先。",
32
+ expectedOutput: "優先考慮開發者社區、文檔型內容、GitHub/Show HN 等通路,並解釋為什麼廣告或泛社群媒體暫不優先。",
33
33
  },
34
34
  ],
35
35
  guide: {
36
- workspaceTitle: "冷啟動渠道策略",
36
+ workspaceTitle: "選擇最值得先測試的客戶開發通路",
37
37
  workspaceHint:
38
- "輸入產品、客戶、時間和預算,取得適合目前階段的冷啟動渠道策略、選擇理由和驗證信號。",
39
- workspaceBadge: "早期產品冷啟動渠道策略",
38
+ "輸入產品、客戶、時間和預算,取得適合目前階段的冷啟動通路策略、選擇理由和驗證信號。",
39
+ workspaceBadge: "早期產品冷啟動通路策略",
40
40
  standard: {
41
41
  benefits: {
42
- title: "選一條現在就能行動的客戶獲取渠道",
42
+ title: "選一條現在就能行動的客戶獲取通路",
43
43
  cards: [
44
44
  {
45
45
  title: "先從一個能執行的選項開始",
46
- body: "依目標用戶、階段、市場、時間和預算,排出 3–5 個客戶獲取渠道;第一輪只要專注其中一個。",
46
+ body: "依目標使用者、階段、市場、時間和預算,排出 3–5 個客戶獲取通路;第一輪只要專注其中一個。",
47
47
  },
48
48
  {
49
49
  title: "看懂為什麼現在適合做",
50
- body: "了解渠道為何符合目前情況、第一步要做什麼,以及為什麼其他選項應該先等等。",
50
+ body: "了解通路為何符合目前情況、第一步要做什麼,以及為什麼其他選項應該先等等。",
51
51
  },
52
52
  {
53
53
  title: "知道什麼結果會改變判斷",
54
- body: "用一個小測試和明確信號——如回覆、試用、註冊或訪談——決定繼續、調整或換下一個渠道。",
54
+ body: "用一個小測試和明確信號——如回覆、試用、註冊或訪談——決定繼續、調整或換下一個通路。",
55
55
  },
56
56
  ],
57
57
  },
58
58
  reportPreview: {
59
- eyebrow: "渠道策略示例",
60
- title: "你會得到怎樣的成長渠道策略",
59
+ eyebrow: "通路策略示例",
60
+ title: "你會得到怎樣的成長通路策略",
61
61
  intro:
62
- "這份策略會結合你的產品、目標客戶、目前階段和資源限制,告訴你現在優先測試哪個渠道、為什麼值得先做、第一步怎麼做,以及出現什麼信號後值得繼續投入。",
62
+ "這份策略會結合你的產品、目標客戶、目前階段和資源限制,告訴你現在優先測試哪個通路、為什麼值得先做、第一步怎麼做,以及出現什麼信號後值得繼續投入。",
63
63
  inputLabel: "示例產品背景",
64
64
  input:
65
65
  "面向小型銷售團隊的 B2B SaaS,內測階段;北美市場;每週可投入 3–7 小時;測試預算低於 500 美元。",
66
- outputLabel: "你會得到的渠道策略",
66
+ outputLabel: "你會得到的通路策略",
67
67
  fields: [
68
68
  {
69
- label: "先測試哪個渠道",
70
- body: "在現有時間、預算和證據下,最值得先測試的客戶獲取渠道。",
69
+ label: "先測試哪個通路",
70
+ body: "在現有時間、預算和證據下,最值得先測試的客戶獲取通路。",
71
71
  },
72
72
  {
73
73
  label: "為什麼符合現在",
74
- body: "渠道和目標客戶、產品階段的匹配理由,以及可以馬上執行的最小一步。",
74
+ body: "通路和目標客戶、產品階段的匹配理由,以及可以馬上執行的最小一步。",
75
75
  },
76
76
  {
77
77
  label: "第一步怎麼做",
@@ -79,30 +79,30 @@ const coldStartChannelSelector = {
79
79
  },
80
80
  {
81
81
  label: "什麼結果值得繼續",
82
- body: "看到什麼信號時應該繼續、調整實驗,或測試下一個客戶獲取渠道。",
82
+ body: "看到什麼信號時應該繼續、調整實驗,或測試下一個客戶獲取通路。",
83
83
  },
84
84
  ],
85
85
  },
86
86
  imageTextSections: [
87
87
  {
88
88
  id: "channel-priority",
89
- title: "新創公司最好的冷啟動渠道有哪些?",
89
+ title: "新創公司最好的冷啟動通路有哪些?",
90
90
  body: [
91
- "沒有一種冷啟動渠道對所有新創公司都最好。早期團隊較適合從目標客戶已經在留意、產品有機會建立信任,而且你能持續投入的地方開始。",
92
- "SEO 和內容、創辦人外聯、社群、合作夥伴、發佈平臺、推薦和付費獲客都可能有效。填入公開產品 URL 或具體的尚未上線產品說明後,工具會依你的情況排出 3–5 個選項,而不是給你一份通用渠道清單。",
91
+ "沒有一種冷啟動通路對所有新創公司都最好。早期團隊較適合從目標客戶已經在留意、產品有機會建立信任,而且你能持續投入的地方開始。",
92
+ "SEO 和內容、創辦人外聯、社群、合作夥伴、發佈平臺、推薦和付費獲客都可能有效。填入公開產品 URL 或具體的尚未上線產品說明後,工具會依你的情況排出 3–5 個選項,而不是給你一份通用通路清單。",
93
93
  ],
94
94
  image: {
95
95
  src: "/tools/cold-start-channel-selector-section-priority-8bit-v3.webp",
96
- alt: "產品說明變成聚焦的冷啟動渠道策略",
96
+ alt: "產品說明變成聚焦的冷啟動通路策略",
97
97
  },
98
98
  imageFirst: true,
99
99
  },
100
100
  {
101
101
  id: "channel-tradeoffs",
102
- title: "新創公司如何選擇第一條冷啟動渠道?",
102
+ title: "新創公司如何選擇第一條冷啟動通路?",
103
103
  body: [
104
104
  "先選一個你能實際觸達的客戶群,再做一項可以重複的小型測試。比較目標客戶匹配度、產品階段、所需資產、回饋速度、成本,以及最小驗證動作能否帶來回覆、試用、註冊或訪談。",
105
- "最適合先測試的,不一定是流量最大的渠道,而是能在你現有的產品、證據、時間和預算下,盡快帶來有效學習信號的渠道。",
105
+ "最適合先測試的,不一定是流量最大的通路,而是能在你現有的產品、證據、時間和預算下,盡快帶來有效學習信號的通路。",
106
106
  ],
107
107
  image: {
108
108
  src: "/tools/cold-start-channel-selector-section-tradeoffs-8bit-v2.webp",
@@ -114,8 +114,8 @@ const coldStartChannelSelector = {
114
114
  id: "channel-validation",
115
115
  title: "新創公司應該先做自然獲客還是付費獲客?",
116
116
  body: [
117
- "當你還需要理解客戶語言和產品回饋時,自然渠道或創辦人主導的獲客通常更適合先測試。你可以透過對話、社群、內容和外聯,更快聽到真實回饋。",
118
- "當目標用戶、轉換路徑、數據追蹤、單位經濟和測試預算都較清楚時,付費獲客才更有價值。這份策略會把取捨說清楚,而不是預設讓你投放廣告。",
117
+ "當你還需要理解客戶語言和產品回饋時,自然通路或創辦人主導的獲客通常更適合先測試。你可以透過對話、社群、內容和外聯,更快聽到真實回饋。",
118
+ "當目標使用者、轉換路徑、資料追蹤、單位經濟和測試預算都較清楚時,付費獲客才更有價值。這份策略會把取捨說清楚,而不是預設讓你投放廣告。",
119
119
  ],
120
120
  image: {
121
121
  src: "/tools/cold-start-channel-selector-section-validation-8bit-v2.webp",
@@ -127,25 +127,25 @@ const coldStartChannelSelector = {
127
127
  narrativeSections: [
128
128
  {
129
129
  id: "channel-validation",
130
- title: "如何測試一條冷啟動渠道是否有效?",
130
+ title: "如何測試一條冷啟動通路是否有效?",
131
131
  body: [
132
- "先用一條渠道、一個目標客戶、一項具體動作和一個可觀察信號做小型測試,再決定是否增加投入。有效信號可以是高品質回覆、試用、註冊、訪談,或任何證明目標客戶正在回應的結果。",
133
- "把結果當作需要驗證的假設。執行建議的第一步,觀察對應信號,再決定繼續、調整測試,或換下一個渠道,然後再增加預算。",
132
+ "先用一條通路、一個目標客戶、一項具體動作和一個可觀察信號做小型測試,再決定是否增加投入。有效信號可以是高品質回覆、試用、註冊、訪談,或任何證明目標客戶正在回應的結果。",
133
+ "把結果當作需要驗證的假設。執行建議的第一步,觀察對應信號,再決定繼續、調整測試,或換下一個通路,然後再增加預算。",
134
134
  ],
135
135
  background: "muted",
136
136
  },
137
137
  {
138
138
  id: "growth-strategy-context",
139
- title: "冷啟動渠道策略如何放進成長行銷策略?",
139
+ title: "冷啟動通路策略如何放進成長行銷策略?",
140
140
  body: [
141
- "冷啟動渠道策略解決的是一個更早的決定:第一批客戶應該去哪裡找、從哪裡獲得學習信號。更完整的成長行銷策略還會涉及定位、轉換路徑、啟動、留存、衡量和一組持續的實驗。",
142
- "先用這輪渠道測試理解哪些資訊和動作能打動客戶,再決定下一個渠道、下一則訊息或下一項實驗。它是成長行銷策略的第一步,不是對完整策略的替代。",
141
+ "冷啟動通路策略解決的是一個更早的決定:第一批客戶應該去哪裡找、從哪裡獲得學習信號。更完整的成長行銷策略還會涉及定位、轉換路徑、啟動、留存、衡量和一組持續的實驗。",
142
+ "先用這輪通路測試理解哪些資訊和動作能打動客戶,再決定下一個通路、下一則訊息或下一項實驗。它是成長行銷策略的第一步,不是對完整策略的替代。",
143
143
  ],
144
144
  },
145
145
  ],
146
146
  generation: {
147
- title: "把第一輪渠道測試變成下一步成長決策",
148
- ctaLabel: "取得我的渠道策略",
147
+ title: "把第一輪通路測試變成下一步成長決策",
148
+ ctaLabel: "取得我的通路策略",
149
149
  steps: [
150
150
  {
151
151
  title: "說明產品和目標客戶",
@@ -153,11 +153,11 @@ const coldStartChannelSelector = {
153
153
  },
154
154
  {
155
155
  title: "寫下實際能投入的資源",
156
- body: "補充市場、階段、每週可用時間和測試預算,讓渠道策略符合你現在真正能執行的條件。",
156
+ body: "補充市場、階段、每週可用時間和測試預算,讓通路策略符合你現在真正能執行的條件。",
157
157
  },
158
158
  {
159
- title: "取得可測試的冷啟動渠道策略",
160
- body: "查看哪些客戶獲取渠道現在最值得測試、為什麼適合、第一步做什麼,以及哪些選項應該先等等。",
159
+ title: "取得可測試的冷啟動通路策略",
160
+ body: "查看哪些客戶獲取通路現在最值得測試、為什麼適合、第一步做什麼,以及哪些選項應該先等等。",
161
161
  },
162
162
  {
163
163
  title: "用結果決定下一步",
@@ -165,25 +165,25 @@ const coldStartChannelSelector = {
165
165
  },
166
166
  ],
167
167
  },
168
- faqIntro: "在選擇、測試和調整客戶獲取渠道前,你可能會關心這些問題。",
169
- faqCtaLabel: "取得我的渠道策略",
168
+ faqIntro: "在選擇、測試和調整客戶獲取通路前,你可能會關心這些問題。",
169
+ faqCtaLabel: "取得我的通路策略",
170
170
  },
171
171
  valueKicker: "你可以得到什麼",
172
- valueTitle: "把增長渠道從“都想試”變成“先試這幾個”",
172
+ valueTitle: "把增長通路從“都想試”變成“先試這幾個”",
173
173
  valueIntro:
174
- "冷啟動最貴的不是沒有渠道,而是把有限時間平均撒到每個平臺。這個工具把產品形態、市場、階段和資源約束放在一起判斷。",
174
+ "冷啟動最貴的不是沒有通路,而是把有限時間平均撒到每個平臺。這個工具把產品形態、市場、階段和資源約束放在一起判斷。",
175
175
  valueItems: [
176
176
  {
177
- title: "Top 渠道排序",
178
- body: "按當前階段推薦 3-5 個優先渠道,並說明為什麼現在適合做。",
177
+ title: "Top 通路排序",
178
+ body: "按當前階段推薦 3-5 個優先通路,並說明為什麼現在適合做。",
179
179
  },
180
180
  {
181
181
  title: "暫不優先清單",
182
- body: "把廣告、泛社媒、SEO 或發佈平臺中暫時不值得投入的選項說清楚。",
182
+ body: "把廣告、泛社群媒體、SEO 或發佈平臺中暫時不值得投入的選項說清楚。",
183
183
  },
184
184
  {
185
185
  title: "第一步動作",
186
- body: "每個渠道給出第一件可以做的小動作,避免停在策略建議。",
186
+ body: "每個通路給出第一件可以做的小動作,避免停在策略建議。",
187
187
  },
188
188
  {
189
189
  title: "7 天輕計劃",
@@ -191,13 +191,13 @@ const coldStartChannelSelector = {
191
191
  },
192
192
  ],
193
193
  standardsKicker: "為什麼選 Tomako",
194
- standardsTitle: "好的渠道選擇器應該先幫你排除噪音",
194
+ standardsTitle: "好的通路選擇器應該先幫你排除噪音",
195
195
  standardsIntro:
196
196
  "普通清單會告訴你 Product Hunt、Reddit、小紅書、SEO、廣告都能做。真正有用的選擇器要解釋:為什麼是現在,為什麼是你,為什麼不是別的。",
197
197
  standards: [
198
198
  {
199
199
  title: "貼合產品形態",
200
- body: "開發者工具、消費 App、B2B SaaS 和內容產品不應該得到同一組渠道。",
200
+ body: "開發者工具、消費 App、B2B SaaS 和內容產品不應該得到同一組通路。",
201
201
  },
202
202
  {
203
203
  title: "尊重資源約束",
@@ -205,74 +205,74 @@ const coldStartChannelSelector = {
205
205
  },
206
206
  {
207
207
  title: "說明反證條件",
208
- body: "每個推薦都應說清什麼信號出現時要停下或換渠道。",
208
+ body: "每個推薦都應說清什麼信號出現時要停下或換通路。",
209
209
  },
210
210
  {
211
211
  title: "保留不確定性",
212
- body: "信息不足時應列出缺失信息和可信度,而不是編一個漂亮答案。",
212
+ body: "資訊不足時應列出缺失資訊和可信度,而不是編一個漂亮答案。",
213
213
  },
214
214
  ],
215
215
  resultKicker: "結果怎麼用",
216
216
  resultTitle: "把報告當作一輪驗證計劃,而不是最終答案",
217
217
  resultGuidanceItems: [
218
- "先做優先級第一的渠道,跑到能判斷是否有信號,再擴展第二和第三渠道。",
219
- "如果結果裡有 missingInfo,先補齊這些信息;它們通常會改變渠道排序。",
218
+ "先做優先級第一的通路,跑到能判斷是否有信號,再擴展第二和第三通路。",
219
+ "如果結果裡有 missingInfo,先補齊這些資訊;它們通常會改變通路排序。",
220
220
  "不要把低可信度建議直接變成長期戰略,先用 7 天計劃驗證能不能拿到回覆、註冊、收藏、試用或訪談。",
221
221
  "把第一步動作複製到你的 Launch 或 Growth 看板,再根據真實反饋調整。",
222
222
  ],
223
223
  useCasesKicker: "適用場景",
224
224
  useCasesTitle: "適合剛要開始增長,但不想亂試一圈的時候",
225
225
  useCasesIntro:
226
- "它不是代替增長負責人,而是幫你把第一輪渠道假設整理得更可執行。",
226
+ "它不是代替增長負責人,而是幫你把第一輪通路假設整理得更可執行。",
227
227
  useCases: [
228
228
  "獨立開發者剛上線一個 Web SaaS,不確定應該先做 SEO、社區還是發佈平臺。",
229
229
  "App 還沒有完整官網,只能用產品描述和目標市場先判斷冷啟動方向。",
230
- "開發者工具已有 GitHub 或文檔資產,需要判斷是走內容、社區還是開發者發佈渠道。",
230
+ "開發者工具已有 GitHub 或文檔資產,需要判斷是走內容、社區還是開發者發佈通路。",
231
231
  ],
232
232
  faqKicker: "常見問題",
233
- faqTitle: "客戶獲取渠道選擇器常見問題",
233
+ faqTitle: "客戶獲取通路選擇器常見問題",
234
234
  faqItems: [
235
235
  {
236
- question: "什麼是冷啟動渠道策略生成器?",
236
+ question: "什麼是冷啟動通路策略產生器?",
237
237
  answer:
238
- "冷啟動渠道策略生成器是一種協助你決定先測試哪些獲客渠道的決策工具。Tomako 會比較產品、目標客戶、階段、市場、時間和預算,再提出渠道排序,而不是一份適用所有產品的通用行銷渠道清單。",
238
+ "冷啟動通路策略產生器是一種協助你決定先測試哪些獲客通路的決策工具。Tomako 會比較產品、目標客戶、階段、市場、時間和預算,再提出通路排序,而不是一份適用所有產品的通用行銷通路清單。",
239
239
  },
240
240
  {
241
- question: "冷啟動渠道策略生成器怎麼使用?",
241
+ question: "冷啟動通路策略產生器怎麼使用?",
242
242
  answer:
243
- "輸入公開產品 URL 或具體的產品說明,再選擇產品型態、目標市場、階段、每週時間和測試預算。冷啟動渠道策略生成器會依照這些限制產生渠道策略;繼續補充目標用戶、已有資產和試過的渠道,可以讓比較更具體。",
243
+ "輸入公開產品 URL 或具體的產品說明,再選擇產品型態、目標市場、階段、每週時間和測試預算。冷啟動通路策略產生器會依照這些限制產生通路策略;繼續補充目標使用者、已有資產和試過的通路,可以讓比較更具體。",
244
244
  },
245
245
  {
246
- question: "客戶獲取渠道選擇器會產生什麼報告?",
246
+ question: "客戶獲取通路選擇器會產生什麼報告?",
247
247
  answer:
248
- "客戶獲取渠道報告包含 3–5 個優先渠道、目前匹配理由、第一步動作、所需資產、驗證指標、主要風險、暫緩渠道、簡短執行計畫、缺失資訊和可信邊界。",
248
+ "客戶獲取通路報告包含 3–5 個優先通路、目前匹配理由、第一步動作、所需資產、驗證指標、主要風險、暫緩通路、簡短執行計畫、缺失資訊和可信邊界。",
249
249
  },
250
250
  {
251
- question: "SaaS 或尚未上線的產品可以使用客戶獲取渠道選擇器嗎?",
251
+ question: "SaaS 或尚未上線的產品可以使用客戶獲取通路選擇器嗎?",
252
252
  answer:
253
- "可以。公開網站會有幫助,但不是必填;SaaS、內測和尚未上線的團隊可以手動說明目標客戶、問題、產品和階段。公開證據較少時,客戶獲取渠道選擇器可能給出較低的可信度,並列出更多需要補充的資訊。",
253
+ "可以。公開網站會有幫助,但不是必填;SaaS、內測和尚未上線的團隊可以手動說明目標客戶、問題、產品和階段。公開證據較少時,客戶獲取通路選擇器可能給出較低的可信度,並列出更多需要補充的資訊。",
254
254
  },
255
255
  {
256
- question: "客戶獲取渠道選擇器能保證成長嗎?",
256
+ question: "客戶獲取通路選擇器能保證成長嗎?",
257
257
  answer:
258
- "不能。客戶獲取渠道選擇器提供的是需要驗證的渠道排序假設,不保證取得客戶或收入。投入長期預算或把它當作完整獲客策略前,仍要用真實回覆、註冊、試用、留存或使用者訪談驗證。",
258
+ "不能。客戶獲取通路選擇器提供的是需要驗證的通路排序假設,不保證取得客戶或收入。投入長期預算或把它當作完整獲客策略前,仍要用真實回覆、註冊、試用、留存或使用者訪談驗證。",
259
259
  },
260
260
  ],
261
261
  boundaryTitle: "支持與限制",
262
262
  boundaryItems: [
263
263
  "支持產品 URL、App/工具描述、目標市場、階段、預算和時間約束。",
264
- "不處理登錄後內容、私密資料、付費數據庫或無法公開訪問的頁面。",
264
+ "不處理登入後內容、私密資料、付費資料庫或無法公開訪問的頁面。",
265
265
  "不承諾增長結果、平臺收錄、廣告表現或收入增長。",
266
- "結果基於公開資訊和你提供的上下文,僅作為決策輔助;投入預算或制定長期渠道計畫前請人工複核。",
266
+ "結果基於公開資訊和你提供的上下文,僅作為決策輔助;投入預算或制定長期通路計畫前請人工複核。",
267
267
  ],
268
268
  ctaHint: "想繼續檢查上線基礎?先用 GTM checklist 找出發佈前缺口。",
269
269
  ctaPrimary: "檢查 GTM readiness",
270
270
  ctaSecondary: "查看全部工具",
271
271
  visualAlt: {
272
- hero: "產品說明變成聚焦的冷啟動渠道策略",
272
+ hero: "產品說明變成聚焦的冷啟動通路策略",
273
273
  standards: "在立即測試與暫緩之間做平衡判斷",
274
274
  result: "一輪小型客戶獲取實驗得到早期信號",
275
- useCases: "產品說明、資源限制和可複核的渠道建議",
275
+ useCases: "產品說明、資源限制和可複核的通路建議",
276
276
  },
277
277
  },
278
278
  widget: {
@@ -286,58 +286,58 @@ const coldStartChannelSelector = {
286
286
  stageLabel: "當前階段",
287
287
  hoursLabel: "每週可投入時間",
288
288
  budgetLabel: "預算",
289
- audienceLabel: "目標用戶",
289
+ audienceLabel: "目標使用者",
290
290
  audiencePlaceholder: "例如:獨立開發者、跨境電商運營、B2B 銷售團隊",
291
291
  assetsLabel: "已有資產",
292
292
  assetsPlaceholder: "例如:官網、文檔、GitHub、郵件列表、社群、案例、內容庫",
293
- triedLabel: "已嘗試渠道",
293
+ triedLabel: "已嘗試通路",
294
294
  triedPlaceholder: "例如:發過 Product Hunt、寫過 SEO 文章、做過小紅書",
295
295
  constraintsLabel: "限制或偏好",
296
296
  constraintsPlaceholder: "例如:不想投廣告、不能公開客戶案例、只有一個人維護",
297
- showAdvanced: "補充高級信息",
298
- hideAdvanced: "收起高級信息",
299
- submit: "取得渠道策略",
300
- submitting: "正在準備渠道策略",
301
- running: "正在產生渠道策略",
297
+ showAdvanced: "補充高級資訊",
298
+ hideAdvanced: "收起高級資訊",
299
+ submit: "取得通路策略",
300
+ submitting: "正在準備通路策略",
301
+ running: "正在產生通路策略",
302
302
  inputHint:
303
- "只使用公開產品資訊。沒有 URL 時請補充具體產品說明和目標用戶;報告是需要驗證的假設,不承諾成長結果。",
304
- previewTitle: "三步取得你的渠道策略",
305
- previewSubtitle: "告訴我們你在做什麼,以及你現在能投入哪些資源;工具會把這些資訊變成可以立即開始測試的渠道策略。",
303
+ "只使用公開產品資訊。沒有 URL 時請補充具體產品說明和目標使用者;報告是需要驗證的假設,不承諾成長結果。",
304
+ previewTitle: "三步取得你的通路策略",
305
+ previewSubtitle: "告訴我們你在做什麼,以及你現在能投入哪些資源;工具會把這些資訊變成可以立即開始測試的通路策略。",
306
306
  previewSteps: [
307
307
  "說明產品和目標客戶",
308
308
  "補充市場、階段、時間和預算",
309
- "取得可測試的渠道策略",
309
+ "取得可測試的通路策略",
310
310
  ],
311
- rightPanelHint: "提交後,這裡會顯示渠道策略和首個驗證計畫。",
311
+ rightPanelHint: "提交後,這裡會顯示通路策略和首個驗證計畫。",
312
312
  previewItems: [
313
- "現在最值得優先驗證的 3-5 個渠道。",
314
- "暫時不建議投入的渠道和原因。",
315
- "每個渠道的第一步動作、驗證指標和主要風險。",
313
+ "現在最值得優先驗證的 3-5 個通路。",
314
+ "暫時不建議投入的通路和原因。",
315
+ "每個通路的第一步動作、驗證指標和主要風險。",
316
316
  "一份簡單的 7 天執行計劃。",
317
317
  ],
318
- runningTitle: "正在產生你的渠道策略",
318
+ runningTitle: "正在產生你的通路策略",
319
319
  runningHint:
320
- "正在結合產品資訊和限制條件,產生你的首輪渠道策略,可能需要一兩分鐘。",
320
+ "正在結合產品資訊和限制條件,產生你的首輪通路策略,可能需要一兩分鐘。",
321
321
  loadingSteps: [
322
322
  { status: "complete", title: "讀取產品資訊", countdown: "" },
323
- { status: "active", title: "比較渠道選項", countdown: "" },
323
+ { status: "active", title: "比較通路選項", countdown: "" },
324
324
  { status: "pending", title: "準備首個測試", countdown: "" },
325
325
  ],
326
326
  loadingTip:
327
- "冷啟動通常先驗證一個低成本社區、內容或夥伴渠道,再擴展到更重的廣告和長期 SEO。",
328
- runningStatusLabel: "正在產生渠道策略",
327
+ "冷啟動通常先驗證一個低成本社區、內容或夥伴通路,再擴展到更重的廣告和長期 SEO。",
328
+ runningStatusLabel: "正在產生通路策略",
329
329
  runningTipLabel: "提示",
330
- reportTitle: "客戶獲取渠道策略",
330
+ reportTitle: "客戶獲取通路策略",
331
331
  copyReport: "複製報告",
332
332
  copiedReport: "已複製",
333
333
  copyMarkdown: "複製 Markdown",
334
334
  downloadHtml: "下載 HTML 報告",
335
335
  analyzeAnother: "重新分析",
336
336
  retry: "重試",
337
- errorTitle: "暫時無法產生渠道策略",
337
+ errorTitle: "暫時無法產生通路策略",
338
338
  sections: {
339
339
  analysis: "分析依據",
340
- priority: "優先渠道",
340
+ priority: "優先通路",
341
341
  plan: "簡單執行計劃",
342
342
  avoid: "暫不優先",
343
343
  boundary: "可信邊界",
@@ -345,7 +345,7 @@ const coldStartChannelSelector = {
345
345
  labels: {
346
346
  productModel: "產品/商業模式",
347
347
  userStructure: "使用者結構",
348
- channelDiscovery: "候選渠道發現",
348
+ channelDiscovery: "候選通路發現",
349
349
  selectionCriteria: "選擇準則",
350
350
  targetSegment: "目標客群",
351
351
  whyNow: "為什麼現在做",
@@ -357,7 +357,7 @@ const coldStartChannelSelector = {
357
357
  risks: "風險",
358
358
  actions: "行動",
359
359
  expectedSignal: "預期信號",
360
- missingInfo: "缺失信息",
360
+ missingInfo: "缺失資訊",
361
361
  },
362
362
  fallback: {
363
363
  unknown: "尚未判定",
@@ -388,10 +388,10 @@ const coldStartChannelSelector = {
388
388
  errors: {
389
389
  missingInput: "請輸入產品 URL,或填寫一段足夠具體的產品描述。",
390
390
  invalidUrl: "請輸入可公開存取的有效產品 URL,或清空 URL 後改用產品說明。",
391
- weakDescription: "產品描述太短,請補充目標用戶、問題和當前階段。",
391
+ weakDescription: "產品描述太短,請補充目標使用者、問題和當前階段。",
392
392
  validation: "請先修正輸入內容。",
393
393
  submit: "暫時無法開始分析,請稍後重試。",
394
- task: "分析沒有完成,因此暫時無法顯示渠道策略。請重試。",
394
+ task: "分析沒有完成,因此暫時無法顯示通路策略。請重試。",
395
395
  timeout: "分析耗時超過預期,請稍後重試。",
396
396
  schema: "報告無法被安全讀取,請重新分析。",
397
397
  },
@@ -420,7 +420,7 @@ const coldStartChannelSelector = {
420
420
  { value: "prototype", label: "原型階段" },
421
421
  { value: "private_beta", label: "內測階段" },
422
422
  { value: "launched", label: "剛上線" },
423
- { value: "early_traction", label: "已有少量用戶" },
423
+ { value: "early_traction", label: "已有少量使用者" },
424
424
  ],
425
425
  weeklyHoursOptions: [
426
426
  { value: "under_3", label: "少於 3 小時" },