@sellable/mcp 0.1.239 → 0.1.240
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/package.json
CHANGED
|
@@ -82,6 +82,7 @@ Use these MCP tools when available:
|
|
|
82
82
|
- `mcp__sellable__fetch_linkedin_posts`
|
|
83
83
|
- `mcp__sellable__fetch_linkedin_profile`
|
|
84
84
|
- `mcp__sellable__record_engage_proven_search`
|
|
85
|
+
- `mcp__sellable__upsert_engage_tracked_person`
|
|
85
86
|
|
|
86
87
|
Do not call outbound/campaign tools from this skill. Do not call message-generation prompts or tools. This skill reuses the quality architecture of the message pipeline: required assets, candidate set, finalizer pass, simplifier/concrete-language audit, anti-AI audit, proof/voice validation, and blocked/retry-needed states.
|
|
87
88
|
</tools>
|
|
@@ -131,6 +132,8 @@ Durable write-back targets:
|
|
|
131
132
|
- `core/transcripts/INDEX.md` for source interview or voice-memo references
|
|
132
133
|
- `core/references/linkedin-posts/INDEX.md` and adjacent files for approved
|
|
133
134
|
gold-standard post references
|
|
135
|
+
- `discovery/influencers.md` for approved creators/persons the user wants the
|
|
136
|
+
system to keep learning from
|
|
134
137
|
|
|
135
138
|
Write-backs must use stable source keys such as
|
|
136
139
|
`create-post:{date}:{ideaId}:{slug}` or
|
|
@@ -139,6 +142,13 @@ paths before adding references, create no duplicate reference rows, and keep
|
|
|
139
142
|
manual sections preserved. If the user says to mark private, store only the
|
|
140
143
|
minimum private-safe metadata and do not promote it into public proof,
|
|
141
144
|
references, or examples.
|
|
145
|
+
|
|
146
|
+
When the user says a creator/person is worth following, learning from, or using
|
|
147
|
+
again, persist them with `mcp__sellable__upsert_engage_tracked_person` before
|
|
148
|
+
continuing. Use the canonical LinkedIn profile URL, a concise reason that names
|
|
149
|
+
the content lane, and no senderId unless the user explicitly scopes the person
|
|
150
|
+
to one sender. If the person is already tracked, update the reason instead of
|
|
151
|
+
creating a duplicate.
|
|
142
152
|
</memory_contract>
|
|
143
153
|
|
|
144
154
|
<modes>
|
|
@@ -173,6 +183,29 @@ Normal ad hoc mode still creates an ID'd idea artifact first with `mcp__sellable
|
|
|
173
183
|
|
|
174
184
|
If the user explicitly says not to save anything, label the output `unsaved_preview`, do not call it draft-ready, and do not mark it as validated for publishing.
|
|
175
185
|
|
|
186
|
+
## Research Checkpoint Mode
|
|
187
|
+
|
|
188
|
+
Use when the user asks to research hooks, research bodies, "show me what it
|
|
189
|
+
learned", "run the research phase", "what is working in the space", or anything
|
|
190
|
+
similar.
|
|
191
|
+
|
|
192
|
+
1. Capture or load the idea/topic if one is provided.
|
|
193
|
+
2. Run the hook/body research playbook.
|
|
194
|
+
3. Save the research with `mcp__sellable__save_hook_research`.
|
|
195
|
+
4. Present a `Research Learning Report` to the user.
|
|
196
|
+
5. Do not draft until the user approves a direction or explicitly says to run
|
|
197
|
+
the draft phase.
|
|
198
|
+
|
|
199
|
+
The report must include specific words, phrase shapes, sentence patterns, and
|
|
200
|
+
body moves from the research. Do not only report abstract labels like
|
|
201
|
+
"contrarian hook" or "tool-stack enemy."
|
|
202
|
+
|
|
203
|
+
When the host supports background agents or Task workers, run the heavy research
|
|
204
|
+
in a dedicated research worker so the main orchestrator stays clean. The
|
|
205
|
+
orchestrator should keep only the compressed research packet, final selected
|
|
206
|
+
examples, and user-facing learning report in context. Do not paste the entire
|
|
207
|
+
raw source-post corpus into the orchestrator conversation.
|
|
208
|
+
|
|
176
209
|
## Gold Standard Pack Mode
|
|
177
210
|
|
|
178
211
|
Use when the user asks to import their best posts, research best posts in the space, build a gold-standard pack, or add inspiration examples.
|
|
@@ -193,8 +226,11 @@ Space benchmark research:
|
|
|
193
226
|
1. Use `mcp__sellable__search_engagement_posts` and the hook research playbook.
|
|
194
227
|
2. Shortlist high-performing posts from the user's space using the weighted signal rules.
|
|
195
228
|
3. Penalize lead magnets, giveaways, engagement bait, celebrity-only reach, and poor voice fit.
|
|
196
|
-
4.
|
|
197
|
-
|
|
229
|
+
4. When a creator/person appears repeatedly strong, include a `track_person`
|
|
230
|
+
recommendation in the candidate card.
|
|
231
|
+
5. Show the user the candidates and ask: "These look good. Should we use any as gold standards or track any of these people?"
|
|
232
|
+
6. Add only the user-approved post selections.
|
|
233
|
+
7. For each approved tracked person, call `mcp__sellable__upsert_engage_tracked_person`.
|
|
198
234
|
|
|
199
235
|
The approved pack is capped at 20 gold standards. If adding new approved examples would exceed 20, ask which existing item to replace or skip the overflow. Candidate lists can be longer, but approved saved standards cannot exceed 20.
|
|
200
236
|
</modes>
|
|
@@ -220,6 +256,27 @@ If local idea capture succeeds but auth/workspace is missing, keep the idea and
|
|
|
220
256
|
|
|
221
257
|
Use `references/hook-research-playbook.md`.
|
|
222
258
|
|
|
259
|
+
If the host supports background agents, delegate the search/fetch/autopsy work
|
|
260
|
+
to one bounded `research-worker` before hook candidate generation. The worker
|
|
261
|
+
owns broad search, profile fetches, full-text matching, source filtering,
|
|
262
|
+
language extraction, and body-structure extraction. The orchestrator owns the
|
|
263
|
+
final save call, user-visible `Research Learning Report`, direction selection,
|
|
264
|
+
and drafting gate.
|
|
265
|
+
|
|
266
|
+
The research worker must return a compact packet only:
|
|
267
|
+
|
|
268
|
+
- source examples kept and rejected
|
|
269
|
+
- full adapted hook blocks
|
|
270
|
+
- exact phrase patterns and sentence shapes
|
|
271
|
+
- body structures and exact body language moves
|
|
272
|
+
- preview measurements
|
|
273
|
+
- track-person and gold-standard recommendations
|
|
274
|
+
- blocked states or confidence gaps
|
|
275
|
+
|
|
276
|
+
The research worker must not return all raw post bodies unless a specific full
|
|
277
|
+
text is required as a gold-standard candidate. Prefer summaries plus URLs and
|
|
278
|
+
the exact extracted phrase shapes.
|
|
279
|
+
|
|
223
280
|
Default flow:
|
|
224
281
|
|
|
225
282
|
1. Convert the idea into 3-8 search keywords.
|
|
@@ -230,7 +287,8 @@ Default flow:
|
|
|
230
287
|
6. Weigh shares/reposts above comments, comments above reactions, and reactions as weak reach unless paired with stronger signals. If shares/reposts are unavailable, record `repost_data_unavailable`.
|
|
231
288
|
7. Penalize lead-magnet or giveaway mechanics unless the user explicitly asks for a lead magnet post.
|
|
232
289
|
8. For story posts, extract the story mechanism that made the post work, not just the first line.
|
|
233
|
-
9. Extract hook structures,
|
|
290
|
+
9. Extract hook structures plus specific reusable words, phrases, sentence
|
|
291
|
+
shapes, transitions, and body language patterns.
|
|
234
292
|
10. Save the research with `mcp__sellable__save_hook_research`.
|
|
235
293
|
|
|
236
294
|
Record provenance:
|
|
@@ -247,8 +305,77 @@ Record provenance:
|
|
|
247
305
|
- full-text match status
|
|
248
306
|
- source hook preview measurements and whether they came from full text or a search preview
|
|
249
307
|
- selected hook patterns
|
|
308
|
+
- exact phrase patterns and sentence shapes
|
|
309
|
+
- body structures and body language patterns
|
|
250
310
|
- why each pattern fits the user's idea and voice
|
|
251
311
|
|
|
312
|
+
## Step 1.5: Research Learning Report
|
|
313
|
+
|
|
314
|
+
After saving research and before drafting, show the user what the system
|
|
315
|
+
learned when either:
|
|
316
|
+
|
|
317
|
+
- the user asked for research/checkpoint mode
|
|
318
|
+
- the research materially changes the likely hook/body direction
|
|
319
|
+
- the researched examples include new people worth tracking or examples worth
|
|
320
|
+
adding as gold standards
|
|
321
|
+
|
|
322
|
+
Default ad hoc drafting may proceed after this report only when the user clearly
|
|
323
|
+
asked for an immediate draft. In research checkpoint mode, stop here and ask
|
|
324
|
+
which direction to use.
|
|
325
|
+
|
|
326
|
+
The `Research Learning Report` must include:
|
|
327
|
+
|
|
328
|
+
```text
|
|
329
|
+
Research status:
|
|
330
|
+
- idea/topic:
|
|
331
|
+
- research artifact:
|
|
332
|
+
- search window:
|
|
333
|
+
- keywords:
|
|
334
|
+
- full-text coverage:
|
|
335
|
+
- repost/share data:
|
|
336
|
+
|
|
337
|
+
Best source examples:
|
|
338
|
+
1. author, URL, engagement, why kept, why not copied
|
|
339
|
+
|
|
340
|
+
Hook patterns learned:
|
|
341
|
+
1. full adapted hook block
|
|
342
|
+
- source mechanism:
|
|
343
|
+
- preview budget:
|
|
344
|
+
- internal question:
|
|
345
|
+
- why it fits / why it does not:
|
|
346
|
+
|
|
347
|
+
Specific words and phrase shapes:
|
|
348
|
+
1. "phrase or phrase shape"
|
|
349
|
+
- role:
|
|
350
|
+
- source:
|
|
351
|
+
- reusable forms:
|
|
352
|
+
- adapted Sellable form:
|
|
353
|
+
- do not copy:
|
|
354
|
+
|
|
355
|
+
Body structures learned:
|
|
356
|
+
1. structure name
|
|
357
|
+
- source:
|
|
358
|
+
- sequence:
|
|
359
|
+
- exact language moves:
|
|
360
|
+
- adapted Sellable body move:
|
|
361
|
+
|
|
362
|
+
Rejected examples:
|
|
363
|
+
- author/source:
|
|
364
|
+
- reason rejected:
|
|
365
|
+
|
|
366
|
+
Save recommendations:
|
|
367
|
+
- track people:
|
|
368
|
+
- gold-standard candidates:
|
|
369
|
+
|
|
370
|
+
Recommended draft directions:
|
|
371
|
+
1. hook block + body structure
|
|
372
|
+
2. hook block + body structure
|
|
373
|
+
3. hook block + body structure
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Keep this report concise enough to read, but concrete enough that another agent
|
|
377
|
+
could draft from it without redoing research.
|
|
378
|
+
|
|
252
379
|
## Step 2: Hook Candidates
|
|
253
380
|
|
|
254
381
|
Generate at least 12 hook candidates unless the user requested a smaller set.
|
|
@@ -35,6 +35,42 @@ Do not store gold standards under `~/.sellable/content/linkedin/**`. Content
|
|
|
35
35
|
folders are for ideas, hook research, drafts, published records, and future
|
|
36
36
|
comment history. Gold standards are durable writing memory.
|
|
37
37
|
|
|
38
|
+
## Creator Tracking
|
|
39
|
+
|
|
40
|
+
When an outside creator/person is approved as someone the user wants to keep
|
|
41
|
+
learning from, save the person separately from the gold-standard post.
|
|
42
|
+
|
|
43
|
+
Use:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
mcp__sellable__upsert_engage_tracked_person({
|
|
47
|
+
name,
|
|
48
|
+
linkedinUrl,
|
|
49
|
+
reason
|
|
50
|
+
})
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Tracked people live in:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
~/.sellable/configs/discovery/influencers.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Gold-standard post records live in:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
~/.sellable/configs/core/references/linkedin-posts/
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Save both when both are approved:
|
|
66
|
+
|
|
67
|
+
- tracked person: "keep fetching this creator's new posts"
|
|
68
|
+
- gold-standard post: "use this specific post as decomposed writing memory"
|
|
69
|
+
|
|
70
|
+
Do not conflate the two. A person can be tracked without any one post becoming
|
|
71
|
+
a gold standard, and a post can be saved as a gold standard without tracking the
|
|
72
|
+
author.
|
|
73
|
+
|
|
38
74
|
## Import Modes
|
|
39
75
|
|
|
40
76
|
### Personal Best Import
|
|
@@ -65,7 +101,11 @@ gold standards.
|
|
|
65
101
|
reach, and examples that cannot be adapted to the user's voice.
|
|
66
102
|
5. Present candidates with a clear "should we use these as gold standards?"
|
|
67
103
|
approval gate.
|
|
68
|
-
6.
|
|
104
|
+
6. Include a `track person?` recommendation for authors with repeated strong
|
|
105
|
+
topic-fit posts or when the user says they like the person.
|
|
106
|
+
7. Add only the user-approved post selections.
|
|
107
|
+
8. Call `mcp__sellable__upsert_engage_tracked_person` only for user-approved
|
|
108
|
+
tracked people.
|
|
69
109
|
|
|
70
110
|
## Candidate Presentation
|
|
71
111
|
|
|
@@ -86,6 +126,7 @@ Show compact candidate cards. Include:
|
|
|
86
126
|
- voice fit
|
|
87
127
|
- risks
|
|
88
128
|
- allowed use recommendation
|
|
129
|
+
- track person recommendation and reason
|
|
89
130
|
|
|
90
131
|
Approval prompt:
|
|
91
132
|
|
|
@@ -93,7 +134,7 @@ Approval prompt:
|
|
|
93
134
|
Gold-standard pack: <current_count>/20 approved.
|
|
94
135
|
|
|
95
136
|
These look like candidates worth saving. Which should I add?
|
|
96
|
-
Reply with numbers to add, "skip all", or "replace <existing> with <new>" if the pack is full.
|
|
137
|
+
Reply with numbers to add, "track <author>", "skip all", or "replace <existing> with <new>" if the pack is full.
|
|
97
138
|
```
|
|
98
139
|
|
|
99
140
|
Do not write candidates to the approved pack before the user chooses.
|
|
@@ -11,6 +11,58 @@ Derive 3-8 keyword searches from:
|
|
|
11
11
|
- proven search terms in engage memory
|
|
12
12
|
- tracked people/inspiration references when relevant
|
|
13
13
|
|
|
14
|
+
When research reveals a creator/person the user likes, keep their profile URL
|
|
15
|
+
with the source post. If the user approves tracking them, save them with
|
|
16
|
+
`mcp__sellable__upsert_engage_tracked_person` so future sessions can fetch
|
|
17
|
+
their posts directly instead of rediscovering them ad hoc.
|
|
18
|
+
|
|
19
|
+
## Background Research Worker
|
|
20
|
+
|
|
21
|
+
Use a background research worker when the host supports it and the research
|
|
22
|
+
needs more than a small handful of posts. This keeps the main orchestrator
|
|
23
|
+
focused on decisions instead of carrying a large source corpus.
|
|
24
|
+
|
|
25
|
+
Worker owns:
|
|
26
|
+
|
|
27
|
+
- broad keyword search
|
|
28
|
+
- tracked-person post fetches
|
|
29
|
+
- full-text matching by URL/activity ID
|
|
30
|
+
- duplicate removal
|
|
31
|
+
- lead-magnet, giveaway, engagement-bait, and off-voice filtering
|
|
32
|
+
- hook opening measurement
|
|
33
|
+
- exact phrase-pattern extraction
|
|
34
|
+
- body-structure extraction
|
|
35
|
+
- rejected-example notes
|
|
36
|
+
- track-person and gold-standard recommendations
|
|
37
|
+
|
|
38
|
+
Orchestrator owns:
|
|
39
|
+
|
|
40
|
+
- deciding whether research is enough
|
|
41
|
+
- saving `mcp__sellable__save_hook_research`
|
|
42
|
+
- showing the `Research Learning Report`
|
|
43
|
+
- asking which direction to draft
|
|
44
|
+
- drafting and validation
|
|
45
|
+
|
|
46
|
+
Worker output must be a compressed research packet, not a data dump:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
Research packet:
|
|
50
|
+
- sources kept: max 8
|
|
51
|
+
- sources rejected: max 8
|
|
52
|
+
- full adapted hook blocks: max 12
|
|
53
|
+
- exact phrase patterns: max 20
|
|
54
|
+
- body patterns: max 8
|
|
55
|
+
- source URLs and author profile URLs
|
|
56
|
+
- preview measurements
|
|
57
|
+
- confidence gaps
|
|
58
|
+
- save recommendations
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Do not return the full raw text of every post to the orchestrator. Include only
|
|
62
|
+
short source excerpts needed to explain a phrase pattern, plus URLs. Full text
|
|
63
|
+
belongs in the saved research artifact only when the user approves a specific
|
|
64
|
+
gold-standard candidate and it is safe to store.
|
|
65
|
+
|
|
14
66
|
## Default Search
|
|
15
67
|
|
|
16
68
|
Use `mcp__sellable__search_engagement_posts` with practical constraints:
|
|
@@ -117,17 +169,22 @@ appears cut off or body context is unavailable.
|
|
|
117
169
|
|
|
118
170
|
## Hook Extraction
|
|
119
171
|
|
|
120
|
-
Extract structure, not
|
|
172
|
+
Extract structure and reusable language patterns, not copied prose. The goal is
|
|
173
|
+
to learn the exact kinds of words, phrase shapes, sentence rhythms, and body
|
|
174
|
+
moves that are working, then adapt them into the user's voice.
|
|
121
175
|
|
|
122
176
|
For each shortlisted source post, record:
|
|
123
177
|
|
|
124
178
|
- URL
|
|
125
179
|
- author
|
|
180
|
+
- author profile URL when available
|
|
126
181
|
- engagement totals and available likes/comments/shares breakdown
|
|
127
182
|
- creator repeat evidence
|
|
128
183
|
- visible hook text or preview
|
|
129
184
|
- opening preview measurement fields from the section above
|
|
130
185
|
- hook mechanism
|
|
186
|
+
- exact hook language patterns: reusable words, phrase shapes, contrast forms,
|
|
187
|
+
sentence shapes, and transition moves
|
|
131
188
|
- story mechanism when the post is a story
|
|
132
189
|
- internal question created
|
|
133
190
|
- emotional trigger
|
|
@@ -135,6 +192,81 @@ For each shortlisted source post, record:
|
|
|
135
192
|
- lead magnet or engagement bait penalty
|
|
136
193
|
- weighted signal notes
|
|
137
194
|
- replicability score
|
|
195
|
+
- track person recommendation: `yes`, `no`, or `ask_user`
|
|
196
|
+
- tracking reason when recommended
|
|
197
|
+
|
|
198
|
+
## Specific Language Extraction
|
|
199
|
+
|
|
200
|
+
For each keeper, extract the source's specific language mechanics in this
|
|
201
|
+
format:
|
|
202
|
+
|
|
203
|
+
```text
|
|
204
|
+
Phrase pattern:
|
|
205
|
+
"<phrase or phrase shape>"
|
|
206
|
+
|
|
207
|
+
Role:
|
|
208
|
+
<what the words do: create contrast, compress pain, name the enemy, make timing
|
|
209
|
+
the villain, move from surface action to system outcome, etc.>
|
|
210
|
+
|
|
211
|
+
Source:
|
|
212
|
+
<author + URL>
|
|
213
|
+
|
|
214
|
+
Reusable forms:
|
|
215
|
+
- <template form 1>
|
|
216
|
+
- <template form 2>
|
|
217
|
+
- <template form 3>
|
|
218
|
+
|
|
219
|
+
Adapted to user's idea:
|
|
220
|
+
- <new phrase in the user's voice>
|
|
221
|
+
|
|
222
|
+
Do not copy:
|
|
223
|
+
<words, proof, joke, or company context that belongs to the source>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Examples of the level of specificity required:
|
|
227
|
+
|
|
228
|
+
- "not because [obvious reason]. because [real reason]."
|
|
229
|
+
- "most teams stop at [surface step]."
|
|
230
|
+
- "the [thing] was [state]. you just never [saw/used/launched] it in time."
|
|
231
|
+
- "the maintenance is the tax."
|
|
232
|
+
- "[thing] does not fail in your head. it fails in the gap between [A] and [B]."
|
|
233
|
+
- "the important part is not that AI [surface action]. the important part is that [system outcome]."
|
|
234
|
+
- "one [constrained operator] can run the whole [machine] if [constraint]."
|
|
235
|
+
|
|
236
|
+
Never reduce this section to high-level labels like "contrarian" or
|
|
237
|
+
"founder story." Those labels are allowed only after the exact phrase mechanics
|
|
238
|
+
are captured.
|
|
239
|
+
|
|
240
|
+
## Body Structure Extraction
|
|
241
|
+
|
|
242
|
+
For each keeper with full text available, extract the body in this format:
|
|
243
|
+
|
|
244
|
+
```text
|
|
245
|
+
Body pattern:
|
|
246
|
+
<short name>
|
|
247
|
+
|
|
248
|
+
Source:
|
|
249
|
+
<author + URL>
|
|
250
|
+
|
|
251
|
+
Sequence:
|
|
252
|
+
1. <paragraph/job 1>
|
|
253
|
+
2. <paragraph/job 2>
|
|
254
|
+
3. <paragraph/job 3>
|
|
255
|
+
|
|
256
|
+
Exact language moves:
|
|
257
|
+
- "<phrase shape or transition>"
|
|
258
|
+
- "<sentence pattern>"
|
|
259
|
+
- "<closing move>"
|
|
260
|
+
|
|
261
|
+
Adapted body move:
|
|
262
|
+
<how this would show up in the user's post>
|
|
263
|
+
|
|
264
|
+
Replicability:
|
|
265
|
+
high | medium | low
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
If full text is unavailable, record `full_text_unavailable` and do not infer
|
|
269
|
+
body structure beyond the visible preview.
|
|
138
270
|
|
|
139
271
|
## Story Mechanism
|
|
140
272
|
|
|
@@ -165,3 +297,19 @@ Draft-ready output must block or retry when:
|
|
|
165
297
|
## Save Requirement
|
|
166
298
|
|
|
167
299
|
Save the research with `mcp__sellable__save_hook_research` before drafting.
|
|
300
|
+
|
|
301
|
+
The saved research must contain enough detail to support a user-visible
|
|
302
|
+
`Research Learning Report`: source examples, full adapted hook blocks, exact
|
|
303
|
+
phrase patterns, body structures, rejected examples, tracked-person
|
|
304
|
+
recommendations, and gold-standard recommendations.
|
|
305
|
+
|
|
306
|
+
If the user approves a creator/person as a recurring inspiration source, also
|
|
307
|
+
call `mcp__sellable__upsert_engage_tracked_person` with:
|
|
308
|
+
|
|
309
|
+
- `name`: display name
|
|
310
|
+
- `linkedinUrl`: canonical LinkedIn profile URL
|
|
311
|
+
- `reason`: concise lane and why they are worth tracking
|
|
312
|
+
|
|
313
|
+
Do not track a person only because one post was viral. Track them when they have
|
|
314
|
+
repeated strong posts, unusually high topic fit, or the user explicitly says
|
|
315
|
+
they like them.
|