@koda-sl/baker-cli 0.112.1 → 0.113.0-dev.78e242dda
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 +41 -0
- package/dist/{chunk-3JVYU72O.js → chunk-26K7V346.js} +4 -4
- package/dist/chunk-26K7V346.js.map +1 -0
- package/dist/cli.js +2039 -486
- package/dist/cli.js.map +1 -1
- package/dist/engine/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-3JVYU72O.js.map +0 -1
package/README.md
CHANGED
|
@@ -653,6 +653,47 @@ baker ads google library search-competitors "crm software" --location uk
|
|
|
653
653
|
|
|
654
654
|
---
|
|
655
655
|
|
|
656
|
+
### Staged writes (`baker ads google budgets|campaigns|...`)
|
|
657
|
+
|
|
658
|
+
Write commands **never touch the Google Ads API at stage time**. Each command stages a create/update/pause/resume/remove op against the current chat's draft (`BAKER_CHAT_ID`); the dashboard shows it as a pending "Google Ads" change, and the whole draft applies as one atomic `GoogleAdsService.Mutate` when the chat is published. Feature-flagged per company (`companies.googleAdsWriteEnabled`) — off by default = a fully simulated publish with zero real API calls.
|
|
659
|
+
|
|
660
|
+
Reference not-yet-created resources with `g_temp_*` refs returned by earlier `create` commands (they map to Google's temporary negative-ID resource names inside one atomic batch).
|
|
661
|
+
|
|
662
|
+
```bash
|
|
663
|
+
# Build a Search campaign bottom-up, chaining temp refs
|
|
664
|
+
baker ads google budgets create --customer-id 1234567890 --name "Search budget" --amount 50
|
|
665
|
+
# → { ref: "g_temp_ab12", ... }
|
|
666
|
+
baker ads google campaigns create --customer-id 1234567890 --name "Brand — Search" \
|
|
667
|
+
--channel-type SEARCH --budget-ref g_temp_ab12 --bidding-strategy MANUAL_CPC
|
|
668
|
+
baker ads google ad-groups create --customer-id 1234567890 --name "Brand terms" --campaign-ref g_temp_<campaign>
|
|
669
|
+
baker ads google keywords add --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --text "brand name" --match-type EXACT
|
|
670
|
+
# Shared negative keyword list → attach to the campaign
|
|
671
|
+
baker ads google keyword-lists create --customer-id 1234567890 --name "Brand exclusions"
|
|
672
|
+
baker ads google keyword-lists add --customer-id 1234567890 --list-ref g_temp_<list> --text "free" --match-type BROAD
|
|
673
|
+
baker ads google keyword-lists attach --customer-id 1234567890 --campaign-ref g_temp_<campaign> --list-ref g_temp_<list>
|
|
674
|
+
|
|
675
|
+
# Batch keywords — one command stages the whole set as ONE request (up to 500)
|
|
676
|
+
baker ads google keywords add --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> \
|
|
677
|
+
--text "brand name, brand shop:PHRASE, brand store" --match-type EXACT
|
|
678
|
+
baker ads google keyword-lists add --customer-id 1234567890 --list-ref <list-id> --file negatives.txt
|
|
679
|
+
# negatives.txt: one keyword[:MATCH_TYPE] per line; blank lines and "# comments" are skipped
|
|
680
|
+
# Responsive search ad
|
|
681
|
+
baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> \
|
|
682
|
+
--headlines "Fast Widgets,Buy Online,Free Shipping" --descriptions "Best widgets around.,Ships tomorrow." \
|
|
683
|
+
--final-url https://example.com
|
|
684
|
+
|
|
685
|
+
# Review / undo staged changes
|
|
686
|
+
baker ads google draft list
|
|
687
|
+
baker ads google draft remove g_temp_ab12 # cascades to dependents
|
|
688
|
+
baker ads google draft clear
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
Command groups: `budgets`, `campaigns`, `ad-groups`, `keywords` (add/update/remove), `negative-keywords`, `keyword-lists`, `ads`, `assets`, `audiences`, `conversions`, `bidding-strategies`, `labels`, `campaign-criteria`, and `draft`. Amounts are in major currency units (converted to micros). Money/bids: `--amount`, `--cpc-bid`, `--target-cpa` take major units; `--target-roas` a ratio. Less-common ops accept a `--file <payload.json>` (flags override file keys). Updates target a resource name or bare id as the positional argument; a target that names an op staged earlier **amends it in place**.
|
|
692
|
+
|
|
693
|
+
**Batch keyword adds** — `keywords add`, `negative-keywords add`, and `keyword-lists add` take a whole batch in one command: comma-separate `--text` entries and/or pass `--file <list.txt>` (one keyword per line). A `:EXACT`/`:PHRASE`/`:BROAD` suffix per entry overrides the `--match-type` default. Batches stage all-or-nothing as one request (limit 500); each keyword still lands as its own draft op, so it stays individually removable/amendable.
|
|
694
|
+
|
|
695
|
+
---
|
|
696
|
+
|
|
656
697
|
### Caching
|
|
657
698
|
|
|
658
699
|
Google Ads data is cached at two levels:
|
|
@@ -24,9 +24,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
mod
|
|
25
25
|
));
|
|
26
26
|
|
|
27
|
-
//
|
|
27
|
+
// ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/810146e81bae4e3a061fe487864f2fde80c4b03b886877dc0f1fffbc6480b67e/node_modules/safe-stable-stringify/index.js
|
|
28
28
|
var require_safe_stable_stringify = __commonJS({
|
|
29
|
-
"
|
|
29
|
+
"../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/810146e81bae4e3a061fe487864f2fde80c4b03b886877dc0f1fffbc6480b67e/node_modules/safe-stable-stringify/index.js"(exports, module) {
|
|
30
30
|
"use strict";
|
|
31
31
|
var { hasOwnProperty } = Object.prototype;
|
|
32
32
|
var stringify = configure2();
|
|
@@ -890,7 +890,7 @@ function describeCause(c) {
|
|
|
890
890
|
}
|
|
891
891
|
}
|
|
892
892
|
|
|
893
|
-
//
|
|
893
|
+
// ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/810146e81bae4e3a061fe487864f2fde80c4b03b886877dc0f1fffbc6480b67e/node_modules/safe-stable-stringify/esm/wrapper.js
|
|
894
894
|
var import__ = __toESM(require_safe_stable_stringify(), 1);
|
|
895
895
|
var configure = import__.default.configure;
|
|
896
896
|
var wrapper_default = import__.default;
|
|
@@ -6252,4 +6252,4 @@ export {
|
|
|
6252
6252
|
defaultRegistry,
|
|
6253
6253
|
createEngineFromEnv
|
|
6254
6254
|
};
|
|
6255
|
-
//# sourceMappingURL=chunk-
|
|
6255
|
+
//# sourceMappingURL=chunk-26K7V346.js.map
|