aso-mcp 1.2.0 → 1.4.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 +3 -2
- package/build/cache/sqlite-cache.d.ts +15 -0
- package/build/cache/sqlite-cache.d.ts.map +1 -1
- package/build/cache/sqlite-cache.js +68 -5
- package/build/cache/sqlite-cache.js.map +1 -1
- package/build/data-sources/app-store-connect.d.ts.map +1 -1
- package/build/data-sources/app-store-connect.js +69 -52
- package/build/data-sources/app-store-connect.js.map +1 -1
- package/build/data-sources/app-store.d.ts +1 -1
- package/build/data-sources/app-store.d.ts.map +1 -1
- package/build/data-sources/app-store.js +8 -2
- package/build/data-sources/app-store.js.map +1 -1
- package/build/data-sources/aso-scoring.d.ts +18 -6
- package/build/data-sources/aso-scoring.d.ts.map +1 -1
- package/build/data-sources/aso-scoring.js +7 -18
- package/build/data-sources/aso-scoring.js.map +1 -1
- package/build/server.js +2 -0
- package/build/server.js.map +1 -1
- package/build/tools/analyze-competitors.d.ts.map +1 -1
- package/build/tools/analyze-competitors.js +4 -3
- package/build/tools/analyze-competitors.js.map +1 -1
- package/build/tools/analyze-reviews.d.ts.map +1 -1
- package/build/tools/analyze-reviews.js +4 -12
- package/build/tools/analyze-reviews.js.map +1 -1
- package/build/tools/discover-keywords.d.ts.map +1 -1
- package/build/tools/discover-keywords.js +32 -32
- package/build/tools/discover-keywords.js.map +1 -1
- package/build/tools/generate-aso-brief.d.ts.map +1 -1
- package/build/tools/generate-aso-brief.js +40 -48
- package/build/tools/generate-aso-brief.js.map +1 -1
- package/build/tools/get-app-details.js +1 -1
- package/build/tools/get-app-details.js.map +1 -1
- package/build/tools/get-aso-report.d.ts.map +1 -1
- package/build/tools/get-aso-report.js +6 -2
- package/build/tools/get-aso-report.js.map +1 -1
- package/build/tools/get-ranking-history.d.ts +3 -0
- package/build/tools/get-ranking-history.d.ts.map +1 -0
- package/build/tools/get-ranking-history.js +147 -0
- package/build/tools/get-ranking-history.js.map +1 -0
- package/build/tools/keyword-gap.d.ts.map +1 -1
- package/build/tools/keyword-gap.js +6 -2
- package/build/tools/keyword-gap.js.map +1 -1
- package/build/tools/localized-keywords.d.ts.map +1 -1
- package/build/tools/localized-keywords.js +15 -3
- package/build/tools/localized-keywords.js.map +1 -1
- package/build/tools/optimize-metadata.d.ts.map +1 -1
- package/build/tools/optimize-metadata.js +11 -3
- package/build/tools/optimize-metadata.js.map +1 -1
- package/build/tools/search-keywords.d.ts.map +1 -1
- package/build/tools/search-keywords.js +5 -3
- package/build/tools/search-keywords.js.map +1 -1
- package/build/tools/suggest-keywords.d.ts.map +1 -1
- package/build/tools/suggest-keywords.js +13 -4
- package/build/tools/suggest-keywords.js.map +1 -1
- package/build/tools/track-ranking.d.ts.map +1 -1
- package/build/tools/track-ranking.js +20 -9
- package/build/tools/track-ranking.js.map +1 -1
- package/build/utils/formatters.d.ts +6 -0
- package/build/utils/formatters.d.ts.map +1 -1
- package/build/utils/formatters.js +18 -0
- package/build/utils/formatters.js.map +1 -1
- package/build/utils/rate-limiter.d.ts.map +1 -1
- package/build/utils/rate-limiter.js +36 -16
- package/build/utils/rate-limiter.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ npm install -g aso-mcp
|
|
|
23
23
|
|
|
24
24
|
## Why aso-mcp?
|
|
25
25
|
|
|
26
|
-
- **
|
|
26
|
+
- **20 specialized ASO tools**: from keyword discovery and ranking trends to App Store Connect metadata management
|
|
27
27
|
- **Real App Store data**: live search results, ratings, reviews, and suggestions
|
|
28
28
|
- **Custom scoring engine**: proprietary algorithm independent of Apple Search Ads API issues
|
|
29
29
|
- **No API key needed**: zero configuration, install and go
|
|
@@ -97,7 +97,8 @@ Any MCP-compatible client (ChatGPT, Cursor, Windsurf, etc.) can connect via stdi
|
|
|
97
97
|
| `analyze_competitors` | Metadata comparison of top apps for a keyword + keyword gap |
|
|
98
98
|
| `optimize_metadata` | Title/subtitle/keyword field suggestions with character limit checks |
|
|
99
99
|
| `analyze_reviews` | Sentiment analysis, complaint and feature request extraction |
|
|
100
|
-
| `track_ranking` | App's ranking position across multiple keywords |
|
|
100
|
+
| `track_ranking` | App's ranking position across multiple keywords (each run saves a local snapshot) |
|
|
101
|
+
| `get_ranking_history` | Position trends over time from saved snapshots: daily positions, change, improving/declining per keyword |
|
|
101
102
|
| `keyword_gap` | Keyword difference between two apps + opportunity analysis |
|
|
102
103
|
|
|
103
104
|
### Phase 3: Localization & Reporting
|
|
@@ -9,4 +9,19 @@ export declare function getCacheStats(): {
|
|
|
9
9
|
maxEntries: number;
|
|
10
10
|
dbPath: string;
|
|
11
11
|
};
|
|
12
|
+
export interface RankingSnapshotInput {
|
|
13
|
+
keyword: string;
|
|
14
|
+
position: number | null;
|
|
15
|
+
totalResults: number;
|
|
16
|
+
topApp: string;
|
|
17
|
+
}
|
|
18
|
+
export interface RankingHistoryRow {
|
|
19
|
+
keyword: string;
|
|
20
|
+
position: number | null;
|
|
21
|
+
totalResults: number;
|
|
22
|
+
topApp: string | null;
|
|
23
|
+
recordedAt: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function recordRankingSnapshots(appId: string, country: string, entries: RankingSnapshotInput[]): void;
|
|
26
|
+
export declare function getRankingHistory(appId: string, country: string, days: number, keywords?: string[]): RankingHistoryRow[];
|
|
12
27
|
//# sourceMappingURL=sqlite-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-cache.d.ts","sourceRoot":"","sources":["../../src/cache/sqlite-cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqlite-cache.d.ts","sourceRoot":"","sources":["../../src/cache/sqlite-cache.ts"],"names":[],"mappings":"AAYA,wBAAgB,SAAS,IAAI,IAAI,CAsDhC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAevD;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;AAuBD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,EAAE,GAC9B,IAAI,CAmBN;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,iBAAiB,EAAE,CA8BrB"}
|
|
@@ -4,6 +4,7 @@ import os from "os";
|
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
const MAX_CACHE_ENTRIES = 5000;
|
|
6
6
|
const SIZE_CHECK_INTERVAL = 100;
|
|
7
|
+
const HISTORY_RETENTION_DAYS = 400;
|
|
7
8
|
let db;
|
|
8
9
|
let writesSinceLastCheck = 0;
|
|
9
10
|
export function initCache() {
|
|
@@ -19,11 +20,36 @@ export function initCache() {
|
|
|
19
20
|
key TEXT PRIMARY KEY,
|
|
20
21
|
value TEXT NOT NULL,
|
|
21
22
|
expires_at INTEGER NOT NULL,
|
|
22
|
-
created_at INTEGER DEFAULT (strftime('%s', 'now'))
|
|
23
|
+
created_at INTEGER DEFAULT (strftime('%s', 'now')),
|
|
24
|
+
last_accessed INTEGER DEFAULT (strftime('%s', 'now'))
|
|
23
25
|
)
|
|
24
26
|
`);
|
|
25
|
-
//
|
|
27
|
+
// Migration: pre-1.4.0 databases lack last_accessed (eviction was FIFO).
|
|
28
|
+
const cols = db.prepare("PRAGMA table_info(cache)").all();
|
|
29
|
+
if (!cols.some((c) => c.name === "last_accessed")) {
|
|
30
|
+
db.exec("ALTER TABLE cache ADD COLUMN last_accessed INTEGER DEFAULT 0");
|
|
31
|
+
db.exec("UPDATE cache SET last_accessed = created_at WHERE last_accessed = 0");
|
|
32
|
+
}
|
|
33
|
+
// Ranking history: durable snapshots written by track_ranking, read by
|
|
34
|
+
// get_ranking_history. Lives in the same DB but is NOT part of the cache:
|
|
35
|
+
// clear_cache and LRU eviction never touch it.
|
|
36
|
+
db.exec(`
|
|
37
|
+
CREATE TABLE IF NOT EXISTS ranking_history (
|
|
38
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
39
|
+
app_id TEXT NOT NULL,
|
|
40
|
+
keyword TEXT NOT NULL,
|
|
41
|
+
country TEXT NOT NULL,
|
|
42
|
+
position INTEGER,
|
|
43
|
+
total_results INTEGER NOT NULL DEFAULT 0,
|
|
44
|
+
top_app TEXT,
|
|
45
|
+
recorded_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
|
|
46
|
+
);
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_ranking_history_lookup
|
|
48
|
+
ON ranking_history (app_id, country, keyword, recorded_at);
|
|
49
|
+
`);
|
|
50
|
+
// Clean up expired entries and stale history
|
|
26
51
|
db.exec(`DELETE FROM cache WHERE expires_at < strftime('%s', 'now')`);
|
|
52
|
+
db.prepare("DELETE FROM ranking_history WHERE recorded_at < strftime('%s', 'now') - ?").run(HISTORY_RETENTION_DAYS * 86400);
|
|
27
53
|
// Enforce size limit on startup
|
|
28
54
|
enforceSizeLimit();
|
|
29
55
|
}
|
|
@@ -31,11 +57,15 @@ export function getFromCache(key) {
|
|
|
31
57
|
const row = db
|
|
32
58
|
.prepare("SELECT value FROM cache WHERE key = ? AND expires_at > strftime('%s', 'now')")
|
|
33
59
|
.get(key);
|
|
60
|
+
if (row) {
|
|
61
|
+
// Touch for LRU eviction ordering
|
|
62
|
+
db.prepare("UPDATE cache SET last_accessed = strftime('%s', 'now') WHERE key = ?").run(key);
|
|
63
|
+
}
|
|
34
64
|
return row?.value ?? null;
|
|
35
65
|
}
|
|
36
66
|
export function setCache(key, value, ttlSeconds = 3600) {
|
|
37
67
|
const expiresAt = Math.floor(Date.now() / 1000) + ttlSeconds;
|
|
38
|
-
db.prepare("INSERT OR REPLACE INTO cache (key, value, expires_at) VALUES (?, ?,
|
|
68
|
+
db.prepare("INSERT OR REPLACE INTO cache (key, value, expires_at, last_accessed) VALUES (?, ?, ?, strftime('%s', 'now'))").run(key, value, expiresAt);
|
|
39
69
|
// Throttle: only check size every SIZE_CHECK_INTERVAL writes (avoids O(N) COUNT per write).
|
|
40
70
|
writesSinceLastCheck++;
|
|
41
71
|
if (writesSinceLastCheck >= SIZE_CHECK_INTERVAL) {
|
|
@@ -71,11 +101,44 @@ function enforceSizeLimit() {
|
|
|
71
101
|
db.exec(`DELETE FROM cache WHERE expires_at < strftime('%s', 'now')`);
|
|
72
102
|
const count = db.prepare("SELECT COUNT(*) as count FROM cache").get().count;
|
|
73
103
|
if (count > MAX_CACHE_ENTRIES) {
|
|
74
|
-
// Remove
|
|
104
|
+
// Remove least recently used entries to get back under limit
|
|
75
105
|
const toRemove = count - MAX_CACHE_ENTRIES;
|
|
76
106
|
db.prepare(`DELETE FROM cache WHERE key IN (
|
|
77
|
-
SELECT key FROM cache ORDER BY created_at ASC LIMIT ?
|
|
107
|
+
SELECT key FROM cache ORDER BY last_accessed ASC, created_at ASC LIMIT ?
|
|
78
108
|
)`).run(toRemove);
|
|
79
109
|
}
|
|
80
110
|
}
|
|
111
|
+
export function recordRankingSnapshots(appId, country, entries) {
|
|
112
|
+
if (entries.length === 0)
|
|
113
|
+
return;
|
|
114
|
+
const insert = db.prepare(`INSERT INTO ranking_history (app_id, keyword, country, position, total_results, top_app)
|
|
115
|
+
VALUES (?, ?, ?, ?, ?, ?)`);
|
|
116
|
+
const insertAll = db.transaction((rows) => {
|
|
117
|
+
for (const r of rows) {
|
|
118
|
+
insert.run(appId, r.keyword.trim().toLowerCase(), country, r.position, r.totalResults, r.topApp);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
insertAll(entries);
|
|
122
|
+
}
|
|
123
|
+
export function getRankingHistory(appId, country, days, keywords) {
|
|
124
|
+
const cutoff = Math.floor(Date.now() / 1000) - days * 86400;
|
|
125
|
+
let sql = `SELECT keyword, position, total_results, top_app, recorded_at
|
|
126
|
+
FROM ranking_history
|
|
127
|
+
WHERE app_id = ? AND country = ? AND recorded_at >= ?`;
|
|
128
|
+
const params = [appId, country, cutoff];
|
|
129
|
+
if (keywords && keywords.length > 0) {
|
|
130
|
+
const placeholders = keywords.map(() => "?").join(",");
|
|
131
|
+
sql += ` AND keyword IN (${placeholders})`;
|
|
132
|
+
params.push(...keywords.map((k) => k.trim().toLowerCase()));
|
|
133
|
+
}
|
|
134
|
+
sql += " ORDER BY keyword ASC, recorded_at ASC";
|
|
135
|
+
const rows = db.prepare(sql).all(...params);
|
|
136
|
+
return rows.map((r) => ({
|
|
137
|
+
keyword: r.keyword,
|
|
138
|
+
position: r.position,
|
|
139
|
+
totalResults: r.total_results,
|
|
140
|
+
topApp: r.top_app,
|
|
141
|
+
recordedAt: r.recorded_at,
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
81
144
|
//# sourceMappingURL=sqlite-cache.js.map
|
|
@@ -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;AAC/B,MAAM,mBAAmB,GAAG,GAAG,CAAC;
|
|
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;AAC/B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,IAAI,EAAqB,CAAC;AAC1B,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAE7B,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;;;;;;;;GAQP,CAAC,CAAC;IAEH,yEAAyE;IACzE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAwB,CAAC;IAChF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QACxE,EAAE,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACjF,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,+CAA+C;IAC/C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;GAaP,CAAC,CAAC;IAEH,6CAA6C;IAC7C,EAAE,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACtE,EAAE,CAAC,OAAO,CACR,2EAA2E,CAC5E,CAAC,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC;IAEtC,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,IAAI,GAAG,EAAE,CAAC;QACR,kCAAkC;QAClC,EAAE,CAAC,OAAO,CACR,sEAAsE,CACvE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,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,8GAA8G,CAC/G,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAE7B,4FAA4F;IAC5F,oBAAoB,EAAE,CAAC;IACvB,IAAI,oBAAoB,IAAI,mBAAmB,EAAE,CAAC;QAChD,oBAAoB,GAAG,CAAC,CAAC;QACzB,MAAM,KAAK,GACT,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EACtD,CAAC,KAAK,CAAC;QACR,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;YAC9B,gBAAgB,EAAE,CAAC;QACrB,CAAC;IACH,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,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,KAAK,GAAG,iBAAiB,CAAC;QAC3C,EAAE,CAAC,OAAO,CACR;;QAEE,CACH,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAmBD,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,OAAe,EACf,OAA+B;IAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB;+BAC2B,CAC5B,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAA4B,EAAE,EAAE;QAChE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CACR,KAAK,EACL,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAC9B,OAAO,EACP,CAAC,CAAC,QAAQ,EACV,CAAC,CAAC,YAAY,EACd,CAAC,CAAC,MAAM,CACT,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,OAAe,EACf,IAAY,EACZ,QAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IAC5D,IAAI,GAAG,GACL;;2DAEuD,CAAC;IAC1D,MAAM,MAAM,GAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,GAAG,IAAI,oBAAoB,YAAY,GAAG,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,IAAI,wCAAwC,CAAC;IAEhD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAMvC,CAAC;IAEJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,YAAY,EAAE,CAAC,CAAC,aAAa;QAC7B,MAAM,EAAE,CAAC,CAAC,OAAO;QACjB,UAAU,EAAE,CAAC,CAAC,WAAW;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -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,
|
|
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"}
|
|
@@ -142,58 +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
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
+
}
|
|
162
170
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
catch {
|
|
166
|
-
// App info not available
|
|
167
|
-
}
|
|
168
|
-
// Fetch version localizations (keywords, description, etc.)
|
|
169
|
-
let keywords = null;
|
|
170
|
-
let description = null;
|
|
171
|
-
let promotionalText = null;
|
|
172
|
-
let whatsNew = null;
|
|
173
|
-
let supportUrl = null;
|
|
174
|
-
let marketingUrl = null;
|
|
175
|
-
let versionLocalizationId = null;
|
|
176
|
-
let resolvedVersionId = null;
|
|
177
|
-
try {
|
|
178
|
-
const versionsResponse = await apiRequest(config, `/v1/apps/${appId}/appStoreVersions?filter[appStoreState]=PREPARE_FOR_SUBMISSION&limit=1`);
|
|
179
|
-
resolvedVersionId = versionsResponse.data?.[0]?.id ?? null;
|
|
180
|
-
if (resolvedVersionId) {
|
|
181
|
-
const verLocResponse = await apiRequest(config, `/v1/appStoreVersions/${resolvedVersionId}/appStoreVersionLocalizations?filter[locale]=${resolvedLocale}`);
|
|
182
|
-
const verLoc = verLocResponse.data?.[0];
|
|
183
|
-
if (verLoc) {
|
|
184
|
-
versionLocalizationId = verLoc.id;
|
|
185
|
-
keywords = verLoc.attributes?.keywords ?? null;
|
|
186
|
-
description = verLoc.attributes?.description ?? null;
|
|
187
|
-
promotionalText = verLoc.attributes?.promotionalText ?? null;
|
|
188
|
-
whatsNew = verLoc.attributes?.whatsNew ?? null;
|
|
189
|
-
supportUrl = verLoc.attributes?.supportUrl ?? null;
|
|
190
|
-
marketingUrl = verLoc.attributes?.marketingUrl ?? null;
|
|
171
|
+
catch {
|
|
172
|
+
// App info not available
|
|
191
173
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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;
|
|
197
212
|
return {
|
|
198
213
|
locale: resolvedLocale,
|
|
199
214
|
name,
|
|
@@ -276,14 +291,16 @@ async function createVersionLocalization(config, versionId, locale, attributes)
|
|
|
276
291
|
}
|
|
277
292
|
// ─── Decode HTML Entities ───
|
|
278
293
|
function decodeHtmlEntities(text) {
|
|
294
|
+
// & must be decoded LAST: decoding it first turns "&lt;" into
|
|
295
|
+
// "<" which the later passes would then double-decode into "<".
|
|
279
296
|
return text
|
|
280
|
-
.replace(/&/g, "&")
|
|
281
297
|
.replace(/</g, "<")
|
|
282
298
|
.replace(/>/g, ">")
|
|
283
299
|
.replace(/"/g, '"')
|
|
284
300
|
.replace(/'/g, "'")
|
|
285
301
|
.replace(/'/g, "'")
|
|
286
|
-
.replace(///g, "/")
|
|
302
|
+
.replace(///g, "/")
|
|
303
|
+
.replace(/&/g, "&");
|
|
287
304
|
}
|
|
288
305
|
function sanitizeUpdates(updates) {
|
|
289
306
|
const sanitized = {};
|
|
@@ -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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
|
23
|
+
export type BatchScoreResult = KeywordScores & {
|
|
11
24
|
keyword: string;
|
|
12
|
-
|
|
13
|
-
|
|
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":"
|
|
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"}
|
|
@@ -18,19 +18,10 @@ async function getClient(country = "tr") {
|
|
|
18
18
|
const asoFn = await getAsoModule();
|
|
19
19
|
return asoFn("itunes", { country });
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
* If the aso package returns 503, calculate our own scores from search results.
|
|
23
|
-
* Traffic uses three independent signals so a single noisy data point
|
|
24
|
-
* (e.g. one blockbuster app) cannot dominate the estimate:
|
|
25
|
-
* 1) Result count: how many apps Apple returns for the term (popular = many)
|
|
26
|
-
* 2) Top result strength: blockbuster apps cluster around high-traffic terms
|
|
27
|
-
* 3) Average review depth: many established apps signals broad interest
|
|
28
|
-
* Difficulty is calculated from rating/review strength of top-ranking apps.
|
|
29
|
-
*/
|
|
30
21
|
async function fallbackScores(keyword, country) {
|
|
31
22
|
const results = await searchApps(keyword, country, 20);
|
|
32
23
|
if (results.length === 0) {
|
|
33
|
-
return { traffic: 1, difficulty: 1 };
|
|
24
|
+
return { traffic: 1, difficulty: 1, source: "estimated" };
|
|
34
25
|
}
|
|
35
26
|
const top1Reviews = results[0]?.reviews || 0;
|
|
36
27
|
const avgReviews = results.reduce((s, a) => s + (a.reviews || 0), 0) /
|
|
@@ -50,6 +41,7 @@ async function fallbackScores(keyword, country) {
|
|
|
50
41
|
return {
|
|
51
42
|
traffic: Math.round(traffic * 10) / 10,
|
|
52
43
|
difficulty: Math.round(difficulty * 10) / 10,
|
|
44
|
+
source: "estimated",
|
|
53
45
|
};
|
|
54
46
|
}
|
|
55
47
|
export async function getScores(keyword, country = "tr") {
|
|
@@ -70,6 +62,7 @@ export async function getScores(keyword, country = "tr") {
|
|
|
70
62
|
return {
|
|
71
63
|
traffic: result.traffic ?? 0,
|
|
72
64
|
difficulty: result.difficulty ?? 0,
|
|
65
|
+
source: "apple",
|
|
73
66
|
};
|
|
74
67
|
});
|
|
75
68
|
}
|
|
@@ -108,10 +101,6 @@ export async function suggestKeywords(appId, strategy, country = "tr", num = 20)
|
|
|
108
101
|
return fallbackSuggest(appId, strategy, country, num);
|
|
109
102
|
}
|
|
110
103
|
}
|
|
111
|
-
/**
|
|
112
|
-
* Score multiple keywords in parallel with a concurrency limit.
|
|
113
|
-
* Returns results in the same order as input keywords.
|
|
114
|
-
*/
|
|
115
104
|
export async function batchGetScores(keywords, country = "tr", concurrency = 5) {
|
|
116
105
|
const results = [];
|
|
117
106
|
for (let i = 0; i < keywords.length; i += concurrency) {
|
|
@@ -119,10 +108,10 @@ export async function batchGetScores(keywords, country = "tr", concurrency = 5)
|
|
|
119
108
|
const batchResults = await Promise.all(batch.map(async (kw) => {
|
|
120
109
|
try {
|
|
121
110
|
const scores = await getScores(kw, country);
|
|
122
|
-
return { keyword: kw,
|
|
111
|
+
return { keyword: kw, ...scores };
|
|
123
112
|
}
|
|
124
113
|
catch {
|
|
125
|
-
return { keyword: kw, traffic: 0, difficulty: 0 };
|
|
114
|
+
return { keyword: kw, traffic: 0, difficulty: 0, source: "estimated" };
|
|
126
115
|
}
|
|
127
116
|
}));
|
|
128
117
|
results.push(...batchResults);
|
|
@@ -146,7 +135,7 @@ async function fallbackSuggest(appId, _strategy, country, num) {
|
|
|
146
135
|
const allSuggestions = new Set();
|
|
147
136
|
// Seed autocomplete with the full title (catches multi-word brand suggestions)
|
|
148
137
|
try {
|
|
149
|
-
const titleSuggestions = await getSuggestions(app.title);
|
|
138
|
+
const titleSuggestions = await getSuggestions(app.title, country);
|
|
150
139
|
titleSuggestions.forEach((s) => allSuggestions.add(s));
|
|
151
140
|
}
|
|
152
141
|
catch {
|
|
@@ -157,7 +146,7 @@ async function fallbackSuggest(appId, _strategy, country, num) {
|
|
|
157
146
|
if (allSuggestions.size >= num)
|
|
158
147
|
break;
|
|
159
148
|
try {
|
|
160
|
-
const more = await getSuggestions(term);
|
|
149
|
+
const more = await getSuggestions(term, country);
|
|
161
150
|
more.forEach((s) => allSuggestions.add(s));
|
|
162
151
|
}
|
|
163
152
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aso-scoring.js","sourceRoot":"","sources":["../../src/data-sources/aso-scoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAErC,IAAI,SAAS,GAAQ,IAAI,CAAC;AAC1B,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAE3D,KAAK,UAAU,YAAY;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,SAAS,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,UAAkB,IAAI;IAC7C,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,OAAO,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AACtC,CAAC;
|
|
1
|
+
{"version":3,"file":"aso-scoring.js","sourceRoot":"","sources":["../../src/data-sources/aso-scoring.ts"],"names":[],"mappings":"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"}
|
package/build/server.js
CHANGED
|
@@ -14,6 +14,7 @@ import { registerAnalyzeCompetitors } from "./tools/analyze-competitors.js";
|
|
|
14
14
|
import { registerOptimizeMetadata } from "./tools/optimize-metadata.js";
|
|
15
15
|
import { registerAnalyzeReviews } from "./tools/analyze-reviews.js";
|
|
16
16
|
import { registerTrackRanking } from "./tools/track-ranking.js";
|
|
17
|
+
import { registerGetRankingHistory } from "./tools/get-ranking-history.js";
|
|
17
18
|
import { registerKeywordGap } from "./tools/keyword-gap.js";
|
|
18
19
|
// Phase 3 tools
|
|
19
20
|
import { registerLocalizedKeywords } from "./tools/localized-keywords.js";
|
|
@@ -49,6 +50,7 @@ registerAnalyzeCompetitors(server);
|
|
|
49
50
|
registerOptimizeMetadata(server);
|
|
50
51
|
registerAnalyzeReviews(server);
|
|
51
52
|
registerTrackRanking(server);
|
|
53
|
+
registerGetRankingHistory(server);
|
|
52
54
|
registerKeywordGap(server);
|
|
53
55
|
// Register Phase 3 tools
|
|
54
56
|
registerLocalizedKeywords(server);
|