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.
Files changed (74) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +9 -5
  3. package/dist/index.js +283 -16
  4. package/package.json +5 -5
  5. package/skills/superx/SKILL.md +449 -0
  6. package/{SKILL.md → skills/superx/references/commands.md} +50 -429
  7. package/{PLAYBOOK.md → skills/superx/references/growth-strategy.md} +3 -3
  8. package/skills/superx/references/skills/README.md +31 -0
  9. package/skills/superx/references/skills/audience-export/card.json +20 -0
  10. package/skills/superx/references/skills/audience-export/recipe.md +13 -0
  11. package/skills/superx/references/skills/cadence-and-queue-audit/card.json +22 -0
  12. package/skills/superx/references/skills/cadence-and-queue-audit/recipe.md +17 -0
  13. package/skills/superx/references/skills/categories.json +41 -0
  14. package/skills/superx/references/skills/daily-post-ideas/card.json +22 -0
  15. package/skills/superx/references/skills/daily-post-ideas/recipe.md +17 -0
  16. package/skills/superx/references/skills/dm-ready-audience-builder/card.json +21 -0
  17. package/skills/superx/references/skills/dm-ready-audience-builder/recipe.md +16 -0
  18. package/skills/superx/references/skills/find-your-story/card.json +23 -0
  19. package/skills/superx/references/skills/find-your-story/recipe.md +17 -0
  20. package/skills/superx/references/skills/growth-plan-builder/card.json +21 -0
  21. package/skills/superx/references/skills/growth-plan-builder/recipe.md +17 -0
  22. package/skills/superx/references/skills/instant-lead-hunt/card.json +21 -0
  23. package/skills/superx/references/skills/instant-lead-hunt/recipe.md +14 -0
  24. package/skills/superx/references/skills/lead-review/card.json +20 -0
  25. package/skills/superx/references/skills/lead-review/recipe.md +16 -0
  26. package/skills/superx/references/skills/my-content-export/card.json +21 -0
  27. package/skills/superx/references/skills/my-content-export/recipe.md +15 -0
  28. package/skills/superx/references/skills/my-replies-report/card.json +20 -0
  29. package/skills/superx/references/skills/my-replies-report/recipe.md +13 -0
  30. package/skills/superx/references/skills/post-post-mortem/card.json +20 -0
  31. package/skills/superx/references/skills/post-post-mortem/recipe.md +16 -0
  32. package/skills/superx/references/skills/profile-research-briefs/card.json +21 -0
  33. package/skills/superx/references/skills/profile-research-briefs/recipe.md +15 -0
  34. package/skills/superx/references/skills/queue-reshuffle/card.json +21 -0
  35. package/skills/superx/references/skills/queue-reshuffle/recipe.md +15 -0
  36. package/skills/superx/references/skills/reply-sprint/card.json +20 -0
  37. package/skills/superx/references/skills/reply-sprint/recipe.md +12 -0
  38. package/skills/superx/references/skills/reply-to-any-post/card.json +20 -0
  39. package/skills/superx/references/skills/reply-to-any-post/recipe.md +15 -0
  40. package/skills/superx/references/skills/reply-to-dm-campaign/card.json +21 -0
  41. package/skills/superx/references/skills/reply-to-dm-campaign/recipe.md +18 -0
  42. package/skills/superx/references/skills/repurpose-a-winner/card.json +21 -0
  43. package/skills/superx/references/skills/repurpose-a-winner/recipe.md +16 -0
  44. package/skills/superx/references/skills/sentiment-slice/card.json +20 -0
  45. package/skills/superx/references/skills/sentiment-slice/recipe.md +15 -0
  46. package/skills/superx/references/skills/standing-lead-agent/card.json +21 -0
  47. package/skills/superx/references/skills/standing-lead-agent/recipe.md +17 -0
  48. package/skills/superx/references/skills/teach-superx-your-rules/card.json +21 -0
  49. package/skills/superx/references/skills/teach-superx-your-rules/recipe.md +15 -0
  50. package/skills/superx/references/skills/thread-builder/card.json +20 -0
  51. package/skills/superx/references/skills/thread-builder/recipe.md +14 -0
  52. package/skills/superx/references/skills/top-performers-breakdown/card.json +21 -0
  53. package/skills/superx/references/skills/top-performers-breakdown/recipe.md +13 -0
  54. package/skills/superx/references/skills/trending-now-scan/card.json +21 -0
  55. package/skills/superx/references/skills/trending-now-scan/recipe.md +14 -0
  56. package/skills/superx/references/skills/viral-format-remix/card.json +20 -0
  57. package/skills/superx/references/skills/viral-format-remix/recipe.md +15 -0
  58. package/skills/superx/references/skills/viral-score-iterate/card.json +22 -0
  59. package/skills/superx/references/skills/viral-score-iterate/recipe.md +15 -0
  60. package/skills/superx/references/skills/warm-outreach-pipeline/card.json +21 -0
  61. package/skills/superx/references/skills/warm-outreach-pipeline/recipe.md +19 -0
  62. package/skills/superx/references/skills/week-of-posts/card.json +19 -0
  63. package/skills/superx/references/skills/week-of-posts/recipe.md +18 -0
  64. package/skills/superx/references/skills/weekly-growth-recap/card.json +22 -0
  65. package/skills/superx/references/skills/weekly-growth-recap/recipe.md +17 -0
  66. package/skills/superx/references/skills/who-is-this-person/card.json +20 -0
  67. package/skills/superx/references/skills/who-is-this-person/recipe.md +16 -0
  68. package/skills/superx/references/skills/worker-output-review/card.json +20 -0
  69. package/skills/superx/references/skills/worker-output-review/recipe.md +18 -0
  70. package/skills/superx/references/skills/worth-a-reply/card.json +22 -0
  71. package/skills/superx/references/skills/worth-a-reply/recipe.md +16 -0
  72. package/skills/superx/references/skills/your-warmest-leads/card.json +21 -0
  73. package/skills/superx/references/skills/your-warmest-leads/recipe.md +14 -0
  74. 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).