@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,10 +1,10 @@
1
1
  const appStoreScreenshotGenerator = {
2
2
  meta: {
3
- title: "App Store / Google Play 上架截圖生成器",
4
- displayTitle: "App Store / Google Play 上架截圖生成器",
3
+ title: "App Store / Google Play 上架截圖產生器",
4
+ displayTitle: "App Store / Google Play 上架截圖產生器",
5
5
  description:
6
- "上傳真實 UI 截圖並補充產品資訊,生成 Apple App Store 或 Google Play 上架截圖套圖,便於審視與繼續精修。",
7
- intro: "為 App 發佈和 ASO 準備商店截圖與橫版主圖,用產品上下文和內置 prompt 生成一套視覺方向,再按平臺規則複核。",
6
+ "上傳真實 UI 截圖並補充產品資訊,產生 Apple App Store 或 Google Play 上架截圖套圖,方便檢視與繼續精修。",
7
+ intro: "為 App 發布和 ASO 準備商店截圖與橫幅主圖,利用產品脈絡和內建 prompt 產生一套視覺方向,再依平台規則複核。",
8
8
  category: "ASO 工具",
9
9
  keywords: [
10
10
  "應用商店上架圖",
@@ -15,41 +15,41 @@ const appStoreScreenshotGenerator = {
15
15
  },
16
16
  guide: {
17
17
  heroVisualAlt:
18
- "應用商店上架圖生成器 Hero 視覺圖,展示一套應用商店截圖。",
19
- workspaceHeading: "App Store / Google Play 上架截圖生成器",
18
+ "應用程式商店上架圖產生器 Hero 視覺圖,展示一套應用程式商店截圖。",
19
+ workspaceHeading: "App Store / Google Play 上架截圖產生器",
20
20
  workspaceHint:
21
- "上傳真實 UI 截圖後,雲端 Agent 會通過 Skills-OL 抓取補充上下文、規劃完整套圖並提交真實生圖任務。",
22
- whatYouGetHeading: "生成後會得到什麼",
21
+ "上傳真實 UI 截圖後,線上圖像產生流程會讀取補充脈絡、規劃完整套圖並提交真實圖片產生任務。",
22
+ whatYouGetHeading: "產生後會得到什麼",
23
23
  valueVisualAlt:
24
- "應用商店上架圖導出包,展示多張手機截圖、橫版主圖、PNG 和 SVG 文件。",
24
+ "應用程式商店上架圖匯出包,展示多張手機截圖、橫幅主圖、PNG 和 SVG 檔案。",
25
25
  whatYouGetItems: [
26
26
  {
27
- title: "平臺尺寸套圖",
27
+ title: "平台尺寸套圖",
28
28
  body: "按商店規格輸出 App Store 最多 10 張截圖,或 Google Play feature graphic 加最多 8 張手機圖,先看完整套圖方向是否成立。",
29
29
  },
30
30
  {
31
31
  title: "可下載 PNG",
32
- body: "選中某張上架圖後可直接下載 PNG,用於團隊複核、商店後臺上傳或設計評審。",
32
+ body: "選取某張上架圖後可直接下載 PNG,用於團隊複核、商店後台上傳或設計評審。",
33
33
  },
34
34
  {
35
35
  title: "可交接 SVG 包裝",
36
- body: "需要交給設計側時下載 SVG 包裝文件,保留生成圖、尺寸和 prompt 元數據,方便繼續覆盤和精修。",
36
+ body: "需要交給設計端時下載 SVG 包裝檔案,保留產生的圖片、尺寸和 prompt 中繼資料,方便繼續檢視和精修。",
37
37
  },
38
38
  {
39
39
  title: "明確的來源邊界",
40
- body: "UI 截圖是必填視覺來源;URL 只作為 brief 輸入並由 Skills-OL 抓取公開上下文。避免使用真實用戶、隱私數據或未授權品牌素材。",
40
+ body: "UI 截圖是必填視覺來源;URL 僅用於讀取公開脈絡並補充 brief。避免使用真實使用者、隱私資料或未授權品牌素材。",
41
41
  },
42
42
  {
43
43
  title: "失敗原因提示",
44
- body: " URL、未上傳截圖、格式不支持或導出失敗時,結果區會給出可恢復提示,而不是生成空素材。",
44
+ body: "缺少 URL、未上傳截圖、格式不支援或匯出失敗時,結果區會提供可恢復提示,而不是產生空白素材。",
45
45
  },
46
46
  ],
47
- comparisonHeading: "一個好的上架圖生成器應該具備什麼",
47
+ comparisonHeading: "一個好的上架圖產生器應該具備什麼",
48
48
  comparisonItems: [
49
49
  {
50
50
  standard: "尺寸清楚",
51
51
  manual: "手工套模板容易把 App Store 豎圖、Google Play 手機圖和橫版主圖混成同一構圖。",
52
- tomako: "先按平臺和版式生成對應畫布,讓你在設計精修前看清每類素材的構圖差異。",
52
+ tomako: "先依平台和版型產生對應畫布,讓你在設計精修前看清每類素材的構圖差異。",
53
53
  },
54
54
  {
55
55
  standard: "速度夠快",
@@ -58,87 +58,87 @@ const appStoreScreenshotGenerator = {
58
58
  },
59
59
  {
60
60
  standard: "結果可編輯",
61
- manual: "截圖生成器只給扁平 PNG,後續改標題、配色或真實界面時還要重做。",
62
- tomako: "返回真實生圖 PNG,並提供帶 prompt 元數據的 SVG 包裝,方便先複核方向,再交給設計繼續精修。",
61
+ manual: "截圖產生器只提供扁平 PNG,後續修改標題、配色或真實介面時還要重做。",
62
+ tomako: "傳回真實產生的 PNG,並提供含 prompt 中繼資料的 SVG 包裝,方便先複核方向,再交給設計繼續精修。",
63
63
  },
64
64
  {
65
65
  standard: "邊界可信",
66
- manual: "很多工具把生成結果說成可直接上線,忽略商店尺寸、隱私、商標和平臺審核風險。",
67
- tomako: "頁面和結果提示都明確正式上傳前仍要按最新平臺規則和品牌素材複核。",
66
+ manual: "很多工具把產生結果說成可直接上線,忽略商店尺寸、隱私、商標和平台審核風險。",
67
+ tomako: "頁面和結果提示都明確說明,正式上傳前仍要依最新平台規則和品牌素材複核。",
68
68
  },
69
69
  {
70
70
  standard: "素材安全",
71
- manual: "上傳未發佈截圖到不確定的在線工具,團隊很難判斷文件去向。",
72
- tomako: "頁面明確說明上傳截圖會進入生圖任務;正式產品或含隱私內容的截圖應先脫敏再使用。",
71
+ manual: "把未發布截圖上傳到不確定的線上工具,團隊很難判斷檔案去向。",
72
+ tomako: "頁面明確說明上傳截圖會進入圖片產生任務;正式產品或含隱私內容的截圖應先去識別化再使用。",
73
73
  },
74
74
  ],
75
- supportHeading: "支持範圍與失敗邊界",
75
+ supportHeading: "支援範圍與失敗邊界",
76
76
  supportVisualAlt:
77
- "應用商店素材支持邊界視覺圖,展示手機圖、橫版主圖、隱私標記和複核清單。",
77
+ "應用程式商店素材支援邊界視覺圖,展示手機圖、橫幅主圖、隱私標記和複核清單。",
78
78
  supportBody: [
79
- "必須上傳本地 UI 截圖;產品 URL、App Store / Google Play 鏈接、產品名和賣點用於補充標題、描述和頁面摘要。",
80
- "支持 Apple App Store 和 Google Play 兩類平臺方向,並提供完整截圖套圖、豎版截圖或橫版 feature graphic。",
81
- "當前會通過雲端 Agent 調用 Skills-OL,再由 Skills-OL 提交真實生圖任務;但不連接 App Store Connect 或 Google Play Console 後臺。",
82
- "如果截圖含測試賬號、真實用戶、隱私數據或未授權品牌,請先脫敏或不要上傳。",
83
- "如果沒有結果,先檢查 URL 是否為空、上傳文件是否為 PNG/JPG/WebP、瀏覽器是否阻止本地文件讀取,以及是否選擇了正確的輸入來源。",
79
+ "必須上傳本機 UI 截圖;產品 URL、App Store / Google Play 連結、產品名稱和賣點用於補充標題、描述和頁面摘要。",
80
+ "支援 Apple App Store 和 Google Play 兩類平台方向,並提供完整截圖套圖、直式截圖或橫幅 feature graphic。",
81
+ "目前透過線上圖像產生流程提交真實圖片產生任務,但不連接 App Store Connect 或 Google Play Console 後台。",
82
+ "如果截圖含測試帳號、真實使用者、隱私資料或未授權品牌,請先去識別化或不要上傳。",
83
+ "如果沒有結果,先檢查 URL 是否為空、上傳檔案是否為 PNG/JPG/WebP、瀏覽器是否阻止本機檔案讀取,以及是否選擇了正確的輸入來源。",
84
84
  "正式上架前仍要複核最新尺寸、審核政策、商標/版權授權、隱私內容、文案承諾和不同設備上的可讀性。",
85
85
  ],
86
86
  resultGuidanceHeading: "下載後怎麼使用這些上架圖",
87
87
  useCaseVisualAlt:
88
- "產品和設計團隊整理應用商店上架圖素材,展示截圖板、橫版主圖、配色和導出文件夾。",
88
+ "產品和設計團隊整理應用程式商店上架圖素材,展示截圖板、橫幅主圖、配色和匯出資料夾。",
89
89
  resultGuidanceBody: [
90
90
  "把 PNG 當作方向圖或評審圖,先確認首張截圖是否講清核心收益,再決定是否繼續精修。",
91
- "把 SVG 包裝文件交給設計師用於追蹤 prompt、尺寸和生成圖,再繼續替換真實產品截圖、品牌字體、正式文案和本地化版本。",
91
+ "把 SVG 包裝檔案交給設計師,用於追蹤 prompt、尺寸和產生的圖片,再繼續替換真實產品截圖、品牌字型、正式文案和在地化版本。",
92
92
  "App Store 與 Google Play 不要盲目複用同一張圖。豎版截圖、iPad 圖和橫版 feature graphic 應分別檢查主體比例。",
93
- "如果生成圖看起來信息太滿,優先刪掉小標籤、次要功能和過長副標題,讓首屏利益點更清楚。",
94
- "上傳到真實商店後臺前,使用最新官方規格和審核指南複查尺寸、內容、隱私、商標、版權和誇張承諾。",
93
+ "如果產生的圖片看起來資訊太滿,優先刪除小標籤、次要功能和過長副標題,讓首屏利益點更清楚。",
94
+ "上傳到真實商店後台前,使用最新官方規格和審核指南複查尺寸、內容、隱私、商標、版權和誇張承諾。",
95
95
  ],
96
96
  useCasesHeading: "適用場景",
97
97
  useCaseItems: [
98
98
  "獨立開發者準備首版 App Store 或 Google Play 上架素材,先確定視覺方向。",
99
99
  "增長團隊快速比較 ASO 截圖、功能賣點圖和橫版主圖的不同風格。",
100
100
  "產品團隊把新版本 UI 截圖轉成商店更新素材,用於發佈計劃或活動頁評審。",
101
- "設計師收到粗糙產品 brief 後,先生成低保真方向,再決定最終畫板和截圖順序。",
101
+ "設計師收到粗略產品 brief 後,先產生低擬真方向,再決定最終畫板和截圖順序。",
102
102
  "外包或遠程團隊用 PNG/SVG 對齊文案、構圖和品牌色,減少反覆溝通。",
103
- "上架前檢查 App Icon、商店截圖、社媒素材是否使用同一套品牌語言。",
103
+ "上架前檢查 App Icon、商店截圖、社群媒體素材是否使用同一套品牌語言。",
104
104
  ],
105
105
  faqHeading: "常見問題",
106
106
  faqItems: [
107
107
  {
108
108
  question: "這個工具會自動抓取產品 URL 嗎?",
109
109
  answer:
110
- "會抓取可公開訪問頁面的 title、description、OG 信息和少量頁面摘要,用來推導產品賣點和套圖文案。登錄後內容、反爬頁面或無法訪問的 URL 可能抓取失敗。",
110
+ "會讀取可公開存取頁面的 title、description、OG 資訊和少量頁面摘要,用來推導產品賣點和套圖文案。登入後內容、阻擋自動存取的頁面或無法存取的 URL 可能讀取失敗。",
111
111
  },
112
112
  {
113
- question: "上傳的 UI 截圖會保存到服務器嗎?",
113
+ question: "上傳的 UI 截圖會儲存到伺服器嗎?",
114
114
  answer:
115
- "選擇 UI 截圖模式時,截圖會作為參考圖提交給生圖服務。請不要上傳真實用戶數據、未脫敏後臺、客戶信息或未授權品牌素材。",
115
+ "選擇 UI 截圖模式時,截圖會作為參考圖提交給圖片產生服務。請不要上傳真實使用者資料、未去識別化的後台畫面、客戶資訊或未授權品牌素材。",
116
116
  },
117
117
  {
118
- question: "生成的 PNG 能直接上傳到 App Store 或 Google Play 嗎?",
118
+ question: "產生的 PNG 能直接上傳到 App Store 或 Google Play 嗎?",
119
119
  answer:
120
- "可以作為團隊複核或上傳前預覽,但正式發佈前必須按平臺最新尺寸、內容政策、隱私、商標和版權要求複查。不要把生成結果當成最終審核保證。",
120
+ "可以作為團隊複核或上傳前預覽,但正式發布前必須依平台最新尺寸、內容政策、隱私、商標和版權要求複查。不要把產生結果當成最終審核保證。",
121
121
  },
122
122
  {
123
123
  question: "為什麼還提供 SVG 下載?",
124
124
  answer:
125
- "當前 SVG 是生成圖包裝文件,會保留圖片引用、尺寸和 prompt 元數據,方便交給設計師覆盤方向並繼續精修。",
125
+ "目前 SVG 是產生圖片的包裝檔案,會保留圖片引用、尺寸和 prompt 中繼資料,方便交給設計師檢視方向並繼續精修。",
126
126
  },
127
127
  {
128
128
  question: "沒有真實產品截圖時能用嗎?",
129
129
  answer:
130
- "需要先上傳真實 UI 截圖生成上架圖;產品 URL 或產品名只能補充上下文,不能替代真實界面。",
130
+ "需要先上傳真實 UI 截圖產生上架圖;產品 URL 或產品名稱只能補充脈絡,不能取代真實介面。",
131
131
  },
132
132
  {
133
133
  question: "這個工具會檢查最新商店審核規則嗎?",
134
134
  answer:
135
- "不會。它負責生成視覺結果,不連接 App Store Connect、Google Play Console 或實時政策接口。正式上傳前請按官方後臺和最新指南複核。",
135
+ "不會。它負責產生視覺結果,不連接 App Store Connect、Google Play Console 或即時政策介面。正式上傳前請依官方後台和最新指南複核。",
136
136
  },
137
137
  ],
138
138
  ctaPrimary: "先切 App Icon",
139
139
  ctaSecondary: "返回全部工具",
140
140
  ctaHint:
141
- "商店截圖通常和 App Icon 一起評審。如果圖標尺寸包還沒準備好,可以先生成 App Icon 資源,再回來統一上架圖風格。",
141
+ "商店截圖通常和 App Icon 一起評審。如果圖示尺寸包還沒準備好,可以先產生 App Icon 資源,再回來統一上架圖風格。",
142
142
  },
143
143
  } as const;
144
144