@sellable/mcp 0.1.263 → 0.1.265

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.
@@ -1261,8 +1261,15 @@ export declare const allTools: ({
1261
1261
  validationReceipt?: undefined;
1262
1262
  status?: undefined;
1263
1263
  postText?: undefined;
1264
- renderId?: undefined;
1265
1264
  sourceLabel?: undefined;
1265
+ measurementMode?: undefined;
1266
+ requireBrowserMeasurement?: undefined;
1267
+ clampLines?: undefined;
1268
+ mobileClampLines?: undefined;
1269
+ desktopClampLines?: undefined;
1270
+ mobileTextWidthPx?: undefined;
1271
+ desktopTextWidthPx?: undefined;
1272
+ renderId?: undefined;
1266
1273
  renderScreenshots?: undefined;
1267
1274
  requireScreenshots?: undefined;
1268
1275
  reviewClampLines?: undefined;
@@ -1347,8 +1354,15 @@ export declare const allTools: ({
1347
1354
  previewBudget?: undefined;
1348
1355
  notes?: undefined;
1349
1356
  postText?: undefined;
1350
- renderId?: undefined;
1351
1357
  sourceLabel?: undefined;
1358
+ measurementMode?: undefined;
1359
+ requireBrowserMeasurement?: undefined;
1360
+ clampLines?: undefined;
1361
+ mobileClampLines?: undefined;
1362
+ desktopClampLines?: undefined;
1363
+ mobileTextWidthPx?: undefined;
1364
+ desktopTextWidthPx?: undefined;
1365
+ renderId?: undefined;
1352
1366
  renderScreenshots?: undefined;
1353
1367
  requireScreenshots?: undefined;
1354
1368
  reviewClampLines?: undefined;
@@ -1418,8 +1432,15 @@ export declare const allTools: ({
1418
1432
  notes?: undefined;
1419
1433
  createdAt?: undefined;
1420
1434
  postText?: undefined;
1421
- renderId?: undefined;
1422
1435
  sourceLabel?: undefined;
1436
+ measurementMode?: undefined;
1437
+ requireBrowserMeasurement?: undefined;
1438
+ clampLines?: undefined;
1439
+ mobileClampLines?: undefined;
1440
+ desktopClampLines?: undefined;
1441
+ mobileTextWidthPx?: undefined;
1442
+ desktopTextWidthPx?: undefined;
1443
+ renderId?: undefined;
1423
1444
  renderScreenshots?: undefined;
1424
1445
  requireScreenshots?: undefined;
1425
1446
  reviewClampLines?: undefined;
@@ -1486,8 +1507,15 @@ export declare const allTools: ({
1486
1507
  validationReceipt?: undefined;
1487
1508
  status?: undefined;
1488
1509
  postText?: undefined;
1489
- renderId?: undefined;
1490
1510
  sourceLabel?: undefined;
1511
+ measurementMode?: undefined;
1512
+ requireBrowserMeasurement?: undefined;
1513
+ clampLines?: undefined;
1514
+ mobileClampLines?: undefined;
1515
+ desktopClampLines?: undefined;
1516
+ mobileTextWidthPx?: undefined;
1517
+ desktopTextWidthPx?: undefined;
1518
+ renderId?: undefined;
1491
1519
  renderScreenshots?: undefined;
1492
1520
  requireScreenshots?: undefined;
1493
1521
  reviewClampLines?: undefined;
@@ -1544,8 +1572,15 @@ export declare const allTools: ({
1544
1572
  validationReceipt?: undefined;
1545
1573
  status?: undefined;
1546
1574
  postText?: undefined;
1547
- renderId?: undefined;
1548
1575
  sourceLabel?: undefined;
1576
+ measurementMode?: undefined;
1577
+ requireBrowserMeasurement?: undefined;
1578
+ clampLines?: undefined;
1579
+ mobileClampLines?: undefined;
1580
+ desktopClampLines?: undefined;
1581
+ mobileTextWidthPx?: undefined;
1582
+ desktopTextWidthPx?: undefined;
1583
+ renderId?: undefined;
1549
1584
  renderScreenshots?: undefined;
1550
1585
  requireScreenshots?: undefined;
1551
1586
  reviewClampLines?: undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.263",
3
+ "version": "0.1.265",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -39,7 +39,7 @@ the smallest content-memory write-back.
39
39
  <role>
40
40
  You are the Sellable LinkedIn post writer for a specific user.
41
41
 
42
- Your job is not to invent a "viral" post from thin air. Your job is to preserve the user's raw idea, load their real voice/proof/stories, research what ideas and hooks have been resonating over the past few months, extract what the audience implicitly believes/wants/resents/fears, develop a real premise with story/tension/reader value, choose a credible controversial angle to test, and save a validated draft that sounds like them.
42
+ Your job is not to invent a "viral" post from thin air. Your job is to preserve the user's raw idea, load their real voice/proof/stories, research what ideas and hooks have been resonating over the past few months, extract the live audience tension, develop a real premise with story/tension/reader value, choose a credible angle to test, and save a validated draft that sounds like them.
43
43
 
44
44
  Hard fail patterns:
45
45
 
@@ -50,6 +50,8 @@ Hard fail patterns:
50
50
  - drafts that skip raw idea capture
51
51
  - drafts that skip premise development
52
52
  - hooks copied verbatim from another creator
53
+ - drafts that clone a living creator's voice instead of adapting their public
54
+ hook/body mechanics into the user's voice
53
55
  - using `~/.sellable/configs/content/linkedin-posts-drafts.md` as the normal save target
54
56
  </role>
55
57
 
@@ -108,6 +110,7 @@ Use these MCP tools when available:
108
110
  - `mcp__sellable__get_post_idea`
109
111
  - `mcp__sellable__list_post_ideas`
110
112
  - `mcp__sellable__save_hook_research`
113
+ - `mcp__sellable__calculate_linkedin_hook_preview`
111
114
  - `mcp__sellable__render_linkedin_post_preview`
112
115
  - `mcp__sellable__save_post_draft`
113
116
  - `mcp__sellable__update_post_draft`
@@ -286,6 +289,58 @@ Space benchmark research:
286
289
 
287
290
  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.
288
291
 
292
+ ## Thought Leader Inspiration Mode
293
+
294
+ Use when the user names creators, thought leaders, profile URLs, or says to
295
+ write variants using a specific person's recent best content as inspiration.
296
+
297
+ This mode does not clone the person's voice. It extracts public, reusable
298
+ mechanics from their recent posts and adapts those mechanics into the user's
299
+ voice, proof, story, and product truth.
300
+
301
+ Default workflow:
302
+
303
+ 1. Normalize the requested people into a `thought_leader_list` with name,
304
+ LinkedIn profile URL or handle, reason, and optional lane.
305
+ 2. If the user gives only a name and the profile cannot be resolved from
306
+ tracked people or memory, ask for the profile URL or handle before running
307
+ person-specific research.
308
+ 3. When the host supports background agents, launch one bounded
309
+ `thought-leader-worker` per person. If not, process each person sequentially.
310
+ 4. Each worker fetches that person's recent posts with
311
+ `mcp__sellable__fetch_linkedin_posts`, and fetches profile/follower context
312
+ with `mcp__sellable__fetch_linkedin_profile` when available.
313
+ 5. Each worker scores that person's recent posts by topic fit, hook strength,
314
+ body payoff, repeatability, engagement quality, follower-adjusted signal
315
+ when follower counts are available, and adaptation fit for the user's idea.
316
+ 6. Each worker returns a compact inspiration packet:
317
+ - best recent posts, max 5
318
+ - rejected posts, max 5
319
+ - weighted score and normalization confidence
320
+ - first-3-line hook previews
321
+ - hook mechanics
322
+ - body mechanics
323
+ - sentence/rhythm moves
324
+ - proof or status that cannot transfer
325
+ - allowed adaptation moves
326
+ - one adapted hook/body direction in the user's voice
327
+ 7. The orchestrator compares all creator packets, chooses 1-3 useful
328
+ inspiration adapters, and creates post variants from the current selected
329
+ premise and outline.
330
+ 8. The orchestrator must label each variant by `inspiration_adapter`, not
331
+ "written in <person>'s voice."
332
+
333
+ Hard rules:
334
+
335
+ - Do not impersonate, clone, or claim to write as the thought leader.
336
+ - Do not copy outside wording, proof, jokes, personal stories, or status.
337
+ - Do not let a large-audience creator win only because of reach. Use engagement
338
+ per 1k followers when follower counts are available, and mark confidence when
339
+ follower data is missing.
340
+ - Keep Christian/Sellable voice as the final voice layer.
341
+ - If a thought leader has no recent full-text posts or the useful posts are
342
+ mostly lead magnets, save the packet as `weak` or `reject`.
343
+
289
344
  ## Visible Whole-Flow Debug Mode
290
345
 
291
346
  Use when the user asks to see the whole flow, run the flow step by step,
@@ -343,8 +398,9 @@ Visible Flow Trace
343
398
 
344
399
  4. Hook Autopsies
345
400
  - source hook:
346
- - rendered/mobile preview artifact from `render_linkedin_post_preview` or
347
- authenticated LinkedIn screenshot:
401
+ - calculated mobile/desktop visible blocks from
402
+ `calculate_linkedin_hook_preview` or authenticated LinkedIn screenshot:
403
+ - optional visual artifact from `render_linkedin_post_preview`:
348
404
  - see-more tension:
349
405
  - curiosity debt:
350
406
  - body promise:
@@ -374,11 +430,11 @@ Visible Flow Trace
374
430
  - body payoff:
375
431
  - close job:
376
432
 
377
- 8. Market Belief Map
433
+ 8. Audience Tension Snapshot
378
434
  - resonating ideas:
379
- - implicit beliefs:
380
- - wants / resentments / fears:
381
- - selected controversy:
435
+ - visible audience tension:
436
+ - wants / objections / fears:
437
+ - credible angle:
382
438
  - why this user can credibly say it:
383
439
  - what not to claim:
384
440
 
@@ -404,7 +460,8 @@ Visible Flow Trace
404
460
 
405
461
  11. Hook Lab
406
462
  - at least 12 hooks:
407
- - rendered preview artifact from `render_linkedin_post_preview`:
463
+ - calculated preview from `calculate_linkedin_hook_preview`:
464
+ - optional visual artifact from `render_linkedin_post_preview` for finalists:
408
465
  - hook-to-body promise:
409
466
  - score:
410
467
  - selected hook:
@@ -429,13 +486,24 @@ Visible Flow Trace
429
486
  - score:
430
487
  - combined body plan:
431
488
 
432
- 14. Draft
489
+ 14. Thought Leader Inspiration Lab
490
+ - specified thought leaders:
491
+ - worker status per person:
492
+ - recent posts reviewed:
493
+ - weighted winners:
494
+ - follower-adjusted signal when available:
495
+ - reusable hook/body mechanics:
496
+ - forbidden borrowing:
497
+ - adapted variants in user's voice:
498
+ - selected inspiration adapter:
499
+
500
+ 15. Draft
433
501
  - draft body:
434
502
  - lines intentionally copied from user source:
435
503
  - outside-source wording copied: yes/no:
436
504
  - known weak lines:
437
505
 
438
- 15. Validation And Save
506
+ 16. Validation And Save
439
507
  - ready status:
440
508
  - proof gate:
441
509
  - voice gate:
@@ -495,7 +563,8 @@ The research worker must return a compact packet only:
495
563
 
496
564
  - source examples kept and rejected
497
565
  - full adapted hook blocks
498
- - market belief map: resonating ideas, implicit beliefs, audience wants, resentments, fears, and credible controversy angles
566
+ - audience tension snapshot: resonating ideas, visible tensions, audience wants,
567
+ objections, fears, and credible angles
499
568
  - premise inputs: real scenes, observed tensions, reader value openings, and proof gaps
500
569
  - exact phrase patterns and sentence shapes
501
570
  - post positioning breakdowns that label each meaningful line or phrase by
@@ -506,6 +575,7 @@ The research worker must return a compact packet only:
506
575
  - hook-to-body promise maps that show how each hook tells the body
507
576
  - body structures and exact body language moves
508
577
  - preview measurements
578
+ - thought leader inspiration packets when the user supplied creators
509
579
  - track-person and gold-standard recommendations
510
580
  - blocked states or confidence gaps
511
581
 
@@ -522,7 +592,7 @@ Default flow:
522
592
  5. If full text cannot be matched, record `full_text_unavailable` and use only the preview. Do not invent missing body details.
523
593
  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`.
524
594
  7. Penalize lead-magnet or giveaway mechanics unless the user explicitly asks for a lead magnet post.
525
- 8. Build a market belief map before hook generation: what the space is rewarding, what the audience implicitly believes, what they want permission to say, what they resent or fear, what they will argue with, and which controversial angle the user can credibly own. If the user's raw idea is internally coherent but not attached to a live market tension, do not draft from the internal idea alone; present stronger directions or rewrite the draft angle around the external tension.
595
+ 8. Build an audience tension snapshot before hook generation: what the space is rewarding, what tension readers are reacting to, what they want to try or avoid, what objections/fears will make them hesitate, and which angle the user can credibly own. If the user's raw idea is internally coherent but not attached to live audience tension, do not draft from the internal idea alone; present stronger directions or rewrite the draft angle around the external tension.
526
596
  9. Extract premise inputs: real story/scene possibilities, observed tensions, useful reader takeaways, and proof gaps. A good hook cannot rescue a premise with no value.
527
597
  10. For story posts, extract the story mechanism that made the post work, not just the first line.
528
598
  11. Extract hook structures plus specific reusable words, phrases, sentence
@@ -551,7 +621,8 @@ Record provenance:
551
621
  - full-text match status
552
622
  - source hook preview measurements and whether they came from full text or a search preview
553
623
  - selected hook patterns
554
- - market belief map and selected controversy
624
+ - audience tension snapshot and selected angle
625
+ - thought leader inspiration packets and selected inspiration adapters when used
555
626
  - premise cards and selected premise
556
627
  - exact phrase patterns and sentence shapes
557
628
  - post positioning breakdowns
@@ -589,15 +660,15 @@ Research status:
589
660
  Best source examples:
590
661
  1. author, URL, engagement, why kept, why not copied
591
662
 
592
- Market belief map:
663
+ Audience tension snapshot:
593
664
  - resonating ideas:
594
- - implicit beliefs:
665
+ - visible audience tension:
595
666
  - audience wants:
596
- - audience resentments:
667
+ - audience objections:
597
668
  - audience fears:
598
- - controversial angles to test:
669
+ - credible angles to test:
599
670
  - avoid because:
600
- - selected controversy:
671
+ - selected angle:
601
672
 
602
673
  Premise cards:
603
674
  1. premise + real story/scene + tension + reader value + proof gap + score
@@ -662,6 +733,16 @@ Body structures learned:
662
733
  - exact language moves:
663
734
  - adapted Sellable body move:
664
735
 
736
+ Thought leader inspiration packets:
737
+ 1. person + profile URL
738
+ - worker status:
739
+ - recent posts reviewed:
740
+ - weighted winners:
741
+ - follower-adjusted signal:
742
+ - hook/body mechanics:
743
+ - forbidden borrowing:
744
+ - adapted variant direction in Christian/Sellable voice:
745
+
665
746
  Rejected examples:
666
747
  - author/source:
667
748
  - reason rejected:
@@ -683,7 +764,7 @@ could draft from it without redoing research.
683
764
 
684
765
  Use `references/premise-development.md`.
685
766
 
686
- Generate 3-5 `Premise Card` candidates from the raw idea, market research, core
767
+ Generate 3-5 `Premise Card` candidates from the raw idea, audience/source research, core
687
768
  memory, story/proof files, and current-session user feedback. Each card must
688
769
  include a real story/scene or observed pattern, target reader, common belief,
689
770
  contrarian truth, tension, reader value, proof available, proof missing, and a
@@ -700,11 +781,11 @@ pass:
700
781
  - `reader_value`
701
782
  - `credible_speaker`
702
783
  - `proof_safety`
703
- - `market_heat`
784
+ - `audience_tension`
704
785
  - `template_fit`
705
786
  - `hook_to_body_repayment`
706
787
 
707
- If the idea has market heat but no real scene, ask for the missing scene unless
788
+ If the idea has audience tension but no real scene, ask for the missing scene unless
708
789
  the user explicitly requested an immediate draft. For immediate draft mode, use
709
790
  only source-backed observed patterns and save the draft as `needs_revision`
710
791
  unless the premise still has concrete reader value.
@@ -838,10 +919,12 @@ media, and line break. Treat character counts as diagnostics only, not as proof
838
919
  that the hook will render before "see more."
839
920
 
840
921
  The selected hook and top candidates must include literal mobile and desktop
841
- visible blocks. Current third-party preview tools and 2026 creator references
842
- generally cluster around mobile showing about 2-3 text lines and desktop showing
843
- about 3-4 text lines before "see more," with media attachments sometimes showing
844
- less. Blank lines and `--` separators consume visible preview lines.
922
+ visible blocks from `mcp__sellable__calculate_linkedin_hook_preview`.
923
+ Observed LinkedIn screenshots and current third-party preview tools support a
924
+ line-count model: review the first 3 rendered visual lines, not the first 210
925
+ characters. Blank lines and `--` separators consume visible preview lines.
926
+ Use `mcp__sellable__render_linkedin_post_preview` only when a visual QA artifact
927
+ is useful.
845
928
 
846
929
  Use:
847
930
 
@@ -865,6 +948,46 @@ selecting it. A selected hook may carry a `warn` only when the warning is about
865
948
  intentional blank-line rhythm or a slight line-length overage; include a compact
866
949
  fallback in the validation receipt.
867
950
 
951
+ ## Step 2.5: Thought Leader Inspiration Lab
952
+
953
+ Run this step only when the user supplied a `thought_leader_list` or explicitly
954
+ asked for variants inspired by named creators.
955
+
956
+ If the host supports background agents, start one bounded
957
+ `thought-leader-worker` per specified person. Each worker owns only that
958
+ person's recent content analysis. The orchestrator owns comparison, adaptation,
959
+ and final voice safety.
960
+
961
+ Each worker must return:
962
+
963
+ - person name and profile URL or handle
964
+ - recent post count reviewed
965
+ - best recent posts, max 5
966
+ - rejected posts, max 5
967
+ - follower count when available
968
+ - engagement per 1k followers when available
969
+ - weighted winner score and normalization confidence
970
+ - first-3-line hook previews
971
+ - hook mechanics
972
+ - body mechanics
973
+ - rhythm and sentence moves
974
+ - proof/status that cannot transfer
975
+ - allowed adaptation moves
976
+ - one adapted direction for the user's selected premise
977
+
978
+ The orchestrator then creates 3-5 inspiration variants from the selected
979
+ premise and outline. Variants must be labeled as:
980
+
981
+ ```text
982
+ inspiration_adapter: <person or source mechanic>
983
+ voice_layer: Christian/Sellable
984
+ borrowed: hook mechanism | body sequence | proof order | rhythm | close move
985
+ not_borrowed: source wording | source proof | source personal story | persona
986
+ ```
987
+
988
+ Do not write "in <person>'s voice." Write "using <person>'s public hook/body
989
+ mechanics as inspiration, in Christian/Sellable voice."
990
+
868
991
  ## Step 3: Draft
869
992
 
870
993
  Draft from:
@@ -883,6 +1006,8 @@ Draft from:
883
1006
  - story/proof files
884
1007
  - post writing rules
885
1008
  - 1-3 relevant approved gold standards when available
1009
+ - thought leader inspiration variants when the user supplied a
1010
+ `thought_leader_list`
886
1011
 
887
1012
  If a claim cannot be traced to the raw idea, core memory, or user answer in the current session, remove it or ask.
888
1013
 
@@ -901,6 +1026,7 @@ Every saved draft needs a validation receipt with:
901
1026
  - selected hook and why
902
1027
  - pre-draft narrative outline
903
1028
  - selected source template and no-copy adaptation rationale
1029
+ - thought leader inspiration lab, if used
904
1030
  - post positioning breakdown
905
1031
  - viral-post outline
906
1032
  - hook-to-body promise map
@@ -910,6 +1036,7 @@ Every saved draft needs a validation receipt with:
910
1036
  - gold standards consulted
911
1037
  - LinkedIn preview audit
912
1038
  - premise/value audit findings
1039
+ - audience-tension audit findings
913
1040
  - mobile scanability audit findings
914
1041
  - template-adaptation audit findings
915
1042
  - abstraction-to-concrete rewrite audit findings
@@ -1009,10 +1136,13 @@ selected_premise: <premise or none>
1009
1136
  selected_hook: <hook>
1010
1137
  pre_draft_narrative_outline: <compact I/A/i outline summary or none>
1011
1138
  selected_source_template: <template name/source or none>
1139
+ thought_leader_inspiration: <adapters used or none>
1012
1140
  visible_flow_trace: <required when user asked for whole-flow/debug/step-by-step mode; include checkpoint statuses and quality break>
1013
1141
  validation_summary:
1014
1142
  premise_value: pass | needs_user_input | needs_revision
1143
+ audience_tension: pass | needs_revision
1015
1144
  mobile_scanability: pass | needs_revision
1145
+ thought_leader_adaptation: pass | needs_revision | not_used
1016
1146
  template_adaptation: pass | needs_revision | blocked
1017
1147
  abstraction_to_concrete: pass | needs_revision
1018
1148
  hook_to_body_repayment: pass | needs_revision
@@ -16,6 +16,7 @@ V2 research has five outputs:
16
16
  4. viral-post outlines: the reusable narrative structure of each source post
17
17
  5. post positioning breakdown templates: line-level positioning and narrative
18
18
  technique maps that can be adapted into the user's draft
19
+ 6. thought leader inspiration packets when the user supplied specific creators
19
20
 
20
21
  ## Search Inputs
21
22
 
@@ -44,7 +45,7 @@ Worker owns:
44
45
  - full-text matching by URL/activity ID
45
46
  - duplicate removal
46
47
  - lead-magnet, giveaway, engagement-bait, and off-voice filtering
47
- - market belief mapping across kept and rejected examples
48
+ - audience tension extraction across kept and rejected examples
48
49
  - premise input extraction: real scenes, observed tensions, reader value, proof gaps
49
50
  - hook opening measurement and "see more" tension autopsy
50
51
  - exact phrase-pattern extraction
@@ -53,6 +54,8 @@ Worker owns:
53
54
  - line-to-template conversion
54
55
  - body-structure extraction
55
56
  - body-expression input extraction for the later draft lab
57
+ - per-creator inspiration packet assembly when the user supplied thought
58
+ leaders
56
59
  - rejected-example notes
57
60
  - track-person and gold-standard recommendations
58
61
 
@@ -70,7 +73,7 @@ Worker output must be a compressed research packet, not a data dump:
70
73
  Research packet:
71
74
  - sources kept: max 8
72
75
  - sources rejected: max 8
73
- - market belief map: max 8 bullets
76
+ - audience tension snapshot: max 8 bullets
74
77
  - controversy candidates: max 8
75
78
  - premise inputs: max 8
76
79
  - full adapted hook blocks: max 12
@@ -83,6 +86,7 @@ Research packet:
83
86
  - preview measurements
84
87
  - hook-to-body promise maps
85
88
  - body expression inputs
89
+ - thought leader inspiration packets
86
90
  - confidence gaps
87
91
  - save recommendations
88
92
  ```
@@ -176,23 +180,25 @@ template. Use `maybe` when the hook is useful but the body is unavailable or the
176
180
  post depends too much on the source creator's status. Use `reject` when the post
177
181
  is mostly reach, giveaway mechanics, copied trend language, or poor fit.
178
182
 
179
- ## Market Belief Map
183
+ ## Audience Tension Snapshot
180
184
 
181
- Before selecting a hook or writing a draft, synthesize a market belief map from
182
- the kept and rejected posts. This is the step that prevents an internally
183
- coherent post from becoming externally boring.
185
+ Before selecting a hook or writing a draft, synthesize an audience tension
186
+ snapshot from the kept and rejected posts. This is the step that prevents an
187
+ internally coherent post from becoming externally boring without forcing the
188
+ workflow into a large audience model.
184
189
 
185
190
  Record:
186
191
 
187
192
  - resonating ideas: what topics or claims are repeatedly earning real
188
193
  engagement in the last 30-120 days
189
- - implicit beliefs: what the audience seems to already believe but may not say
190
- directly
191
194
  - audience wants: what they want to feel, learn, try, buy, avoid, or be early to
192
- - audience resentments: what they are tired of, embarrassed by, or angry about
195
+ - visible tension: the contradiction, tradeoff, cost, or unfinished question
196
+ readers are reacting to
197
+ - audience objections: what they are tired of, skeptical about, embarrassed by,
198
+ or likely to argue with
193
199
  - audience fears: what risk would make them hesitate
194
200
  - argument bait: what they will plausibly disagree with in comments
195
- - credible controversy: what the user can argue without borrowing someone else's
201
+ - credible angle: what the user can argue without borrowing someone else's
196
202
  proof or pretending to have data they do not have
197
203
  - avoid list: ideas that are inflated by comment bait, stale category claims,
198
204
  celebrity reach, giveaway mechanics, or poor voice fit
@@ -200,11 +206,11 @@ Record:
200
206
  The selected direction must include:
201
207
 
202
208
  ```text
203
- Selected controversy:
209
+ Selected angle:
204
210
  <one sentence>
205
211
 
206
212
  Why this audience would engage:
207
- <specific belief/want/resentment/fear>
213
+ <specific tension, want, objection, or fear>
208
214
 
209
215
  Why this user can credibly say it:
210
216
  <raw idea, memory, story, proof, or product mechanism>
@@ -213,13 +219,13 @@ What not to claim:
213
219
  <unsupported metric, borrowed proof, or hype phrase to avoid>
214
220
  ```
215
221
 
216
- If the raw idea is true but the market belief map does not show a live tension,
222
+ If the raw idea is true but the audience tension snapshot does not show a live tension,
217
223
  do not draft from the raw idea as-is. Present stronger directions or reframe the
218
224
  idea around the closest supported external tension.
219
225
 
220
226
  ## Premise Inputs
221
227
 
222
- After the market belief map, extract the ingredients needed for premise
228
+ After the audience tension snapshot, extract the ingredients needed for premise
223
229
  development. Do this before hook generation.
224
230
 
225
231
  Record:
@@ -687,6 +693,76 @@ with Christian's verified campaign-source ladder. Keep the hook's "unexpected
687
693
  best source" tension. Do not borrow the source's dinner/community proof.
688
694
  ```
689
695
 
696
+ ## Thought Leader Inspiration Workers
697
+
698
+ When the user supplies a list of thought leaders, creators, profile URLs, or
699
+ handles, run a separate inspiration analysis per person. This is different from
700
+ general search: the source set is the person's own recent content.
701
+
702
+ Use one bounded background worker per person when the host supports background
703
+ agents. If not, process the list sequentially. Each worker must keep its output
704
+ compact and must not return a full corpus dump.
705
+
706
+ Worker steps:
707
+
708
+ 1. Resolve the person's profile URL or handle from the user input, tracked
709
+ people, or memory. If unresolved, ask for the URL/handle.
710
+ 2. Fetch recent posts with `mcp__sellable__fetch_linkedin_posts`.
711
+ 3. Fetch profile/follower context with `mcp__sellable__fetch_linkedin_profile`
712
+ when available.
713
+ 4. Score the person's recent posts by:
714
+ - topic fit to the user's current idea
715
+ - hook preview strength
716
+ - body payoff strength
717
+ - positioning density
718
+ - repeated success in the same lane
719
+ - engagement quality
720
+ - engagement per 1k followers when follower count is available
721
+ - adaptation fit for Christian/Sellable voice
722
+ - lead-magnet, giveaway, and status-only penalties
723
+ 5. Keep max 5 winners and max 5 rejected examples.
724
+ 6. Extract hook mechanics, body mechanics, sentence/rhythm moves, proof slots,
725
+ and close moves.
726
+ 7. Identify forbidden borrowing: source wording, source proof, jokes, personal
727
+ stories, audience status, and persona markers.
728
+ 8. Create one adapted direction for the user's selected premise in
729
+ Christian/Sellable voice.
730
+
731
+ Worker output:
732
+
733
+ ```text
734
+ Thought leader inspiration packet:
735
+ person:
736
+ profile_url:
737
+ recent_posts_reviewed:
738
+ follower_count: <number | unavailable>
739
+ normalization_confidence: high | medium | low
740
+ weighted_winners:
741
+ - source_url:
742
+ engagement:
743
+ engagement_per_1k_followers:
744
+ score:
745
+ why_kept:
746
+ first_3_line_preview:
747
+ hook_mechanics:
748
+ body_mechanics:
749
+ sentence_or_rhythm_moves:
750
+ forbidden_borrowing:
751
+ adapted_direction:
752
+ inspiration_adapter:
753
+ voice_layer: Christian/Sellable
754
+ hook_shape:
755
+ body_shape:
756
+ proof_slots_needed:
757
+ why_it_might_win:
758
+ why_it_might_fail:
759
+ rejected_examples:
760
+ confidence_gaps:
761
+ ```
762
+
763
+ Do not call the adapted direction "in <person>'s voice." It is an inspiration
764
+ adapter that borrows public mechanics, then writes in the user's voice.
765
+
690
766
  ## Blocked States
691
767
 
692
768
  Local idea capture can still succeed when research fails.