@koda-sl/baker-cli 0.260.0 → 0.261.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/dist/cli.js +24 -24
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -831,7 +831,7 @@ var actionsTagsDeleteResponseSchema = okOnlySchema();
|
|
|
831
831
|
|
|
832
832
|
// ../api/src/ad-library/wire.ts
|
|
833
833
|
import { z as z2 } from "zod";
|
|
834
|
-
var adLibraryPlatformSchema = z2.enum(["meta", "linkedin"]);
|
|
834
|
+
var adLibraryPlatformSchema = z2.enum(["meta", "linkedin", "tiktok"]);
|
|
835
835
|
var winnersHardFiltersSchema = z2.object({
|
|
836
836
|
platform: z2.array(z2.string()).optional(),
|
|
837
837
|
format: z2.array(z2.string()).optional(),
|
|
@@ -51752,7 +51752,7 @@ registerSchema({
|
|
|
51752
51752
|
description: "List brands in the shared ad-dna corpus by name or domain. Use it to find your OWN advertiser (to --exclude-advertiser on search) or a competitor (to --advertiser-id on search / winners).",
|
|
51753
51753
|
args: {
|
|
51754
51754
|
query: { type: "string", description: "Brand name or domain to match (case-insensitive)", required: false },
|
|
51755
|
-
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
|
|
51755
|
+
platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
|
|
51756
51756
|
limit: { type: "number", description: "Max results 1-100 (default 20)", required: false, default: 20 },
|
|
51757
51757
|
offset: { type: "number", description: "Skip N results (pagination)", required: false, default: 0 }
|
|
51758
51758
|
}
|
|
@@ -51788,7 +51788,7 @@ var advertisersCommand2 = defineCommand215({
|
|
|
51788
51788
|
},
|
|
51789
51789
|
args: {
|
|
51790
51790
|
query: { type: "positional", description: "Brand name or domain", required: false },
|
|
51791
|
-
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
|
|
51791
|
+
platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
|
|
51792
51792
|
limit: { type: "string", description: "Max results (default 20)", required: false },
|
|
51793
51793
|
offset: { type: "string", description: "Skip N results (pagination)", required: false },
|
|
51794
51794
|
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
@@ -51929,7 +51929,7 @@ registerSchema({
|
|
|
51929
51929
|
"ad-id": { type: "string", description: "The ad id to open (from search/winners/feed results)", required: true },
|
|
51930
51930
|
platform: {
|
|
51931
51931
|
type: "string",
|
|
51932
|
-
description: "Which platform the ad id is on: meta|linkedin (default meta)",
|
|
51932
|
+
description: "Which platform the ad id is on: meta|linkedin|tiktok (default meta)",
|
|
51933
51933
|
required: false
|
|
51934
51934
|
}
|
|
51935
51935
|
}
|
|
@@ -51943,7 +51943,7 @@ var contentCommand = defineCommand217({
|
|
|
51943
51943
|
"ad-id": { type: "positional", description: "Ad id (from search/winners/feed)", required: true },
|
|
51944
51944
|
platform: {
|
|
51945
51945
|
type: "string",
|
|
51946
|
-
description: "Platform the ad id is on: meta|linkedin (default meta)",
|
|
51946
|
+
description: "Platform the ad id is on: meta|linkedin|tiktok (default meta)",
|
|
51947
51947
|
required: false
|
|
51948
51948
|
},
|
|
51949
51949
|
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
@@ -52018,7 +52018,7 @@ registerSchema({
|
|
|
52018
52018
|
description: "Comma-separated followed advertiser ids to narrow to (from `following`). Omit for all follows.",
|
|
52019
52019
|
required: false
|
|
52020
52020
|
},
|
|
52021
|
-
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
|
|
52021
|
+
platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
|
|
52022
52022
|
"per-advertiser": {
|
|
52023
52023
|
type: "number",
|
|
52024
52024
|
description: "Max winners kept per advertiser 0-50 (0 = no cap, default 5)",
|
|
@@ -52046,7 +52046,7 @@ var feedCommand = defineCommand218({
|
|
|
52046
52046
|
description: "Comma-separated followed advertiser ids to narrow to",
|
|
52047
52047
|
required: false
|
|
52048
52048
|
},
|
|
52049
|
-
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
|
|
52049
|
+
platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
|
|
52050
52050
|
"per-advertiser": {
|
|
52051
52051
|
type: "string",
|
|
52052
52052
|
description: "Max winners per advertiser 0-50 (0 = no cap, default 5)",
|
|
@@ -52121,15 +52121,15 @@ var feedCommand = defineCommand218({
|
|
|
52121
52121
|
|
|
52122
52122
|
// src/commands/winning-ads/follow.ts
|
|
52123
52123
|
import { defineCommand as defineCommand219 } from "citty";
|
|
52124
|
-
var PLATFORMS =
|
|
52124
|
+
var PLATFORMS = adLibraryPlatformSchema.options;
|
|
52125
52125
|
registerSchema({
|
|
52126
52126
|
command: "winning-ads.follow",
|
|
52127
|
-
description: "Follow a brand so ALL its ads join your library \u2014 every platform (Meta
|
|
52127
|
+
description: "Follow a brand so ALL its ads join your library \u2014 every platform (Meta, LinkedIn, TikTok) and every country. Pass a domain (best \u2014 resolves both platforms), an ad-library / profile URL, or a brand name. --platform tells us how to read your input; it does NOT limit what we track. Already-in-corpus brands are subscribed instantly; new brands are queued for ingestion.",
|
|
52128
52128
|
args: {
|
|
52129
52129
|
input: { type: "string", description: "Domain (best), profile/ad-library URL, or brand name", required: true },
|
|
52130
52130
|
platform: {
|
|
52131
52131
|
type: "string",
|
|
52132
|
-
description: "meta|linkedin \u2014 how to read the input, not a tracking limit. We track every platform we can resolve.",
|
|
52132
|
+
description: "meta|linkedin|tiktok \u2014 how to read the input, not a tracking limit. We track every platform we can resolve.",
|
|
52133
52133
|
required: true
|
|
52134
52134
|
},
|
|
52135
52135
|
label: { type: "string", description: "Optional display label (defaults to the resolved name)", required: false }
|
|
@@ -52138,13 +52138,13 @@ registerSchema({
|
|
|
52138
52138
|
var followCommand = defineCommand219({
|
|
52139
52139
|
meta: {
|
|
52140
52140
|
name: "follow",
|
|
52141
|
-
description: 'Follow a brand to track ALL its ads \u2014 every platform and country. --platform is how we read your input, not a limit. A domain tracks
|
|
52141
|
+
description: 'Follow a brand to track ALL its ads \u2014 every platform and country. --platform is how we read your input, not a limit. A domain tracks every platform we can resolve. Example: baker winning-ads follow "deel.com" --platform meta'
|
|
52142
52142
|
},
|
|
52143
52143
|
args: {
|
|
52144
52144
|
input: { type: "positional", description: "Domain (best), profile/ad-library URL, or brand name", required: true },
|
|
52145
52145
|
platform: {
|
|
52146
52146
|
type: "string",
|
|
52147
|
-
description: "meta|linkedin \u2014 how to read the input, not a tracking limit.",
|
|
52147
|
+
description: "meta|linkedin|tiktok \u2014 how to read the input, not a tracking limit.",
|
|
52148
52148
|
required: true
|
|
52149
52149
|
},
|
|
52150
52150
|
label: { type: "string", description: "Optional display label", required: false }
|
|
@@ -52155,7 +52155,7 @@ var followCommand = defineCommand219({
|
|
|
52155
52155
|
if (!PLATFORMS.includes(platform)) {
|
|
52156
52156
|
writeJson({
|
|
52157
52157
|
ok: false,
|
|
52158
|
-
error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin" }
|
|
52158
|
+
error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin, tiktok" }
|
|
52159
52159
|
});
|
|
52160
52160
|
process.exit(1);
|
|
52161
52161
|
}
|
|
@@ -52183,7 +52183,7 @@ var followCommand = defineCommand219({
|
|
|
52183
52183
|
|
|
52184
52184
|
// src/commands/winning-ads/follow-competitors.ts
|
|
52185
52185
|
import { defineCommand as defineCommand220 } from "citty";
|
|
52186
|
-
var PLATFORMS2 =
|
|
52186
|
+
var PLATFORMS2 = adLibraryPlatformSchema.options;
|
|
52187
52187
|
var BATCH_TIMEOUT_MS = 3e5;
|
|
52188
52188
|
function buildFollowBatchBody(input) {
|
|
52189
52189
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -52200,7 +52200,7 @@ function buildFollowBatchBody(input) {
|
|
|
52200
52200
|
}
|
|
52201
52201
|
registerSchema({
|
|
52202
52202
|
command: "winning-ads.follow-competitors",
|
|
52203
|
-
description: "Follow MANY brands at once \u2014 the fast way to add every competitor to your library. Pass a comma-separated list of domains (best \u2014 each resolves
|
|
52203
|
+
description: "Follow MANY brands at once \u2014 the fast way to add every competitor to your library. Pass a comma-separated list of domains (best \u2014 each resolves every platform we can find, every country). One brand failing never blocks the others: the response reports per-brand status (following/added/ambiguous/failed) plus rollup counts. Ideal right after a competitor scan.",
|
|
52204
52204
|
args: {
|
|
52205
52205
|
domains: {
|
|
52206
52206
|
type: "string",
|
|
@@ -52209,7 +52209,7 @@ registerSchema({
|
|
|
52209
52209
|
},
|
|
52210
52210
|
platform: {
|
|
52211
52211
|
type: "string",
|
|
52212
|
-
description: "meta|linkedin \u2014 how to read each input, not a tracking limit (default meta). Domains resolve
|
|
52212
|
+
description: "meta|linkedin|tiktok \u2014 how to read each input, not a tracking limit (default meta). Domains resolve every platform we can find.",
|
|
52213
52213
|
required: false,
|
|
52214
52214
|
default: "meta"
|
|
52215
52215
|
}
|
|
@@ -52228,7 +52228,7 @@ var followCompetitorsCommand = defineCommand220({
|
|
|
52228
52228
|
},
|
|
52229
52229
|
platform: {
|
|
52230
52230
|
type: "string",
|
|
52231
|
-
description: "meta|linkedin \u2014 how to read each input, not a tracking limit (default meta).",
|
|
52231
|
+
description: "meta|linkedin|tiktok \u2014 how to read each input, not a tracking limit (default meta).",
|
|
52232
52232
|
required: false,
|
|
52233
52233
|
default: "meta"
|
|
52234
52234
|
}
|
|
@@ -52239,7 +52239,7 @@ var followCompetitorsCommand = defineCommand220({
|
|
|
52239
52239
|
if (!PLATFORMS2.includes(platform)) {
|
|
52240
52240
|
writeJson({
|
|
52241
52241
|
ok: false,
|
|
52242
|
-
error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin" }
|
|
52242
|
+
error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin, tiktok" }
|
|
52243
52243
|
});
|
|
52244
52244
|
process.exit(1);
|
|
52245
52245
|
}
|
|
@@ -52496,7 +52496,7 @@ registerSchema({
|
|
|
52496
52496
|
"min-relevance": { type: "number", description: "Relevance floor 0-1; trims weak matches", required: false },
|
|
52497
52497
|
platform: {
|
|
52498
52498
|
type: "string",
|
|
52499
|
-
description: "Comma list: meta,linkedin",
|
|
52499
|
+
description: "Comma list: meta,linkedin,tiktok",
|
|
52500
52500
|
required: false
|
|
52501
52501
|
},
|
|
52502
52502
|
format: { type: "string", description: "Comma list: video,static,carousel", required: false },
|
|
@@ -52605,7 +52605,7 @@ var searchCommand5 = defineCommand223({
|
|
|
52605
52605
|
"min-relevance": { type: "string", description: "Relevance floor 0-1", required: false },
|
|
52606
52606
|
platform: {
|
|
52607
52607
|
type: "string",
|
|
52608
|
-
description: "Comma list of platforms (meta,linkedin) \u2014 search one or
|
|
52608
|
+
description: "Comma list of platforms (meta,linkedin,tiktok) \u2014 search one or several",
|
|
52609
52609
|
required: false
|
|
52610
52610
|
},
|
|
52611
52611
|
format: { type: "string", description: "Comma list of formats (video,static,carousel)", required: false },
|
|
@@ -52720,7 +52720,7 @@ function makeSeedCommand(opts) {
|
|
|
52720
52720
|
command: `winning-ads.${opts.name}`,
|
|
52721
52721
|
description: opts.description,
|
|
52722
52722
|
args: {
|
|
52723
|
-
platform: { type: "string", description: "Single platform (meta,linkedin)", required: false },
|
|
52723
|
+
platform: { type: "string", description: "Single platform (meta,linkedin,tiktok)", required: false },
|
|
52724
52724
|
awareness: { type: "string", description: "Single awareness stage", required: false },
|
|
52725
52725
|
industry: { type: "string", description: "Single industry seed", required: false },
|
|
52726
52726
|
limit: { type: "number", description: "Max keys 1-100 (default 20)", required: false, default: 20 }
|
|
@@ -52811,7 +52811,7 @@ registerSchema({
|
|
|
52811
52811
|
args: {
|
|
52812
52812
|
advertiser: { type: "string", description: "Advertiser id to browse", required: true },
|
|
52813
52813
|
top: { type: "number", description: "Max winners 1-100 (default 10)", required: false, default: 10 },
|
|
52814
|
-
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false }
|
|
52814
|
+
platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false }
|
|
52815
52815
|
}
|
|
52816
52816
|
});
|
|
52817
52817
|
var winnersCommand = defineCommand226({
|
|
@@ -52822,7 +52822,7 @@ var winnersCommand = defineCommand226({
|
|
|
52822
52822
|
args: {
|
|
52823
52823
|
advertiser: { type: "positional", description: "Advertiser id", required: true },
|
|
52824
52824
|
top: { type: "string", description: "Max winners 1-100 (default 10)", required: false },
|
|
52825
|
-
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
|
|
52825
|
+
platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
|
|
52826
52826
|
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
52827
52827
|
fields: { type: "string", description: "Comma-separated field names to include", required: false },
|
|
52828
52828
|
full: {
|
|
@@ -52874,7 +52874,7 @@ Auth: BAKER_API_KEY (must start with bk_) + BAKER_API_URL (your Convex .convex.s
|
|
|
52874
52874
|
Subcommands:
|
|
52875
52875
|
baker winning-ads search "<free text>" \u2014 semantic search across the corpus; lean shortlist (advertiser, summary, scores, media_url)
|
|
52876
52876
|
baker winning-ads advertisers "<brand>" \u2014 list corpus brands \u2192 advertiser ids (for --exclude-advertiser / --advertiser-id)
|
|
52877
|
-
baker winning-ads follow "<domain|url|brand>" --platform meta|linkedin
|
|
52877
|
+
baker winning-ads follow "<domain|url|brand>" --platform meta|linkedin|tiktok \u2014 add a brand's ads to your library
|
|
52878
52878
|
baker winning-ads follow-competitors "<domain,domain,...>" \u2014 add MANY brands at once (every competitor by domain)
|
|
52879
52879
|
baker winning-ads following \u2014 list brands you follow (status + counts)
|
|
52880
52880
|
baker winning-ads feed \u2014 winners across EVERY brand you follow; trim with --advertiser
|