superx-cli 0.5.2 → 0.7.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/CHANGELOG.md +21 -0
- package/README.md +9 -5
- package/dist/index.js +283 -16
- package/package.json +5 -5
- package/skills/superx/SKILL.md +449 -0
- package/{SKILL.md → skills/superx/references/commands.md} +50 -429
- package/{PLAYBOOK.md → skills/superx/references/growth-strategy.md} +3 -3
- package/skills/superx/references/skills/README.md +31 -0
- package/skills/superx/references/skills/audience-export/card.json +20 -0
- package/skills/superx/references/skills/audience-export/recipe.md +13 -0
- package/skills/superx/references/skills/cadence-and-queue-audit/card.json +22 -0
- package/skills/superx/references/skills/cadence-and-queue-audit/recipe.md +17 -0
- package/skills/superx/references/skills/categories.json +41 -0
- package/skills/superx/references/skills/daily-post-ideas/card.json +22 -0
- package/skills/superx/references/skills/daily-post-ideas/recipe.md +17 -0
- package/skills/superx/references/skills/dm-ready-audience-builder/card.json +21 -0
- package/skills/superx/references/skills/dm-ready-audience-builder/recipe.md +16 -0
- package/skills/superx/references/skills/find-your-story/card.json +23 -0
- package/skills/superx/references/skills/find-your-story/recipe.md +17 -0
- package/skills/superx/references/skills/growth-plan-builder/card.json +21 -0
- package/skills/superx/references/skills/growth-plan-builder/recipe.md +17 -0
- package/skills/superx/references/skills/instant-lead-hunt/card.json +21 -0
- package/skills/superx/references/skills/instant-lead-hunt/recipe.md +14 -0
- package/skills/superx/references/skills/lead-review/card.json +20 -0
- package/skills/superx/references/skills/lead-review/recipe.md +16 -0
- package/skills/superx/references/skills/my-content-export/card.json +21 -0
- package/skills/superx/references/skills/my-content-export/recipe.md +15 -0
- package/skills/superx/references/skills/my-replies-report/card.json +20 -0
- package/skills/superx/references/skills/my-replies-report/recipe.md +13 -0
- package/skills/superx/references/skills/post-post-mortem/card.json +20 -0
- package/skills/superx/references/skills/post-post-mortem/recipe.md +16 -0
- package/skills/superx/references/skills/profile-research-briefs/card.json +21 -0
- package/skills/superx/references/skills/profile-research-briefs/recipe.md +15 -0
- package/skills/superx/references/skills/queue-reshuffle/card.json +21 -0
- package/skills/superx/references/skills/queue-reshuffle/recipe.md +15 -0
- package/skills/superx/references/skills/reply-sprint/card.json +20 -0
- package/skills/superx/references/skills/reply-sprint/recipe.md +12 -0
- package/skills/superx/references/skills/reply-to-any-post/card.json +20 -0
- package/skills/superx/references/skills/reply-to-any-post/recipe.md +15 -0
- package/skills/superx/references/skills/reply-to-dm-campaign/card.json +21 -0
- package/skills/superx/references/skills/reply-to-dm-campaign/recipe.md +18 -0
- package/skills/superx/references/skills/repurpose-a-winner/card.json +21 -0
- package/skills/superx/references/skills/repurpose-a-winner/recipe.md +16 -0
- package/skills/superx/references/skills/sentiment-slice/card.json +20 -0
- package/skills/superx/references/skills/sentiment-slice/recipe.md +15 -0
- package/skills/superx/references/skills/standing-lead-agent/card.json +21 -0
- package/skills/superx/references/skills/standing-lead-agent/recipe.md +17 -0
- package/skills/superx/references/skills/teach-superx-your-rules/card.json +21 -0
- package/skills/superx/references/skills/teach-superx-your-rules/recipe.md +15 -0
- package/skills/superx/references/skills/thread-builder/card.json +20 -0
- package/skills/superx/references/skills/thread-builder/recipe.md +14 -0
- package/skills/superx/references/skills/top-performers-breakdown/card.json +21 -0
- package/skills/superx/references/skills/top-performers-breakdown/recipe.md +13 -0
- package/skills/superx/references/skills/trending-now-scan/card.json +21 -0
- package/skills/superx/references/skills/trending-now-scan/recipe.md +14 -0
- package/skills/superx/references/skills/viral-format-remix/card.json +20 -0
- package/skills/superx/references/skills/viral-format-remix/recipe.md +15 -0
- package/skills/superx/references/skills/viral-score-iterate/card.json +22 -0
- package/skills/superx/references/skills/viral-score-iterate/recipe.md +15 -0
- package/skills/superx/references/skills/warm-outreach-pipeline/card.json +21 -0
- package/skills/superx/references/skills/warm-outreach-pipeline/recipe.md +19 -0
- package/skills/superx/references/skills/week-of-posts/card.json +19 -0
- package/skills/superx/references/skills/week-of-posts/recipe.md +18 -0
- package/skills/superx/references/skills/weekly-growth-recap/card.json +22 -0
- package/skills/superx/references/skills/weekly-growth-recap/recipe.md +17 -0
- package/skills/superx/references/skills/who-is-this-person/card.json +20 -0
- package/skills/superx/references/skills/who-is-this-person/recipe.md +16 -0
- package/skills/superx/references/skills/worker-output-review/card.json +20 -0
- package/skills/superx/references/skills/worker-output-review/recipe.md +18 -0
- package/skills/superx/references/skills/worth-a-reply/card.json +22 -0
- package/skills/superx/references/skills/worth-a-reply/recipe.md +16 -0
- package/skills/superx/references/skills/your-warmest-leads/card.json +21 -0
- package/skills/superx/references/skills/your-warmest-leads/recipe.md +14 -0
- package/PLAYBOOKS.md +0 -542
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Your Warmest Leads",
|
|
3
|
+
"category": "leads-prospecting",
|
|
4
|
+
"order": 10,
|
|
5
|
+
"subtitle": "The people already engaging with you most, ready for a follow-up.",
|
|
6
|
+
"summary": "Ranks the people who replied to and reposted your posts over the last 90 days, up to 50 of them, so you can see who your real audience is and who is worth following up with first. Reads your own account data, nothing to fill in.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Who engages with me the most?",
|
|
9
|
+
"Show me my warmest leads",
|
|
10
|
+
"Who should I follow up with?"
|
|
11
|
+
],
|
|
12
|
+
"provide": "nothing (uses the active account).",
|
|
13
|
+
"get": "up to 50 top engagers ranked by replies and reposts, who they are, and who to follow up with first.",
|
|
14
|
+
"chips": [
|
|
15
|
+
"No extra cost",
|
|
16
|
+
"Last 90 days, up to 50 people"
|
|
17
|
+
],
|
|
18
|
+
"launchPrompt": "Show me my warmest leads: the people who engaged with me most in the last 90 days, who they are, and which ones are worth a follow-up.",
|
|
19
|
+
"sampleKind": "leads",
|
|
20
|
+
"starter": true
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Your Warmest Leads
|
|
2
|
+
|
|
3
|
+
The people already engaging most, ranked, with who to follow up with first.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx contacts:list --sort engagement --limit 50
|
|
7
|
+
superx contacts:replies <contact-id> --sort recent --limit 5
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Covers a rolling 90 days.
|
|
11
|
+
|
|
12
|
+
MCP: `get_top_contacts` -> `get_contact_history`
|
|
13
|
+
|
|
14
|
+
Stops at: the ranked list plus a suggested order. Reads only, no AI credits.
|
package/PLAYBOOKS.md
DELETED
|
@@ -1,542 +0,0 @@
|
|
|
1
|
-
# SuperX Playbooks
|
|
2
|
-
|
|
3
|
-
Twenty-nine goal-shaped recipes, one per SuperX skill. Each is the same job the
|
|
4
|
-
in-app skill of that name does, run from the CLI or from the hosted MCP server.
|
|
5
|
-
Pick by goal, run the chain in order, hand the result to the person.
|
|
6
|
-
|
|
7
|
-
Three rules hold in every playbook, no exceptions:
|
|
8
|
-
|
|
9
|
-
1. **Drafts unless the person says otherwise.** `scheduled:create` without `--at` is a draft and nothing publishes.
|
|
10
|
-
2. **Nothing here sends a reply or a DM.** Reply drafts are text a person posts. `dm:campaign` enqueues; the SuperX app sends.
|
|
11
|
-
3. **`posts:publish` and `articles:publish` are immediate and irreversible.** Confirm the exact text with the person first, and note that `posts:publish` REQUIRES `--idempotency-key` so a retry cannot post twice.
|
|
12
|
-
|
|
13
|
-
`--account <account-id>` acts on a linked account (`superx accounts` lists the
|
|
14
|
-
ids). It is shown once, in the first playbook, and applies the same way to the
|
|
15
|
-
**account-scoped** commands: the posts, scheduled, replies, contacts, lists,
|
|
16
|
-
engage, signals, dm, context, queue and articles families, plus the dataset
|
|
17
|
-
commands that WRITE for an account (`datasets:collect`, `datasets:refine`,
|
|
18
|
-
`datasets:research`, `datasets:outreach-drafts`, `datasets:add-to-list`).
|
|
19
|
-
|
|
20
|
-
Some commands are **owner-scoped** and the CLI is strict, so passing `--account`
|
|
21
|
-
to one is an error, not a no-op. Nothing about them is per-X-account: the live
|
|
22
|
-
lookups `x:post`, `x:replies`, `x:user` and `x:user-posts`, the inspiration
|
|
23
|
-
searches `inspiration:search` and `inspiration:media`, and the dataset reads
|
|
24
|
-
`datasets:list`, `datasets:get`, `datasets:rows` and `datasets:export`. A few
|
|
25
|
-
id-addressed subcommands inside the account families are owner-scoped for the
|
|
26
|
-
same reason (the id already names the account), among them `articles:publish`,
|
|
27
|
-
`scheduled:delete` and `lists:remove-member`. When a chain here does not show
|
|
28
|
-
`--account`, that is deliberate; `superx <command> --help` is the check.
|
|
29
|
-
|
|
30
|
-
Accounts other people shared with you are read-only. Ids in angle brackets are
|
|
31
|
-
placeholders you fill from the previous step's JSON.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Recaps and analytics
|
|
36
|
-
|
|
37
|
-
### Weekly Growth Recap
|
|
38
|
-
|
|
39
|
-
Your week in review: follower change, the posts that worked, new leads, one pattern to repeat and one focus for next week.
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
SINCE=$(date -u -v-7d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "7 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
43
|
-
superx posts:analytics --since "$SINCE" --account <account-id>
|
|
44
|
-
superx posts:list --sort likes --since "$SINCE" --limit 10
|
|
45
|
-
superx signals:leads --since "$SINCE" --limit 20
|
|
46
|
-
superx replies:received --sort recent --limit 20
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
There is no recap command: write the recap yourself from those four responses.
|
|
50
|
-
|
|
51
|
-
MCP: `get_account_overview` -> `get_post_analytics` -> `get_signal_leads` -> `get_audience_replies`
|
|
52
|
-
|
|
53
|
-
Stops at: the recap text in chat. Reads only, no AI credits.
|
|
54
|
-
|
|
55
|
-
### Growth Plan Builder
|
|
56
|
-
|
|
57
|
-
A multi-week plan tied to the account's real numbers: cadence, a reply target, and the format to repeat.
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
SINCE=$(date -u -v-90d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "90 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
61
|
-
superx posts:analytics --since "$SINCE"
|
|
62
|
-
superx posts:list --type posts --sort likes --since "$SINCE" --limit 25
|
|
63
|
-
superx replies:list --limit 25
|
|
64
|
-
superx queue:get
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Read PLAYBOOK.md before writing the plan: the numbers say what happened, the strategy guide says what to do about it.
|
|
68
|
-
|
|
69
|
-
MCP: `get_account_overview` -> `get_post_analytics` -> `get_my_replies` -> `get_queue_settings`
|
|
70
|
-
|
|
71
|
-
Stops at: the written plan. Reads only, no AI credits. Nothing is scheduled by this playbook.
|
|
72
|
-
|
|
73
|
-
### Post Post-Mortem
|
|
74
|
-
|
|
75
|
-
Why one post overperformed or flopped, measured against the account's own baseline.
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
SINCE=$(date -u -v-30d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "30 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
79
|
-
superx posts:list --sort posted_at --since "$SINCE" --limit 25
|
|
80
|
-
superx posts:analytics --since "$SINCE"
|
|
81
|
-
superx x:user-posts <peer-handle> --no-reposts --limit 20
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
The third call is optional: use it only when the person names a peer account to compare against.
|
|
85
|
-
|
|
86
|
-
MCP: `get_post_analytics` -> `get_account_overview` -> `get_x_user_posts`
|
|
87
|
-
|
|
88
|
-
Stops at: the explanation in chat. Reads only. The live lookup draws on the shared 300-a-day allowance for `x:*`.
|
|
89
|
-
|
|
90
|
-
### Top Performers Breakdown
|
|
91
|
-
|
|
92
|
-
The ranked winners, the shape they share, and what to write more of.
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
SINCE=$(date -u -v-30d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "30 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
96
|
-
superx posts:list --type posts --sort likes --since "$SINCE" --limit 25
|
|
97
|
-
superx posts:analytics --since "$SINCE"
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
MCP: `get_post_analytics` -> `get_account_overview`
|
|
101
|
-
|
|
102
|
-
Stops at: the pattern read in chat. Reads only, no AI credits.
|
|
103
|
-
|
|
104
|
-
### My Replies Report
|
|
105
|
-
|
|
106
|
-
Which of the account's replies actually earned attention, and the pattern behind them.
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
superx replies:list --limit 25
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Page-one rows can carry `metrics_pending`: replies sent from the app in the last 4 hours have no numbers yet, so leave them out of the ranking.
|
|
113
|
-
|
|
114
|
-
MCP: `get_my_replies`
|
|
115
|
-
|
|
116
|
-
Stops at: the ranked list plus a pattern read. Reads only, no AI credits.
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## Content
|
|
121
|
-
|
|
122
|
-
### Daily Post Ideas
|
|
123
|
-
|
|
124
|
-
Two or three drafts for today, written in the account's voice and ready to schedule.
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
SINCE=$(date -u -v-60d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "60 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
128
|
-
superx scheduled:list --status draft,scheduled --limit 100
|
|
129
|
-
superx posts:list --type posts --sort likes --since "$SINCE" --limit 10
|
|
130
|
-
superx posts:draft --brief "<the angle, data or notes to write from>" --count 3
|
|
131
|
-
superx scheduled:create --text "<the draft the person picked>" --idempotency-key "ideas-<date>-1"
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
`posts:draft` saves nothing. Show the drafts, let the person pick and edit, then pass the final wording to `scheduled:create`.
|
|
135
|
-
|
|
136
|
-
MCP: `get_scheduled_posts` -> `get_post_analytics` -> `draft_post` -> `schedule_post`
|
|
137
|
-
|
|
138
|
-
Stops at: a draft in the SuperX app for the person to review. Costs 3 AI credits per draft written, so ask how many they want.
|
|
139
|
-
|
|
140
|
-
### Week of Posts
|
|
141
|
-
|
|
142
|
-
A week of varied drafts, spread across the week, one approval per post.
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
SINCE=$(date -u -v-60d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "60 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
146
|
-
superx posts:list --type posts --sort likes --since "$SINCE" --limit 10
|
|
147
|
-
superx queue:get
|
|
148
|
-
superx posts:draft --brief "<theme for the week>" --count 3
|
|
149
|
-
superx scheduled:create --text "<approved text>" --at "<UTC ISO-8601 with Z>" --idempotency-key "week-<n>-1"
|
|
150
|
-
superx scheduled:list --status scheduled --limit 100
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
Read the queue first so the new times land on the account's real slots instead of on top of what is already there. Reuse the same `--idempotency-key` on a retry.
|
|
154
|
-
|
|
155
|
-
MCP: `get_post_analytics` -> `get_queue_settings` -> `draft_post` -> `schedule_post` -> `get_scheduled_posts`
|
|
156
|
-
|
|
157
|
-
Stops at: a queued week the person can still edit. 3 AI credits per draft written.
|
|
158
|
-
|
|
159
|
-
### Thread Builder
|
|
160
|
-
|
|
161
|
-
An idea or rough notes turned into a thread of up to 25 parts, ready to schedule.
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
superx posts:draft --brief "<the idea or notes, plus the target length>" --count 1
|
|
165
|
-
superx scheduled:create --part "<1/ hook>" --part "<2/ detail>" --part "<3/ close>" --idempotency-key "thread-<slug>-1"
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Max 25 parts and 25,000 characters in total. Repeat `--part` in posting order.
|
|
169
|
-
|
|
170
|
-
MCP: `draft_post` -> `schedule_post`
|
|
171
|
-
|
|
172
|
-
Stops at: a thread draft in the app. 3 AI credits per draft written.
|
|
173
|
-
|
|
174
|
-
### Repurpose a Winner
|
|
175
|
-
|
|
176
|
-
The account's best post, reworked into fresh angles.
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
SINCE=$(date -u -v-90d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "90 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
180
|
-
superx posts:list --type posts --sort likes --since "$SINCE" --limit 5
|
|
181
|
-
superx posts:remix --text "<the winning post's text>" --closeness 70
|
|
182
|
-
superx scheduled:create --text "<the remix the person picked>" --idempotency-key "repurpose-<slug>-1"
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
Standalone posts only. `--closeness 0` keeps just the idea, `100` stays very close to the original wording.
|
|
186
|
-
|
|
187
|
-
MCP: `get_post_analytics` -> `remix_post` -> `schedule_post`
|
|
188
|
-
|
|
189
|
-
Stops at: remixed text the person approves before anything is saved. A remix typically costs 2 AI credits (measured).
|
|
190
|
-
|
|
191
|
-
### Viral Format Remix
|
|
192
|
-
|
|
193
|
-
Proven hooks and structures from a library of 50M+ high-performing posts, rewritten in the account's voice.
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
superx inspiration:search "<topic>" --sort outlier --min-likes 500 --limit 10
|
|
197
|
-
superx posts:draft --brief "<what this account would say on that topic>" --mirror "<the reference post's text>" --count 2
|
|
198
|
-
superx scheduled:create --text "<approved text>" --idempotency-key "remix-<slug>-1"
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
`--mirror` copies the SHAPE of a proven post, not its words. Pick a reference with room for the account's own facts.
|
|
202
|
-
|
|
203
|
-
MCP: `find_inspiration` -> `draft_post` -> `schedule_post`
|
|
204
|
-
|
|
205
|
-
Stops at: reference posts plus drafts, for the person to pick from. 3 AI credits per draft written.
|
|
206
|
-
|
|
207
|
-
### Trending Now Scan
|
|
208
|
-
|
|
209
|
-
High-performing posts in the account's niche from the last 48 hours, with angles to take.
|
|
210
|
-
|
|
211
|
-
```bash
|
|
212
|
-
SINCE=$(date -u -v-48H +"%Y-%m-%dT%H:00:00Z" 2>/dev/null || date -u -d "48 hours ago" +"%Y-%m-%dT%H:00:00Z")
|
|
213
|
-
superx inspiration:search "<topic phrase>" --since "$SINCE" --sort likes --limit 10
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
Run it once per topic phrase rather than sweeping the whole niche.
|
|
217
|
-
|
|
218
|
-
MCP: `find_inspiration`
|
|
219
|
-
|
|
220
|
-
Stops at: the posts and the suggested angles in chat. Reads only, no AI credits.
|
|
221
|
-
|
|
222
|
-
### Worker Output Review
|
|
223
|
-
|
|
224
|
-
The posts a Worker wrote while the person was away, triaged: save the good ones, queue one, clear the rest.
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
superx workers:list
|
|
228
|
-
superx workers:suggestions --status to_review --limit 20
|
|
229
|
-
superx workers:draft <suggestion-id>
|
|
230
|
-
superx workers:schedule <suggestion-id> --at "<UTC ISO-8601 with Z>"
|
|
231
|
-
superx workers:dismiss <suggestion-id>
|
|
232
|
-
superx scheduled:list --status draft --limit 10
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
Workers are created, edited and RUN in the SuperX app: this chain only reads what they produced and acts on it. The text is saved exactly as the Worker wrote it, so show each suggestion to the person and let them pick before you save or queue anything. To change the wording, run it through `posts:remix` and save your version with `scheduled:create`, then dismiss the original. A suggestion can only be saved once, so a second draft or schedule call on the same id is a 400.
|
|
236
|
-
|
|
237
|
-
MCP: `list_workers` -> `list_worker_suggestions` -> `draft_worker_suggestion` / `schedule_worker_suggestion` / `dismiss_worker_suggestion` -> `get_scheduled_posts`
|
|
238
|
-
|
|
239
|
-
Stops at: the saved drafts and the queued post, for the person to edit. Reads and the three actions cost no AI credits.
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## Queue
|
|
244
|
-
|
|
245
|
-
### Cadence & Queue Audit
|
|
246
|
-
|
|
247
|
-
Gaps and pile-ups in the queue, a cadence verdict, and the reschedules to make.
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
superx queue:get
|
|
251
|
-
superx scheduled:list --status scheduled --limit 100
|
|
252
|
-
SINCE=$(date -u -v-30d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "30 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
253
|
-
superx posts:list --type posts --sort likes --since "$SINCE" --limit 25
|
|
254
|
-
superx scheduled:update <post-id> --at "<UTC ISO-8601 with Z>"
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
`--at` on its own never promotes a draft: add `--status scheduled` for that. The audit never deletes posts.
|
|
258
|
-
|
|
259
|
-
MCP: `get_queue_settings` -> `get_scheduled_posts` -> `get_post_analytics` -> `update_scheduled_post`
|
|
260
|
-
|
|
261
|
-
Stops at: the proposed moves, applied one at a time after the person agrees. Reads and one write, no AI credits.
|
|
262
|
-
|
|
263
|
-
### Queue Reshuffle
|
|
264
|
-
|
|
265
|
-
Move and rewrite scheduled posts by asking, up to 500 in one transaction.
|
|
266
|
-
|
|
267
|
-
```bash
|
|
268
|
-
superx scheduled:list --status scheduled --limit 100
|
|
269
|
-
superx scheduled:bulk-retime --moves-json '[{"id":"<post-id>","scheduled_for":"<UTC ISO-8601 with Z>"}]'
|
|
270
|
-
superx scheduled:update <post-id> --text "<new wording>"
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
`bulk-retime` only touches QUEUED posts and answers with counts, so compare against `scheduled:list` rather than assuming every id moved. `scheduled:update --text` without `--media` drops the post's images: re-list the current `object_key`s to keep them.
|
|
274
|
-
|
|
275
|
-
MCP: `get_scheduled_posts` -> `bulk_retime_scheduled_posts` -> `update_scheduled_post`
|
|
276
|
-
|
|
277
|
-
Stops at: the retimed queue, one confirmation per change. No AI credits.
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## Replies (these stop at a draft, by design)
|
|
282
|
-
|
|
283
|
-
### Reply Sprint
|
|
284
|
-
|
|
285
|
-
The replies the account's posts got, each with a ready-to-post draft.
|
|
286
|
-
|
|
287
|
-
```bash
|
|
288
|
-
superx replies:received --sort recent --limit 5
|
|
289
|
-
superx engage:reply-draft --text "<the reply's text>" --handle "<their handle, no @>" --thoughts "<what to convey>" --tone concise
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
MCP: `get_audience_replies` -> `draft_reply`
|
|
293
|
-
|
|
294
|
-
Stops at: reply TEXT. **The person posts the reply**: nothing in the CLI, the API or MCP posts a reply to X. Each draft typically costs 2 AI credits (measured).
|
|
295
|
-
|
|
296
|
-
### Reply to Any Post
|
|
297
|
-
|
|
298
|
-
Any post's context, what its top replies already said, and one strong reply draft.
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
superx x:post <post-url-or-id>
|
|
302
|
-
superx x:replies <post-url-or-id> --limit 20
|
|
303
|
-
superx engage:reply-draft --post <post-id> --thoughts "<what to convey>" --tone engaging
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
`x:replies` is a sample of the best-liked direct replies, not every reply, and it does not exclude the author's own.
|
|
307
|
-
|
|
308
|
-
MCP: `lookup_x_post` -> `get_x_post_replies` -> `draft_reply`
|
|
309
|
-
|
|
310
|
-
Stops at: reply TEXT. **The person posts the reply.** The lookups draw on the shared 300-a-day `x:*` allowance: `x:replies` spends 3 enrichment units and moves that daily counter once per page it fetches, up to 3. A reply draft named by `--post` spends one more lookup, plus typically 2 AI credits (measured).
|
|
311
|
-
|
|
312
|
-
---
|
|
313
|
-
|
|
314
|
-
## Leads
|
|
315
|
-
|
|
316
|
-
### Who Is This Person?
|
|
317
|
-
|
|
318
|
-
A fast read on a public account, plus the history the SuperX account already has with them.
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
superx x:user <handle>
|
|
322
|
-
superx x:user-posts <handle> --no-reposts --limit 20
|
|
323
|
-
superx contacts:get <x-user-id>
|
|
324
|
-
superx contacts:replies <x-user-id> --sort recent --limit 5
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
`contacts:get` covers known contacts only: engagers, contact-list members and scored leads. A 404 there means the person is not one of them yet, not that the lookup failed.
|
|
328
|
-
|
|
329
|
-
MCP: `lookup_x_user` -> `get_x_user_posts` -> `get_contact` -> `get_contact_history`
|
|
330
|
-
|
|
331
|
-
Stops at: the profile read in chat. Reads only, on the shared 300-a-day `x:*` allowance.
|
|
332
|
-
|
|
333
|
-
### Your Warmest Leads
|
|
334
|
-
|
|
335
|
-
The people already engaging most, ranked, with who to follow up with first.
|
|
336
|
-
|
|
337
|
-
```bash
|
|
338
|
-
superx contacts:list --sort engagement --limit 50
|
|
339
|
-
superx contacts:replies <contact-id> --sort recent --limit 5
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
Covers a rolling 90 days.
|
|
343
|
-
|
|
344
|
-
MCP: `get_top_contacts` -> `get_contact_history`
|
|
345
|
-
|
|
346
|
-
Stops at: the ranked list plus a suggested order. Reads only, no AI credits.
|
|
347
|
-
|
|
348
|
-
### Instant Lead Hunt
|
|
349
|
-
|
|
350
|
-
A live search of X right now for people matching the audience described, scored, saving nothing.
|
|
351
|
-
|
|
352
|
-
```bash
|
|
353
|
-
superx signals:suggest-keywords --icp "<who you want to reach>"
|
|
354
|
-
superx signals:search --keywords "<phrase>,<phrase>" --icp "<who you want to reach>" --max 30 --max-age-days 7
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
The search creates no agent and stores no leads, so keep what the person needs from that one response. `--max-age-days` is the recency window (1-90, default 30): 7 for a pain point worth catching while it is fresh.
|
|
358
|
-
|
|
359
|
-
MCP: `suggest_keywords` -> `search_leads`
|
|
360
|
-
|
|
361
|
-
Stops at: up to 30 scored leads in chat. Costs at least 1 AI credit plus one of the plan's daily lead searches, and draws on a fair-use ceiling shared by every SuperX account. Takes up to a minute.
|
|
362
|
-
|
|
363
|
-
### Standing Lead Agent
|
|
364
|
-
|
|
365
|
-
An agent that keeps finding leads while the person is away.
|
|
366
|
-
|
|
367
|
-
```bash
|
|
368
|
-
superx signals:expand-icp --text "<who you want to reach>"
|
|
369
|
-
superx signals:suggest-keywords --icp "<the sharpened description>"
|
|
370
|
-
superx signals:create-agent --name "<agent name>" --icp "<the sharpened description>" --keyword "<phrase>" --idempotency-key "agent-<slug>-1"
|
|
371
|
-
superx signals:agents
|
|
372
|
-
superx signals:leads --agent <agent-id> --deposited false --limit 25
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
Agent creation returns the agent, not leads: they arrive over the following minutes and days. Read `warnings` before telling the person what the agent watches, and omit `--list-id` only if you are happy with an auto-created `Leads: ...` contact list.
|
|
376
|
-
|
|
377
|
-
MCP: `expand_icp` -> `suggest_keywords` -> `create_signal_agent` -> `list_signal_agents` -> `get_signal_leads`
|
|
378
|
-
|
|
379
|
-
Stops at: the agent proposal, created only after the person approves it. The helpers are free; the agent itself costs nothing to set up. Editing or pausing later happens in Signals or with `signals:update-agent`.
|
|
380
|
-
|
|
381
|
-
### Lead Review
|
|
382
|
-
|
|
383
|
-
The leads the agents found, prioritized, with the top few activity-checked.
|
|
384
|
-
|
|
385
|
-
```bash
|
|
386
|
-
superx signals:agents
|
|
387
|
-
superx signals:leads --agent <agent-id> --deposited false --limit 25
|
|
388
|
-
superx x:user-posts <lead-handle> --no-reposts --limit 10
|
|
389
|
-
superx signals:feedback <lead-id> --fit
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
The feedback id is the numeric LEAD id, not an X user id, and it trains the scorer: ask the person for the verdict rather than inferring one.
|
|
393
|
-
|
|
394
|
-
MCP: `list_signal_agents` -> `get_signal_leads` -> `get_x_user_posts` -> `set_lead_feedback`
|
|
395
|
-
|
|
396
|
-
Stops at: the prioritized list plus recorded verdicts. Reads plus one small write; the activity check spends the shared 300-a-day `x:*` allowance.
|
|
397
|
-
|
|
398
|
-
---
|
|
399
|
-
|
|
400
|
-
## Audiences, research and DMs
|
|
401
|
-
|
|
402
|
-
### Profile Research Briefs
|
|
403
|
-
|
|
404
|
-
Structured briefs on a list of people, exportable as CSV.
|
|
405
|
-
|
|
406
|
-
```bash
|
|
407
|
-
superx datasets:research --handles "<handle>,<handle>" --max 25 --focus "<what to look for>" --title "<briefs title>" --wait
|
|
408
|
-
superx datasets:rows <dataset-id> --limit 25
|
|
409
|
-
superx datasets:export <dataset-id> --out briefs.csv
|
|
410
|
-
```
|
|
411
|
-
|
|
412
|
-
Over 5 profiles the run goes to the background, so never quote a brief count from a `collecting` result: pass `--wait` or poll `datasets:get`.
|
|
413
|
-
|
|
414
|
-
MCP: `research_profiles` -> `get_dataset` -> `get_dataset_rows`
|
|
415
|
-
|
|
416
|
-
Stops at: the briefs in chat plus a CSV on disk. Costs 1 AI credit per profile ACTUALLY researched (unresolved handles are refunded), max 25 a run, plus one of the plan's daily research runs. CSV export is CLI only; XLSX stays in the SuperX app.
|
|
417
|
-
|
|
418
|
-
### DM-Ready Audience Builder
|
|
419
|
-
|
|
420
|
-
A clean, DM-able audience built from any post or public X list, with a path into a contact list.
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
superx datasets:collect --source repliers --target <post-url> --require-can-dm --max-rows 500 --title "<audience title>" --wait
|
|
424
|
-
superx datasets:get <dataset-id>
|
|
425
|
-
superx lists:create --name "<list name>"
|
|
426
|
-
superx datasets:add-to-list <dataset-id> --list-id <list-id>
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
`--source` also takes `quoters`, `reposters` and `list_members` (with a public X list URL as `--target`). Adding to a list dedupes by person and skips rows with no usable X account id, so `added + duplicates` can be lower than the row count.
|
|
430
|
-
|
|
431
|
-
MCP: `collect_audience` -> `get_dataset` -> `create_contact_list` -> `add_dataset_to_contact_list`
|
|
432
|
-
|
|
433
|
-
Stops at: a filtered dataset and, if the person wants it, a contact list. Costs one of 10 collections a day shared with the SuperX app. No AI credits.
|
|
434
|
-
|
|
435
|
-
### Sentiment Slice
|
|
436
|
-
|
|
437
|
-
Keep only the people who said the thing you are looking for.
|
|
438
|
-
|
|
439
|
-
```bash
|
|
440
|
-
superx datasets:list
|
|
441
|
-
superx datasets:refine <dataset-id> --criterion "<what a matching row says>" --sort followers --limit 100 --wait
|
|
442
|
-
superx datasets:rows <new-dataset-id> --limit 50
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
The source dataset is untouched. Only datasets whose rows carry text (repliers, quoters) can be refined. Rows the classifier cannot judge are KEPT and counted as unclear, so report the unclear count honestly.
|
|
446
|
-
|
|
447
|
-
MCP: `list_datasets` -> `refine_dataset` -> `get_dataset_rows`
|
|
448
|
-
|
|
449
|
-
Stops at: the new dataset with its matched and unclear counts. A refinement creates a dataset, so it spends one of the same 10 collections a day, plus a small AI cost. Ask before running it.
|
|
450
|
-
|
|
451
|
-
### Audience Export
|
|
452
|
-
|
|
453
|
-
Everyone who engaged a post, as a spreadsheet, no filters.
|
|
454
|
-
|
|
455
|
-
```bash
|
|
456
|
-
superx datasets:collect --source repliers --target <post-url> --max-rows 1000 --title "<export title>" --wait
|
|
457
|
-
superx datasets:get <dataset-id>
|
|
458
|
-
superx datasets:export <dataset-id> --out audience.csv
|
|
459
|
-
```
|
|
460
|
-
|
|
461
|
-
MCP: `collect_audience` -> `get_dataset`
|
|
462
|
-
|
|
463
|
-
Stops at: a CSV file on disk, up to 1000 rows. **CSV only**: there is no export tool on MCP and XLSX stays in the SuperX app, so send the person there when they need the spreadsheet format. Costs one of 10 collections a day. No AI credits.
|
|
464
|
-
|
|
465
|
-
### My Content Export
|
|
466
|
-
|
|
467
|
-
The account's own posts or replies, as a spreadsheet.
|
|
468
|
-
|
|
469
|
-
```bash
|
|
470
|
-
superx datasets:collect --source my_posts --since-days 90 --sort likes --max-rows 200 --wait
|
|
471
|
-
superx datasets:get <dataset-id>
|
|
472
|
-
superx datasets:export <dataset-id> --out my-content.csv
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
`--source my_replies` does the same for replies. Small exports finish instantly.
|
|
476
|
-
|
|
477
|
-
MCP: `collect_audience` -> `get_dataset`
|
|
478
|
-
|
|
479
|
-
Stops at: a CSV file on disk. **CSV only**, same as Audience Export: XLSX is app-only. Costs one of 10 collections a day. No AI credits.
|
|
480
|
-
|
|
481
|
-
### Warm Outreach Pipeline
|
|
482
|
-
|
|
483
|
-
Research a list, get one personalized message per person, and queue them only after the person approves every message.
|
|
484
|
-
|
|
485
|
-
```bash
|
|
486
|
-
HANDLES=$(superx contacts:list --sort engagement --limit 25 | jq -r '[.data[].username] | join(",")')
|
|
487
|
-
superx datasets:research --handles "$HANDLES" --max 25 --focus "<what to look for>" --wait
|
|
488
|
-
superx datasets:outreach-drafts <dataset-id> --format "<the template or an example message>"
|
|
489
|
-
superx datasets:rows <dataset-id> --limit 25
|
|
490
|
-
superx dm:limits
|
|
491
|
-
superx dm:campaign --recipients recipients.json --idempotency-key "outreach-<slug>-1"
|
|
492
|
-
superx dm:campaign-status <campaign-id>
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
`--handles`, `--list`, `--agent` and `--dataset` are alternative sources for the research step: give exactly one. `contacts:list` returns people, not a list id, so its output feeds `--handles` through the `jq` above; `--list` takes a contact-list id from `lists:list` instead, which is the other way into this playbook. Both cap at 25 profiles. Build `recipients.json` from the dataset rows as `[{"x_user_id":"...","handle":"...","name":"...","message":"..."}]`, one entry per person, each carrying its own approved message. Ask the person for the `--format`; never invent one.
|
|
496
|
-
|
|
497
|
-
MCP: `get_top_contacts` -> `research_profiles` -> `draft_outreach_dms` -> `get_dataset_rows` -> `get_dm_limits` -> `queue_dm_campaign` -> `get_dm_campaign`
|
|
498
|
-
|
|
499
|
-
Stops at: **a queued campaign, not delivered messages.** `dm:campaign` is an ENQUEUE: the SuperX app sends the messages later, within the account's daily and monthly DM limits, so report counts and never say anything was sent. `dm:campaign-status` and `dm:queue` show what actually went out; `dm:cancel` cancels the unsent ones. Research costs 1 AI credit per profile researched, max 100 recipients per campaign, and the person is responsible for these messages under X's automation rules.
|
|
500
|
-
|
|
501
|
-
### Reply-to-DM Campaign
|
|
502
|
-
|
|
503
|
-
DM the people who replied to one of the account's posts.
|
|
504
|
-
|
|
505
|
-
```bash
|
|
506
|
-
superx datasets:collect --source repliers --target <post-url> --keywords "<optional filter>" --require-can-dm --max-rows 100 --wait
|
|
507
|
-
superx datasets:refine <dataset-id> --criterion "<who to keep>" --wait
|
|
508
|
-
superx datasets:rows <new-dataset-id> --limit 100
|
|
509
|
-
superx dm:limits
|
|
510
|
-
superx dm:campaign --recipients recipients.json --message "Hey [name], ..." --idempotency-key "campaign-<slug>-1"
|
|
511
|
-
superx dm:campaign-status <campaign-id>
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
Build `recipients.json` from `datasets:rows` in the same shape as Warm Outreach Pipeline, `[{"x_user_id":"...","handle":"...","name":"...","message":"..."}]`, except that here `--message` carries the shared wording and only `x_user_id` is required per row; a row's own `message` overrides the shared one. `[name]`, `[first]` and `[handle]` are filled per recipient. People messaged in the last 24 hours are skipped and counted in `duplicates`, and the account never messages itself.
|
|
515
|
-
|
|
516
|
-
MCP: `collect_audience` -> `refine_dataset` -> `get_dataset_rows` -> `get_dm_limits` -> `queue_dm_campaign` -> `get_dm_campaign`
|
|
517
|
-
|
|
518
|
-
Stops at: **a queued campaign, not delivered messages.** The enqueue rule is the same one as Warm Outreach Pipeline: the SuperX app sends, nothing here does, and the response is counts. Max 100 per campaign, 10 dataset ops a day, no AI credits on the DM side. Confirm the recipient list and the exact wording with the person first.
|
|
519
|
-
|
|
520
|
-
---
|
|
521
|
-
|
|
522
|
-
## Settings
|
|
523
|
-
|
|
524
|
-
### Teach SuperX Your Rules
|
|
525
|
-
|
|
526
|
-
Standing rules the AI follows on every drafting surface.
|
|
527
|
-
|
|
528
|
-
```bash
|
|
529
|
-
superx context:get
|
|
530
|
-
superx context:set --rules "<the rule, in plain words>"
|
|
531
|
-
superx context:get
|
|
532
|
-
```
|
|
533
|
-
|
|
534
|
-
Saving REPLACES the whole rule set, capped at 500 characters, so read the current rules first and send them back plus the new one. These settings steer all future AI output on the account: confirm the final wording before saving.
|
|
535
|
-
|
|
536
|
-
MCP: `get_context` -> `update_context`
|
|
537
|
-
|
|
538
|
-
Stops at: the updated rule set, read back so the person can see exactly what is stored. Free, no AI credits.
|
|
539
|
-
|
|
540
|
-
---
|
|
541
|
-
|
|
542
|
-
Command reference and gotchas: [SKILL.md](./SKILL.md). Strategy: [PLAYBOOK.md](./PLAYBOOK.md).
|