@sellable/mcp 0.1.240 → 0.1.242
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/server.js +13 -1
- package/dist/tools/content-posts.d.ts +315 -0
- package/dist/tools/content-posts.js +366 -15
- package/dist/tools/registry.d.ts +204 -0
- package/package.json +1 -1
- package/skills/create-post/SKILL.md +121 -18
- package/skills/create-post/references/hook-research-playbook.md +69 -2
- package/skills/create-post/references/post-file-contract.md +24 -2
- package/skills/create-post/references/post-validation.md +101 -6
- package/skills/create-post/references/premise-development.md +159 -0
|
@@ -6,6 +6,8 @@ Every saved draft needs a validation receipt. A draft without this receipt is no
|
|
|
6
6
|
|
|
7
7
|
- `sourceIdeaId`
|
|
8
8
|
- `hookResearchId`
|
|
9
|
+
- `iteration`
|
|
10
|
+
- `selectedPremiseCard`
|
|
9
11
|
- `candidateHooksConsidered`
|
|
10
12
|
- `selectedHook`
|
|
11
13
|
- `selectedHookWhy`
|
|
@@ -14,6 +16,8 @@ Every saved draft needs a validation receipt. A draft without this receipt is no
|
|
|
14
16
|
- `storyFilesConsulted`
|
|
15
17
|
- `goldStandardsConsulted`
|
|
16
18
|
- `voiceRulesApplied`
|
|
19
|
+
- `marketBeliefAudit`
|
|
20
|
+
- `premiseValueAudit`
|
|
17
21
|
- `linkedinPreviewAudit`
|
|
18
22
|
- `simplifierConcreteLanguageAudit`
|
|
19
23
|
- `antiAiAudit`
|
|
@@ -23,6 +27,45 @@ Every saved draft needs a validation receipt. A draft without this receipt is no
|
|
|
23
27
|
- `retryNeededReasons`
|
|
24
28
|
- `readyStatus`
|
|
25
29
|
|
|
30
|
+
## Iteration Receipt
|
|
31
|
+
|
|
32
|
+
Every saved draft needs iteration metadata, even the first draft. This lets the
|
|
33
|
+
content library show whether later drafts are actually improving.
|
|
34
|
+
|
|
35
|
+
For the first ready draft of an idea, record:
|
|
36
|
+
|
|
37
|
+
- `version: v1`
|
|
38
|
+
- `priorDraftId: none`
|
|
39
|
+
- `iterationRole: baseline`
|
|
40
|
+
- `changeIntent`
|
|
41
|
+
- `score`
|
|
42
|
+
- `verdict`
|
|
43
|
+
- `nextIterationTargets`
|
|
44
|
+
|
|
45
|
+
For later drafts, record:
|
|
46
|
+
|
|
47
|
+
- `version`
|
|
48
|
+
- `priorDraftId`
|
|
49
|
+
- `changeIntent`
|
|
50
|
+
- `whatChanged`
|
|
51
|
+
- `whatImproved`
|
|
52
|
+
- `whatGotWorse`
|
|
53
|
+
- `score`
|
|
54
|
+
- `verdict`
|
|
55
|
+
|
|
56
|
+
Use a score object with at least:
|
|
57
|
+
|
|
58
|
+
- `hook`
|
|
59
|
+
- `proof`
|
|
60
|
+
- `voice`
|
|
61
|
+
- `specificity`
|
|
62
|
+
- `skimmability`
|
|
63
|
+
- `publishConfidence`
|
|
64
|
+
|
|
65
|
+
Do not call a later draft better just because it is newer. If the hook is
|
|
66
|
+
stronger but proof, voice, or clarity got worse, say that in `whatGotWorse` and
|
|
67
|
+
set the verdict to `revise` or `reject`.
|
|
68
|
+
|
|
26
69
|
## Candidate Set
|
|
27
70
|
|
|
28
71
|
Generate multiple hook candidates before drafting. Do not lock onto the first draft.
|
|
@@ -30,6 +73,9 @@ Generate multiple hook candidates before drafting. Do not lock onto the first dr
|
|
|
30
73
|
Each candidate should include:
|
|
31
74
|
|
|
32
75
|
- hook text
|
|
76
|
+
- selected premise
|
|
77
|
+
- premise tension opened
|
|
78
|
+
- reader value implied
|
|
33
79
|
- source pattern
|
|
34
80
|
- score
|
|
35
81
|
- char count including newlines and first-line / first-two-line preview measurements
|
|
@@ -45,12 +91,61 @@ Each candidate should include:
|
|
|
45
91
|
After the first draft:
|
|
46
92
|
|
|
47
93
|
1. remove unsupported claims
|
|
48
|
-
2.
|
|
49
|
-
3.
|
|
50
|
-
4.
|
|
51
|
-
5.
|
|
52
|
-
6.
|
|
53
|
-
7.
|
|
94
|
+
2. verify the draft is anchored to the selected market belief and controversy
|
|
95
|
+
3. verify the real story/scene, tension, and reader value are visible early
|
|
96
|
+
4. tighten the hook
|
|
97
|
+
5. simplify abstract phrasing
|
|
98
|
+
6. replace generic language with concrete words only when supported
|
|
99
|
+
7. preserve the user's actual story and point
|
|
100
|
+
8. remove AI tells
|
|
101
|
+
9. re-check LinkedIn preview fit after edits
|
|
102
|
+
|
|
103
|
+
## Premise Value Audit
|
|
104
|
+
|
|
105
|
+
Before a draft can be `ready`, validate that the post is valuable, not just
|
|
106
|
+
well wrapped.
|
|
107
|
+
|
|
108
|
+
Record:
|
|
109
|
+
|
|
110
|
+
- `premise`: the selected premise in one sentence
|
|
111
|
+
- `realStoryOrScene`: the concrete scene, observation, or pattern used
|
|
112
|
+
- `targetReader`: who should care
|
|
113
|
+
- `commonBelief`: the belief the post argues against
|
|
114
|
+
- `contrarianTruth`: the sharper belief the post offers
|
|
115
|
+
- `visibleTension`: the uncomfortable gap or cost
|
|
116
|
+
- `readerValue`: what the reader learns, sees differently, or can do
|
|
117
|
+
- `proofAvailable`: source-backed proof used
|
|
118
|
+
- `proofMissing`: claims intentionally avoided or requiring user input
|
|
119
|
+
- `premiseQualityGates`: pass/fail for `specific_scene_or_pattern`,
|
|
120
|
+
`clear_reader`, `visible_tension`, `reader_value`, `credible_speaker`,
|
|
121
|
+
`proof_safety`, and `market_heat`
|
|
122
|
+
- `bodyOutline`: how the body delivers the premise before prose
|
|
123
|
+
|
|
124
|
+
If the draft has no specific scene or observed pattern, no visible tension, or
|
|
125
|
+
no reader value beyond "this is interesting," save as `needs_revision`. Do not
|
|
126
|
+
mark it `ready` because the hook passes preview limits.
|
|
127
|
+
|
|
128
|
+
## Market Belief Audit
|
|
129
|
+
|
|
130
|
+
Before a draft can be `ready`, validate that it is not merely an internally
|
|
131
|
+
coherent idea. It must be anchored to the saved research's market belief map.
|
|
132
|
+
|
|
133
|
+
Record:
|
|
134
|
+
|
|
135
|
+
- `resonatingIdea`: the current-space idea this draft enters
|
|
136
|
+
- `implicitBelief`: the belief the audience likely already holds
|
|
137
|
+
- `audienceWant`: what the audience wants permission, leverage, proof, or a new
|
|
138
|
+
category for
|
|
139
|
+
- `audienceResentmentOrFear`: what frustration or risk gives the post tension
|
|
140
|
+
- `selectedControversy`: the claim the post is testing
|
|
141
|
+
- `credibleWhyUs`: why the user can credibly say this from raw idea, memory,
|
|
142
|
+
story, proof, or product mechanism
|
|
143
|
+
- `engagementReason`: why someone would react, comment, repost, or argue
|
|
144
|
+
- `unsupportedHypeRemoved`: unsupported claims removed during finalizer
|
|
145
|
+
|
|
146
|
+
If `selectedControversy` is missing, if the audience belief is only a generic
|
|
147
|
+
label like "founders want growth," or if `credibleWhyUs` depends on borrowed
|
|
148
|
+
proof from another creator, save as `needs_revision`.
|
|
54
149
|
|
|
55
150
|
## LinkedIn Preview Audit
|
|
56
151
|
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Premise Development
|
|
2
|
+
|
|
3
|
+
A strong post is not an idea with a better hook. A strong post is a valuable
|
|
4
|
+
premise wrapped in a sharp opening.
|
|
5
|
+
|
|
6
|
+
Use this stage after market/hook research and before hook candidates. Do not
|
|
7
|
+
generate hook candidates until at least one `Premise Card` exists.
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Turn the raw idea into a real story, observed tension, or useful argument that a
|
|
12
|
+
specific reader would care about.
|
|
13
|
+
|
|
14
|
+
The premise must answer:
|
|
15
|
+
|
|
16
|
+
- who this is for
|
|
17
|
+
- what real scene, observation, or pattern created the idea
|
|
18
|
+
- what tension makes it worth reading
|
|
19
|
+
- what common belief it argues against
|
|
20
|
+
- what hidden truth or mechanism it reveals
|
|
21
|
+
- what value the reader gets
|
|
22
|
+
- why now
|
|
23
|
+
- why this user can credibly say it
|
|
24
|
+
- what proof is available and what proof is missing
|
|
25
|
+
|
|
26
|
+
If the premise has no real scene, no tension, and no reader value, stop before
|
|
27
|
+
drafting. Ask for the missing story or save only a `needs_revision` premise
|
|
28
|
+
artifact. Do not compensate with clever hooks.
|
|
29
|
+
|
|
30
|
+
## Real Story / Scene Search
|
|
31
|
+
|
|
32
|
+
Before writing premise cards, search the available source material:
|
|
33
|
+
|
|
34
|
+
- raw idea text
|
|
35
|
+
- voice memo or transcript if provided
|
|
36
|
+
- `core/story-bank.md`
|
|
37
|
+
- `core/answer-bank.md`
|
|
38
|
+
- `core/proof-ledger.md`
|
|
39
|
+
- `core/wins-ledger.md`
|
|
40
|
+
- approved references and gold standards
|
|
41
|
+
- current-session user corrections or rejections
|
|
42
|
+
|
|
43
|
+
Look for:
|
|
44
|
+
|
|
45
|
+
- a moment: "I saw X", "a founder said Y", "I opened Z and noticed..."
|
|
46
|
+
- a contradiction: the user wanted one thing but the workflow rewarded another
|
|
47
|
+
- a cost: time, attention, trust, missed learning, reputation, money
|
|
48
|
+
- a before/after: what changed in the user's belief
|
|
49
|
+
- a specific object: Slack note, customer call, campaign table, reply, list,
|
|
50
|
+
demo, failed draft, stale idea, messy workflow
|
|
51
|
+
|
|
52
|
+
If no real story is present, use an observed pattern only if it is traceable to
|
|
53
|
+
the raw source or memory. Mark the gap in the premise card. Do not fabricate a
|
|
54
|
+
customer, call, outcome, date, metric, or private scene.
|
|
55
|
+
|
|
56
|
+
## Premise Cards
|
|
57
|
+
|
|
58
|
+
Generate 3-5 premise cards before hooks. Each card must use this shape:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
Premise Card
|
|
62
|
+
|
|
63
|
+
premise:
|
|
64
|
+
<one-sentence argument>
|
|
65
|
+
|
|
66
|
+
real story / scene:
|
|
67
|
+
<specific moment, observation, or pattern from source/memory>
|
|
68
|
+
|
|
69
|
+
target reader:
|
|
70
|
+
<who should care>
|
|
71
|
+
|
|
72
|
+
common belief:
|
|
73
|
+
<what the reader or market usually believes>
|
|
74
|
+
|
|
75
|
+
contrarian truth:
|
|
76
|
+
<what this post argues instead>
|
|
77
|
+
|
|
78
|
+
tension:
|
|
79
|
+
<why this is uncomfortable, costly, or worth arguing about>
|
|
80
|
+
|
|
81
|
+
reader value:
|
|
82
|
+
<what the reader learns, sees differently, or can do after reading>
|
|
83
|
+
|
|
84
|
+
why now / market heat:
|
|
85
|
+
<what current research says is resonating>
|
|
86
|
+
|
|
87
|
+
credible why-us:
|
|
88
|
+
<why this user can say it from source, memory, proof, or product mechanism>
|
|
89
|
+
|
|
90
|
+
proof available:
|
|
91
|
+
<specific usable proof or source>
|
|
92
|
+
|
|
93
|
+
proof missing:
|
|
94
|
+
<claims that cannot be made yet>
|
|
95
|
+
|
|
96
|
+
best frame:
|
|
97
|
+
story | contrarian take | teardown | founder confession | future thesis | lesson
|
|
98
|
+
|
|
99
|
+
hook territories:
|
|
100
|
+
- <territory 1>
|
|
101
|
+
- <territory 2>
|
|
102
|
+
- <territory 3>
|
|
103
|
+
|
|
104
|
+
risk:
|
|
105
|
+
<why this premise might still be weak>
|
|
106
|
+
|
|
107
|
+
score:
|
|
108
|
+
<1-100 with short reason>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Premise Quality Gate
|
|
112
|
+
|
|
113
|
+
A premise can move to hook generation only when it passes all of these:
|
|
114
|
+
|
|
115
|
+
- `specific_scene_or_pattern`: pass
|
|
116
|
+
- `clear_reader`: pass
|
|
117
|
+
- `visible_tension`: pass
|
|
118
|
+
- `reader_value`: pass
|
|
119
|
+
- `credible_speaker`: pass
|
|
120
|
+
- `proof_safety`: pass
|
|
121
|
+
- `market_heat`: pass or explained
|
|
122
|
+
|
|
123
|
+
If any gate fails:
|
|
124
|
+
|
|
125
|
+
- in research checkpoint mode, show the cards and ask for the missing story or
|
|
126
|
+
direction
|
|
127
|
+
- in immediate draft mode, save the draft as `needs_revision`, not `ready`
|
|
128
|
+
- never mark a draft `ready` because the hook is clever
|
|
129
|
+
|
|
130
|
+
## Hook Relationship
|
|
131
|
+
|
|
132
|
+
Hooks are generated from the selected premise, not from the raw idea alone.
|
|
133
|
+
|
|
134
|
+
For each hook candidate, include:
|
|
135
|
+
|
|
136
|
+
- selected premise ID or title
|
|
137
|
+
- which tension it opens
|
|
138
|
+
- which reader value it implies
|
|
139
|
+
- whether the real scene appears in the first screen or shortly after
|
|
140
|
+
|
|
141
|
+
Reject hooks that are accurate but do not reveal the premise's tension or value.
|
|
142
|
+
|
|
143
|
+
## Body Relationship
|
|
144
|
+
|
|
145
|
+
Before drafting prose, create a short body outline for the selected premise:
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
body outline:
|
|
149
|
+
1. hook stack opens the tension
|
|
150
|
+
2. real scene or pattern makes it concrete
|
|
151
|
+
3. common belief gets named
|
|
152
|
+
4. contrarian truth lands
|
|
153
|
+
5. mechanism explains why
|
|
154
|
+
6. reader value becomes clear
|
|
155
|
+
7. close returns to the premise without summarizing
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
If this outline cannot be filled without inventing proof, return to premise
|
|
159
|
+
development.
|