@adkit/cli 1.13.32 → 1.13.33

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 (3) hide show
  1. package/README.md +8 -1
  2. package/dist/cli.js +54 -6
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -41,9 +41,14 @@ adkit projects current
41
41
 
42
42
  ### Ad Library
43
43
 
44
- Browse competitor ads and advertisers tracked by AdKit.
44
+ Browse the shared ad library or your project’s My Watchlist. `add` finds or creates an advertiser and saves it to that project; `track` and `untrack` change membership for an existing ID. Repeating either is safe. Untracking keeps the shared advertiser and other projects intact.
45
45
 
46
46
  ```bash
47
+ adkit library advertisers list --scope watchlist --project <project-id>
48
+ adkit library advertisers search "notion" --scope watchlist --project <project-id>
49
+ adkit library advertisers add --website notion.so --project <project-id>
50
+ adkit library advertisers track <id> --project <project-id>
51
+ adkit library advertisers untrack <id> --project <project-id>
47
52
  adkit library advertisers search "notion" --platform meta
48
53
  adkit library advertisers <id>
49
54
  adkit library advertisers similar --industry saas
@@ -51,6 +56,8 @@ adkit library ads list --advertiser <id>
51
56
  adkit library ads <id>
52
57
  ```
53
58
 
59
+ Omit `--scope` (or use `--scope library`) for the whole library. List/search default to newest first; use `--sort name` for alphabetical order. Use `--json` for automation.
60
+
54
61
  ### Studio
55
62
 
56
63
  Create and manage AI-generated ads.
package/dist/cli.js CHANGED
@@ -4727,7 +4727,7 @@ function readStringFlag2(flags, key) {
4727
4727
  const value = flags[key];
4728
4728
  return typeof value === "string" ? value : void 0;
4729
4729
  }
4730
- var ADVERTISER_FILTER_FLAGS = ["industry", "category", "platform", "sort", "limit", "page"];
4730
+ var ADVERTISER_FILTER_FLAGS = ["industry", "category", "platform", "sort", "limit", "page", "scope"];
4731
4731
  async function listAdvertisers(client, _args, flags) {
4732
4732
  validateFlags(flags, ADVERTISER_FILTER_FLAGS, "library advertisers list");
4733
4733
  const qs = buildAdvertiserQueryString(flags);
@@ -4769,14 +4769,31 @@ async function addAdvertiser(client, _args, flags) {
4769
4769
  linkedInLibraryUrl: linkedinLibrary
4770
4770
  });
4771
4771
  }
4772
+ async function trackAdvertiser(client, args, flags) {
4773
+ const path3 = getAdvertiserWatchlistPath(args, flags);
4774
+ return client.post(path3);
4775
+ }
4776
+ async function untrackAdvertiser(client, args, flags) {
4777
+ const path3 = getAdvertiserWatchlistPath(args, flags);
4778
+ return client.delete(path3);
4779
+ }
4780
+ function getAdvertiserWatchlistPath(args, flags) {
4781
+ validateFlags(flags, [], "library advertisers");
4782
+ if (args.length !== 1 || !args[0]) throw new CliError("MISSING_ARGUMENT", "Expected exactly one advertiser ID", "Run: adkit library advertisers track <id> or adkit library advertisers untrack <id>");
4783
+ if (flags.data !== void 0) throw new CliError("INVALID_VALUE", "Watchlist changes do not accept --data", "Pass the advertiser ID as a positional argument and select the project with --project");
4784
+ const id = encodeURIComponent(args[0]);
4785
+ return `/library/advertisers/${id}/watchlist`;
4786
+ }
4772
4787
  function buildAdvertiserQueryString(flags, query) {
4788
+ const scope = flags.scope;
4789
+ if (scope !== void 0 && scope !== "library" && scope !== "watchlist") throw new CliError("INVALID_VALUE", "--scope must be library or watchlist", "Use --scope watchlist for the selected project, or omit it to search the whole library");
4773
4790
  const industry = typeof flags.industry === "string" ? flags.industry : void 0;
4774
4791
  const category = typeof flags.category === "string" ? flags.category : void 0;
4775
4792
  const platform2 = typeof flags.platform === "string" ? flags.platform : void 0;
4776
- const sort = typeof flags.sort === "string" ? flags.sort : "name";
4793
+ const sort = typeof flags.sort === "string" ? flags.sort : void 0;
4777
4794
  const limit = typeof flags.limit === "string" ? flags.limit : void 0;
4778
4795
  const page = typeof flags.page === "string" ? flags.page : void 0;
4779
- return queryString3({ industry, category, platform: platform2, query, sort, limit, page });
4796
+ return queryString3({ industry, category, platform: platform2, query, sort, limit, page, scope });
4780
4797
  }
4781
4798
  async function listLibraryAds(client, _args, flags) {
4782
4799
  const platform2 = readStringFlag2(flags, "platform");
@@ -8208,10 +8225,22 @@ Examples:
8208
8225
  <id> View advertiser details
8209
8226
  similar Find similar to your project
8210
8227
  similar <id> Find similar to an advertiser
8211
- add Add a new advertiser
8228
+ add Find or add an advertiser and save it to My Watchlist
8229
+ track <id> Save an existing advertiser to My Watchlist
8230
+ untrack <id> Remove it from this project only
8231
+
8232
+ Watchlist:
8233
+ --scope <library|watchlist> List/search the whole library (default) or My Watchlist
8234
+ --project <id> Choose the project; otherwise use the active project
8235
+ Track/untrack return advertiserId and tracked. Repeating either is safe.
8236
+ Untrack keeps the advertiser and other projects intact.
8212
8237
 
8213
8238
  Examples:
8214
8239
  adkit library advertisers list
8240
+ adkit library advertisers list --scope watchlist --project <project-id>
8241
+ adkit library advertisers search nike --scope watchlist --project <project-id>
8242
+ adkit library advertisers track <advertiser-id> --project <project-id>
8243
+ adkit library advertisers untrack <advertiser-id> --project <project-id>
8215
8244
  adkit library advertisers search nike
8216
8245
  adkit library advertisers list --platform meta --industry SaaS
8217
8246
  adkit library advertisers similar
@@ -8360,13 +8389,15 @@ var HELP_FULL = {
8360
8389
  <id> View advertiser details
8361
8390
  similar Find similar to your project
8362
8391
  similar <id> Find similar to an advertiser
8363
- add Add a new advertiser
8392
+ add Find or add an advertiser and save it to My Watchlist
8393
+ track <id> Save an existing advertiser to My Watchlist
8394
+ untrack <id> Remove it from this project only
8364
8395
 
8365
8396
  Filters (list / search):
8366
8397
  --industry <string> Filter by industry (e.g. "SaaS", "E-commerce")
8367
8398
  --category <string> Filter by category (e.g. "Productivity Tools")
8368
8399
  --platform <meta|google|linkedin> Filter by ad platform
8369
- --sort <name|newest|spend> Sort order (default: name)
8400
+ --sort <name|newest|spend> Sort order (default: newest)
8370
8401
  --limit <n> Results per page (default: 20, max: 100)
8371
8402
  --page <n> Page number (default: 1)
8372
8403
 
@@ -8384,8 +8415,18 @@ Add flags:
8384
8415
  --google-library <url> Google Ads Transparency URL
8385
8416
  --linkedin-library <url> LinkedIn Ad Library URL
8386
8417
 
8418
+ Watchlist:
8419
+ --scope <library|watchlist> List/search the whole library (default) or My Watchlist
8420
+ --project <id> Choose the project; otherwise use the active project
8421
+ Track/untrack return advertiserId and tracked. Repeating either is safe.
8422
+ Untrack keeps the advertiser and other projects intact.
8423
+
8387
8424
  Examples:
8388
8425
  adkit library advertisers list
8426
+ adkit library advertisers list --scope watchlist --project <project-id>
8427
+ adkit library advertisers search nike --scope watchlist --project <project-id>
8428
+ adkit library advertisers track <advertiser-id> --project <project-id>
8429
+ adkit library advertisers untrack <advertiser-id> --project <project-id>
8389
8430
  adkit library advertisers search nike
8390
8431
  adkit library advertisers search "productivity tools" --platform meta
8391
8432
  adkit library advertisers list --industry SaaS --limit 10
@@ -8930,11 +8971,13 @@ function printAddAdvertiserResult(data) {
8930
8971
  const adv = dig(data, "advertiser");
8931
8972
  const isNew = dig(data, "isNew");
8932
8973
  const jobCreated = dig(data, "jobCreated");
8974
+ const tracked = dig(data, "tracked");
8933
8975
  const lines = [""];
8934
8976
  if (isNew) lines.push(` \u2713 Created advertiser: ${toStr2(dig(adv, "name"))}`);
8935
8977
  else lines.push(` Advertiser already exists: ${toStr2(dig(adv, "name"))}`);
8936
8978
  if (dig(adv, "website")) lines.push(` Website: ${toStr2(dig(adv, "website"))}`);
8937
8979
  if (dig(adv, "_id")) lines.push(` ID: ${toStr2(dig(adv, "_id"))}`);
8980
+ if (tracked === true) lines.push(" Saved to this project\u2019s watchlist.");
8938
8981
  if (jobCreated) lines.push("", " Scraping job queued \u2014 advertiser data will be populated shortly.");
8939
8982
  else if (!isNew && dig(adv, "hasDescription")) lines.push("", " Advertiser already has complete data.");
8940
8983
  const job = dig(data, "job");
@@ -10255,6 +10298,11 @@ async function main() {
10255
10298
  const data = await addAdvertiser(client, args.slice(3), flags);
10256
10299
  if (wantsJson(flags)) printResult(data, flags);
10257
10300
  else printAddAdvertiserResult(data);
10301
+ } else if (action === "track" || action === "untrack") {
10302
+ const changeWatchlist = action === "track" ? trackAdvertiser : untrackAdvertiser;
10303
+ const commandArgs = args.slice(3);
10304
+ const data = await changeWatchlist(client, commandArgs, flags);
10305
+ printResult(data, flags);
10258
10306
  } else if (action === "similar") {
10259
10307
  const advertiserId = args[3];
10260
10308
  if (advertiserId) flags.advertiserId = advertiserId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adkit/cli",
3
- "version": "1.13.32",
3
+ "version": "1.13.33",
4
4
  "description": "The Ads CLI for AI agents — manage Meta & Google ad campaigns, browse the ad library, and generate creatives from your terminal.",
5
5
  "keywords": [
6
6
  "ads cli",