aso-mcp 1.1.0 → 1.3.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.
Files changed (71) hide show
  1. package/README.md +22 -21
  2. package/build/cache/sqlite-cache.d.ts.map +1 -1
  3. package/build/cache/sqlite-cache.js +10 -4
  4. package/build/cache/sqlite-cache.js.map +1 -1
  5. package/build/data-sources/app-store-connect.d.ts.map +1 -1
  6. package/build/data-sources/app-store-connect.js +80 -58
  7. package/build/data-sources/app-store-connect.js.map +1 -1
  8. package/build/data-sources/app-store.d.ts +1 -1
  9. package/build/data-sources/app-store.d.ts.map +1 -1
  10. package/build/data-sources/app-store.js +8 -2
  11. package/build/data-sources/app-store.js.map +1 -1
  12. package/build/data-sources/aso-scoring.d.ts +18 -6
  13. package/build/data-sources/aso-scoring.d.ts.map +1 -1
  14. package/build/data-sources/aso-scoring.js +57 -46
  15. package/build/data-sources/aso-scoring.js.map +1 -1
  16. package/build/data-sources/custom-scoring.d.ts +18 -1
  17. package/build/data-sources/custom-scoring.d.ts.map +1 -1
  18. package/build/data-sources/custom-scoring.js +73 -9
  19. package/build/data-sources/custom-scoring.js.map +1 -1
  20. package/build/server.js +6 -1
  21. package/build/server.js.map +1 -1
  22. package/build/tools/analyze-competitors.d.ts.map +1 -1
  23. package/build/tools/analyze-competitors.js +31 -10
  24. package/build/tools/analyze-competitors.js.map +1 -1
  25. package/build/tools/analyze-reviews.d.ts.map +1 -1
  26. package/build/tools/analyze-reviews.js +23 -21
  27. package/build/tools/analyze-reviews.js.map +1 -1
  28. package/build/tools/connect-get-metadata.js +1 -1
  29. package/build/tools/connect-update-metadata.js +1 -1
  30. package/build/tools/discover-keywords.d.ts.map +1 -1
  31. package/build/tools/discover-keywords.js +73 -46
  32. package/build/tools/discover-keywords.js.map +1 -1
  33. package/build/tools/generate-aso-brief.d.ts.map +1 -1
  34. package/build/tools/generate-aso-brief.js +179 -84
  35. package/build/tools/generate-aso-brief.js.map +1 -1
  36. package/build/tools/get-app-details.js +1 -1
  37. package/build/tools/get-app-details.js.map +1 -1
  38. package/build/tools/get-aso-report.d.ts.map +1 -1
  39. package/build/tools/get-aso-report.js +7 -3
  40. package/build/tools/get-aso-report.js.map +1 -1
  41. package/build/tools/keyword-gap.d.ts.map +1 -1
  42. package/build/tools/keyword-gap.js +6 -2
  43. package/build/tools/keyword-gap.js.map +1 -1
  44. package/build/tools/localized-keywords.d.ts.map +1 -1
  45. package/build/tools/localized-keywords.js +16 -2
  46. package/build/tools/localized-keywords.js.map +1 -1
  47. package/build/tools/optimize-metadata.d.ts.map +1 -1
  48. package/build/tools/optimize-metadata.js +15 -7
  49. package/build/tools/optimize-metadata.js.map +1 -1
  50. package/build/tools/search-keywords.d.ts.map +1 -1
  51. package/build/tools/search-keywords.js +5 -3
  52. package/build/tools/search-keywords.js.map +1 -1
  53. package/build/tools/suggest-keywords.d.ts.map +1 -1
  54. package/build/tools/suggest-keywords.js +9 -3
  55. package/build/tools/suggest-keywords.js.map +1 -1
  56. package/build/tools/track-ranking.d.ts.map +1 -1
  57. package/build/tools/track-ranking.js +20 -13
  58. package/build/tools/track-ranking.js.map +1 -1
  59. package/build/types/index.d.ts +9 -1
  60. package/build/types/index.d.ts.map +1 -1
  61. package/build/utils/formatters.d.ts +18 -0
  62. package/build/utils/formatters.d.ts.map +1 -1
  63. package/build/utils/formatters.js +39 -1
  64. package/build/utils/formatters.js.map +1 -1
  65. package/build/utils/localization.d.ts.map +1 -1
  66. package/build/utils/localization.js +10 -2
  67. package/build/utils/localization.js.map +1 -1
  68. package/build/utils/rate-limiter.d.ts.map +1 -1
  69. package/build/utils/rate-limiter.js +36 -16
  70. package/build/utils/rate-limiter.js.map +1 -1
  71. package/package.json +1 -1
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![Node.js](https://img.shields.io/badge/Node.js-22%2B-green.svg)](https://nodejs.org)
6
6
  [![MCP](https://img.shields.io/badge/MCP-Compatible-purple.svg)](https://modelcontextprotocol.io)
7
7
 
8
- **App Store Optimization toolkit for AI assistants.** Keyword research, competitor analysis, review sentiment, metadata optimization all through the Model Context Protocol.
8
+ **App Store Optimization toolkit for AI assistants.** Keyword research, competitor analysis, review sentiment, and metadata optimization. All through the Model Context Protocol.
9
9
 
10
10
  > **No API key required.** Works out of the box with real App Store data. Supports 155+ countries.
11
11
 
@@ -23,13 +23,13 @@ npm install -g aso-mcp
23
23
 
24
24
  ## Why aso-mcp?
25
25
 
26
- - **18 specialized ASO tools** from keyword discovery to App Store Connect metadata management
27
- - **Real App Store data** live search results, ratings, reviews, and suggestions
28
- - **Custom scoring engine** proprietary algorithm independent of Apple Search Ads API issues
29
- - **No API key needed** zero configuration, install and go
30
- - **Smart caching** SQLite-backed cache for fast repeated queries
31
- - **Rate limiting** built-in request management to avoid Apple throttling
32
- - **Multi-country** analyze keywords across 155+ App Store markets
26
+ - **19 specialized ASO tools**: from keyword discovery to App Store Connect metadata management
27
+ - **Real App Store data**: live search results, ratings, reviews, and suggestions
28
+ - **Custom scoring engine**: proprietary algorithm independent of Apple Search Ads API issues
29
+ - **No API key needed**: zero configuration, install and go
30
+ - **Smart caching**: SQLite-backed cache for fast repeated queries
31
+ - **Rate limiting**: built-in request management to avoid Apple throttling
32
+ - **Multi-country**: analyze keywords across 155+ App Store markets
33
33
 
34
34
  ## Integration
35
35
 
@@ -82,7 +82,7 @@ Any MCP-compatible client (ChatGPT, Cursor, Windsurf, etc.) can connect via stdi
82
82
 
83
83
  ## Tools
84
84
 
85
- ### Phase 1 Keyword Research
85
+ ### Phase 1: Keyword Research
86
86
 
87
87
  | Tool | Description |
88
88
  |------|-------------|
@@ -90,7 +90,7 @@ Any MCP-compatible client (ChatGPT, Cursor, Windsurf, etc.) can connect via stdi
90
90
  | `suggest_keywords` | Keyword suggestions by app ID (category, similar, competition strategies) |
91
91
  | `get_app_details` | Full ASO info for an app + metadata analysis |
92
92
 
93
- ### Phase 2 Competitor Analysis & Optimization
93
+ ### Phase 2: Competitor Analysis & Optimization
94
94
 
95
95
  | Tool | Description |
96
96
  |------|-------------|
@@ -100,21 +100,21 @@ Any MCP-compatible client (ChatGPT, Cursor, Windsurf, etc.) can connect via stdi
100
100
  | `track_ranking` | App's ranking position across multiple keywords |
101
101
  | `keyword_gap` | Keyword difference between two apps + opportunity analysis |
102
102
 
103
- ### Phase 3 Localization & Reporting
103
+ ### Phase 3: Localization & Reporting
104
104
 
105
105
  | Tool | Description |
106
106
  |------|-------------|
107
107
  | `localized_keywords` | Keyword performance comparison across different countries |
108
108
  | `get_aso_report` | Comprehensive ASO report: scores + competitors + reviews in one call |
109
109
 
110
- ### Phase 4 ASO Generation
110
+ ### Phase 4: ASO Generation
111
111
 
112
112
  | Tool | Description |
113
113
  |------|-------------|
114
114
  | `discover_keywords` | Keyword discovery from scratch for a new app |
115
115
  | `generate_aso_brief` | Complete ASO brief with keyword pool, competitor patterns, and metadata suggestions |
116
116
 
117
- ### Phase 5 App Store Connect
117
+ ### Phase 5: App Store Connect
118
118
 
119
119
  Directly read and update your app's metadata on App Store Connect without leaving the AI assistant.
120
120
 
@@ -124,6 +124,7 @@ Directly read and update your app's metadata on App Store Connect without leavin
124
124
  | `connect_get_app` | Find app by bundle ID, get ASC ID + version status |
125
125
  | `connect_get_metadata` | Read current metadata (title, subtitle, keywords, description) for a locale |
126
126
  | `connect_update_metadata` | Update metadata with character limit validation + before/after diff |
127
+ | `connect_batch_update_metadata` | Batch update metadata for multiple locales in one call (max 40 locales) |
127
128
  | `connect_list_localizations` | List all locales and metadata completeness status |
128
129
 
129
130
  <details>
@@ -131,14 +132,14 @@ Directly read and update your app's metadata on App Store Connect without leavin
131
132
 
132
133
  Requires an [App Store Connect API Key](https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api):
133
134
 
134
- **Option A Environment variables:**
135
+ **Option A: Environment variables**
135
136
  ```bash
136
137
  export ASC_ISSUER_ID="your-issuer-id"
137
138
  export ASC_KEY_ID="your-key-id"
138
139
  export ASC_PRIVATE_KEY_PATH="/path/to/AuthKey_XXXXX.p8"
139
140
  ```
140
141
 
141
- **Option B Use the setup tool:**
142
+ **Option B: Use the setup tool**
142
143
  ```
143
144
  "Set up App Store Connect with issuer ID xxx, key ID yyy, and key at /path/to/AuthKey.p8"
144
145
  ```
@@ -190,7 +191,7 @@ The server calculates its own scores, independent of Apple Search Ads API:
190
191
  | **Opportunity** | High traffic + low difficulty = high opportunity |
191
192
  | **Overall** | Weighted combination of all scores (0-10) |
192
193
 
193
- When the `aso` npm package fails to reach Apple (503 errors), the server automatically falls back to custom scoring using search result analysis so scores are always available.
194
+ When the `aso` npm package fails to reach Apple (503 errors), the server automatically falls back to custom scoring using search result analysis. Scores are always available.
194
195
 
195
196
  ## Development
196
197
 
@@ -212,11 +213,11 @@ npx tsx test-generation.ts # ASO generation tests (8)
212
213
  ## Tech Stack
213
214
 
214
215
  - **TypeScript** + **Node.js 22+**
215
- - **[MCP SDK](https://modelcontextprotocol.io)** Model Context Protocol
216
- - **[app-store-scraper](https://www.npmjs.com/package/app-store-scraper)** App Store data
217
- - **[aso](https://www.npmjs.com/package/aso)** ASO scoring with automatic fallback
218
- - **[better-sqlite3](https://www.npmjs.com/package/better-sqlite3)** Cache layer
219
- - **[Zod](https://www.npmjs.com/package/zod)** Schema validation
216
+ - **[MCP SDK](https://modelcontextprotocol.io)**: Model Context Protocol
217
+ - **[app-store-scraper](https://www.npmjs.com/package/app-store-scraper)**: App Store data
218
+ - **[aso](https://www.npmjs.com/package/aso)**: ASO scoring with automatic fallback
219
+ - **[better-sqlite3](https://www.npmjs.com/package/better-sqlite3)**: Cache layer
220
+ - **[Zod](https://www.npmjs.com/package/zod)**: Schema validation
220
221
 
221
222
  ## License
222
223
 
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-cache.d.ts","sourceRoot":"","sources":["../../src/cache/sqlite-cache.ts"],"names":[],"mappings":"AASA,wBAAgB,SAAS,IAAI,IAAI,CAyBhC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvD;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAa,GACxB,IAAI,CAaN;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,aAAa,IAAI;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAgBA"}
1
+ {"version":3,"file":"sqlite-cache.d.ts","sourceRoot":"","sources":["../../src/cache/sqlite-cache.ts"],"names":[],"mappings":"AAWA,wBAAgB,SAAS,IAAI,IAAI,CAyBhC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvD;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAa,GACxB,IAAI,CAiBN;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,aAAa,IAAI;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAgBA"}
@@ -3,7 +3,9 @@ import path from "path";
3
3
  import os from "os";
4
4
  import fs from "fs";
5
5
  const MAX_CACHE_ENTRIES = 5000;
6
+ const SIZE_CHECK_INTERVAL = 100;
6
7
  let db;
8
+ let writesSinceLastCheck = 0;
7
9
  export function initCache() {
8
10
  const dataDir = path.join(os.homedir(), ".aso-mcp");
9
11
  if (!fs.existsSync(dataDir)) {
@@ -34,10 +36,14 @@ export function getFromCache(key) {
34
36
  export function setCache(key, value, ttlSeconds = 3600) {
35
37
  const expiresAt = Math.floor(Date.now() / 1000) + ttlSeconds;
36
38
  db.prepare("INSERT OR REPLACE INTO cache (key, value, expires_at) VALUES (?, ?, ?)").run(key, value, expiresAt);
37
- // Periodic size check (every ~100 writes, check and trim)
38
- const count = db.prepare("SELECT COUNT(*) as count FROM cache").get().count;
39
- if (count > MAX_CACHE_ENTRIES) {
40
- enforceSizeLimit();
39
+ // Throttle: only check size every SIZE_CHECK_INTERVAL writes (avoids O(N) COUNT per write).
40
+ writesSinceLastCheck++;
41
+ if (writesSinceLastCheck >= SIZE_CHECK_INTERVAL) {
42
+ writesSinceLastCheck = 0;
43
+ const count = db.prepare("SELECT COUNT(*) as count FROM cache").get().count;
44
+ if (count > MAX_CACHE_ENTRIES) {
45
+ enforceSizeLimit();
46
+ }
41
47
  }
42
48
  }
43
49
  export function deleteCache(keyPattern) {
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-cache.js","sourceRoot":"","sources":["../../src/cache/sqlite-cache.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,IAAI,EAAqB,CAAC;AAE1B,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9C,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE1B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEhC,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;IAEH,2BAA2B;IAC3B,EAAE,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAEtE,gCAAgC;IAChC,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CACN,8EAA8E,CAC/E;SACA,GAAG,CAAC,GAAG,CAAkC,CAAC;IAE7C,OAAO,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,GAAW,EACX,KAAa,EACb,aAAqB,IAAI;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;IAC7D,EAAE,CAAC,OAAO,CACR,wEAAwE,CACzE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAE7B,0DAA0D;IAC1D,MAAM,KAAK,GACT,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EACtD,CAAC,KAAK,CAAC;IACR,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC9B,gBAAgB,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa;IAM3B,MAAM,KAAK,GAAG,EAAE;SACb,OAAO,CAAC,qCAAqC,CAAC;SAC9C,GAAG,EAAuB,CAAC;IAC9B,MAAM,OAAO,GAAG,EAAE;SACf,OAAO,CACN,8EAA8E,CAC/E;SACA,GAAG,EAAuB,CAAC;IAE9B,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,KAAK;QACzB,cAAc,EAAE,OAAO,CAAC,KAAK;QAC7B,UAAU,EAAE,iBAAiB;QAC7B,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,+BAA+B;IAC/B,EAAE,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAEtE,MAAM,KAAK,GACT,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EACtD,CAAC,KAAK,CAAC;IAER,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC9B,gEAAgE;QAChE,MAAM,QAAQ,GAAG,KAAK,GAAG,iBAAiB,CAAC;QAC3C,EAAE,CAAC,OAAO,CACR;;QAEE,CACH,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"sqlite-cache.js","sourceRoot":"","sources":["../../src/cache/sqlite-cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-store-connect.d.ts","sourceRoot":"","sources":["../../src/data-sources/app-store-connect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAS3B,wBAAgB,UAAU,IAAI,aAAa,GAAG,IAAI,CAqBjD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAKtD;AAwFD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,MAAM,CAC1B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAuCzB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAa,GACpB,OAAO,CAAC,mBAAmB,CAAC,CA2F9B;AA2HD,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,YAAO,EACrB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC,CA8FtE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,0BAA0B,EAAE,CAAC,CA8EvC"}
1
+ {"version":3,"file":"app-store-connect.d.ts","sourceRoot":"","sources":["../../src/data-sources/app-store-connect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAS3B,wBAAgB,UAAU,IAAI,aAAa,GAAG,IAAI,CAqBjD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAKtD;AAwFD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,MAAM,CAC1B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAuCzB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAa,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAoH9B;AA6HD,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,YAAO,EACrB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAiGtE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,0BAA0B,EAAE,CAAC,CA8EvC"}
@@ -88,7 +88,7 @@ async function apiRequest(config, endpoint, method = "GET", body) {
88
88
  try {
89
89
  const parsed = JSON.parse(errorBody);
90
90
  if (parsed.errors?.[0]?.detail) {
91
- errorMsg += ` ${parsed.errors[0].detail}`;
91
+ errorMsg += `: ${parsed.errors[0].detail}`;
92
92
  }
93
93
  }
94
94
  catch {
@@ -106,7 +106,7 @@ export async function validateCredentials(config) {
106
106
  if (!fs.existsSync(config.privateKeyPath)) {
107
107
  throw new Error(`Private key file not found: ${config.privateKeyPath}`);
108
108
  }
109
- // Test API call list apps (limit 1)
109
+ // Test API call: list apps (limit 1)
110
110
  await apiRequest(config, "/v1/apps?limit=1");
111
111
  return true;
112
112
  }
@@ -129,7 +129,7 @@ export async function getApp(config, bundleId) {
129
129
  }
130
130
  }
131
131
  catch {
132
- // No editable version not a fatal error
132
+ // No editable version. Not a fatal error.
133
133
  }
134
134
  return {
135
135
  id: app.id,
@@ -142,57 +142,73 @@ export async function getApp(config, bundleId) {
142
142
  }
143
143
  export async function getMetadata(config, appId, locale = "tr") {
144
144
  const resolvedLocale = countryToLocale(locale);
145
- // Fetch app info localizations (name + subtitle)
146
- let name = null;
147
- let subtitle = null;
148
- let appInfoLocalizationId = null;
149
- try {
150
- const appInfosResponse = await apiRequest(config, `/v1/apps/${appId}/appInfos`);
151
- const allInfos = appInfosResponse.data ?? [];
152
- const editableInfo = allInfos.find((info) => info.attributes?.appStoreState !== "READY_FOR_SALE");
153
- const appInfoId = editableInfo?.id ?? allInfos[0]?.id;
154
- if (appInfoId) {
155
- const locResponse = await apiRequest(config, `/v1/appInfos/${appInfoId}/appInfoLocalizations?filter[locale]=${resolvedLocale}`);
156
- const loc = locResponse.data?.[0];
157
- if (loc) {
158
- appInfoLocalizationId = loc.id;
159
- name = loc.attributes?.name ?? null;
160
- subtitle = loc.attributes?.subtitle ?? null;
145
+ // The appInfo branch and the version branch are independent chains of two
146
+ // requests each; running them in parallel halves read latency, which adds
147
+ // up in connect_batch_update_metadata across up to 40 locales.
148
+ const [appInfoData, versionData] = await Promise.all([
149
+ (async () => {
150
+ const data = {
151
+ name: null,
152
+ subtitle: null,
153
+ appInfoLocalizationId: null,
154
+ appInfoId: null,
155
+ };
156
+ try {
157
+ const appInfosResponse = await apiRequest(config, `/v1/apps/${appId}/appInfos`);
158
+ const allInfos = appInfosResponse.data ?? [];
159
+ const editableInfo = allInfos.find((info) => info.attributes?.appStoreState !== "READY_FOR_SALE");
160
+ data.appInfoId = editableInfo?.id ?? allInfos[0]?.id ?? null;
161
+ if (data.appInfoId) {
162
+ const locResponse = await apiRequest(config, `/v1/appInfos/${data.appInfoId}/appInfoLocalizations?filter[locale]=${resolvedLocale}`);
163
+ const loc = locResponse.data?.[0];
164
+ if (loc) {
165
+ data.appInfoLocalizationId = loc.id;
166
+ data.name = loc.attributes?.name ?? null;
167
+ data.subtitle = loc.attributes?.subtitle ?? null;
168
+ }
169
+ }
161
170
  }
162
- }
163
- }
164
- catch {
165
- // App info not available
166
- }
167
- // Fetch version localizations (keywords, description, etc.)
168
- let keywords = null;
169
- let description = null;
170
- let promotionalText = null;
171
- let whatsNew = null;
172
- let supportUrl = null;
173
- let marketingUrl = null;
174
- let versionLocalizationId = null;
175
- try {
176
- // Get the editable version
177
- const versionsResponse = await apiRequest(config, `/v1/apps/${appId}/appStoreVersions?filter[appStoreState]=PREPARE_FOR_SUBMISSION&limit=1`);
178
- const versionId = versionsResponse.data?.[0]?.id;
179
- if (versionId) {
180
- const verLocResponse = await apiRequest(config, `/v1/appStoreVersions/${versionId}/appStoreVersionLocalizations?filter[locale]=${resolvedLocale}`);
181
- const verLoc = verLocResponse.data?.[0];
182
- if (verLoc) {
183
- versionLocalizationId = verLoc.id;
184
- keywords = verLoc.attributes?.keywords ?? null;
185
- description = verLoc.attributes?.description ?? null;
186
- promotionalText = verLoc.attributes?.promotionalText ?? null;
187
- whatsNew = verLoc.attributes?.whatsNew ?? null;
188
- supportUrl = verLoc.attributes?.supportUrl ?? null;
189
- marketingUrl = verLoc.attributes?.marketingUrl ?? null;
171
+ catch {
172
+ // App info not available
190
173
  }
191
- }
192
- }
193
- catch {
194
- // Version localizations not available
195
- }
174
+ return data;
175
+ })(),
176
+ (async () => {
177
+ const data = {
178
+ keywords: null,
179
+ description: null,
180
+ promotionalText: null,
181
+ whatsNew: null,
182
+ supportUrl: null,
183
+ marketingUrl: null,
184
+ versionLocalizationId: null,
185
+ versionId: null,
186
+ };
187
+ try {
188
+ const versionsResponse = await apiRequest(config, `/v1/apps/${appId}/appStoreVersions?filter[appStoreState]=PREPARE_FOR_SUBMISSION&limit=1`);
189
+ data.versionId = versionsResponse.data?.[0]?.id ?? null;
190
+ if (data.versionId) {
191
+ const verLocResponse = await apiRequest(config, `/v1/appStoreVersions/${data.versionId}/appStoreVersionLocalizations?filter[locale]=${resolvedLocale}`);
192
+ const verLoc = verLocResponse.data?.[0];
193
+ if (verLoc) {
194
+ data.versionLocalizationId = verLoc.id;
195
+ data.keywords = verLoc.attributes?.keywords ?? null;
196
+ data.description = verLoc.attributes?.description ?? null;
197
+ data.promotionalText = verLoc.attributes?.promotionalText ?? null;
198
+ data.whatsNew = verLoc.attributes?.whatsNew ?? null;
199
+ data.supportUrl = verLoc.attributes?.supportUrl ?? null;
200
+ data.marketingUrl = verLoc.attributes?.marketingUrl ?? null;
201
+ }
202
+ }
203
+ }
204
+ catch {
205
+ // Version localizations not available
206
+ }
207
+ return data;
208
+ })(),
209
+ ]);
210
+ const { name, subtitle, appInfoLocalizationId, appInfoId: resolvedAppInfoId } = appInfoData;
211
+ const { keywords, description, promotionalText, whatsNew, supportUrl, marketingUrl, versionLocalizationId, versionId: resolvedVersionId, } = versionData;
196
212
  return {
197
213
  locale: resolvedLocale,
198
214
  name,
@@ -211,6 +227,8 @@ export async function getMetadata(config, appId, locale = "tr") {
211
227
  marketingUrl,
212
228
  appInfoLocalizationId,
213
229
  versionLocalizationId,
230
+ appInfoId: resolvedAppInfoId,
231
+ versionId: resolvedVersionId,
214
232
  };
215
233
  }
216
234
  // ─── Helper: Get App Info ID ───
@@ -273,14 +291,16 @@ async function createVersionLocalization(config, versionId, locale, attributes)
273
291
  }
274
292
  // ─── Decode HTML Entities ───
275
293
  function decodeHtmlEntities(text) {
294
+ // &amp; must be decoded LAST: decoding it first turns "&amp;lt;" into
295
+ // "&lt;" which the later passes would then double-decode into "<".
276
296
  return text
277
- .replace(/&amp;/g, "&")
278
297
  .replace(/&lt;/g, "<")
279
298
  .replace(/&gt;/g, ">")
280
299
  .replace(/&quot;/g, '"')
281
300
  .replace(/&#39;/g, "'")
282
301
  .replace(/&#x27;/g, "'")
283
- .replace(/&#x2F;/g, "/");
302
+ .replace(/&#x2F;/g, "/")
303
+ .replace(/&amp;/g, "&");
284
304
  }
285
305
  function sanitizeUpdates(updates) {
286
306
  const sanitized = {};
@@ -315,8 +335,10 @@ export async function updateMetadata(config, appId, locale = "tr", updates) {
315
335
  });
316
336
  }
317
337
  else {
318
- // CREATE new app info localization 'name' is required by the API
319
- const appInfoId = await getAppInfoId(config, appId);
338
+ // CREATE new app info localization. 'name' is required by the API.
339
+ // Reuse the appInfoId getMetadata already resolved (saves one API call
340
+ // per locale, multiplied across batch updates).
341
+ const appInfoId = before.appInfoId ?? (await getAppInfoId(config, appId));
320
342
  if (!appInfoId) {
321
343
  throw new Error(`Could not find appInfo for app "${appId}". Cannot create localization.`);
322
344
  }
@@ -353,8 +375,8 @@ export async function updateMetadata(config, appId, locale = "tr", updates) {
353
375
  });
354
376
  }
355
377
  else {
356
- // CREATE new version localization
357
- const versionId = await getEditableVersionId(config, appId);
378
+ // CREATE new version localization. Reuse versionId from getMetadata.
379
+ const versionId = before.versionId ?? (await getEditableVersionId(config, appId));
358
380
  if (!versionId) {
359
381
  throw new Error(`No PREPARE_FOR_SUBMISSION version found for app "${appId}". ` +
360
382
  `Create a new version in App Store Connect first.`);
@@ -1 +1 @@
1
- {"version":3,"file":"app-store-connect.js","sourceRoot":"","sources":["../../src/data-sources/app-store-connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-store-connect.js","sourceRoot":"","sources":["../../src/data-sources/app-store-connect.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ export declare function getAppDetails(appId: string | number, country?: string):
3
3
  export declare function getSimilarApps(appId: number, country?: string): Promise<any[]>;
4
4
  export declare function getReviews(appId: number, country?: string, page?: number): Promise<any[]>;
5
5
  export declare function getRatings(appId: number, country?: string): Promise<any>;
6
- export declare function getSuggestions(term: string): Promise<string[]>;
6
+ export declare function getSuggestions(term: string, country?: string): Promise<string[]>;
7
7
  //# sourceMappingURL=app-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-store.d.ts","sourceRoot":"","sources":["../../src/data-sources/app-store.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAa,EACtB,GAAG,GAAE,MAAW,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAIhB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,GAAG,EAAE,CAAC,CAIhB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAa,EACtB,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAIhB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIpE"}
1
+ {"version":3,"file":"app-store.d.ts","sourceRoot":"","sources":["../../src/data-sources/app-store.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAa,EACtB,GAAG,GAAE,MAAW,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAIhB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,GAAG,EAAE,CAAC,CAIhB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAa,EACtB,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAIhB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB"}
@@ -22,7 +22,13 @@ export async function getReviews(appId, country = "tr", page = 1) {
22
22
  export async function getRatings(appId, country = "tr") {
23
23
  return withRateLimit("app-store-scraper", RL, () => store.ratings({ id: appId, country }));
24
24
  }
25
- export async function getSuggestions(term) {
26
- return withRateLimit("app-store-scraper", RL, () => store.suggest({ term }));
25
+ export async function getSuggestions(term, country = "tr") {
26
+ // app-store-scraper's suggest() returns [{ term: "..." }] objects, not
27
+ // strings, and supports country via the X-Apple-Store-Front header.
28
+ // Normalize to plain strings so callers never leak objects into keyword pools.
29
+ const raw = await withRateLimit("app-store-scraper", RL, () => store.suggest({ term, country }));
30
+ return (raw ?? [])
31
+ .map((s) => (typeof s === "string" ? s : s?.term || ""))
32
+ .filter((s) => s.length > 0);
27
33
  }
28
34
  //# sourceMappingURL=app-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-store.js","sourceRoot":"","sources":["../../src/data-sources/app-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,EAAE,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,UAAkB,IAAI,EACtB,MAAc,EAAE;IAEhB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAsB,EACtB,UAAkB,IAAI;IAEtB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE;QACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,UAAkB,IAAI;IAEtB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,UAAkB,IAAI,EACtB,OAAe,CAAC;IAEhB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,UAAkB,IAAI;IAEtB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"app-store.js","sourceRoot":"","sources":["../../src/data-sources/app-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,EAAE,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,UAAkB,IAAI,EACtB,MAAc,EAAE;IAEhB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAsB,EACtB,UAAkB,IAAI;IAEtB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE;QACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,UAAkB,IAAI;IAEtB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,UAAkB,IAAI,EACtB,OAAe,CAAC;IAEhB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,UAAkB,IAAI;IAEtB,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,UAAkB,IAAI;IAEtB,uEAAuE;IACvE,oEAAoE;IACpE,+EAA+E;IAC/E,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,CAC5D,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CACjC,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;SACf,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;SAC5D,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -1,15 +1,27 @@
1
- export declare function getScores(keyword: string, country?: string): Promise<{
1
+ /**
2
+ * If the aso package returns 503, calculate our own scores from search results.
3
+ * Traffic uses three independent signals so a single noisy data point
4
+ * (e.g. one blockbuster app) cannot dominate the estimate:
5
+ * 1) Result count: how many apps Apple returns for the term (popular = many)
6
+ * 2) Top result strength: blockbuster apps cluster around high-traffic terms
7
+ * 3) Average review depth: many established apps signals broad interest
8
+ * Difficulty is calculated from rating/review strength of top-ranking apps.
9
+ */
10
+ export type ScoreSource = "apple" | "estimated";
11
+ export interface KeywordScores {
2
12
  traffic: number;
3
13
  difficulty: number;
4
- }>;
14
+ /** "apple": real aso package scores. "estimated": fallback multi-signal estimate. */
15
+ source: ScoreSource;
16
+ }
17
+ export declare function getScores(keyword: string, country?: string): Promise<KeywordScores>;
5
18
  export declare function suggestKeywords(appId: string, strategy: "category" | "similar" | "competition", country?: string, num?: number): Promise<string[]>;
6
19
  /**
7
20
  * Score multiple keywords in parallel with a concurrency limit.
8
21
  * Returns results in the same order as input keywords.
9
22
  */
10
- export declare function batchGetScores(keywords: string[], country?: string, concurrency?: number): Promise<{
23
+ export type BatchScoreResult = KeywordScores & {
11
24
  keyword: string;
12
- traffic: number;
13
- difficulty: number;
14
- }[]>;
25
+ };
26
+ export declare function batchGetScores(keywords: string[], country?: string, concurrency?: number): Promise<BatchScoreResult[]>;
15
27
  //# sourceMappingURL=aso-scoring.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aso-scoring.d.ts","sourceRoot":"","sources":["../../src/data-sources/aso-scoring.ts"],"names":[],"mappings":"AAgEA,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBlD;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,EAChD,OAAO,GAAE,MAAa,EACtB,GAAG,GAAE,MAAW,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,MAAa,EACtB,WAAW,GAAE,MAAU,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAmBrE"}
1
+ {"version":3,"file":"aso-scoring.d.ts","sourceRoot":"","sources":["../../src/data-sources/aso-scoring.ts"],"names":[],"mappings":"AA4BA;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,MAAM,EAAE,WAAW,CAAC;CACrB;AA8CD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,aAAa,CAAC,CA2BxB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,EAChD,OAAO,GAAE,MAAa,EACtB,GAAG,GAAE,MAAW,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,MAAa,EACtB,WAAW,GAAE,MAAU,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmB7B"}