@wrangled/cli 0.3.158 → 0.3.160

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/guide.js CHANGED
@@ -120,7 +120,7 @@ To find content, such as "the 10 emails with the best click rate", "our 5 best v
120
120
 
121
121
  - \`--text "<words>"\` finds words in the current version's subject, headline and body, or in a video's or call recording's transcript. Words are stemmed ("guarantee" finds "guaranteed"); use "quotes" for a phrase and -word to leave a word out.
122
122
  - \`--mode meaning\` finds content that means something close to \`--text\`, even in other words: \`--text "saves time"\` also finds "done in five minutes". Results come nearest first, each with its distance (0 is the same meaning) and the closest passage as its words. It takes no \`--sort\` or \`--order\`, and finds only content embedded so far (each hour, new versions and transcripts are embedded).
123
- - \`--kind\` (ad, email, sms, landing_page, video, social_post, article, conversation, document, collection_item), \`--platform\` (meta, ghl, klaviyo, roezan, bayengage, activecampaign, mailchimp, hubspot, kit, instantly, kajabi, omnisend, google_ads, tiktok, microsoft_ads, pinterest, linkedin, web, wordpress, webflow, strapi, youtube, instagram, facebook_page, callrail, zoom, fathom, fireflies, gong, granola, tldv, google_drive, ad_library, workspace, upload) and \`--origin\` (discovered or made) narrow it, and \`--collection <slug>\` keeps one collection's items, each with its details. \`--from\` and \`--to\` keep content live on those days: from its first day with numbers (or the day the library first saw it) to its last.
123
+ - \`--kind\` (ad, email, sms, landing_page, video, social_post, article, conversation, document, collection_item), \`--platform\` (meta, ghl, klaviyo, roezan, bayengage, activecampaign, mailchimp, hubspot, kit, instantly, kajabi, omnisend, mailgun, google_ads, tiktok, microsoft_ads, pinterest, linkedin, web, wordpress, webflow, strapi, youtube, instagram, facebook_page, callrail, zoom, fathom, fireflies, gong, granola, tldv, google_drive, ad_library, workspace, upload) and \`--origin\` (discovered or made) narrow it, and \`--collection <slug>\` keeps one collection's items, each with its details. \`--from\` and \`--to\` keep content live on those days: from its first day with numbers (or the day the library first saw it) to its last.
124
124
  - \`--sort\` is \`recent\` (the default, newest first) or any number in the \`content_scorecard\` view, such as \`click_rate\`, \`open_rate\`, \`roas\`, \`spend\` or their \`_30d\` twins for the last 30 days. Content with money in several currencies has a number per currency and sorts by its best. Content without that number comes last. \`--order asc\` turns it around; \`--limit\` is 1 to 50 (default 10).
125
125
  - Each result has the item's id or SKU, its words, how many files it has, whether it has a transcript, and its scorecard numbers. \`${cli} content show <sku | item-id>\` prints one item in full: its words, how many versions it has, its transcript and every number; \`--format json\` adds every version, and links to its files.
126
126
  - To add marketing that lives somewhere no source connects to, such as a sales video, a webinar recording, a script or an email from another tool, run \`${cli} content capture --kind <kind> --name <name>\` with \`--body\`, \`--file\`, \`--source\` (where it came from) and \`--url\`. It is kept as found, with no SKU, so it is never approved or published; \`--platform upload\` finds these. Videos and audio are transcribed on their own; give \`--transcript @file\` when you already have one, so none is paid for.
package/dist/main.js CHANGED
@@ -1681,10 +1681,10 @@ const commands = {
1681
1681
  },
1682
1682
  },
1683
1683
  winners: {
1684
- usage: "winners [--week <YYYY-MM-DD> | --days <n> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>] [--top <n>] [--ad-format image|video|carousel] [--offer <offer key>] (which Facebook ads and landing pages won and flopped, judged on each client's goal; see winners goals)",
1684
+ usage: "winners [--week <YYYY-MM-DD> | --days <n> | --from <YYYY-MM-DD> --to <YYYY-MM-DD>] [--top <n>] [--ad-format image|video|carousel] [--offer <offer key or name>] (which Facebook ads and landing pages won and flopped, judged on each client's goal; see winners goals)",
1685
1685
  async run(args, options) {
1686
1686
  if (args.length > 0)
1687
- throw new CliError("Usage: winners [--week <date> | --days <n> | --from <date> --to <date>] [--top <n>] [--ad-format image|video|carousel] [--offer <offer key>]", exitCodes.usage);
1687
+ throw new CliError("Usage: winners [--week <date> | --days <n> | --from <date> --to <date>] [--top <n>] [--ad-format image|video|carousel] [--offer <offer key or name>]", exitCodes.usage);
1688
1688
  const query = new URLSearchParams();
1689
1689
  for (const [name, value] of Object.entries({ ...winnersPeriod(options), top: options.top, format: options.entryTags.format, offer: options.offer }))
1690
1690
  if (value !== undefined)
@@ -4568,6 +4568,7 @@ function salesRows(label, sales, calls) {
4568
4568
  const messageLabel = (m) => excerpt(m.name ?? m.subject ?? (m.realSales === "available" ? m.messageKey : (m.itemId ?? "")), 40);
4569
4569
  const messageSubject = (m) => (m.subject === null ? "" : excerpt(m.subject, 40));
4570
4570
  const MESSAGE_WORDS_CHARS = 400;
4571
+ const MAILGUN_NO_WORDS = "No words on file: Mailgun's events carry the subject line but not the email's words, and Mailgun's stored copy is not read. Read them in the tool that sent it (GoHighLevel, for an et_ tag).";
4571
4572
  /** Each message's subject and words, cut short, under its label and item id, in the tables' order. */
4572
4573
  function printMessageWords(messages) {
4573
4574
  if (messages.length === 0)
@@ -4575,8 +4576,9 @@ function printMessageWords(messages) {
4575
4576
  console.log("\nWords of each message, in the order above:");
4576
4577
  for (const m of messages) {
4577
4578
  const lines = [...(m.subject === null ? [] : [`Subject: ${m.subject}`]), ...(m.bodyText === null ? [] : excerpt(m.bodyText, MESSAGE_WORDS_CHARS, { flat: false }).split("\n"))];
4579
+ const missing = m.bodyText !== null ? [] : m.platform === "mailgun" ? [MAILGUN_NO_WORDS] : lines.length === 0 ? ["No words on file."] : [];
4578
4580
  console.log(`\n${messageLabel(m)}${m.itemId === null ? "" : `, item ${m.itemId}`}`);
4579
- console.log((lines.length === 0 ? ["No words on file."] : lines).map((line) => ` ${line}`.trimEnd()).join("\n"));
4581
+ console.log([...lines, ...missing].map((line) => ` ${line}`.trimEnd()).join("\n"));
4580
4582
  }
4581
4583
  console.log("\n--format json gives every message's full words.");
4582
4584
  }
@@ -5232,8 +5234,9 @@ Options:
5232
5234
  your own ads tagged the same way with their results; with knowledge tag, the tags to put on an entry;
5233
5235
  with winners, --ad-format ranks only ads whose format tag is that one (run ads tag-formats first);
5234
5236
  with meta ad create, the new ad's angle, hook kind and format, which its name is written from
5235
- --offer <key> with winners, rank ads on first-touch sales of this offer in the funnel map only (landing pages
5236
- still count every sale); with profile messaging, that offer's outcome map, segments and personas
5237
+ --offer <key> with winners, rank ads on first-touch sales of this offer in the funnel map only, by its key or
5238
+ name (landing pages still count every sale); with profile messaging, that offer's outcome map,
5239
+ segments and personas
5237
5240
  --concept <key> meta ad create: the new ad's concept, a key on the client's concept list
5238
5241
  --style <style> meta ad create: the new ad's style, if it has one
5239
5242
  --confidence high|medium|low with knowledge tag, how sure you are of the tags
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrangled/cli",
3
- "version": "0.3.158",
3
+ "version": "0.3.160",
4
4
  "description": "Command-line access to your marketing data warehouse, for people and coding agents",
5
5
  "type": "module",
6
6
  "bin": {