pabal-web-mcp 1.3.13 → 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.
@@ -1252,6 +1252,9 @@ ${researchSections.join("\n")}
1252
1252
 
1253
1253
  `;
1254
1254
  }
1255
+ prompt += `**Priority:** When both iOS and Android research exist, keep iOS keywords first and only add Android keywords if there is room after meeting character limits.
1256
+
1257
+ `;
1255
1258
  prompt += `## Step 2: Optimize All Fields (${primaryLocale})
1256
1259
 
1257
1260
  `;
@@ -1445,6 +1448,9 @@ ${optimizedPrimary}
1445
1448
  const hasPrimaryResearch = primaryResearchSections.length > 0;
1446
1449
  prompt += `## Keyword Research (Per Locale)
1447
1450
 
1451
+ `;
1452
+ prompt += `When both iOS and Android research exist for a locale, treat iOS keywords as primary; use Android keywords only if space remains after fitting iOS keywords within character limits.
1453
+
1448
1454
  `;
1449
1455
  if (hasPrimaryResearch) {
1450
1456
  prompt += `**\u{1F4DA} ENGLISH (${primaryLocale}) Keywords - Use as fallback for locales without research:**
@@ -1503,6 +1509,8 @@ ${researchSections.join(
1503
1509
 
1504
1510
  `;
1505
1511
  prompt += `For EACH locale:
1512
+ `;
1513
+ prompt += `- Priority: Keep iOS-sourced keywords first; add Android keywords only if there is remaining space after iOS keywords fit within field limits.
1506
1514
  `;
1507
1515
  prompt += `1. Take the TRANSLATED content (below)
1508
1516
  `;
@@ -1801,6 +1809,12 @@ Parse error: ${data.parseError}
1801
1809
  lines.push("\n----");
1802
1810
  return lines.join("\n");
1803
1811
  }
1812
+ function getPlatformPriority(platform) {
1813
+ const normalized = (platform || "").toLowerCase();
1814
+ if (normalized === "ios") return 0;
1815
+ if (normalized === "android") return 1;
1816
+ return 2;
1817
+ }
1804
1818
  function mergeKeywordData(entries) {
1805
1819
  const merged = {
1806
1820
  tier1_core: [],
@@ -1815,7 +1829,12 @@ function mergeKeywordData(entries) {
1815
1829
  const seenKeywords = /* @__PURE__ */ new Set();
1816
1830
  const seenGaps = /* @__PURE__ */ new Set();
1817
1831
  const seenPatterns = /* @__PURE__ */ new Set();
1818
- for (const entry of entries) {
1832
+ const entriesByPriority = [...entries].sort((a, b) => {
1833
+ const aPriority = getPlatformPriority(extractMeta(a.data).platform);
1834
+ const bPriority = getPlatformPriority(extractMeta(b.data).platform);
1835
+ return aPriority - bPriority;
1836
+ });
1837
+ for (const entry of entriesByPriority) {
1819
1838
  if (entry.data?.parseError) continue;
1820
1839
  const meta = extractMeta(entry.data);
1821
1840
  if (meta.platform && !merged.platforms.includes(meta.platform)) {
@@ -1872,8 +1891,15 @@ function mergeKeywordData(entries) {
1872
1891
  }
1873
1892
  function formatMergedData(merged, researchDir) {
1874
1893
  const lines = [];
1875
- lines.push(`### Combined Keyword Research (${merged.platforms.join(" + ")})`);
1894
+ const hasIos = merged.platforms.some(
1895
+ (platform) => platform && platform.toLowerCase() === "ios"
1896
+ );
1897
+ const platformLabel = merged.platforms.length > 0 ? merged.platforms.join(" + ") : "Unknown";
1898
+ lines.push(
1899
+ `### Combined Keyword Research (${platformLabel})${hasIos ? " \u2014 iOS prioritized" : ""}`
1900
+ );
1876
1901
  lines.push(`Source: ${researchDir}`);
1902
+ lines.push(`Priority: iOS > Android > others (use Android only after iOS keywords fit character limits)`);
1877
1903
  if (merged.tier1_core.length > 0) {
1878
1904
  lines.push(`
1879
1905
  **Tier 1 (Core - use in title/subtitle):** ${merged.tier1_core.join(", ")}`);
@@ -2004,7 +2030,7 @@ This tool returns a PROMPT containing:
2004
2030
 
2005
2031
  ## KEYWORD SOURCES
2006
2032
  - Uses SAVED keyword research from .aso/keywordResearch/products/[slug]/locales/
2007
- - iOS and Android research are automatically combined
2033
+ - iOS and Android research are automatically combined (iOS prioritized; Android fills remaining slots when limits apply)
2008
2034
  - If locale research is missing, use English keywords and translate
2009
2035
 
2010
2036
  **CRITICAL:** Only processes existing locale files. Does NOT create new files.`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pabal-web-mcp",
3
- "version": "1.3.13",
3
+ "version": "1.4.0",
4
4
  "type": "module",
5
5
  "description": "MCP server for ASO data management with shared types and utilities",
6
6
  "author": "skyu",