@letterstory/cli 0.76.0 → 0.76.1
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 +8 -0
- package/lib/cli.mjs +2 -1
- package/lib/commands/insights.mjs +9 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -749,6 +749,14 @@ AI visibility and page access — the Measure tabs' reads, for scripts and agent
|
|
|
749
749
|
# search, actions, targets — `ai` is the slow one on a large org.
|
|
750
750
|
letterstory insights summary [--period 14d|30d|90d] [--part <block>]...
|
|
751
751
|
|
|
752
|
+
# GEO → Competitors: every tracked brand's share of mentions (one per brand per
|
|
753
|
+
# answer) on the window, whether each is moving (the same question on the same
|
|
754
|
+
# engine in both windows — the only up/down read), the question × engine cells
|
|
755
|
+
# behind it, the line per engine, each question's top rival, and every dated
|
|
756
|
+
# change under the number. --period sets the windows: 14d → last 2 complete
|
|
757
|
+
# weeks vs the 2 before, 30d → 4 vs 4, 90d → 13 vs 13.
|
|
758
|
+
letterstory insights competitors [--period 14d|30d|90d]
|
|
759
|
+
|
|
752
760
|
# The AI Visibility Bank: which questions named you, cited your pages, or both (a
|
|
753
761
|
# breakthrough). All time unless --period; --source picks the phantom network
|
|
754
762
|
# (default), your marketing site, or the whole portfolio; --phantom narrows to
|
package/lib/cli.mjs
CHANGED
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
} from "./commands.mjs";
|
|
57
57
|
|
|
58
58
|
// Keep in sync with cli/package.json.
|
|
59
|
-
export const VERSION = "0.76.
|
|
59
|
+
export const VERSION = "0.76.1";
|
|
60
60
|
|
|
61
61
|
// Flags that never take a value. Listing them explicitly means `deploy get --json <id>`
|
|
62
62
|
// can't accidentally swallow the id as --json's value.
|
|
@@ -922,6 +922,7 @@ Mail:
|
|
|
922
922
|
|
|
923
923
|
Insights:
|
|
924
924
|
insights summary [--period …] [--part <block>]... Measure Overview: AI named/cited rates, share of voice, search, targets
|
|
925
|
+
insights competitors [--period 14d|30d|90d] GEO → Competitors: share of mentions per brand, is it moving, by engine/question
|
|
925
926
|
insights site [--period 14d|30d|90d] [--collection <uuid>]
|
|
926
927
|
insights post <article-id> [--period 14d|30d|90d]
|
|
927
928
|
insights top [--period 14d|30d|90d] [--collection <uuid>] [--limit <n>] [--sort clicks|impressions]
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// `insights` — Search Console impressions/clicks across the phantom network, at the
|
|
2
2
|
// network, single-post, and top-posts levels (ported from phantomstory-cli's
|
|
3
|
-
// insights.ts); plus Measure's Overview (`summary`),
|
|
4
|
-
// and phantom Page Access (`access`)
|
|
3
|
+
// insights.ts); plus Measure's Overview (`summary`), GEO → Competitors
|
|
4
|
+
// (`competitors`), AI Visibility Bank (`bank`) and phantom Page Access (`access`)
|
|
5
|
+
// — the same reads the web app's Measure tabs render.
|
|
5
6
|
|
|
6
7
|
import { CliError } from "../client.mjs";
|
|
7
8
|
import { flagStr, flagNum, requirePositional, printResult, compact, argsFromFlags } from "./shared.mjs";
|
|
@@ -23,6 +24,9 @@ export const ARGS = {
|
|
|
23
24
|
period: { flag: "period", enum: PERIODS },
|
|
24
25
|
parts: { flag: "part", type: "list" },
|
|
25
26
|
},
|
|
27
|
+
get_share_of_voice_detail: {
|
|
28
|
+
period: { flag: "period", enum: PERIODS },
|
|
29
|
+
},
|
|
26
30
|
};
|
|
27
31
|
|
|
28
32
|
export async function cmdInsights(ctx) {
|
|
@@ -41,9 +45,11 @@ export async function cmdInsights(ctx) {
|
|
|
41
45
|
return call(rest, "get_page_access");
|
|
42
46
|
case "summary":
|
|
43
47
|
return call(rest, "get_measure_summary");
|
|
48
|
+
case "competitors":
|
|
49
|
+
return call(rest, "get_share_of_voice_detail");
|
|
44
50
|
default:
|
|
45
51
|
throw new CliError(
|
|
46
|
-
`Unknown insights subcommand: ${sub ?? "(none)"}. Try: summary, site, post, top, bank, access`
|
|
52
|
+
`Unknown insights subcommand: ${sub ?? "(none)"}. Try: summary, competitors, site, post, top, bank, access`
|
|
47
53
|
);
|
|
48
54
|
}
|
|
49
55
|
}
|