superx-cli 0.5.1 → 0.6.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/CHANGELOG.md +16 -0
- package/README.md +9 -5
- package/dist/index.js +255 -18
- package/package.json +5 -5
- package/skills/superx/SKILL.md +448 -0
- package/{SKILL.md → skills/superx/references/commands.md} +47 -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/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,18 @@
|
|
|
1
|
+
# Reply-to-DM Campaign
|
|
2
|
+
|
|
3
|
+
DM the people who replied to one of the account's posts.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx datasets:collect --source repliers --target <post-url> --keywords "<optional filter>" --require-can-dm --max-rows 100 --wait
|
|
7
|
+
superx datasets:refine <dataset-id> --criterion "<who to keep>" --wait
|
|
8
|
+
superx datasets:rows <new-dataset-id> --limit 100
|
|
9
|
+
superx dm:limits
|
|
10
|
+
superx dm:campaign --recipients recipients.json --message "Hey [name], ..." --idempotency-key "campaign-<slug>-1"
|
|
11
|
+
superx dm:campaign-status <campaign-id>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
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.
|
|
15
|
+
|
|
16
|
+
MCP: `collect_audience` -> `refine_dataset` -> `get_dataset_rows` -> `get_dm_limits` -> `queue_dm_campaign` -> `get_dm_campaign`
|
|
17
|
+
|
|
18
|
+
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.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Repurpose a Winner",
|
|
3
|
+
"category": "content-posting",
|
|
4
|
+
"order": 60,
|
|
5
|
+
"subtitle": "Your best post, reworked into fresh angles.",
|
|
6
|
+
"summary": "Takes one of your top performing standalone posts and rewrites it into new angles and formats (different hook, thread version, contrarian take) so a proven idea works for you more than once. Works on standalone posts, not threads.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Repurpose my best post",
|
|
9
|
+
"Rework this post into new versions."
|
|
10
|
+
],
|
|
11
|
+
"provide": "nothing, or a specific post.",
|
|
12
|
+
"get": "the original's numbers plus 2-3 fresh takes ready to edit and schedule.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"Standalone posts only"
|
|
16
|
+
],
|
|
17
|
+
"launchPrompt": "Find my best performing post from the last 30 days and rework it into 2-3 fresh versions with different hooks or formats. If my analytics are still syncing, use my recent posts instead.",
|
|
18
|
+
"sampleKind": "drafts",
|
|
19
|
+
"starter": true,
|
|
20
|
+
"starterGroup": "performance"
|
|
21
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Repurpose a Winner
|
|
2
|
+
|
|
3
|
+
The account's best post, reworked into fresh angles.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
SINCE=$(date -u -v-90d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "90 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
7
|
+
superx posts:list --type posts --sort likes --since "$SINCE" --limit 5
|
|
8
|
+
superx posts:remix --text "<the winning post's text>" --closeness 70
|
|
9
|
+
superx scheduled:create --text "<the remix the person picked>" --idempotency-key "repurpose-<slug>-1"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Standalone posts only. `--closeness 0` keeps just the idea, `100` stays very close to the original wording.
|
|
13
|
+
|
|
14
|
+
MCP: `get_post_analytics` -> `remix_post` -> `schedule_post`
|
|
15
|
+
|
|
16
|
+
Stops at: remixed text the person approves before anything is saved. A remix typically costs 2 AI credits (measured).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Sentiment Slice",
|
|
3
|
+
"category": "audience-data",
|
|
4
|
+
"order": 20,
|
|
5
|
+
"subtitle": "Keep only the people who said what you're looking for.",
|
|
6
|
+
"summary": "Takes a dataset you've already collected and keeps the rows matching a criterion you describe in plain language (\"the skeptics\", \"asked about pricing\"), plus any it could not judge, flagged as unclear, as a new dataset. It only works on datasets whose rows carry text, like repliers and quoters, so an X list or a follower dataset cannot be sliced. The original is untouched.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Keep only the [criterion] from my dataset",
|
|
9
|
+
"Pull out the people who asked about [topic]."
|
|
10
|
+
],
|
|
11
|
+
"provide": "which dataset and the criterion.",
|
|
12
|
+
"get": "a new dataset of the matches, with honest matched and unclear counts.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"Small AI cost, asked first",
|
|
15
|
+
"10 dataset ops per day",
|
|
16
|
+
"Needs a dataset with text"
|
|
17
|
+
],
|
|
18
|
+
"launchPrompt": "Check my recent datasets, tell me which ones have what people actually wrote, then make a new dataset from the best fit keeping only the people who [your criterion].",
|
|
19
|
+
"sampleKind": "dataset"
|
|
20
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Sentiment Slice
|
|
2
|
+
|
|
3
|
+
Keep only the people who said the thing you are looking for.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx datasets:list
|
|
7
|
+
superx datasets:refine <dataset-id> --criterion "<what a matching row says>" --sort followers --limit 100 --wait
|
|
8
|
+
superx datasets:rows <new-dataset-id> --limit 50
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
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.
|
|
12
|
+
|
|
13
|
+
MCP: `list_datasets` -> `refine_dataset` -> `get_dataset_rows`
|
|
14
|
+
|
|
15
|
+
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.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Standing Lead Agent",
|
|
3
|
+
"category": "leads-prospecting",
|
|
4
|
+
"order": 30,
|
|
5
|
+
"subtitle": "A lead-finding agent that keeps searching while you sleep.",
|
|
6
|
+
"summary": "Sets up a signal agent that watches X for your keywords around the clock and scores everyone it finds against the audience you describe. You edit and approve the agent before it exists, then its matches land in Signals over the following hours and days.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Set up a lead agent for [niche]",
|
|
9
|
+
"Keep finding me people who [signal]."
|
|
10
|
+
],
|
|
11
|
+
"provide": "keywords, a description of who you want to reach, optionally DMs-open only.",
|
|
12
|
+
"get": "an editable agent proposal card; leads flow into Signals afterwards.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost to set up",
|
|
15
|
+
"Needs your approval",
|
|
16
|
+
"Leads arrive over hours and days",
|
|
17
|
+
"Editing or pausing happens in Signals, not chat"
|
|
18
|
+
],
|
|
19
|
+
"launchPrompt": "Set up a standing lead agent: watch for [your keywords], score everyone it finds against [who you want to reach], and show me the agent to approve before it starts.",
|
|
20
|
+
"sampleKind": "leads"
|
|
21
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Standing Lead Agent
|
|
2
|
+
|
|
3
|
+
An agent that keeps finding leads while the person is away.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx signals:expand-icp --text "<who you want to reach>"
|
|
7
|
+
superx signals:suggest-keywords --icp "<the sharpened description>"
|
|
8
|
+
superx signals:create-agent --name "<agent name>" --icp "<the sharpened description>" --keyword "<phrase>" --idempotency-key "agent-<slug>-1"
|
|
9
|
+
superx signals:agents
|
|
10
|
+
superx signals:leads --agent <agent-id> --deposited false --limit 25
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
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.
|
|
14
|
+
|
|
15
|
+
MCP: `expand_icp` -> `suggest_keywords` -> `create_signal_agent` -> `list_signal_agents` -> `get_signal_leads`
|
|
16
|
+
|
|
17
|
+
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`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Teach SuperX Your Rules",
|
|
3
|
+
"category": "setup-voice",
|
|
4
|
+
"order": 10,
|
|
5
|
+
"subtitle": "Set standing rules for your AI drafts.",
|
|
6
|
+
"summary": "Turns your preferences (\"never use emojis\", \"always British spelling\", \"no questions as hooks\") into a standing rule set for this account, up to 500 characters in total. Saving replaces the whole set rather than adding to it, so the card shows the complete text for you to approve first. Edit it any time at Account > Context.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Remember that I never use emojis",
|
|
9
|
+
"Set a rule: no hashtags."
|
|
10
|
+
],
|
|
11
|
+
"provide": "the rule in plain words.",
|
|
12
|
+
"get": "the full updated rule set on an approval card.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"500 characters in total",
|
|
16
|
+
"Saving replaces the whole set"
|
|
17
|
+
],
|
|
18
|
+
"launchPrompt": "I want to set standing rules for my AI drafts. Here's the first one: [your rule]",
|
|
19
|
+
"sampleKind": "recap",
|
|
20
|
+
"starter": true
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Teach SuperX Your Rules
|
|
2
|
+
|
|
3
|
+
Standing rules the AI follows on every drafting surface.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx context:get
|
|
7
|
+
superx context:set --rules "<the rule, in plain words>"
|
|
8
|
+
superx context:get
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
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.
|
|
12
|
+
|
|
13
|
+
MCP: `get_context` -> `update_context`
|
|
14
|
+
|
|
15
|
+
Stops at: the updated rule set, read back so the person can see exactly what is stored. Free, no AI credits.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Thread Builder",
|
|
3
|
+
"category": "content-posting",
|
|
4
|
+
"order": 40,
|
|
5
|
+
"subtitle": "Turn an idea or rough notes into a thread ready to schedule.",
|
|
6
|
+
"summary": "Takes your raw material (a sentence, bullet notes, or a pasted draft) and builds a thread with a strong hook, tight parts, and a closer, then puts it on an approval card to edit and schedule.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Turn this into a thread",
|
|
9
|
+
"Make a thread about [idea]."
|
|
10
|
+
],
|
|
11
|
+
"provide": "the idea or notes; optionally target length.",
|
|
12
|
+
"get": "a full thread draft (up to 25 parts) ready to edit and schedule.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"Scheduling needs your approval"
|
|
16
|
+
],
|
|
17
|
+
"launchPrompt": "Turn this idea into a thread with a strong hook and put it on a card I can edit and schedule: [your idea]",
|
|
18
|
+
"sampleKind": "drafts",
|
|
19
|
+
"starter": true
|
|
20
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Thread Builder
|
|
2
|
+
|
|
3
|
+
An idea or rough notes turned into a thread of up to 25 parts, ready to schedule.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx posts:draft --brief "<the idea or notes, plus the target length>" --count 1
|
|
7
|
+
superx scheduled:create --part "<1/ hook>" --part "<2/ detail>" --part "<3/ close>" --idempotency-key "thread-<slug>-1"
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Max 25 parts and 25,000 characters in total. Repeat `--part` in posting order.
|
|
11
|
+
|
|
12
|
+
MCP: `draft_post` -> `schedule_post`
|
|
13
|
+
|
|
14
|
+
Stops at: a thread draft in the app. 3 AI credits per draft written.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Top Performers Breakdown",
|
|
3
|
+
"category": "analytics-insights",
|
|
4
|
+
"order": 20,
|
|
5
|
+
"subtitle": "The pattern your best posts share, and the shape to write more of.",
|
|
6
|
+
"summary": "Ranks your top posts over a window and reads what they have in common (topic, format, hook style), then spells the pattern out as a shape you can write more of. Nothing is applied to your drafts automatically.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"What were my best posts this month?",
|
|
9
|
+
"Find the pattern in my winners."
|
|
10
|
+
],
|
|
11
|
+
"provide": "optionally a window (up to 90 days, otherwise the last 30).",
|
|
12
|
+
"get": "the ranked winners, the shared pattern, and next-step suggestions.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"Synced numbers lag a few hours"
|
|
16
|
+
],
|
|
17
|
+
"launchPrompt": "Show my top posts from the last 30 days and break down the pattern behind them.",
|
|
18
|
+
"sampleKind": "recap",
|
|
19
|
+
"starter": true,
|
|
20
|
+
"starterGroup": "performance"
|
|
21
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Top Performers Breakdown
|
|
2
|
+
|
|
3
|
+
The ranked winners, the shape they share, and what to write more of.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
SINCE=$(date -u -v-30d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "30 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
7
|
+
superx posts:list --type posts --sort likes --since "$SINCE" --limit 25
|
|
8
|
+
superx posts:analytics --since "$SINCE"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
MCP: `get_post_analytics` -> `get_account_overview`
|
|
12
|
+
|
|
13
|
+
Stops at: the pattern read in chat. Reads only, no AI credits.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Trending Now Scan",
|
|
3
|
+
"category": "content-posting",
|
|
4
|
+
"order": 30,
|
|
5
|
+
"subtitle": "High-performing posts in your niche from the last 48 hours.",
|
|
6
|
+
"summary": "Searches high-performing posts from the last 48 hours in your topic and shows what your niche is posting about right now, with angles you could take while the conversation is live.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"What's trending in [niche] right now?",
|
|
9
|
+
"What's been landing in the last 48 hours?"
|
|
10
|
+
],
|
|
11
|
+
"provide": "nothing, or 2-3 topic phrases.",
|
|
12
|
+
"get": "posts from the last 48 hours with their engagement numbers and suggested angles.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"Last 48 hours"
|
|
16
|
+
],
|
|
17
|
+
"launchPrompt": "Scan the last 48 hours for what's trending in my niche and suggest angles I could post about today. If you cannot tell what my niche is, ask me for two or three topic phrases first.",
|
|
18
|
+
"sampleKind": "recap",
|
|
19
|
+
"starter": true,
|
|
20
|
+
"starterGroup": "ideas"
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Trending Now Scan
|
|
2
|
+
|
|
3
|
+
High-performing posts in the account's niche from the last 48 hours, with angles to take.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
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")
|
|
7
|
+
superx inspiration:search "<topic phrase>" --since "$SINCE" --sort likes --limit 10
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Run it once per topic phrase rather than sweeping the whole niche.
|
|
11
|
+
|
|
12
|
+
MCP: `find_inspiration`
|
|
13
|
+
|
|
14
|
+
Stops at: the posts and the suggested angles in chat. Reads only, no AI credits.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Viral Format Remix",
|
|
3
|
+
"category": "content-posting",
|
|
4
|
+
"order": 20,
|
|
5
|
+
"subtitle": "Borrow proven hooks and structures from 50M+ real posts.",
|
|
6
|
+
"summary": "Searches a library of high-performing real posts in your topic, extracts the hooks and structures that made them work, and rewrites them in your voice on your subject. Reference posts are real, never fabricated.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Find viral formats about [topic] and remix them for me",
|
|
9
|
+
"What hooks work for [niche]?"
|
|
10
|
+
],
|
|
11
|
+
"provide": "nothing, or a topic to focus on.",
|
|
12
|
+
"get": "the reference posts, why each works, and remixed drafts in your voice.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"3 AI credits per draft"
|
|
15
|
+
],
|
|
16
|
+
"launchPrompt": "Find high-performing posts in my niche, show me why they work, and remix the best structures into drafts in my voice. If you cannot tell what my niche is, ask me for two or three topic phrases first.",
|
|
17
|
+
"sampleKind": "drafts",
|
|
18
|
+
"starter": true,
|
|
19
|
+
"starterGroup": "ideas"
|
|
20
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Viral Format Remix
|
|
2
|
+
|
|
3
|
+
Proven hooks and structures from a library of 50M+ high-performing posts, rewritten in the account's voice.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx inspiration:search "<topic>" --sort outlier --min-likes 500 --limit 10
|
|
7
|
+
superx posts:draft --brief "<what this account would say on that topic>" --mirror "<the reference post's text>" --count 2
|
|
8
|
+
superx scheduled:create --text "<approved text>" --idempotency-key "remix-<slug>-1"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`--mirror` copies the SHAPE of a proven post, not its words. Pick a reference with room for the account's own facts.
|
|
12
|
+
|
|
13
|
+
MCP: `find_inspiration` -> `draft_post` -> `schedule_post`
|
|
14
|
+
|
|
15
|
+
Stops at: reference posts plus drafts, for the person to pick from. 3 AI credits per draft written.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Viral Score Loop",
|
|
3
|
+
"category": "content-posting",
|
|
4
|
+
"order": 90,
|
|
5
|
+
"subtitle": "Score a draft against your own posts, then sharpen it until the score stops rising.",
|
|
6
|
+
"summary": "Scores your draft from 0 to 100 against your own recent posts and says what helped and what hurt. Then it rewrites one thing at a time, keyed on the biggest thing that hurt, and rescores, keeping your facts and voice. It stops when the score stops rising, after six versions, or the moment a warning fires: asking for replies, follows or links never raises the score.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"How will this post do? [paste draft]",
|
|
9
|
+
"Score this draft and make it better",
|
|
10
|
+
"Sharpen this before I post it"
|
|
11
|
+
],
|
|
12
|
+
"provide": "the draft, and whether it will carry an image or a video.",
|
|
13
|
+
"get": "a score for every version with what changed, and the best version on a picker card.",
|
|
14
|
+
"chips": [
|
|
15
|
+
"No extra cost",
|
|
16
|
+
"Scored against your own recent posts",
|
|
17
|
+
"Up to six versions",
|
|
18
|
+
"Nothing is posted"
|
|
19
|
+
],
|
|
20
|
+
"launchPrompt": "Score this draft against my own recent posts and tell me what helped and what hurt. Then rewrite it one change at a time, keyed on the biggest thing that hurt, and rescore, keeping my facts and my voice. Never add asks for replies, follows or links to push the score up, and stop if a warning fires. Show me every version with its score and end with the best one. Here is the draft: ",
|
|
21
|
+
"sampleKind": "drafts"
|
|
22
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Viral Score Loop
|
|
2
|
+
|
|
3
|
+
Score a draft against the account's own recent posts, rewrite one thing at a time, rescore, and stop when the score stops rising.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx posts:viral-score --text "<the draft>" # add --image, --video or --quote to match what will be attached
|
|
7
|
+
superx posts:viral-score --text "<rewrite keyed on the top hurt item>"
|
|
8
|
+
superx posts:viral-score --text "<next rewrite>" # repeat; six scored versions at most
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Read `score`, `helped`, `hurt` and `warnings` from each result. Rewrite ONE thing per round, keyed on the top `hurt` item, and keep the person's facts, claims and voice; never add a request for replies, follows, links or DMs, never pad with hashtags or emoji, and pass the same media flags every round. Stop when a rewrite introduces a warning (go back to the last clean version and say which warning fired), when the score has not risen for two rounds in a row, or after six scored versions. If the first score already warns, name it and offer one rewrite that removes the ask, then score that once. The score is the chance the post beats the account's own normal post, so say "72 means it beats your usual post about 72 times in 100", never a reach or like count; the likes and replies multiples are relative to the account's median post, and reposts+quotes and views are low confidence, so never chase them.
|
|
12
|
+
|
|
13
|
+
MCP: `predict_viral_score` (repeat per version) -> `schedule_post` only when the person asks
|
|
14
|
+
|
|
15
|
+
Stops at: a table of every version with its score and what changed, plus the best version, for the person to pick. Nothing is posted. Most scores charge no credits, one in ten charges 1, and the first score for an account charges 1 more while its baseline is read.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Warm Outreach Pipeline",
|
|
3
|
+
"category": "outreach-dms",
|
|
4
|
+
"order": 10,
|
|
5
|
+
"subtitle": "Research a list, get personalized DMs, approve every message before it queues.",
|
|
6
|
+
"summary": "The full outreach chain: reads a contact list, your signal-agent leads, or a dataset you already collected, researches each person's recent posts into a brief (1 credit per person, asked first, unresearched profiles refunded), writes one DM per person in your own format quoting something they actually posted, and opens a review card where you edit or skip every message before anything queues. Results come back as counts, never names.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Warm up my [list] with personalized DMs",
|
|
9
|
+
"Research my leads and DM them in my style."
|
|
10
|
+
],
|
|
11
|
+
"provide": "which list, agent, dataset, or handles, your DM format or an example, batch size (10-20 works best).",
|
|
12
|
+
"get": "per-person briefs, one personalized DM each, a review-and-approve card with day-by-day sending.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"1 credit per person",
|
|
15
|
+
"Up to 25 researched per run",
|
|
16
|
+
"Max 100 recipients",
|
|
17
|
+
"You approve before anything queues"
|
|
18
|
+
],
|
|
19
|
+
"launchPrompt": "Warm outreach: check my recent datasets and signal-agent leads, or use these handles if I have neither: [paste 5-10 handles]. Research the top 10 to 20 people, draft a personalized DM for each in the style of this example: [paste an example DM], and show me everything to review before anything is queued.",
|
|
20
|
+
"sampleKind": "dmReview"
|
|
21
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Warm Outreach Pipeline
|
|
2
|
+
|
|
3
|
+
Research a list, get one personalized message per person, and queue them only after the person approves every message.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
HANDLES=$(superx contacts:list --sort engagement --limit 25 | jq -r '[.data[].username] | join(",")')
|
|
7
|
+
superx datasets:research --handles "$HANDLES" --max 25 --focus "<what to look for>" --wait
|
|
8
|
+
superx datasets:outreach-drafts <dataset-id> --format "<the template or an example message>"
|
|
9
|
+
superx datasets:rows <dataset-id> --limit 25
|
|
10
|
+
superx dm:limits
|
|
11
|
+
superx dm:campaign --recipients recipients.json --idempotency-key "outreach-<slug>-1"
|
|
12
|
+
superx dm:campaign-status <campaign-id>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`--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 skill. 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.
|
|
16
|
+
|
|
17
|
+
MCP: `get_top_contacts` -> `research_profiles` -> `draft_outreach_dms` -> `get_dataset_rows` -> `get_dm_limits` -> `queue_dm_campaign` -> `get_dm_campaign`
|
|
18
|
+
|
|
19
|
+
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.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Week of Posts",
|
|
3
|
+
"category": "content-posting",
|
|
4
|
+
"order": 50,
|
|
5
|
+
"subtitle": "A week of drafts, spread across the week, one approval each.",
|
|
6
|
+
"summary": "Drafts a batch of posts for the week from your topics and recent winners, varies the formats, and proposes them in batches, one approval card per post, spread across the week.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Fill my queue for the week",
|
|
9
|
+
"Draft a week of posts."
|
|
10
|
+
],
|
|
11
|
+
"provide": "optionally themes for the week.",
|
|
12
|
+
"get": "a week of varied drafts, proposed in batches with one approval per post.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"Each post needs your approval"
|
|
16
|
+
],
|
|
17
|
+
"launchPrompt": "Draft a week of posts from my recent topics and best performers, and propose a schedule spread across the week. If my analytics are still syncing, ask me for themes first.",
|
|
18
|
+
"sampleKind": "drafts"
|
|
19
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Week of Posts
|
|
2
|
+
|
|
3
|
+
A week of varied drafts, spread across the week, one approval per post.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
SINCE=$(date -u -v-60d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "60 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
7
|
+
superx posts:list --type posts --sort likes --since "$SINCE" --limit 10
|
|
8
|
+
superx queue:get
|
|
9
|
+
superx posts:draft --brief "<theme for the week>" --count 3
|
|
10
|
+
superx scheduled:create --text "<approved text>" --at "<UTC ISO-8601 with Z>" --idempotency-key "week-<n>-1"
|
|
11
|
+
superx scheduled:list --status scheduled --limit 100
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
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.
|
|
15
|
+
|
|
16
|
+
MCP: `get_post_analytics` -> `get_queue_settings` -> `draft_post` -> `schedule_post` -> `get_scheduled_posts`
|
|
17
|
+
|
|
18
|
+
Stops at: a queued week the person can still edit. 3 AI credits per draft written.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Weekly Growth Recap",
|
|
3
|
+
"category": "grow-plan",
|
|
4
|
+
"order": 10,
|
|
5
|
+
"subtitle": "Your week in review: wins, patterns, and next week's focus.",
|
|
6
|
+
"summary": "Pulls your follower trend, post performance, any new leads, and your latest audience replies, then writes a short recap of the week: what worked, one pattern to repeat, and a focus for next week. Purely a look back at what happened.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Give me my weekly recap",
|
|
9
|
+
"How did this week go?",
|
|
10
|
+
"What worked for me this week?"
|
|
11
|
+
],
|
|
12
|
+
"provide": "nothing (uses the active account).",
|
|
13
|
+
"get": "follower change, top posts with why they worked, lead count, one pattern, one next-week focus.",
|
|
14
|
+
"chips": [
|
|
15
|
+
"No extra cost",
|
|
16
|
+
"Reads your synced data"
|
|
17
|
+
],
|
|
18
|
+
"launchPrompt": "Give me my weekly recap: follower trend, top posts and why they worked, any new leads, and one focus for next week.",
|
|
19
|
+
"sampleKind": "recap",
|
|
20
|
+
"starter": true,
|
|
21
|
+
"starterGroup": "performance"
|
|
22
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Weekly Growth Recap
|
|
2
|
+
|
|
3
|
+
Your week in review: follower change, the posts that worked, new leads, one pattern to repeat and one focus for next week.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
SINCE=$(date -u -v-7d +"%Y-%m-%dT00:00:00Z" 2>/dev/null || date -u -d "7 days ago" +"%Y-%m-%dT00:00:00Z")
|
|
7
|
+
superx posts:analytics --since "$SINCE" --account <account-id>
|
|
8
|
+
superx posts:list --sort likes --since "$SINCE" --limit 10
|
|
9
|
+
superx signals:leads --since "$SINCE" --limit 20
|
|
10
|
+
superx replies:received --sort recent --limit 20
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
There is no recap command: write the recap yourself from those four responses.
|
|
14
|
+
|
|
15
|
+
MCP: `get_account_overview` -> `get_post_analytics` -> `get_signal_leads` -> `get_audience_replies`
|
|
16
|
+
|
|
17
|
+
Stops at: the recap text in chat. Reads only, no AI credits.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Who Is This Person?",
|
|
3
|
+
"category": "replies-engagement",
|
|
4
|
+
"order": 40,
|
|
5
|
+
"subtitle": "A fast read on any public account, plus your history with them.",
|
|
6
|
+
"summary": "Looks up any public @handle live (bio, size, what they post) and combines it with your history together (their replies to you and how often they have replied) so you know who you're talking to before you answer.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"Who is @handle?",
|
|
9
|
+
"What's my history with @handle?"
|
|
10
|
+
],
|
|
11
|
+
"provide": "the @handle.",
|
|
12
|
+
"get": "profile summary, up to 20 recent posts, and your shared history.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"Live lookup",
|
|
16
|
+
"Public accounts only"
|
|
17
|
+
],
|
|
18
|
+
"launchPrompt": "Who is @[handle]? Give me their profile, recent posts, and any history they have with my account.",
|
|
19
|
+
"sampleKind": "leads"
|
|
20
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Who Is This Person?
|
|
2
|
+
|
|
3
|
+
A fast read on a public account, plus the history the SuperX account already has with them.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx x:user <handle>
|
|
7
|
+
superx x:user-posts <handle> --no-reposts --limit 20
|
|
8
|
+
superx contacts:get <x-user-id>
|
|
9
|
+
superx contacts:replies <x-user-id> --sort recent --limit 5
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`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.
|
|
13
|
+
|
|
14
|
+
MCP: `lookup_x_user` -> `get_x_user_posts` -> `get_contact` -> `get_contact_history`
|
|
15
|
+
|
|
16
|
+
Stops at: the profile read in chat. Reads only, on the shared 300-a-day `x:*` allowance.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Worker Output Review",
|
|
3
|
+
"category": "content-posting",
|
|
4
|
+
"order": 80,
|
|
5
|
+
"subtitle": "Triage the posts your Workers wrote while you were away.",
|
|
6
|
+
"summary": "Reads what your Workers have written and left in To review, shows each post exactly as it was written, and acts on your call: save the good ones as drafts, queue one for a time, clear the rest. Workers are created, edited and run in the SuperX app; this reviews what they produced.",
|
|
7
|
+
"howToAsk": [
|
|
8
|
+
"What did my Workers write?",
|
|
9
|
+
"Anything waiting for me in To review?"
|
|
10
|
+
],
|
|
11
|
+
"provide": "nothing (uses the active account).",
|
|
12
|
+
"get": "each waiting post as written, with save, schedule or dismiss on every one.",
|
|
13
|
+
"chips": [
|
|
14
|
+
"No extra cost",
|
|
15
|
+
"Saved as the Worker wrote it",
|
|
16
|
+
"You approve every save"
|
|
17
|
+
],
|
|
18
|
+
"launchPrompt": "Show me the posts my Workers have written and left waiting for review, one at a time and exactly as written, then let me save, schedule or dismiss each one.",
|
|
19
|
+
"sampleKind": "drafts"
|
|
20
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Worker Output Review
|
|
2
|
+
|
|
3
|
+
The posts a Worker wrote while the person was away, triaged: save the good ones, queue one, clear the rest.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
superx workers:list
|
|
7
|
+
superx workers:suggestions --status to_review --limit 20
|
|
8
|
+
superx workers:draft <suggestion-id>
|
|
9
|
+
superx workers:schedule <suggestion-id> --at "<UTC ISO-8601 with Z>"
|
|
10
|
+
superx workers:dismiss <suggestion-id>
|
|
11
|
+
superx scheduled:list --status draft --limit 10
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
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.
|
|
15
|
+
|
|
16
|
+
MCP: `list_workers` -> `list_worker_suggestions` -> `draft_worker_suggestion` / `schedule_worker_suggestion` / `dismiss_worker_suggestion` -> `get_scheduled_posts`
|
|
17
|
+
|
|
18
|
+
Stops at: the saved drafts and the queued post, for the person to edit. Reads and the three actions cost no AI credits.
|
|
@@ -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.
|