taketomarket 2.2.0 → 2.3.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.
Files changed (180) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/README.md +34 -11
  4. package/bin/lib/campaign.cjs +12 -8
  5. package/bin/lib/codebase-scan.cjs +86 -0
  6. package/bin/lib/config.cjs +129 -0
  7. package/bin/lib/deploy.cjs +36 -0
  8. package/bin/lib/deviation.cjs +1 -1
  9. package/bin/lib/drift-log.cjs +4 -4
  10. package/bin/lib/health.cjs +32 -31
  11. package/bin/lib/install-detect.cjs +62 -0
  12. package/bin/lib/legacy-folder.cjs +100 -0
  13. package/bin/lib/playwright-check.cjs +26 -0
  14. package/bin/lib/site-location.cjs +22 -0
  15. package/bin/lib/state.cjs +3 -3
  16. package/bin/lib/svg-render.cjs +42 -0
  17. package/bin/ttm-tools.cjs +136 -4
  18. package/gates/base-gates.md +8 -8
  19. package/gates/gate-evaluation.md +8 -8
  20. package/install.js +37 -3
  21. package/package.json +10 -6
  22. package/playbooks/aeo.md +218 -114
  23. package/playbooks/affiliate.md +225 -160
  24. package/playbooks/email.md +236 -174
  25. package/playbooks/events.md +303 -213
  26. package/playbooks/landing-pages.md +305 -0
  27. package/playbooks/linkedin.md +264 -142
  28. package/playbooks/manifesto.md +322 -0
  29. package/playbooks/paid-ads.md +240 -189
  30. package/playbooks/positioning.md +340 -0
  31. package/playbooks/pr-media.md +308 -168
  32. package/playbooks/pseo.md +426 -0
  33. package/playbooks/seo.md +251 -158
  34. package/playbooks/social.md +253 -182
  35. package/playbooks/youtube.md +286 -181
  36. package/references/brand-color-theory.md +48 -0
  37. package/references/codex-image-gen-research.md +58 -0
  38. package/references/context-loading.md +6 -6
  39. package/references/humanizer-patterns.md +433 -0
  40. package/references/inline-education-blurbs.md +461 -0
  41. package/references/landing-page-anatomy.md +64 -0
  42. package/references/linkedin-post-patterns.md +174 -0
  43. package/references/logo-design-principles.md +55 -0
  44. package/references/meta-gate-evaluation.md +3 -3
  45. package/references/obra-superpowers-conventions.md +170 -0
  46. package/references/playbook-leaders.md +472 -0
  47. package/references/playwright-mcp-setup.md +164 -0
  48. package/references/positioning-check-report.md +2 -2
  49. package/references/pseo-page-anatomy.md +56 -0
  50. package/references/pseo-templates/alternative-anatomy.md +31 -0
  51. package/references/pseo-templates/alternative-content-playbook.md +32 -0
  52. package/references/pseo-templates/blog-anatomy.md +28 -0
  53. package/references/pseo-templates/blog-content-playbook.md +36 -0
  54. package/references/pseo-templates/comparison-anatomy.md +29 -0
  55. package/references/pseo-templates/comparison-content-playbook.md +35 -0
  56. package/references/pseo-templates/use-case-anatomy.md +28 -0
  57. package/references/pseo-templates/use-case-content-playbook.md +30 -0
  58. package/skills/ttm-101/SKILL.md +25 -0
  59. package/skills/ttm-aeo-check/SKILL.md +17 -12
  60. package/skills/ttm-affiliate-kit/SKILL.md +5 -0
  61. package/skills/ttm-archive/SKILL.md +5 -0
  62. package/skills/ttm-brand-refresh/SKILL.md +5 -0
  63. package/skills/ttm-brief/SKILL.md +5 -0
  64. package/skills/ttm-competitor-scan/SKILL.md +5 -0
  65. package/skills/ttm-deploy/SKILL.md +22 -0
  66. package/skills/ttm-discover/SKILL.md +17 -0
  67. package/skills/ttm-email-check/SKILL.md +17 -0
  68. package/skills/ttm-email-preflight/SKILL.md +17 -11
  69. package/skills/ttm-fix/SKILL.md +5 -0
  70. package/skills/ttm-health/SKILL.md +6 -1
  71. package/skills/ttm-humanize/SKILL.md +33 -0
  72. package/skills/ttm-icp-refresh/SKILL.md +5 -0
  73. package/skills/ttm-improve-skill/SKILL.md +18 -0
  74. package/skills/ttm-init/SKILL.md +10 -3
  75. package/skills/ttm-keyword-map/SKILL.md +17 -11
  76. package/skills/ttm-landing/SKILL.md +19 -0
  77. package/skills/ttm-learn/SKILL.md +5 -0
  78. package/skills/ttm-linkedin-post/SKILL.md +26 -0
  79. package/skills/ttm-measure/SKILL.md +5 -0
  80. package/skills/ttm-new-campaign/SKILL.md +5 -0
  81. package/skills/ttm-next/SKILL.md +5 -0
  82. package/skills/ttm-playwright-setup/SKILL.md +18 -0
  83. package/skills/ttm-positioning-check/SKILL.md +5 -0
  84. package/skills/ttm-positioning-shift/SKILL.md +5 -0
  85. package/skills/ttm-produce/SKILL.md +5 -0
  86. package/skills/ttm-pseo/SKILL.md +26 -0
  87. package/skills/ttm-repurpose/SKILL.md +5 -0
  88. package/skills/ttm-request-skill/SKILL.md +18 -0
  89. package/skills/ttm-research/SKILL.md +18 -6
  90. package/skills/ttm-resume/SKILL.md +5 -0
  91. package/skills/ttm-review/SKILL.md +5 -0
  92. package/skills/ttm-seo/SKILL.md +64 -0
  93. package/skills/ttm-seo-audit/SKILL.md +17 -12
  94. package/skills/ttm-ship/SKILL.md +5 -0
  95. package/skills/ttm-state/SKILL.md +5 -0
  96. package/skills/ttm-update/SKILL.md +152 -4
  97. package/skills/ttm-verify/SKILL.md +5 -0
  98. package/templates/agents-md.md +14 -4
  99. package/templates/campaign-research.md +6 -6
  100. package/templates/campaign-state.md +1 -1
  101. package/templates/claude-md.md +14 -4
  102. package/templates/linkedin-base-template.md +48 -0
  103. package/templates/next-step-footer.md +13 -0
  104. package/templates/production-manifest.json +4 -4
  105. package/templates/pseo/alternative-cms-schema.json +65 -0
  106. package/templates/pseo/blog-cms-schema.json +55 -0
  107. package/templates/pseo/comparison-cms-schema.json +56 -0
  108. package/templates/pseo/use-case-cms-schema.json +62 -0
  109. package/templates/reference-files/brand.md +51 -0
  110. package/templates/reference-files/product-dna.md +73 -0
  111. package/templates/site-scaffold/app/globals.css +2 -0
  112. package/templates/site-scaffold/app/layout.tsx +17 -0
  113. package/templates/site-scaffold/app/page.tsx +33 -0
  114. package/templates/site-scaffold/app/robots.ts +8 -0
  115. package/templates/site-scaffold/app/sitemap.ts +10 -0
  116. package/templates/site-scaffold/app/tokens.css +21 -0
  117. package/templates/site-scaffold/components/Comparison.tsx +14 -0
  118. package/templates/site-scaffold/components/Faq.tsx +14 -0
  119. package/templates/site-scaffold/components/Features.tsx +14 -0
  120. package/templates/site-scaffold/components/FinalCta.tsx +17 -0
  121. package/templates/site-scaffold/components/Footer.tsx +12 -0
  122. package/templates/site-scaffold/components/Hero.tsx +22 -0
  123. package/templates/site-scaffold/components/HowItWorks.tsx +14 -0
  124. package/templates/site-scaffold/components/PricingTeaser.tsx +14 -0
  125. package/templates/site-scaffold/components/Problem.tsx +14 -0
  126. package/templates/site-scaffold/components/SocialProof.tsx +14 -0
  127. package/templates/site-scaffold/components/Solution.tsx +14 -0
  128. package/templates/site-scaffold/components/Testimonials.tsx +14 -0
  129. package/templates/site-scaffold/components/UseCases.tsx +14 -0
  130. package/templates/site-scaffold/content/.gitkeep +0 -0
  131. package/templates/site-scaffold/lib/.gitkeep +0 -0
  132. package/templates/site-scaffold/next.config.mjs +10 -0
  133. package/templates/site-scaffold/package.json +25 -0
  134. package/templates/site-scaffold/postcss.config.mjs +3 -0
  135. package/templates/site-scaffold/public/llms.txt +9 -0
  136. package/templates/site-scaffold/tsconfig.json +21 -0
  137. package/templates/verification-report.md +1 -1
  138. package/workflows/channel/linkedin-post.md +178 -0
  139. package/workflows/discipline/affiliate-kit.md +65 -6
  140. package/workflows/discipline/{email-preflight.md → email-check.md} +39 -4
  141. package/workflows/discipline/repurpose.md +82 -31
  142. package/workflows/discipline/{aeo-check.md → seo/aeo.md} +13 -6
  143. package/workflows/discipline/{seo-audit.md → seo/audit.md} +13 -6
  144. package/workflows/discipline/{keyword-map.md → seo/keyword-map.md} +13 -6
  145. package/workflows/education/ttm-101.md +114 -0
  146. package/workflows/lifecycle/brief-positioning-check.md +1 -1
  147. package/workflows/lifecycle/brief.md +64 -28
  148. package/workflows/lifecycle/{research.md → discover.md} +61 -19
  149. package/workflows/lifecycle/fix.md +72 -37
  150. package/workflows/lifecycle/humanize.md +280 -0
  151. package/workflows/lifecycle/learn.md +72 -35
  152. package/workflows/lifecycle/measure.md +54 -18
  153. package/workflows/lifecycle/produce.md +88 -37
  154. package/workflows/lifecycle/review.md +71 -25
  155. package/workflows/lifecycle/ship.md +62 -18
  156. package/workflows/lifecycle/verify.md +72 -26
  157. package/workflows/reference-mgmt/brand-refresh.md +50 -13
  158. package/workflows/reference-mgmt/competitor-scan.md +51 -15
  159. package/workflows/reference-mgmt/icp-refresh.md +48 -12
  160. package/workflows/reference-mgmt/positioning-check.md +55 -20
  161. package/workflows/reference-mgmt/positioning-shift.md +53 -17
  162. package/workflows/setup/init-brand-colors.md +75 -0
  163. package/workflows/setup/init-logo.md +113 -0
  164. package/workflows/setup/init-product-dna.md +83 -0
  165. package/workflows/setup/init-questions.md +166 -30
  166. package/workflows/setup/init-validation.md +22 -0
  167. package/workflows/setup/init.md +144 -39
  168. package/workflows/setup/new-campaign.md +48 -12
  169. package/workflows/site/deploy.md +98 -0
  170. package/workflows/site/landing.md +156 -0
  171. package/workflows/site/pseo.md +96 -0
  172. package/workflows/site/quality-gates.md +88 -0
  173. package/workflows/utility/archive.md +45 -9
  174. package/workflows/utility/health.md +77 -3
  175. package/workflows/utility/improve-skill.md +233 -0
  176. package/workflows/utility/next.md +38 -2
  177. package/workflows/utility/playwright-setup.md +128 -0
  178. package/workflows/utility/request-skill.md +218 -0
  179. package/workflows/utility/resume.md +40 -3
  180. package/workflows/utility/state.md +42 -7
@@ -1,134 +1,166 @@
1
1
  ---
2
2
  discipline: social
3
- asset_types: [tweet, instagram-post, instagram-carousel, instagram-reel-caption, facebook-post, facebook-ad-copy]
4
- version: "1.0"
3
+ asset_types: [tweet, thread, instagram-post, tiktok-script]
4
+ version: "2.0"
5
5
  ---
6
6
 
7
7
  # Social Playbook
8
8
 
9
+ > Built on Dan Koe's **One-Person Business** model and the **2 Hour Writer** content engine. The frame: you are not running a social media account. You are running a one-person business whose distribution layer happens to look like X, Threads, Instagram, and TikTok. Posts are not the work. Posts are the visible exhaust of daily writing on a specialized topic. Read in Koe's voice: produce yourself, productize your specific knowledge, distill long-form into atomic ideas, ship daily, compound.
10
+ >
11
+ > **Scope:** This playbook covers the multi-platform short-form surface — X/Twitter, Threads, Instagram, TikTok. LinkedIn lives in its own playbook under Justin Welsh's Operating System. Both playbooks share the "one idea, many surfaces" instinct but optimize for different rooms.
12
+
9
13
  ## Production Guidance
10
14
 
11
- Social media is not one channel -- it is three distinct platforms with different algorithms, audiences, and content rules. This playbook covers X/Twitter, Instagram, and Facebook. Every post must be written for a specific platform, not adapted from a generic template. Copy-pasting the same content across platforms is an anti-pattern that violates native format rules on every platform.
15
+ ### The One-Person Business Frame
16
+
17
+ Every post produced under this playbook serves a **one-person business** — a single specialized human monetizing their accumulated knowledge × perspective × skill stack. Social is not a megaphone for a brand voice committee. It is leverage applied to one mind. Two consequences:
18
+
19
+ 1. **The voice belongs to one named human.** Not a brand. Not a "we." If the post could have been written by any marketer on the team, the post is off-thesis and gets rewritten.
20
+ 2. **The niche is non-negotiable.** A one-person business is built on a micro-niche so specific that demand is undeniable and you can charge premium for what you know. Generalist content gets buried. If a post drifts toward mass-audience self-help, it gets rewritten.
21
+
22
+ When in doubt, ask: *would this post make sense if it were the only thing a stranger ever read from this account?* If the answer is no — if it requires the broader brand context to land — it isn't a one-person-business post yet.
23
+
24
+ ### The 2 Hour Writer Engine
25
+
26
+ Production runs on Koe's **2 Hour Writer** rhythm: one daily writing session produces one long-form anchor (the newsletter or essay), and the social surfaces are downstream **distillations** of that anchor. The pipeline:
27
+
28
+ 1. **Capture** — sentences, observations, sharp lines collected throughout the day.
29
+ 2. **Anchor (daily, long-form)** — one essay, one newsletter section, one chapter draft. This is the original thinking.
30
+ 3. **Distill (social surfaces)** — atomic ideas extracted from the anchor:
31
+ - 3–5 X/Threads posts (one idea each)
32
+ - 1 X thread (the spine of the essay, compressed)
33
+ - 1 Instagram carousel (visual breakdown)
34
+ - 1 TikTok script (one idea, performed)
35
+ 4. **Compound** — the same idea reappears across platforms over weeks because compounding requires repetition, not novelty.
36
+
37
+ **A standalone social post that did not come from a longer original work is a smell.** It usually means the writer skipped the thinking step and went straight to performance. The remediation is not "write a better post." The remediation is to write the essay first, then distill.
38
+
39
+ ### Specialized Knowledge, Not Mass Appeal
40
+
41
+ Niche-down until it feels uncomfortable. Then niche-down again. The audience-of-one principle:
42
+
43
+ - Write for one specific person who looks like the customer of the one-person business. Not "marketers." Not "founders." A named role with a named problem at a named stage.
44
+ - The litmus test: *would a generalist content creator be embarrassed to publish this because it's too specific?* If yes, you are in the right zone.
45
+ - Mass-audience platitudes ("hustle harder," "consistency is key," "your mindset is everything") are anti-content under this playbook. They get followers who will never buy.
46
+
47
+ ### Distillation, Not Performance
48
+
49
+ The first line of a post is **a sharp idea**, not a hook-bait device. Koe's distinction:
12
50
 
13
- ### General Social Principles
51
+ - **Sharp idea opener** — a complete claim that earns the rest of the post. ("Most one-person businesses fail because the founder confuses output with leverage.")
52
+ - **Hook-bait opener** — a pattern-interrupt device that promises something the post doesn't pay off. ("I lost $80K in 90 days. Here's what I learned.") This is engagement-farming, not writing.
14
53
 
15
- - **Native format preference:** Each platform rewards native content (text, image, video created for that platform) over link posts. Link-only posts get suppressed across all three platforms.
16
- - **Platform voice:** Adapt tone per platform while maintaining brand voice from BRAND.md. X is concise and direct. Instagram is visual-first with descriptive captions. Facebook allows longer narrative and community engagement.
17
- - **One idea per post:** Social posts succeed by delivering one clear point, not summarizing multiple ideas. If the idea is complex, break it into a thread (X) or carousel (Instagram).
54
+ If the first line could be the only line and still teach something, the post is doing distillation. If the first line only makes sense because of what follows, the post is doing performance — rewrite.
18
55
 
19
- ### X/Twitter Production Rules
56
+ ### Authenticity Over Polish
20
57
 
21
- - Maximum value in minimum words. Target under 200 characters for highest engagement even though the limit is 280.
22
- - **No rhetorical questions.** The X algorithm deprioritizes posts with rhetorical questions (questions that do not expect an answer). Use statements, data points, or direct challenges instead. Questions that genuinely invite a response are acceptable.
23
- - Thread-first for longer content: if the idea needs more than 280 characters, write as a thread with each tweet standalone-valuable. Number tweets in threads longer than 3 posts.
24
- - URLs count as 23 characters regardless of actual length (X's t.co link wrapping).
25
- - Hashtags: 1-3 maximum, integrated naturally or at end. More than 3 looks spammy on X.
58
+ Engineer-creators win when they sound like themselves. Koe is explicit: outsourcing your voice to a ghostwriter before the audience knows who you are kills the trust signal that makes a one-person business work. Applied here:
26
59
 
27
- ### Instagram Production Rules
60
+ - Write in the voice you actually speak in. If you say "honestly" out loud, write "honestly." If you would never say "leverage your synergies," never write that.
61
+ - Idiosyncratic phrasing is a feature. The audience is buying *this specific human*, not a polished feed.
62
+ - Verifier note: voice deviations between platforms beyond the format constraints listed below are an anti-pattern (see DISC-SOCIAL-04).
28
63
 
29
- - **Visual-first:** The image or carousel IS the content. The caption supports and extends the visual, not the other way around. Do not write a caption that makes sense without seeing the image.
30
- - **Carousel structure:** 1:1 (feed-optimized) or 4:5 (maximum vertical space) ratio. Maximum 10 slides. Cover slide must have a hook. Content slides should have one point each. Closing slide should have a CTA.
31
- - **Caption structure:** Hook in first line (before "more" truncation at ~125 characters), value in body, CTA and hashtags at end.
32
- - **Hashtags:** 5-15 relevant hashtags, placed at the end of caption or in the first comment. Mix of broad and niche tags.
33
- - **Reel captions:** Under 150 characters for visibility -- reels have less caption real estate.
34
- - If a CTA needs a link, reference "link in bio" -- Instagram does not allow clickable links in post captions.
64
+ ### Build Assets, Not Posts
35
65
 
36
- ### Facebook Production Rules
66
+ Every distilled post must be **reusable**. The asset graph:
37
67
 
38
- - **Text before media:** Facebook shows text above images/videos. Lead with the hook in the first sentence -- do not let an image speak for itself.
39
- - **Longer narrative acceptable:** 100-500 words perform well on Facebook. The first 100 words are visible before the "See more" truncation.
40
- - **Community engagement:** Ask questions, run polls, invite shares. Facebook's algorithm weights shares and meaningful comments over reactions.
41
- - **Hashtags: minimal.** 0-2 hashtags maximum. Facebook hashtags have minimal discovery benefit and look out of place in the feed.
42
- - **Video preference:** Native video (uploaded directly, not linked from YouTube) gets significantly more reach. Square (1:1) or vertical (4:5) formats preferred in feed.
68
+ - A line of the essay a tweet a thread tweet a carousel slide a TikTok hook a chapter sub-heading.
69
+ - Atomic ideas have IDs in the writer's swipe file. Reposting the same atomic idea every 90 days with a new framing is the engine, not duplication.
70
+ - A post that cannot be reused anywhere else is a leak in the system. Either upgrade the idea or cut it.
71
+
72
+ ### Long-Form Anchor Is Required
73
+
74
+ Per Koe: **top of funnel = social platforms. Long-form = the relationship layer.** A social-only operation with no newsletter, no blog, no essay archive is a treadmill. Posts vanish; long-form compounds. The verifier checks (via DISC-SOCIAL-05) that the parent campaign declares its long-form anchor — and that the social distillation traces back to it.
43
75
 
44
76
  ---
45
77
 
46
78
  ## Discipline Gates
47
79
 
48
- ### DISC-SOC-01: Platform Character Limits -- Tier 1
80
+ ### DISC-SOCIAL-01: Distilled From Long-Form Anchor -- Tier 1
49
81
 
50
- **Checks:** Content length against platform-specific maximums
51
- **Against:** Platform specifications for the target platform
82
+ **Checks:** Whether the post is a distillation of a longer original work, not a standalone performance
83
+ **Against:** The campaign's declared long-form anchor (newsletter issue, essay, blog post) referenced in the asset metadata or campaign brief
52
84
 
53
85
  #### Evaluation Criteria
54
86
 
55
- 1. **X/Twitter limit**
56
- - PASS: Post is under 280 characters with URLs counted as 23 characters each
57
- - WARN: Post is 260-280 characters (functional but no room for retweet commentary or quote-tweet additions)
58
- - FAIL: Post exceeds 280 characters (will not publish)
59
- - N/A: Asset is not targeting X/Twitter
87
+ 1. **Anchor traceability**
88
+ - PASS: The asset metadata names a specific long-form anchor (essay slug, newsletter issue number, blog URL) and the post's core idea appears in that anchor
89
+ - WARN: An anchor is referenced but the connection is loose the post extends the theme but not a specific passage
90
+ - FAIL: No anchor declared, or the anchor declared does not contain the idea — the post is a freestyle performance with no upstream thinking
60
91
 
61
- 2. **Instagram caption limit**
62
- - PASS: Caption is under 2,200 characters
63
- - WARN: Caption is 2,000-2,200 characters (approaching limit, may need trimming)
64
- - FAIL: Caption exceeds 2,200 characters (will be truncated by platform)
65
- - N/A: Asset is not targeting Instagram
92
+ ### DISC-SOCIAL-02: Sharp-Idea First Line -- Tier 1
66
93
 
67
- 3. **Facebook limit**
68
- - PASS: Post is under 1,500 characters with key message in first 100 words (visible before truncation)
69
- - WARN: Post is 1,500-2,000 characters (long but functional; key message should be front-loaded)
70
- - FAIL: Post exceeds 2,000 characters or key message is buried after the first 200 words
71
- - N/A: Asset is not targeting Facebook
94
+ **Checks:** The first line is a complete, sharp idea — not a hook-bait device, rhetorical pattern-interrupt, or curiosity-gap setup
95
+ **Against:** Post body (first sentence)
72
96
 
73
- ### DISC-SOC-02: Native Format Preference -- Tier 2
97
+ #### Evaluation Criteria
74
98
 
75
- **Checks:** Content formatted for native platform consumption
76
- **Against:** Platform best practices for native content
99
+ 1. **Opener type**
100
+ - PASS: First line states a complete claim or observation that teaches something on its own ("Specialized knowledge compounds; generalist content evaporates.")
101
+ - WARN: First line is a partial idea that requires the next line to land but is still substantive ("There's a reason most one-person businesses stall at $10K/month.")
102
+ - FAIL: First line is engagement-bait — a rhetorical question ("Ever wonder why...?"), a loss-confession hook ("I lost $X in Y days"), a curiosity-gap tease ("Nobody talks about this but..."), or a pattern-interrupt with no payoff ("STOP scrolling.")
77
103
 
78
- #### Evaluation Criteria
104
+ ### DISC-SOCIAL-03: Niche-Relevant, Not Mass-Audience -- Tier 1
105
+
106
+ **Checks:** The post speaks to a specific micro-niche, not a generalist self-improvement audience
107
+ **Against:** Post body + campaign ICP definition
79
108
 
80
- 1. **Format appropriateness**
81
- - PASS: Content uses native format -- X: text, image, or thread; Instagram: image, carousel, or reel; Facebook: text+image, native video, or poll
82
- - WARN: Link-based post but with substantial native text that delivers value independently of the link
83
- - FAIL: Link-only post with no native content -- just a URL or "Check this out: [link]" with no additional context
109
+ #### Evaluation Criteria
84
110
 
85
- 2. **Media format**
86
- - PASS: Images or video in platform-preferred ratios (Instagram: 1:1 or 4:5; Facebook: 1.91:1 for link previews, 1:1 or 4:5 for native; X: 16:9 or 1:1)
87
- - WARN: Media present but uses non-standard ratio (will display with cropping or letterboxing)
88
- - FAIL: N/A -- media is optional on some platforms. Only FAIL if media is present but severely wrong format (e.g., portrait video in a landscape container, or image so distorted it hurts readability)
111
+ 1. **Niche specificity**
112
+ - PASS: The post names a specific role, stage, or situation that the campaign ICP would recognize as theirs ("If you're an engineer-founder shipping your first SaaS solo, your distribution problem is not a marketing problem.")
113
+ - WARN: The post is on-topic for the niche but uses generalist framing the specificity is implied, not stated
114
+ - FAIL: The post could appear on a generic motivation/hustle/mindset account and nobody would notice no named role, no named stage, no named problem unique to the niche
89
115
 
90
- ### DISC-SOC-03: Platform-Specific Rules -- Tier 1
116
+ ### DISC-SOCIAL-04: Same-Human Voice Across Platforms -- Tier 2
91
117
 
92
- **Checks:** Platform-specific content rules that affect reach and engagement
93
- **Against:** Current platform algorithm guidelines
118
+ **Checks:** Voice consistency across the X/Threads/Instagram/TikTok variants of the same idea — one human, not four marketing teams
119
+ **Against:** All asset variants in the same distillation group
94
120
 
95
121
  #### Evaluation Criteria
96
122
 
97
- 1. **X/Twitter rhetorical questions**
98
- - PASS: No rhetorical questions -- post uses statements, data points, or direct challenges
99
- - WARN: Question present but phrased as a genuine request for response (e.g., "What tool do you use for email automation?" -- expects real answers)
100
- - FAIL: Rhetorical question that does not expect an answer (e.g., "Don't you hate when...?", "Who else thinks...?", "Isn't it crazy that...?")
101
- - N/A: Asset is not targeting X/Twitter
123
+ 1. **Voice coherence**
124
+ - PASS: Variants share vocabulary, cadence, and idiosyncratic phrasing — only format-driven differences (length, line breaks, visual structure) vary
125
+ - WARN: One variant drifts toward a different register (e.g., the TikTok script suddenly uses creator-economy slang the X post would never use)
126
+ - FAIL: Variants read as if written by different people different vocabulary, different stance, different level of formality with no platform reason
102
127
 
103
- 2. **Instagram carousel structure**
104
- - PASS: Carousel has a cover slide with a hook, content slides with one key point each, and a closing CTA slide
105
- - WARN: Carousel present but missing clear structure (e.g., no cover hook, or CTA buried mid-carousel)
106
- - FAIL: Carousel with walls of text per slide, or slides with no narrative flow (random order would not change meaning)
107
- - N/A: Asset is not an Instagram carousel
128
+ ### DISC-SOCIAL-05: Compounding-Friendly Asset Design -- Tier 2
108
129
 
109
- 3. **Facebook text-before-media**
110
- - PASS: Text appears above any image or video with a hook in the first sentence
111
- - WARN: Text present but hook is weak or buried after generic opening
112
- - FAIL: Image or video posted with no text or minimal text (under 20 characters)
113
- - N/A: Asset is not targeting Facebook
130
+ **Checks:** The post is built as a reusable asset, not a one-shot performance
131
+ **Against:** Post body + swipe-file metadata (if present)
114
132
 
115
- ### DISC-SOC-04: Hashtag and Mention Hygiene -- Tier 2
133
+ #### Evaluation Criteria
134
+
135
+ 1. **Reusability**
136
+ - PASS: The atomic idea in the post is one that could be reframed and republished in 90 days, or recycled into another surface (thread, carousel, chapter) without modification beyond format
137
+ - WARN: The post is timely (references a current event or thread) and would need fresh framing to recycle, but the underlying claim is reusable
138
+ - FAIL: The post is so tied to a transient moment (a viral tweet reply, a one-off meme) that it has no second life — the asset is consumed on publish
139
+
140
+ ### DISC-SOCIAL-06: Platform-Native Format Compliance -- Tier 1
116
141
 
117
- **Checks:** Platform-appropriate hashtag and mention usage
118
- **Against:** Platform-specific engagement data and best practices
142
+ **Checks:** Content respects the platform's native format constraints
143
+ **Against:** Platform specifications for the target surface
119
144
 
120
145
  #### Evaluation Criteria
121
146
 
122
- 1. **Hashtag count**
123
- - PASS: X/Twitter 1-3 hashtags; Instagram 5-15 hashtags; Facebook 0-2 hashtags
124
- - WARN: Slightly above or below optimal range per platform (e.g., X with 4 hashtags, Instagram with 3-4 or 16-20, Facebook with 3)
125
- - FAIL: X 5+ hashtags; Instagram 25+ hashtags; Facebook 5+ hashtags
126
- - N/A: Platform does not benefit from hashtags or post intentionally omits them with documented reason
147
+ 1. **X/Twitter (single post or thread)**
148
+ - PASS: Each tweet ≤ 280 characters (URLs counted as 23); thread 9 tweets; each tweet stands alone as a teachable unit
149
+ - WARN: Tweet is 260–280 characters (no room for quote-tweet additions), or thread is 10–12 tweets (long but functional)
150
+ - FAIL: Any tweet exceeds 280 characters, or thread exceeds 12 tweets, or thread has tweets that cannot stand alone
151
+ - N/A: Asset is not targeting X/Twitter or Threads
127
152
 
128
- 2. **Mention accounting**
129
- - PASS: Mentions are relevant to the content, and character count including mentions stays within platform limits
130
- - WARN: Mentions present and character limit is tight -- removing a mention would improve readability
131
- - FAIL: Mentions push content over the platform character limit, or mentions are irrelevant tag-spam
153
+ 2. **Instagram (post or carousel)**
154
+ - PASS: Carousel 10 slides, 1:1 or 4:5 ratio, cover slide carries the sharp idea, one teaching point per content slide, closing slide names the long-form anchor or CTA
155
+ - WARN: Carousel uses 11 slides via a workaround, or cover slide is decorative rather than idea-carrying
156
+ - FAIL: Carousel exceeds 10 slides natively (impossible auto-truncated), or has slides with walls of text that should have been the caption
157
+ - N/A: Asset is not targeting Instagram
158
+
159
+ 3. **TikTok script**
160
+ - PASS: Script ≤ 90 seconds spoken, opens with the sharp idea in the first 3 seconds, one teaching point, no engagement-bait CTA at end
161
+ - WARN: Script is 90–120 seconds (over native sweet spot but still in algorithmic range)
162
+ - FAIL: Script exceeds 120 seconds, or opens with a pattern-interrupt with no payoff in the first 3 seconds
163
+ - N/A: Asset is not a TikTok script
132
164
 
133
165
  ---
134
166
 
@@ -140,166 +172,205 @@ None -- all base gates keep default tiers.
140
172
 
141
173
  ## Format Rules
142
174
 
143
- Platform-specific formatting enforced during production:
175
+ Platform-specific formatting enforced during production. These constraints are the *containers*; the One-Person Business thesis is the content.
144
176
 
145
- ### X/Twitter
177
+ ### X / Twitter / Threads
146
178
 
147
- - **Character limit:** 280 (URLs count as 23 characters regardless of actual length)
148
- - **Hashtags:** 1-3, integrated naturally in text or placed at end
149
- - **Thread posts:** Each tweet standalone-valuable, numbered if thread exceeds 3 tweets
150
- - **Media:** 16:9 or 1:1 images, 4 images maximum per tweet
151
- - **No rhetorical questions:** Use statements or genuine questions only
152
- - **Quote tweets:** Under 200 characters to leave room for the quoted content
179
+ - **Single post:** 280 characters (URLs count as 23 regardless of actual length).
180
+ - **Thread length:** 9 tweets per thread is the sweet spot. Threads over 12 tweets get truncated by reader attention long before by the platform.
181
+ - **Each tweet standalone-teachable.** Strip the surrounding tweets and any single tweet should still teach. If a tweet only exists as connective tissue, cut it.
182
+ - **Numbered threads** only when sequence matters (a how-to). Idea threads (Koe's default) do not need numbering — each tweet is its own atom.
183
+ - **Hashtags:** 0–2 maximum. Hashtags on X are vestigial. Use them only when joining an active conversation.
184
+ - **Media:** 16:9 or 1:1. Quote-tweet additions stay under 200 characters to leave room for the quoted content.
153
185
 
154
186
  ### Instagram
155
187
 
156
- - **Caption limit:** 2,200 characters
157
- - **Carousel:** 1:1 or 4:5 ratio, maximum 10 slides, cover slide with hook, closing slide with CTA
158
- - **Hashtags:** 5-15, placed at end of caption or in first comment
159
- - **Bio link reference:** If CTA needs a link, reference "link in bio" -- no clickable links in captions
160
- - **Reel caption:** Under 150 characters for visibility
161
- - **Image minimum resolution:** 1080x1080 (1:1) or 1080x1350 (4:5)
188
+ - **Caption:** 2,200 characters. The first 125 characters before the "more" truncation must carry the sharp idea — not a generic intro.
189
+ - **Carousel:** 1:1 or 4:5 ratio, **maximum 10 slides** (platform-enforced).
190
+ - Slide 1 (cover): the sharp idea, large type, no visual clutter.
191
+ - Slides 2–9 (content): one teaching point per slide.
192
+ - Slide 10 (closing): the long-form anchor reference ("Full essay in bio") or one CTA. Not both.
193
+ - **Reels caption:** 150 characters for visibility.
194
+ - **Hashtags:** 5–10 niche-specific tags. Avoid mass-audience tags (#motivation, #entrepreneur) — they pull the wrong audience.
195
+ - **No clickable links** in captions — reference "link in bio."
162
196
 
163
- ### Facebook
197
+ ### TikTok
164
198
 
165
- - **Post limit:** Practical limit 1,500 characters (first 100 words visible before "See more" truncation)
166
- - **Link preview:** 1.91:1 image ratio for link card previews
167
- - **Hashtags:** 0-2 maximum (Facebook hashtags have minimal discovery benefit)
168
- - **Video:** Square (1:1) or vertical (4:5) preferred in feed; native upload only (no YouTube links)
169
- - **Text before media:** Always include text above images or videos
170
- - **Polls:** Use native poll feature for engagement; keep options to 2-4 choices
199
+ - **Script length:** 90 seconds spoken. The native sweet spot is 30–60 seconds.
200
+ - **First 3 seconds carry the sharp idea.** No "What's up everyone" intros. No "Wait for it" tease. The idea opens; the body proves.
201
+ - **One teaching point per script.** Multi-point TikToks get cut at retention drops. Save the second point for the next video.
202
+ - **No engagement-bait CTA.** "Comment X for the template" is a farming pattern. Instead: "Full breakdown in this week's newsletter link in bio."
203
+ - **Caption:** 150 characters. The caption supports the spoken script — it doesn't replace it.
171
204
 
172
205
  ---
173
206
 
174
207
  ## Examples
175
208
 
176
- ### Good: Native X/Twitter Thread
209
+ ### Good: X Thread Distilled From a Newsletter Essay
177
210
 
178
211
  ```
179
- Tweet 1 (178 chars):
180
- We analyzed 2,000 B2B tweets from last quarter.
212
+ Tweet 1 (212 chars):
213
+ Most one-person businesses fail at the same step.
214
+
215
+ It's not pricing. It's not the product. It's not even the audience.
181
216
 
182
- The ones that got 10x more engagement had one thing in common:
217
+ It's that the founder confuses output with leverage and burns out producing content that doesn't compound.
183
218
 
184
- They made a claim in the first sentence. Not a question.
219
+ Tweet 2 (231 chars):
220
+ Output is what you produce in a day.
185
221
 
186
- Thread:
222
+ Leverage is what one day of output keeps producing for the next 12 months.
187
223
 
188
- Tweet 2:
189
- Here's the data:
224
+ A daily essay with no distillation strategy is output.
190
225
 
191
- - Claim-first tweets: 4.2% engagement rate
192
- - Question-first tweets: 0.8% engagement rate
193
- - Link-first tweets: 0.3% engagement rate
226
+ A daily essay that becomes 5 posts, 1 thread, 1 carousel, 1 short — is leverage.
194
227
 
195
- The algorithm rewards conviction.
228
+ Tweet 3 (244 chars):
229
+ The 2-hour writer's pipeline:
196
230
 
197
- Tweet 3:
198
- The best-performing claim format:
231
+ 1. Write the essay first
232
+ 2. Pull 5 atomic ideas out of it
233
+ 3. Each atom becomes a post
234
+ 4. The spine of the essay becomes a thread
235
+ 5. The frame becomes a carousel
236
+ 6. The hook becomes a short
199
237
 
200
- "[Specific number] + [counterintuitive insight]"
238
+ One session. Five surfaces. Twelve months of compounding.
201
239
 
202
- Example: "83% of B2B buyers make their decision before talking to sales."
240
+ Tweet 4 (188 chars):
241
+ The mistake almost everyone makes:
203
242
 
204
- Not: "Did you know most buyers decide early?"
243
+ They write posts directly.
205
244
 
206
- #B2B #ContentStrategy
245
+ So the posts have no upstream thinking. So the posts don't compound. So they burn out in 90 days wondering why content doesn't work.
246
+
247
+ Write the essay first.
207
248
  ```
208
249
 
209
- **Why it works:** Opens with data (not a question), each tweet stands alone, no external links, 2 hashtags on final tweet only, rhetorical-question-free.
250
+ **Why it works:** Opens with a sharp idea, not a hook-bait. Each tweet stands alone strip any one and the others still teach. Distilled directly from a newsletter essay (anchor traceability). Niche-specific (one-person business operators, not "creators in general"). Voice is unmistakably the same human across all four tweets. The thread is reusable in 90 days with new framing because the underlying claim is evergreen.
251
+
252
+ ---
210
253
 
211
- ### Good: Instagram Carousel with Structure
254
+ ### Good: Instagram Carousel Distilled From the Same Essay
212
255
 
213
256
  ```
214
- [Slide 1 - Cover/Hook]: "The 5-metric dashboard that replaced our 47-metric report"
215
- [Slide 2]: Metric 1 -- Revenue per campaign (not total revenue)
216
- [Slide 3]: Metric 2 -- CAC by channel (not blended CAC)
217
- [Slide 4]: Metric 3 -- Pipeline velocity (not pipeline value)
218
- [Slide 5]: Metric 4 -- Content-to-conversion ratio
219
- [Slide 6]: Metric 5 -- Customer expansion rate
220
- [Slide 7 - CTA]: "Save this for your next dashboard review. Follow @brand for more."
257
+ Slide 1 (cover): "Output is not leverage."
258
+ Slide 2: "Output = what you produce in a day."
259
+ Slide 3: "Leverage = what one day of output keeps producing for 12 months."
260
+ Slide 4: "Daily essay with no distillation = output. Daily essay distilled into 5 posts, 1 thread, 1 carousel, 1 short = leverage."
261
+ Slide 5: "The 2-hour pipeline: write essay first. Pull 5 atoms. Each atom → a post. Spine → a thread. Frame → a carousel. Hook → a short."
262
+ Slide 6: "One session. Five surfaces. Twelve months of compounding."
263
+ Slide 7: "Most creators write posts directly. So the posts have no upstream thinking. So they don't compound."
264
+ Slide 8 (closing): "Full breakdown in this week's newsletter — link in bio."
221
265
 
222
- Caption (412 chars):
223
- We deleted 42 metrics from our marketing dashboard last month.
266
+ Caption (first line, before "more" cut):
267
+ The reason your daily posting isn't compounding isn't your hook. It's your pipeline.
224
268
 
225
- Not because they weren't important.
226
- Because they weren't actionable.
269
+ [remainder of caption mirrors the carousel + hashtags]
227
270
 
228
- Here are the 5 metrics we kept -- and why each one drives a specific decision.
271
+ #onepersonbusiness #soloprenership #writingonline #digitalleverage #2hourwriter
272
+ ```
229
273
 
230
- Swipe through to see the full breakdown.
274
+ **Why it works:** Same atomic idea as the X thread (compounding asset design). Cover slide is a sharp idea, not a decorative quote. One teaching point per slide. Closing slide names the anchor. Caption hook lives before the truncation. Hashtags are niche-specific (one-person business operators), not mass-audience (#hustle, #entrepreneur).
231
275
 
232
- Which metric would you add to this list? Drop it in the comments.
276
+ ---
277
+
278
+ ### Bad: Engagement-Bait X Post
233
279
 
234
- #MarketingMetrics #B2BMarketing #DataDriven #MarketingDashboard #GrowthMarketing
235
280
  ```
281
+ I lost $80,000 in my first year as a creator.
236
282
 
237
- **Why it works:** Cover slide has hook, one point per slide, CTA on final slide, caption has hook before truncation, 5 hashtags, engagement question.
283
+ Here's the ONE thing I wish someone had told me 👇
238
284
 
239
- ### Bad: Rhetorical Question on X/Twitter
285
+ (comment "YES" if you want the full breakdown)
286
+ ```
287
+
288
+ **Why it fails:** DISC-SOCIAL-02 FAIL (loss-confession hook with curiosity-gap setup — performance, not distillation). DISC-SOCIAL-01 FAIL (no traceable anchor — the "ONE thing" is bait, not a real idea from a real essay). DISC-SOCIAL-05 FAIL (one-shot performance — cannot be reused; the value is in the cliffhanger). Pure engagement-farming. Builds the wrong audience: people who comment "YES" for free content, not people who buy specialized knowledge.
289
+
290
+ ---
291
+
292
+ ### Bad: Mass-Audience Platitude
240
293
 
241
294
  ```
242
- Don't you just HATE it when your marketing metrics don't make sense?
295
+ Consistency is the difference between successful creators and everyone else.
243
296
 
244
- We've all been there. Check out our new guide to fix it: https://example.com/guide
297
+ Post every day.
298
+ Show up.
299
+ Trust the process.
245
300
 
246
- #Marketing #Metrics #Guide #Data #Analytics #B2B #Growth #Strategy
301
+ That's it. That's the secret.
247
302
  ```
248
303
 
249
- **Why it fails:** DISC-SOC-03 FAIL (rhetorical question "Don't you just HATE..."), DISC-SOC-02 WARN (link-based post), DISC-SOC-04 FAIL (8 hashtags on X).
304
+ **Why it fails:** DISC-SOCIAL-03 FAIL (mass-audience generic could appear on any motivation account and nobody would notice). DISC-SOCIAL-01 FAIL (no anchor — this is filler, not a distillation of any specific thinking). DISC-SOCIAL-02 WARN at best (the opening line is a generic claim, not a sharp idea — "consistency is key" is the most-repeated cliché in the genre). Pulls in followers who will never become customers of a one-person business because they aren't looking for specialized knowledge; they're looking for permission.
250
305
 
251
- ### Bad: Link-Only Facebook Post
306
+ ---
252
307
 
253
- ```
254
- https://example.com/blog/new-post
308
+ ### Bad: Hookless Long-Form Dump on X
255
309
 
256
- [Auto-generated link preview with generic image]
310
+ ```
311
+ So I've been thinking a lot about the creator economy and how everyone keeps
312
+ saying the same things over and over. There are so many takes out there but
313
+ I think the real issue people miss is that content is downstream of thinking
314
+ and thinking is downstream of writing and most people skip the writing part
315
+ and go straight to performing on camera or in text and that's why their
316
+ content doesn't land and they wonder why nothing works after 90 days...
257
317
  ```
258
318
 
259
- **Why it fails:** DISC-SOC-02 FAIL (link-only, no native content), DISC-SOC-03 FAIL (no text before media/link).
319
+ **Why it fails:** DISC-SOCIAL-02 FAIL (no sharp idea opener — "So I've been thinking" is meandering setup). DISC-SOCIAL-06 FAIL (single tweet exceeds 280; would need to be a thread, but each tweet wouldn't stand alone — the writer is dumping a half-finished essay into X). DISC-SOCIAL-01 WARN (the underlying observation about "content is downstream of writing" is a real Koe-flavored idea, but it's buried in 200 words of mush instead of distilled). The fix: write the essay, then come back and pull this paragraph apart into 3 tweets with a sharp opener.
260
320
 
261
321
  ---
262
322
 
263
323
  ## Anti-Patterns
264
324
 
265
- 1. **Rhetorical questions on X/Twitter:** The algorithm deprioritizes posts with questions that do not expect genuine answers. "Who else thinks...?" and "Don't you hate when...?" get lower distribution than direct statements or genuine questions.
325
+ 1. **Engagement-bait hooks.** Loss-confessions ("I lost $X in Y days"), curiosity gaps ("Nobody talks about this but..."), and pattern-interrupts ("STOP scrolling.") farm engagement from the wrong audience. The audience that responds to bait is the audience that never buys. Anti-Koe.
326
+
327
+ 2. **Content-marketing-for-content's-sake.** Posting daily because "the algorithm rewards consistency" with no upstream essay, no anchor, no distillation pipeline is treadmill content. Output, not leverage. The fix is not more posts; the fix is a long-form anchor.
328
+
329
+ 3. **Mass-audience platitudes.** "Hustle harder," "consistency is key," "mindset is everything." These pull in mass followers who will never buy specialized knowledge from a one-person business. They look like growth; they are a tax. Niche-down ruthlessly.
266
330
 
267
- 2. **Link-only posts across all platforms:** Posting a bare URL with no native content gets suppressed on every major platform. Always provide standalone value in the post text itself.
331
+ 4. **Niche-hopping.** Switching topic every 30 days productivity this month, AI next month, fitness the month after destroys the compounding effect. Specialized knowledge requires staying specialized. Pick one niche and stay long enough for the audience to know you for it.
268
332
 
269
- 3. **Same content copy-pasted across platforms:** Each platform has different character limits, audience expectations, hashtag norms, and content formats. A tweet is not a Facebook post is not an Instagram caption. Write platform-native content for each.
333
+ 5. **Outsourcing the voice early.** Ghostwriters for a one-person business before the audience knows who the human is kills the trust signal that makes a one-person business work in the first place. The voice IS the moat. Outsource production logistics, never voice.
270
334
 
271
- 4. **Excessive hashtags:** 25+ hashtags on Instagram looks spammy, 5+ on X is excessive, and any hashtags on Facebook have minimal value. Stay within platform-optimal ranges.
335
+ 6. **Treating every platform as a separate brand.** Copy-paste-then-edit is fine; but the human behind the posts should sound the same across X, Threads, Instagram, and TikTok. Different format, same human. Voice fragmentation across platforms reads as a marketing team — exactly what a one-person business is not.
272
336
 
273
- 5. **Instagram carousel with walls of text:** Each carousel slide should have one key point, not a paragraph. If you need more text, use the caption. Slides are visual -- treat them like presentation slides, not blog pages.
337
+ 7. **Posting without a long-form anchor.** Pure short-form operations with no newsletter, no blog, no essay archive are a treadmill. Short-form is the discovery layer; long-form is the relationship layer. No anchor no compounding.
274
338
 
275
- 6. **Facebook posts with no text before media:** Posting an image or video with no text (or just an emoji) wastes the text space that Facebook displays prominently above media. Always lead with a text hook.
339
+ 8. **Skill-multiplying instead of skill-stacking.** Adding five unrelated skills (design + copywriting + video editing + cold email + SEO + ads + community management + ...) is scatter. The one-person business compounds when 2–3 stacked skills (writing + niche expertise + one production craft) meet a specific micro-niche. Anti-pattern in production: trying to be a polymath account.
276
340
 
277
341
  ---
278
342
 
279
343
  ## Metrics
280
344
 
281
- What to measure post-ship per platform:
345
+ What to measure post-ship. Metrics under this playbook prioritize signals of **specialized-knowledge demand** over generic engagement.
282
346
 
283
- ### X/Twitter
284
- - **Impressions:** How many times the tweet appeared in feeds
285
- - **Engagements:** Likes, retweets, quote tweets, replies combined
286
- - **Repost rate:** Retweets + quote tweets / impressions -- indicates content worth sharing
287
- - **Link clicks:** If link in reply strategy used, track clicks via UTM parameters
347
+ ### Primary (the ones that map to a one-person business)
288
348
 
289
- ### Instagram
290
- - **Reach:** Unique accounts that saw the post (more meaningful than impressions for Instagram)
291
- - **Saves:** The strongest content quality signal on Instagram -- saved posts indicate reference-worthy content
292
- - **Carousel completion rate:** What percentage of viewers reached the last slide? Below 40% suggests weak slide structure
293
- - **Profile visits:** Did the post drive curiosity about the brand? Track within 48 hours of posting
294
-
295
- ### Facebook
296
- - **Reach:** Organic reach per post (Facebook's most throttled metric -- track trends, not absolutes)
297
- - **Engagement rate:** (Reactions + comments + shares) / reach
298
- - **Shares:** The highest-value engagement on Facebook -- shares drive exponential reach
299
- - **Link clicks:** If post includes a link, track CTR via UTM parameters
300
-
301
- ### Cross-Platform
302
- - **Sentiment:** Are replies positive, negative, or neutral? Track qualitative patterns across platforms
303
- - **Reply quality:** Meaningful replies (2+ sentences, on-topic) vs. emoji-only reactions
304
- - **Follower growth rate:** Net new followers within 48 hours of posting, per platform
305
- - **Content-to-platform fit score:** Which platforms generate the highest engagement for which content types? Track to optimize channel allocation
349
+ - **Saves.** The strongest content-quality signal across platforms. A save means the audience plans to come back. Niche-relevant saves > mass likes every time.
350
+ - **Profile clicks newsletter subscriptions.** The handoff from short-form (discovery) to long-form (relationship) is the entire game. Track profile clicks within 48h of posting and the resulting newsletter signups.
351
+ - **Niche-relevant follower growth.** Net new followers whose own profiles match the campaign ICP. Vanity follower count is a lagging indicator of the wrong thing; niche-match growth is a leading indicator of the right thing.
352
+ - **Shares to a specific named recipient.** Generic shares are noise. Shares with a comment to a named friend ("@you need to read this") indicate the content hit a real role-specific problem.
353
+
354
+ ### Secondary (the surface signals)
355
+
356
+ - **Reach / impressions** per surface track trend, not absolute. Algorithmic noise dominates short-term absolute numbers.
357
+ - **Engagement rate** (saves + shares + comments) / reach. Likes intentionally de-weighted because likes are the most-farmed engagement signal.
358
+ - **Reply quality** substantive replies (≥ 2 sentences, on-topic, from accounts that match the niche) over emoji/one-word reactions. Track the *type* of reply, not just count.
359
+ - **Carousel completion rate (Instagram)** % reaching slide 10. Below 40% suggests weak slide structure or cover slide that didn't earn the swipe.
360
+ - **TikTok average watch time** — % of script consumed. Below 50% on a 60-second script suggests the first 3 seconds didn't land the sharp idea.
361
+
362
+ ### Compounding signals (the ones that prove the engine works)
363
+
364
+ - **Atomic-idea reuse rate.** % of monthly posts that are re-framings or recycles of ideas from older essays. Healthy engines run at 30–50% reuse. 0% reuse means the writer is reinventing the wheel weekly.
365
+ - **Anchor social attribution.** For each long-form essay published, the count of distilled posts produced from it. Target 7 distilled assets per essay in a mature pipeline.
366
+ - **Content-to-customer conversion.** The compounding north star: of every 1,000 niche-matched followers, how many become customers of the one-person business over 12 months? This is the only metric that proves the social system is doing its job.
367
+
368
+ ---
369
+
370
+ ## Sources
371
+
372
+ - Dan Koe, *The One-Person Business Model: How to Monetize Yourself* — https://thedankoe.com/letters/the-one-person-business-model-how-to-monetize-yourself/
373
+ - Dan Koe, *The One-Person Business Roadmap: 99% of Creators Make This Mistake* — https://thedankoe.com/letters/the-one-person-business-roadmap-99-of-creators-make-this-mistake/
374
+ - Dan Koe, *Modern Mastery* (course / community hub for the 2 Hour Writer methodology) — https://www.modernmastery.co/
375
+ - Dan Koe, *The 2 Hour Writer* (productized course on the daily writing → distillation engine) — https://thedankoe.com/the-2-hour-writer/
376
+ - Dan Koe, YouTube essays and long-form video archive — https://www.youtube.com/@thedankoe