@koda-sl/baker-cli 0.11.0 → 0.15.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 (61) hide show
  1. package/README.md +98 -13
  2. package/dist/cli.js +1 -1
  3. package/dist/client.d.ts +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +8 -0
  6. package/dist/client.js.map +1 -1
  7. package/dist/commands/ads/google/changes.js +1 -1
  8. package/dist/commands/ads/google/changes.js.map +1 -1
  9. package/dist/commands/ads/google/currency.js +1 -1
  10. package/dist/commands/ads/google/currency.js.map +1 -1
  11. package/dist/commands/ads/google/keywords/discover.d.ts.map +1 -1
  12. package/dist/commands/ads/google/keywords/discover.js +18 -6
  13. package/dist/commands/ads/google/keywords/discover.js.map +1 -1
  14. package/dist/commands/ads/google/keywords/index.d.ts.map +1 -1
  15. package/dist/commands/ads/google/keywords/index.js +8 -2
  16. package/dist/commands/ads/google/keywords/index.js.map +1 -1
  17. package/dist/commands/ads/google/keywords/languages.d.ts +2 -0
  18. package/dist/commands/ads/google/keywords/languages.d.ts.map +1 -0
  19. package/dist/commands/ads/google/keywords/languages.js +23 -0
  20. package/dist/commands/ads/google/keywords/languages.js.map +1 -0
  21. package/dist/commands/ads/google/keywords/locations.d.ts +2 -0
  22. package/dist/commands/ads/google/keywords/locations.d.ts.map +1 -0
  23. package/dist/commands/ads/google/keywords/locations.js +23 -0
  24. package/dist/commands/ads/google/keywords/locations.js.map +1 -0
  25. package/dist/commands/ads/google/keywords/metrics.d.ts.map +1 -1
  26. package/dist/commands/ads/google/keywords/metrics.js +18 -6
  27. package/dist/commands/ads/google/keywords/metrics.js.map +1 -1
  28. package/dist/commands/ads/google/query.js +3 -3
  29. package/dist/commands/ads/google/query.js.map +1 -1
  30. package/dist/commands/ads/output.d.ts +5 -1
  31. package/dist/commands/ads/output.d.ts.map +1 -1
  32. package/dist/commands/ads/output.js +53 -4
  33. package/dist/commands/ads/output.js.map +1 -1
  34. package/dist/commands/research/advertisers.d.ts.map +1 -1
  35. package/dist/commands/research/advertisers.js +7 -4
  36. package/dist/commands/research/advertisers.js.map +1 -1
  37. package/dist/commands/research/autocomplete.d.ts +34 -0
  38. package/dist/commands/research/autocomplete.d.ts.map +1 -0
  39. package/dist/commands/research/autocomplete.js +73 -0
  40. package/dist/commands/research/autocomplete.js.map +1 -0
  41. package/dist/commands/research/index.d.ts.map +1 -1
  42. package/dist/commands/research/index.js +8 -0
  43. package/dist/commands/research/index.js.map +1 -1
  44. package/dist/commands/research/intent.d.ts.map +1 -1
  45. package/dist/commands/research/intent.js +10 -3
  46. package/dist/commands/research/intent.js.map +1 -1
  47. package/dist/commands/research/keyword-gap.d.ts.map +1 -1
  48. package/dist/commands/research/keyword-gap.js +11 -3
  49. package/dist/commands/research/keyword-gap.js.map +1 -1
  50. package/dist/commands/research/keywords-for-site.d.ts.map +1 -1
  51. package/dist/commands/research/keywords-for-site.js +11 -4
  52. package/dist/commands/research/keywords-for-site.js.map +1 -1
  53. package/dist/commands/research/relevant-pages.d.ts +34 -0
  54. package/dist/commands/research/relevant-pages.d.ts.map +1 -0
  55. package/dist/commands/research/relevant-pages.js +76 -0
  56. package/dist/commands/research/relevant-pages.js.map +1 -0
  57. package/dist/geo-context.d.ts +21 -0
  58. package/dist/geo-context.d.ts.map +1 -0
  59. package/dist/geo-context.js +208 -0
  60. package/dist/geo-context.js.map +1 -0
  61. package/package.json +1 -1
package/README.md CHANGED
@@ -24,7 +24,7 @@ export BAKER_GOOGLE_ADS_CUSTOMER_ID="1234567890"
24
24
 
25
25
  - `BAKER_API_KEY` must start with `bk_`
26
26
  - `BAKER_API_URL` is your Convex site URL
27
- - `BAKER_GOOGLE_ADS_CUSTOMER_ID` — default Google Ads customer ID (10 digits). Used when `--customer-id` is not passed.
27
+ - `BAKER_GOOGLE_ADS_CUSTOMER_ID` — default Google Ads customer ID (10 digits). Used when `--customer-id` is not passed. If neither is set and the account has exactly one Google Ads customer, it is auto-selected.
28
28
 
29
29
  ## Output Format
30
30
 
@@ -40,6 +40,9 @@ All commands return a JSON envelope:
40
40
  // Success with data disclaimer (research commands)
41
41
  { "ok": true, "data": [...], "fields": { ... }, "note": "Estimates based on third-party SERP data — not exact figures. Use for directional insights, not precise measurement." }
42
42
 
43
+ // Success with geo targeting context (keyword/research commands)
44
+ { "ok": true, "data": [...], "query_context": { "location": "United States (2840)", "language": "English (1000)", "location_is_default": true, "language_is_default": true, "defaults_warning": "Location and/or language were not specified — using defaults. Results are for United States in English. Pass --location and --language to target a different market." } }
45
+
43
46
  // Error with self-correction (ads commands)
44
47
  { "ok": false, "error": { "code": "FIELD_NOT_FOUND", "message": "...", "fix": { "action": "retry_with_modified_query", "correctedCommand": "baker ads google query \"...\"", "explanation": "..." }, "retryable": false, "gaqlExecuted": "SELECT ..." } }
45
48
 
@@ -315,13 +318,15 @@ baker ads google keywords discover --customer-id 1234567890 --url "https://compe
315
318
  | `--customer-id` | Google Ads customer ID. Falls back to `BAKER_GOOGLE_ADS_CUSTOMER_ID` env var. |
316
319
  | `--seeds` | Comma-separated seed keywords (max 10) |
317
320
  | `--url` | URL to extract keyword ideas from |
318
- | `--location` | Geo target ID (default: 2840 for US) |
319
- | `--language` | Language ID (default: 1000 for English) |
321
+ | `--location` | Geo target ID. **Defaults to 2840 (United States)** — always set for non-US markets |
322
+ | `--language` | Language ID. **Defaults to 1000 (English)** — always set for non-English markets |
320
323
  | `--limit` | Max results (default 20) |
321
324
  | `--cursor` | Pagination cursor from previous response (`next_page_token`) |
322
325
  | `--no-cache` | Skip cache (24h TTL) |
323
326
  | `--output` | Format: `json` \| `csv` \| `jsonl` \| `md` |
324
327
 
328
+ > **Note:** The response includes a `query_context` object showing the actual location and language used, with `defaults_warning` when defaults were applied.
329
+
325
330
  ---
326
331
 
327
332
  ### `baker ads google keywords metrics`
@@ -352,7 +357,8 @@ baker ads google keywords metrics --customer-id 1234567890 --keywords "running s
352
357
  }
353
358
  ]
354
359
  },
355
- "fields": { ... }
360
+ "fields": { ... },
361
+ "query_context": { "location": "United States (2840)", "language": "English (1000)", "location_is_default": true, "language_is_default": true }
356
362
  }
357
363
  ```
358
364
 
@@ -362,8 +368,8 @@ baker ads google keywords metrics --customer-id 1234567890 --keywords "running s
362
368
  |-----------------|-----------------------------------------------|
363
369
  | `--customer-id` | Google Ads customer ID. Falls back to `BAKER_GOOGLE_ADS_CUSTOMER_ID` env var. |
364
370
  | `--keywords` | Comma-separated keywords to analyze (max 200) |
365
- | `--location` | Geo target ID (default: 2840 for US) |
366
- | `--language` | Language ID (default: 1000 for English) |
371
+ | `--location` | Geo target ID. **Defaults to 2840 (United States)** — always set for non-US markets |
372
+ | `--language` | Language ID. **Defaults to 1000 (English)** — always set for non-English markets |
367
373
  | `--no-cache` | Skip cache (24h TTL) |
368
374
  | `--output` | Format: `json` \| `csv` \| `jsonl` \| `md` |
369
375
 
@@ -454,12 +460,88 @@ baker research advertisers "crm software" --location uk --limit 10
454
460
 
455
461
  | Flag | Description |
456
462
  |--------------|--------------------------------------|
457
- | `--location` | Country code (us, uk, es, de...) or numeric code. Default: us |
458
- | `--language` | Language code or name (en, spanish, french...). Default: en |
463
+ | `--location` | Country code (us, uk, es, de...) or numeric code. **Defaults to us (United States)** — always set for non-US markets |
464
+ | `--language` | Language code or name (en, spanish, french...). **Defaults to en (English)** — always set for non-English markets |
459
465
  | `--limit` | Max results (default: 20) |
460
466
  | `--no-cache` | Skip cache (6h TTL) |
461
467
  | `--output` | Format: json\|csv\|md\|jsonl |
462
468
 
469
+ > **Note:** The response includes a `query_context` object showing the actual location and language used, with `defaults_warning` when defaults were applied.
470
+
471
+ ---
472
+
473
+ ### `baker research autocomplete "seed keyword"`
474
+
475
+ Get Google Autocomplete suggestions for keyword expansion.
476
+
477
+ ```bash
478
+ baker research autocomplete "running shoes"
479
+ baker research autocomplete "crm" --location uk --limit 5
480
+ ```
481
+
482
+ **Response:**
483
+
484
+ ```json
485
+ {
486
+ "ok": true,
487
+ "data": [
488
+ { "suggestion": "running shoes for men" },
489
+ { "suggestion": "running shoes near me" }
490
+ ],
491
+ "fields": {
492
+ "suggestion": "Autocomplete suggestion from Google"
493
+ }
494
+ }
495
+ ```
496
+
497
+ **Flags:**
498
+
499
+ | Flag | Description |
500
+ |--------------|--------------------------------------|
501
+ | `--location` | Country code (us, uk, es, de...). **Defaults to us** |
502
+ | `--language` | Language code or name. **Defaults to en** |
503
+ | `--limit` | Max suggestions (default: 10, max: 20) |
504
+ | `--no-cache` | Skip cache (24h TTL) |
505
+ | `--output` | Format: json\|csv\|md\|jsonl |
506
+
507
+ ---
508
+
509
+ ### `baker research relevant-pages "domain.com"`
510
+
511
+ Get the top pages of a competitor domain with organic traffic data.
512
+
513
+ ```bash
514
+ baker research relevant-pages "competitor.com"
515
+ baker research relevant-pages "competitor.com" --location es --limit 10
516
+ ```
517
+
518
+ **Response:**
519
+
520
+ ```json
521
+ {
522
+ "ok": true,
523
+ "data": [
524
+ { "page": "https://competitor.com/best-product", "etv": 12500, "keywords": 340, "top_10": 85 }
525
+ ],
526
+ "fields": {
527
+ "page": "Page URL",
528
+ "etv": "Estimated monthly organic traffic",
529
+ "keywords": "Total organic keywords the page ranks for",
530
+ "top_10": "Keywords in positions 1-10"
531
+ }
532
+ }
533
+ ```
534
+
535
+ **Flags:**
536
+
537
+ | Flag | Description |
538
+ |--------------|--------------------------------------|
539
+ | `--location` | Country code (us, uk, es, de...). **Defaults to us** |
540
+ | `--language` | Language code or name. **Defaults to en** |
541
+ | `--limit` | Max results (default: 20, max: 1000) |
542
+ | `--no-cache` | Skip cache (6h TTL) |
543
+ | `--output` | Format: json\|csv\|md\|jsonl |
544
+
463
545
  ---
464
546
 
465
547
  ### `baker research intent "kw1,kw2,kw3"`
@@ -490,7 +572,7 @@ baker research intent "buy running shoes,best running shoes 2026,how to tie shoe
490
572
 
491
573
  | Flag | Description |
492
574
  |--------------|--------------------------------------|
493
- | `--language` | Language code or name (en, spanish, french...). Default: en |
575
+ | `--language` | Language code or name (en, spanish, french...). **Defaults to en (English)** — always set for non-English keywords |
494
576
  | `--no-cache` | Skip cache (7d TTL) |
495
577
  | `--output` | Format: json\|csv\|md\|jsonl |
496
578
 
@@ -528,8 +610,8 @@ baker research keywords-for-site "competitor.com" --type organic --location uk
528
610
 
529
611
  | Flag | Description |
530
612
  |--------------|----------------------------------------------------------|
531
- | `--location` | Country code (us, uk, es, de...) or numeric code. Default: us |
532
- | `--language` | Language code (default: en) |
613
+ | `--location` | Country code (us, uk, es, de...) or numeric code. **Defaults to us (United States)** — always set for non-US markets |
614
+ | `--language` | Language code. **Defaults to en (English)** — always set for non-English markets |
533
615
  | `--sort` | Sort: relevance, search_volume, competition, cpc |
534
616
  | `--type` | Filter: paid, organic, all (default: all) |
535
617
  | `--limit` | Max results (default: 50) |
@@ -579,8 +661,8 @@ baker research keyword-gap "competitor.com" "mysite.com" --offset 50 --limit 50
579
661
 
580
662
  | Flag | Description |
581
663
  |--------------|--------------------------------------------|
582
- | `--location` | Country code (us, uk, es, de...) or numeric code. Default: us |
583
- | `--language` | Language code (default: en) |
664
+ | `--location` | Country code (us, uk, es, de...) or numeric code. **Defaults to us (United States)** — always set for non-US markets |
665
+ | `--language` | Language code. **Defaults to en (English)** — always set for non-English markets |
584
666
  | `--type` | Filter: paid, organic, all (default: all) |
585
667
  | `--limit` | Max results (default: 50, max: 1000) |
586
668
  | `--offset` | Pagination offset (default: 0) |
@@ -694,9 +776,11 @@ Research data is cached server-side (shared across all callers). No local cache
694
776
  | Command | TTL | Reason |
695
777
  |-------------------|---------|-------------------------------------|
696
778
  | advertisers | 6 hours | SERP landscape changes slowly |
779
+ | autocomplete | 24 hours| Suggestions change daily at most |
697
780
  | intent | 7 days | Intent classification is very stable |
698
781
  | keywords-for-site | 6 hours | Keyword targeting changes weekly |
699
782
  | keyword-gap | 6 hours | Same |
783
+ | relevant-pages | 6 hours | Traffic data updates weekly |
700
784
  | lighthouse | 24 hours| Page performance stable day-to-day |
701
785
 
702
786
  ---
@@ -843,6 +927,7 @@ This CLI is designed for AI agent consumption. Key patterns:
843
927
  8. **Start with `baker schema`** to discover all available commands and their arguments
844
928
  9. **Use `--dry-run`** on mutations to preview before executing
845
929
  10. **Parse the JSON envelope** — check `ok` field before accessing `data`
930
+ 11. **Always check `query_context`** in keyword/research responses — it shows the actual location and language used. If `defaults_warning` is present, the query used US/English defaults. Always pass `--location` and `--language` explicitly when targeting a specific market.
846
931
 
847
932
  ## Publishing
848
933
 
package/dist/cli.js CHANGED
@@ -9,7 +9,7 @@ import { videosCommand } from "./commands/videos/index.js";
9
9
  const main = defineCommand({
10
10
  meta: {
11
11
  name: "baker",
12
- version: "0.11.0",
12
+ version: "0.15.0",
13
13
  description: `AI-agent CLI for finding and managing images, videos, testimonials, and ad platform data in Baker.
14
14
 
15
15
  Auth: Set BAKER_API_KEY (starts with bk_) and BAKER_API_URL environment variables.
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- type ErrorCode = "UNAUTHORIZED" | "NOT_FOUND" | "VALIDATION_ERROR" | "RATE_LIMITED" | "INTERNAL_ERROR" | "NETWORK_ERROR";
1
+ type ErrorCode = "UNAUTHORIZED" | "NOT_FOUND" | "VALIDATION_ERROR" | "RATE_LIMITED" | "INTERNAL_ERROR" | "NETWORK_ERROR" | "TIMEOUT";
2
2
  export declare class ApiError extends Error {
3
3
  code: ErrorCode;
4
4
  constructor(code: ErrorCode, message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GACV,cAAc,GACd,WAAW,GACX,kBAAkB,GAClB,cAAc,GACd,gBAAgB,GAChB,eAAe,CAAC;AAEpB,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,SAAS,CAAC;gBAEJ,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAK7C;AAqBD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIjD;AAsDD,wBAAsB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAwBzF;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAkBxE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GACV,cAAc,GACd,WAAW,GACX,kBAAkB,GAClB,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,SAAS,CAAC;AAEd,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,SAAS,CAAC;gBAEJ,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAK7C;AAqBD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIjD;AAsDD,wBAAsB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA4BzF;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAsBxE"}
package/dist/client.js CHANGED
@@ -96,9 +96,13 @@ export async function apiGet(path, params) {
96
96
  Authorization: `Bearer ${env.BAKER_API_KEY}`,
97
97
  Accept: "application/json",
98
98
  },
99
+ signal: AbortSignal.timeout(60_000),
99
100
  });
100
101
  }
101
102
  catch (err) {
103
+ if (err instanceof Error && (err.name === "TimeoutError" || err.name === "AbortError")) {
104
+ throw new ApiError("TIMEOUT", "Request timed out after 60 seconds");
105
+ }
102
106
  throw new ApiError("NETWORK_ERROR", `Request failed: ${err instanceof Error ? err.message : "Unknown error"}`);
103
107
  }
104
108
  return handleResponse(response);
@@ -115,9 +119,13 @@ export async function apiPost(path, body) {
115
119
  Accept: "application/json",
116
120
  },
117
121
  body: JSON.stringify(body),
122
+ signal: AbortSignal.timeout(60_000),
118
123
  });
119
124
  }
120
125
  catch (err) {
126
+ if (err instanceof Error && (err.name === "TimeoutError" || err.name === "AbortError")) {
127
+ throw new ApiError("TIMEOUT", "Request timed out after 60 seconds");
128
+ }
121
129
  throw new ApiError("NETWORK_ERROR", `Request failed: ${err instanceof Error ? err.message : "Unknown error"}`);
122
130
  }
123
131
  return handleResponse(response);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ Examples:
42
42
  output: { type: "string", description: "Format: json|csv|jsonl|md", required: false, default: "json" },
43
43
  },
44
44
  run: async ({ args }) => {
45
- const customerId = resolveCustomerId(args);
45
+ const customerId = await resolveCustomerId(args);
46
46
  const body = {
47
47
  customerId,
48
48
  days: args.days ? Number(args.days) : 7,
@@ -1 +1 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,cAAc,CAAC;IACb,OAAO,EAAE,oBAAoB;IAC7B,WAAW,EAAE,iGAAiG;IAC9G,IAAI,EAAE;QACJ,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oGAAoG;YACjH,QAAQ,EAAE,KAAK;SAChB;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QACzG,eAAe,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qEAAqE;YAClF,QAAQ,EAAE,KAAK;SAChB;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAClH,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KACvG;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;IAC1C,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE;;;;uFAIsE;KACpF;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE;QACzF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE;QACnF,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC5F,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE;QACnF,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8BAA8B,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC7F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KACvG;IACD,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,IAAI,GAA4B;YACpC,UAAU;YACV,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;SAC5C,CAAC;QACF,MAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1C,IAAI,IAAI,CAAC,eAAe,CAAC;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,CAAC;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAiC,yBAAyB,EAAE,IAAI,CAAC,CAAC;YAC5F,MAAM,MAAM,GAAI,IAAI,CAAC,MAAiB,IAAI,MAAM,CAAC;YAEjD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAChD,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -28,7 +28,7 @@ Examples:
28
28
  "no-cache": { type: "boolean", description: "Skip cache", required: false },
29
29
  },
30
30
  run: async ({ args }) => {
31
- const customerId = resolveCustomerId(args);
31
+ const customerId = await resolveCustomerId(args);
32
32
  const useCache = !args["no-cache"];
33
33
  const cacheKey = `currency:${customerId}`;
34
34
  if (useCache) {
@@ -1 +1 @@
1
- {"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/currency.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../../src/commands/ads/google/currency.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/discover.ts"],"names":[],"mappings":"AAiGA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8D1B,CAAC"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/discover.ts"],"names":[],"mappings":"AA0GA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiE1B,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { defineCommand } from "citty";
2
2
  import { ApiError, apiPost } from "../../../../client.js";
3
+ import { buildAdsQueryContext, warnDefaults } from "../../../../geo-context.js";
3
4
  import { registerSchema } from "../../../../schemas.js";
4
5
  import { buildQueryCacheKey, cacheGet, cacheSet, getManagerIdForCustomer } from "../../cache.js";
5
6
  import { resolveCustomerId, writeAdsJson, writeAdsOutput } from "../../output.js";
6
7
  registerSchema({
7
8
  command: "ads.google.keywords.discover",
8
- description: "Discover keyword ideas from seed keywords or URLs. Returns { keywords, total_results, next_page_token? } with snake_case fields matching the Google Ads API.",
9
+ description: "Discover keyword ideas from seed keywords or URLs. Returns { keywords, total_results, next_page_token? } with snake_case fields matching the Google Ads API. IMPORTANT: If --location and --language are omitted, defaults to United States (2840) and English (1000). The response includes a query_context object showing which location/language were used.",
9
10
  args: {
10
11
  "customer-id": {
11
12
  type: "string",
@@ -14,8 +15,16 @@ registerSchema({
14
15
  },
15
16
  seeds: { type: "string", description: "Comma-separated seed keywords (max 10)", required: false },
16
17
  url: { type: "string", description: "URL to extract keyword ideas from", required: false },
17
- location: { type: "string", description: "Geo target ID (default: 2840 for US)", required: false },
18
- language: { type: "string", description: "Language ID (default: 1000 for English)", required: false },
18
+ location: {
19
+ type: "string",
20
+ description: "Geo target ID. DEFAULTS TO 2840 (United States) if omitted — always set this for non-US markets",
21
+ required: false,
22
+ },
23
+ language: {
24
+ type: "string",
25
+ description: "Language ID. DEFAULTS TO 1000 (English) if omitted — always set this for non-English markets",
26
+ required: false,
27
+ },
19
28
  limit: { type: "string", description: "Max keyword ideas (default: 20, max: 100)", required: false, default: 20 },
20
29
  cursor: {
21
30
  type: "string",
@@ -99,7 +108,8 @@ Examples:
99
108
  output: { type: "string", description: "Format: json|csv|jsonl|md", required: false, default: "json" },
100
109
  },
101
110
  run: async ({ args }) => {
102
- const customerId = resolveCustomerId(args);
111
+ const customerId = await resolveCustomerId(args);
112
+ const queryContext = buildAdsQueryContext(args.location, args.language);
103
113
  if (!args.seeds && !args.url) {
104
114
  writeAdsJson({
105
115
  ok: false,
@@ -115,7 +125,8 @@ Examples:
115
125
  if (useCache) {
116
126
  const cached = cacheGet("keywords", cacheKey);
117
127
  if (cached) {
118
- writeAdsJson({ ok: true, data: cached.data, cached: true });
128
+ warnDefaults(queryContext);
129
+ writeAdsJson({ ok: true, data: cached.data, cached: true, query_context: queryContext });
119
130
  return;
120
131
  }
121
132
  }
@@ -124,12 +135,13 @@ Examples:
124
135
  if (useCache) {
125
136
  cacheSet("keywords", cacheKey, data, 24 * 60 * 60 * 1000);
126
137
  }
138
+ warnDefaults(queryContext);
127
139
  const format = args.output || "json";
128
140
  if (format !== "json") {
129
141
  writeAdsOutput(data.keywords, format);
130
142
  return;
131
143
  }
132
- writeAdsJson({ ok: true, data, fields: KEYWORD_IDEA_FIELDS });
144
+ writeAdsJson({ ok: true, data, fields: KEYWORD_IDEA_FIELDS, query_context: queryContext });
133
145
  }
134
146
  catch (err) {
135
147
  handleKeywordError(err);
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/discover.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,qDAa1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,qDAiB1B,CAAC"}
@@ -1,18 +1,24 @@
1
1
  import { defineCommand } from "citty";
2
2
  import { discoverCommand } from "./discover.js";
3
+ import { languagesCommand } from "./languages.js";
4
+ import { locationsCommand } from "./locations.js";
3
5
  import { metricsCommand } from "./metrics.js";
4
6
  export const keywordsCommand = defineCommand({
5
7
  meta: {
6
8
  name: "keywords",
7
- description: `Keyword research tools. Subcommands: discover, metrics.
9
+ description: `Keyword research tools. Subcommands: discover, metrics, locations, languages.
8
10
 
9
11
  Examples:
10
12
  baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes"
11
- baker ads google keywords metrics --customer-id 1234567890 --keywords "running shoes,nike shoes"`,
13
+ baker ads google keywords metrics --customer-id 1234567890 --keywords "running shoes,nike shoes"
14
+ baker ads google keywords locations
15
+ baker ads google keywords languages`,
12
16
  },
13
17
  subCommands: {
14
18
  discover: discoverCommand,
15
19
  metrics: metricsCommand,
20
+ locations: locationsCommand,
21
+ languages: languagesCommand,
16
22
  },
17
23
  });
18
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE;;;;mGAIkF;KAChG;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,cAAc;KACxB;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE;;;;;;sCAMqB;KACnC;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,gBAAgB;KAC5B;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const languagesCommand: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ //# sourceMappingURL=languages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/languages.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB,qDAQ3B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { defineCommand } from "citty";
2
+ import { GOOGLE_ADS_LANGUAGES } from "../../../../geo-context.js";
3
+ import { registerSchema } from "../../../../schemas.js";
4
+ import { writeAdsJson } from "../../output.js";
5
+ registerSchema({
6
+ command: "ads.google.keywords.languages",
7
+ description: "List all supported language IDs for --language flag in Google Ads keyword commands.",
8
+ args: {},
9
+ });
10
+ const FIELDS = {
11
+ id: "Language ID to pass as --language",
12
+ name: "Language name",
13
+ };
14
+ export const languagesCommand = defineCommand({
15
+ meta: {
16
+ name: "languages",
17
+ description: "List all supported language IDs for --language flag.",
18
+ },
19
+ run: () => {
20
+ writeAdsJson({ ok: true, data: GOOGLE_ADS_LANGUAGES, fields: FIELDS });
21
+ },
22
+ });
23
+ //# sourceMappingURL=languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/languages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,cAAc,CAAC;IACb,OAAO,EAAE,+BAA+B;IACxC,WAAW,EAAE,qFAAqF;IAClG,IAAI,EAAE,EAAE;CACT,CAAC,CAAC;AAEH,MAAM,MAAM,GAA2B;IACrC,EAAE,EAAE,mCAAmC;IACvC,IAAI,EAAE,eAAe;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC5C,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,sDAAsD;KACpE;IACD,GAAG,EAAE,GAAG,EAAE;QACR,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const locationsCommand: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ //# sourceMappingURL=locations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locations.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/locations.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB,qDAQ3B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { defineCommand } from "citty";
2
+ import { GOOGLE_ADS_LOCATIONS } from "../../../../geo-context.js";
3
+ import { registerSchema } from "../../../../schemas.js";
4
+ import { writeAdsJson } from "../../output.js";
5
+ registerSchema({
6
+ command: "ads.google.keywords.locations",
7
+ description: "List all supported geo target IDs for --location flag in Google Ads keyword commands.",
8
+ args: {},
9
+ });
10
+ const FIELDS = {
11
+ id: "Geo target ID to pass as --location",
12
+ name: "Country/region name",
13
+ };
14
+ export const locationsCommand = defineCommand({
15
+ meta: {
16
+ name: "locations",
17
+ description: "List all supported geo target IDs for --location flag.",
18
+ },
19
+ run: () => {
20
+ writeAdsJson({ ok: true, data: GOOGLE_ADS_LOCATIONS, fields: FIELDS });
21
+ },
22
+ });
23
+ //# sourceMappingURL=locations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locations.js","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/locations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,cAAc,CAAC;IACb,OAAO,EAAE,+BAA+B;IACxC,WAAW,EAAE,uFAAuF;IACpG,IAAI,EAAE,EAAE;CACT,CAAC,CAAC;AAEH,MAAM,MAAM,GAA2B;IACrC,EAAE,EAAE,qCAAqC;IACzC,IAAI,EAAE,qBAAqB;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC5C,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,wDAAwD;KACtE;IACD,GAAG,EAAE,GAAG,EAAE;QACR,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/metrics.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6FzB,CAAC"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ads/google/keywords/metrics.ts"],"names":[],"mappings":"AA+CA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgGzB,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { defineCommand } from "citty";
2
2
  import { ApiError, apiPost } from "../../../../client.js";
3
+ import { buildAdsQueryContext, warnDefaults } from "../../../../geo-context.js";
3
4
  import { registerSchema } from "../../../../schemas.js";
4
5
  import { buildQueryCacheKey, cacheGet, cacheSet, getManagerIdForCustomer } from "../../cache.js";
5
6
  import { resolveCustomerId, writeAdsJson, writeAdsOutput } from "../../output.js";
6
7
  registerSchema({
7
8
  command: "ads.google.keywords.metrics",
8
- description: "Get historical metrics for specific keywords. Returns { historical_metrics: [...] } with snake_case fields matching the Google Ads API.",
9
+ description: "Get historical metrics for specific keywords. Returns { historical_metrics: [...] } with snake_case fields matching the Google Ads API. IMPORTANT: If --location and --language are omitted, defaults to United States (2840) and English (1000). The response includes a query_context object showing which location/language were used.",
9
10
  args: {
10
11
  "customer-id": {
11
12
  type: "string",
@@ -13,8 +14,16 @@ registerSchema({
13
14
  required: false,
14
15
  },
15
16
  keywords: { type: "string", description: "Comma-separated keywords to analyze (max 200)", required: true },
16
- location: { type: "string", description: "Geo target ID (default: 2840 for US)", required: false },
17
- language: { type: "string", description: "Language ID (default: 1000 for English)", required: false },
17
+ location: {
18
+ type: "string",
19
+ description: "Geo target ID. DEFAULTS TO 2840 (United States) if omitted — always set this for non-US markets",
20
+ required: false,
21
+ },
22
+ language: {
23
+ type: "string",
24
+ description: "Language ID. DEFAULTS TO 1000 (English) if omitted — always set this for non-English markets",
25
+ required: false,
26
+ },
18
27
  output: { type: "string", description: "Format: json|csv|jsonl|md", required: false, default: "json" },
19
28
  },
20
29
  });
@@ -36,7 +45,8 @@ Examples:
36
45
  output: { type: "string", description: "Format: json|csv|jsonl|md", required: false, default: "json" },
37
46
  },
38
47
  run: async ({ args }) => {
39
- const customerId = resolveCustomerId(args);
48
+ const customerId = await resolveCustomerId(args);
49
+ const queryContext = buildAdsQueryContext(args.location, args.language);
40
50
  const keywords = args.keywords
41
51
  .split(",")
42
52
  .map((k) => k.trim())
@@ -64,7 +74,8 @@ Examples:
64
74
  if (useCache) {
65
75
  const cached = cacheGet("keywords", cacheKey);
66
76
  if (cached) {
67
- writeAdsJson({ ok: true, data: cached.data, cached: true });
77
+ warnDefaults(queryContext);
78
+ writeAdsJson({ ok: true, data: cached.data, cached: true, query_context: queryContext });
68
79
  return;
69
80
  }
70
81
  }
@@ -73,6 +84,7 @@ Examples:
73
84
  if (useCache) {
74
85
  cacheSet("keywords", cacheKey, data, 24 * 60 * 60 * 1000);
75
86
  }
87
+ warnDefaults(queryContext);
76
88
  const format = args.output || "json";
77
89
  if (format !== "json") {
78
90
  writeAdsOutput(data.historical_metrics, format);
@@ -87,7 +99,7 @@ Examples:
87
99
  high_top_of_page_bid_micros: "High-range CPC bid in micros (÷ 1,000,000 for currency)",
88
100
  monthly_search_volumes: "Monthly search volume breakdown (array of {year, month, monthly_searches})",
89
101
  };
90
- writeAdsJson({ ok: true, data, fields });
102
+ writeAdsJson({ ok: true, data, fields, query_context: queryContext });
91
103
  }
92
104
  catch (err) {
93
105
  if (err instanceof ApiError) {