taketomarket 0.1.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 (123) hide show
  1. package/.claude-plugin/plugin.json +10 -0
  2. package/LICENSE +21 -0
  3. package/README.md +419 -0
  4. package/agents/ttm-producer.md +53 -0
  5. package/bin/lib/campaign.cjs +553 -0
  6. package/bin/lib/commit.cjs +105 -0
  7. package/bin/lib/core.cjs +172 -0
  8. package/bin/lib/deviation.cjs +149 -0
  9. package/bin/lib/drift-log.cjs +219 -0
  10. package/bin/lib/health.cjs +438 -0
  11. package/bin/lib/slug.cjs +59 -0
  12. package/bin/lib/state.cjs +96 -0
  13. package/bin/ttm-tools.cjs +157 -0
  14. package/gates/base-gates.md +266 -0
  15. package/gates/discipline/.gitkeep +0 -0
  16. package/gates/gate-evaluation.md +341 -0
  17. package/gates/meta-gates.md +19 -0
  18. package/install.js +307 -0
  19. package/package.json +53 -0
  20. package/playbooks/.gitkeep +0 -0
  21. package/playbooks/aeo.md +223 -0
  22. package/playbooks/affiliate.md +272 -0
  23. package/playbooks/base.md +110 -0
  24. package/playbooks/email.md +306 -0
  25. package/playbooks/events.md +320 -0
  26. package/playbooks/linkedin.md +263 -0
  27. package/playbooks/paid-ads.md +318 -0
  28. package/playbooks/pr-media.md +296 -0
  29. package/playbooks/seo.md +284 -0
  30. package/playbooks/social.md +305 -0
  31. package/playbooks/youtube.md +325 -0
  32. package/references/context-loading.md +107 -0
  33. package/references/learnings-extraction.md +94 -0
  34. package/references/measurement-template.md +48 -0
  35. package/references/meta-gate-evaluation.md +169 -0
  36. package/references/positioning-check-report.md +197 -0
  37. package/references/review-checklist.md +78 -0
  38. package/references/ship-checklist-items.md +94 -0
  39. package/settings.json +4 -0
  40. package/skills/ttm-aeo-check/SKILL.md +20 -0
  41. package/skills/ttm-affiliate-kit/SKILL.md +19 -0
  42. package/skills/ttm-archive/SKILL.md +13 -0
  43. package/skills/ttm-brand-refresh/SKILL.md +19 -0
  44. package/skills/ttm-brief/SKILL.md +14 -0
  45. package/skills/ttm-competitor-scan/SKILL.md +19 -0
  46. package/skills/ttm-email-preflight/SKILL.md +19 -0
  47. package/skills/ttm-fix/SKILL.md +13 -0
  48. package/skills/ttm-health/SKILL.md +12 -0
  49. package/skills/ttm-icp-refresh/SKILL.md +19 -0
  50. package/skills/ttm-init/SKILL.md +12 -0
  51. package/skills/ttm-keyword-map/SKILL.md +19 -0
  52. package/skills/ttm-learn/SKILL.md +14 -0
  53. package/skills/ttm-measure/SKILL.md +14 -0
  54. package/skills/ttm-new-campaign/SKILL.md +13 -0
  55. package/skills/ttm-next/SKILL.md +12 -0
  56. package/skills/ttm-positioning-check/SKILL.md +19 -0
  57. package/skills/ttm-positioning-shift/SKILL.md +19 -0
  58. package/skills/ttm-produce/SKILL.md +14 -0
  59. package/skills/ttm-repurpose/SKILL.md +20 -0
  60. package/skills/ttm-research/SKILL.md +13 -0
  61. package/skills/ttm-resume/SKILL.md +13 -0
  62. package/skills/ttm-review/SKILL.md +13 -0
  63. package/skills/ttm-seo-audit/SKILL.md +20 -0
  64. package/skills/ttm-ship/SKILL.md +13 -0
  65. package/skills/ttm-state/SKILL.md +13 -0
  66. package/skills/ttm-verify/SKILL.md +14 -0
  67. package/templates/agents-md.md +65 -0
  68. package/templates/campaign-brief.md +74 -0
  69. package/templates/campaign-research.md +39 -0
  70. package/templates/campaign-state.md +40 -0
  71. package/templates/claude-md.md +65 -0
  72. package/templates/deviation-log.md +12 -0
  73. package/templates/drift-log.md +17 -0
  74. package/templates/fix-brief.md +59 -0
  75. package/templates/fix-log.md +22 -0
  76. package/templates/measurement-report.md +75 -0
  77. package/templates/migration-plan.md +24 -0
  78. package/templates/production-manifest.json +20 -0
  79. package/templates/reference-files/brand.md +45 -0
  80. package/templates/reference-files/calendar.md +30 -0
  81. package/templates/reference-files/channels.md +40 -0
  82. package/templates/reference-files/competitors.md +40 -0
  83. package/templates/reference-files/icp.md +50 -0
  84. package/templates/reference-files/learnings.md +40 -0
  85. package/templates/reference-files/metrics.md +42 -0
  86. package/templates/reference-files/positioning.md +38 -0
  87. package/templates/reference-files/state.md +27 -0
  88. package/templates/verification-report.md +59 -0
  89. package/workflows/discipline/.gitkeep +0 -0
  90. package/workflows/discipline/aeo-check.md +180 -0
  91. package/workflows/discipline/affiliate-kit.md +147 -0
  92. package/workflows/discipline/email-preflight.md +150 -0
  93. package/workflows/discipline/keyword-map.md +125 -0
  94. package/workflows/discipline/repurpose.md +329 -0
  95. package/workflows/discipline/seo-audit.md +169 -0
  96. package/workflows/lifecycle/.gitkeep +0 -0
  97. package/workflows/lifecycle/brief-positioning-check.md +90 -0
  98. package/workflows/lifecycle/brief.md +355 -0
  99. package/workflows/lifecycle/fix.md +495 -0
  100. package/workflows/lifecycle/learn.md +405 -0
  101. package/workflows/lifecycle/measure.md +379 -0
  102. package/workflows/lifecycle/produce.md +383 -0
  103. package/workflows/lifecycle/research.md +264 -0
  104. package/workflows/lifecycle/review.md +432 -0
  105. package/workflows/lifecycle/ship.md +521 -0
  106. package/workflows/lifecycle/verify.md +507 -0
  107. package/workflows/reference-mgmt/.gitkeep +0 -0
  108. package/workflows/reference-mgmt/brand-refresh.md +193 -0
  109. package/workflows/reference-mgmt/competitor-scan.md +228 -0
  110. package/workflows/reference-mgmt/icp-refresh.md +200 -0
  111. package/workflows/reference-mgmt/positioning-check.md +339 -0
  112. package/workflows/reference-mgmt/positioning-shift.md +368 -0
  113. package/workflows/setup/.gitkeep +0 -0
  114. package/workflows/setup/init-questions.md +225 -0
  115. package/workflows/setup/init-validation.md +155 -0
  116. package/workflows/setup/init.md +449 -0
  117. package/workflows/setup/new-campaign.md +134 -0
  118. package/workflows/utility/.gitkeep +0 -0
  119. package/workflows/utility/archive.md +334 -0
  120. package/workflows/utility/health.md +166 -0
  121. package/workflows/utility/next.md +187 -0
  122. package/workflows/utility/resume.md +249 -0
  123. package/workflows/utility/state.md +207 -0
@@ -0,0 +1,305 @@
1
+ ---
2
+ discipline: social
3
+ asset_types: [tweet, instagram-post, instagram-carousel, instagram-reel-caption, facebook-post, facebook-ad-copy]
4
+ version: "1.0"
5
+ ---
6
+
7
+ # Social Playbook
8
+
9
+ ## Production Guidance
10
+
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.
12
+
13
+ ### General Social Principles
14
+
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).
18
+
19
+ ### X/Twitter Production Rules
20
+
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.
26
+
27
+ ### Instagram Production Rules
28
+
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.
35
+
36
+ ### Facebook Production Rules
37
+
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.
43
+
44
+ ---
45
+
46
+ ## Discipline Gates
47
+
48
+ ### DISC-SOC-01: Platform Character Limits -- Tier 1
49
+
50
+ **Checks:** Content length against platform-specific maximums
51
+ **Against:** Platform specifications for the target platform
52
+
53
+ #### Evaluation Criteria
54
+
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
60
+
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
66
+
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
72
+
73
+ ### DISC-SOC-02: Native Format Preference -- Tier 2
74
+
75
+ **Checks:** Content formatted for native platform consumption
76
+ **Against:** Platform best practices for native content
77
+
78
+ #### Evaluation Criteria
79
+
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
84
+
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)
89
+
90
+ ### DISC-SOC-03: Platform-Specific Rules -- Tier 1
91
+
92
+ **Checks:** Platform-specific content rules that affect reach and engagement
93
+ **Against:** Current platform algorithm guidelines
94
+
95
+ #### Evaluation Criteria
96
+
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
102
+
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
108
+
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
114
+
115
+ ### DISC-SOC-04: Hashtag and Mention Hygiene -- Tier 2
116
+
117
+ **Checks:** Platform-appropriate hashtag and mention usage
118
+ **Against:** Platform-specific engagement data and best practices
119
+
120
+ #### Evaluation Criteria
121
+
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
127
+
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
132
+
133
+ ---
134
+
135
+ ## Base Gate Overrides
136
+
137
+ None -- all base gates keep default tiers.
138
+
139
+ ---
140
+
141
+ ## Format Rules
142
+
143
+ Platform-specific formatting enforced during production:
144
+
145
+ ### X/Twitter
146
+
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
153
+
154
+ ### Instagram
155
+
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)
162
+
163
+ ### Facebook
164
+
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
171
+
172
+ ---
173
+
174
+ ## Examples
175
+
176
+ ### Good: Native X/Twitter Thread
177
+
178
+ ```
179
+ Tweet 1 (178 chars):
180
+ We analyzed 2,000 B2B tweets from last quarter.
181
+
182
+ The ones that got 10x more engagement had one thing in common:
183
+
184
+ They made a claim in the first sentence. Not a question.
185
+
186
+ Thread:
187
+
188
+ Tweet 2:
189
+ Here's the data:
190
+
191
+ - Claim-first tweets: 4.2% engagement rate
192
+ - Question-first tweets: 0.8% engagement rate
193
+ - Link-first tweets: 0.3% engagement rate
194
+
195
+ The algorithm rewards conviction.
196
+
197
+ Tweet 3:
198
+ The best-performing claim format:
199
+
200
+ "[Specific number] + [counterintuitive insight]"
201
+
202
+ Example: "83% of B2B buyers make their decision before talking to sales."
203
+
204
+ Not: "Did you know most buyers decide early?"
205
+
206
+ #B2B #ContentStrategy
207
+ ```
208
+
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.
210
+
211
+ ### Good: Instagram Carousel with Structure
212
+
213
+ ```
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."
221
+
222
+ Caption (412 chars):
223
+ We deleted 42 metrics from our marketing dashboard last month.
224
+
225
+ Not because they weren't important.
226
+ Because they weren't actionable.
227
+
228
+ Here are the 5 metrics we kept -- and why each one drives a specific decision.
229
+
230
+ Swipe through to see the full breakdown.
231
+
232
+ Which metric would you add to this list? Drop it in the comments.
233
+
234
+ #MarketingMetrics #B2BMarketing #DataDriven #MarketingDashboard #GrowthMarketing
235
+ ```
236
+
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.
238
+
239
+ ### Bad: Rhetorical Question on X/Twitter
240
+
241
+ ```
242
+ Don't you just HATE it when your marketing metrics don't make sense?
243
+
244
+ We've all been there. Check out our new guide to fix it: https://example.com/guide
245
+
246
+ #Marketing #Metrics #Guide #Data #Analytics #B2B #Growth #Strategy
247
+ ```
248
+
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).
250
+
251
+ ### Bad: Link-Only Facebook Post
252
+
253
+ ```
254
+ https://example.com/blog/new-post
255
+
256
+ [Auto-generated link preview with generic image]
257
+ ```
258
+
259
+ **Why it fails:** DISC-SOC-02 FAIL (link-only, no native content), DISC-SOC-03 FAIL (no text before media/link).
260
+
261
+ ---
262
+
263
+ ## Anti-Patterns
264
+
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.
266
+
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.
268
+
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.
270
+
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.
272
+
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.
274
+
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.
276
+
277
+ ---
278
+
279
+ ## Metrics
280
+
281
+ What to measure post-ship per platform:
282
+
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
288
+
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
@@ -0,0 +1,325 @@
1
+ ---
2
+ discipline: youtube
3
+ asset_types: [video-script, thumbnail-brief, description, community-post]
4
+ version: "1.0"
5
+ ---
6
+
7
+ # YouTube Discipline Playbook
8
+
9
+ This playbook extends the base playbook contract (`base.md`) with YouTube-specific production guidance, discipline gates, and format rules. It is loaded by ttm-producer during content generation and parsed by ttm-verify for gate evaluation.
10
+
11
+ ---
12
+
13
+ ## Production Guidance
14
+
15
+ ### Hook in the First 5 Seconds
16
+
17
+ The first 5 seconds determine whether a viewer stays or clicks away. Every video script must open with one of these hook patterns:
18
+
19
+ - **Problem statement:** Name a specific pain point the viewer recognizes ("You're losing 40% of your viewers in the first 10 seconds")
20
+ - **Bold claim:** Make a concrete, falsifiable promise ("This one change doubled our conversion rate")
21
+ - **Curiosity gap:** Tease a result without revealing the method ("Most creators get this completely wrong")
22
+ - **Pattern interrupt:** Open with something unexpected -- a visual, a question, or a contrarian take
23
+
24
+ Never open with a greeting ("Hey guys, welcome back"), a channel introduction, or a sponsor read before the hook. The hook comes first, always.
25
+
26
+ ### Title + Thumbnail Click-Fit
27
+
28
+ Title and thumbnail are a single unit -- they must work as a complementary pair:
29
+
30
+ - **Title promises:** The title makes a specific, curiosity-driven promise. It tells the viewer WHAT they will learn or get.
31
+ - **Thumbnail amplifies visually:** The thumbnail shows the RESULT, EMOTION, or CONTRAST that makes the promise tangible. It does NOT repeat the title text.
32
+ - **Complementary, not redundant:** If the title says "I Tested 100 Hooks," the thumbnail shows the data chart or a shocked face -- not the words "100 Hooks."
33
+
34
+ Effective pairs create a "curiosity loop" -- the viewer needs to click to close the gap between what the title promises and what the thumbnail shows.
35
+
36
+ ### Description SEO
37
+
38
+ YouTube descriptions are searchable. Optimize them:
39
+
40
+ - Place the target keyword in the first 2 lines (first 150 characters visible before "Show more")
41
+ - Include timestamps for videos over 10 minutes (YouTube uses these for chapters and key moments in search)
42
+ - Add 2-3 relevant links (related videos, resources mentioned, landing pages)
43
+ - Include 3-5 hashtags at the end (YouTube displays the first 3 above the title)
44
+ - Write 200+ words total -- longer descriptions improve discoverability
45
+
46
+ ### End-Screen CTA Placement
47
+
48
+ Every video script must include an end-screen section in the final 20 seconds:
49
+
50
+ - Verbal CTA: Tell the viewer exactly what to do next ("Watch this video next" or "Subscribe if you want weekly breakdowns")
51
+ - Visual placement notes: Specify where end-screen elements appear (avoid covering important visuals)
52
+ - Link the CTA to a specific next video or playlist, not just "subscribe"
53
+
54
+ ### Retention Curve Awareness
55
+
56
+ YouTube rewards watch time. Structure scripts to front-load value:
57
+
58
+ - Deliver the key value proposition within the first 30% of the script
59
+ - Use pattern interrupts every 2-3 minutes (change visual, ask a question, introduce a new sub-topic)
60
+ - Avoid extended tangents that pull away from the promised topic
61
+ - Use "open loops" -- tease upcoming sections to keep viewers watching ("In a moment I'll show you the exact template, but first...")
62
+ - Place the most valuable or surprising insight early, not as a "big reveal" at the end
63
+
64
+ ### Community Post Strategy
65
+
66
+ Community posts maintain engagement between uploads:
67
+
68
+ - **Poll posts:** Ask binary or multiple-choice questions related to upcoming content
69
+ - **Text posts:** Share behind-the-scenes insights or early data from recent videos
70
+ - **Image posts:** Share screenshots, charts, or visual teasers for upcoming content
71
+ - Post 2-3 times per week between uploads to maintain algorithmic presence
72
+
73
+ ---
74
+
75
+ ## Discipline Gates
76
+
77
+ ### DISC-YOUTUBE-01: Hook Strength -- Tier 1
78
+
79
+ **Checks:** First 5 seconds of video script contain a specific promise, question, or pattern interrupt
80
+ **Against:** Video script opening section
81
+
82
+ #### Evaluation Criteria
83
+
84
+ 1. **Hook presence and quality**
85
+ - PASS: Script opens with a concrete hook (problem statement, bold claim, or curiosity gap) within the first 3 sentences. The hook is audience-focused and specific.
86
+ - WARN: Script has an opening but it is generic or brand-focused rather than audience-focused (e.g., "Today we're going to talk about...")
87
+ - FAIL: Script opens with an introduction, greeting, or sponsor mention before the hook
88
+
89
+ 2. **Hook specificity**
90
+ - PASS: Hook contains a specific number, result, or named concept ("3 mistakes," "doubled our revenue," "the LinkedIn algorithm change")
91
+ - WARN: Hook references a general topic without a specific angle ("Let's talk about marketing")
92
+ - FAIL: No identifiable hook in the first 5 lines of the script
93
+
94
+ ### DISC-YOUTUBE-02: Title-Thumbnail Click-Fit -- Tier 1
95
+
96
+ **Checks:** Title and thumbnail brief work as a complementary pair (title promises, thumbnail visualizes)
97
+ **Against:** Video title and thumbnail brief in the asset
98
+
99
+ #### Evaluation Criteria
100
+
101
+ 1. **Complementary messaging**
102
+ - PASS: Title contains a specific promise or curiosity gap AND thumbnail brief describes a contrasting visual element that amplifies (not duplicates) the title
103
+ - WARN: Title and thumbnail overlap in message (both say the same thing in words and visuals)
104
+ - FAIL: Title is generic or clickbait with no matching thumbnail concept, OR thumbnail brief is missing
105
+
106
+ 2. **Curiosity loop**
107
+ - PASS: Together, title and thumbnail create an information gap that requires clicking to resolve
108
+ - WARN: Title and thumbnail are on-topic but do not create tension or curiosity
109
+ - FAIL: Title and thumbnail are unrelated or contradictory
110
+
111
+ ### DISC-YOUTUBE-03: Description SEO -- Tier 2
112
+
113
+ **Checks:** Description includes target keyword in first 2 lines, timestamps, and relevant links
114
+ **Against:** Video description content
115
+
116
+ #### Evaluation Criteria
117
+
118
+ 1. **Keyword placement**
119
+ - PASS: Target keyword appears in the first 150 characters of the description
120
+ - WARN: Keyword present in the description but not in the first 150 characters
121
+ - FAIL: No target keyword in the description, or description is under 100 characters
122
+
123
+ 2. **Structural completeness**
124
+ - PASS: Timestamps present for videos 10+ minutes, at least 2 links included, 3+ hashtags at the end
125
+ - WARN: Timestamps missing for long-form content, OR fewer than 2 links
126
+ - FAIL: No timestamps, no links, and no hashtags -- description is just a single sentence
127
+
128
+ ### DISC-YOUTUBE-04: Retention Structure -- Tier 2
129
+
130
+ **Checks:** Script front-loads value and avoids retention killers
131
+ **Against:** Video script structure and pacing
132
+
133
+ #### Evaluation Criteria
134
+
135
+ 1. **Value delivery timing**
136
+ - PASS: Key value proposition delivered within the first 30% of the script, with pattern interrupts every 2-3 minutes
137
+ - WARN: Value delivered but after a long preamble (more than 20% of script before any substantive content)
138
+ - FAIL: Script buries the main point past the halfway mark or has no structural variety
139
+
140
+ 2. **Retention techniques**
141
+ - PASS: Script uses open loops, sub-topic transitions, or visual change notes to maintain engagement throughout
142
+ - WARN: Script is linear with no pacing variation but content is solid
143
+ - FAIL: Script is a single unbroken monologue with no engagement hooks after the opening
144
+
145
+ ### DISC-YOUTUBE-05: End-Screen CTA -- Tier 2
146
+
147
+ **Checks:** Script includes a clear end-screen call-to-action
148
+ **Against:** Final section of the video script
149
+
150
+ #### Evaluation Criteria
151
+
152
+ 1. **CTA presence and specificity**
153
+ - PASS: Final section includes a specific CTA (subscribe, watch next video, click link) with verbal direction and visual placement notes for end-screen elements
154
+ - WARN: CTA exists but is generic ("like and subscribe") with no specific next action or visual placement
155
+ - FAIL: No end-screen CTA in the script
156
+
157
+ ### DISC-YOUTUBE-06: Thumbnail Contrast -- Tier 2
158
+
159
+ **Checks:** Thumbnail brief specifies high-contrast, low-clutter visual design
160
+ **Against:** Thumbnail brief content
161
+
162
+ #### Evaluation Criteria
163
+
164
+ 1. **Visual clarity**
165
+ - PASS: Thumbnail brief specifies max 3 elements, contrasting colors, readable text at mobile size, and face/emotion if applicable
166
+ - WARN: Thumbnail brief exists but includes more than 3 text elements or lacks contrast specification
167
+ - FAIL: No thumbnail brief provided, or brief describes a busy/cluttered design with 5+ elements
168
+
169
+ 2. **Mobile readability**
170
+ - PASS: Any text in the thumbnail is specified as large, bold, and limited to 3-4 words maximum
171
+ - WARN: Text is included but no size or readability specification
172
+ - FAIL: Thumbnail relies on small text or detailed graphics that would be illegible at mobile thumbnail size
173
+
174
+ ---
175
+
176
+ ## Base Gate Overrides
177
+
178
+ | Base Gate ID | Default Tier | Override Tier | Reason |
179
+ |-------------|-------------|---------------|--------|
180
+ | GATE-10 (Format Correctness) | Tier 2 | Tier 1 | Video scripts have strict format requirements (timestamps, shot notes, scene markers) that directly affect production workflow and cannot be fixed post-recording |
181
+
182
+ ---
183
+
184
+ ## Format Rules
185
+
186
+ ### Video Script Format
187
+
188
+ ```
189
+ [HOOK - 0:00-0:05]
190
+ {Opening hook -- problem, claim, or curiosity gap}
191
+
192
+ [INTRO - 0:05-0:30]
193
+ {Brief context setting -- who this is for, what they will learn}
194
+
195
+ [SECTION 1 - 0:30-3:00]
196
+ {Main content section}
197
+ [B-ROLL: {description of supporting visual}]
198
+ [LOWER THIRD: {text overlay content}]
199
+
200
+ [PATTERN INTERRUPT - 3:00]
201
+ {Re-engagement moment -- question, visual change, new angle}
202
+
203
+ [SECTION 2 - 3:00-6:00]
204
+ {Continued content}
205
+
206
+ [END SCREEN - final 20 seconds]
207
+ {Verbal CTA + visual placement notes}
208
+ [END CARD: {specific video/playlist to link}]
209
+ ```
210
+
211
+ ### Thumbnail Brief Format
212
+
213
+ ```
214
+ Elements (max 3):
215
+ 1. {Primary element -- face, object, or result}
216
+ 2. {Text overlay -- 3-4 words max, bold}
217
+ 3. {Background/contrast element}
218
+
219
+ Colors: {Primary contrast pair, e.g., "Yellow text on dark blue background"}
220
+ Emotion: {If face is included -- shocked, excited, skeptical, etc.}
221
+ Mobile test: {Confirm readability at 168x94px}
222
+ ```
223
+
224
+ ### Description Template
225
+
226
+ ```
227
+ {Target keyword in the first line -- what this video covers}
228
+ {Second line -- specific promise or key takeaway}
229
+
230
+ {Timestamps / Chapters}
231
+ 0:00 - {Hook}
232
+ 0:30 - {Section 1 title}
233
+ 3:00 - {Section 2 title}
234
+ ...
235
+
236
+ {Resources / Links}
237
+ - {Resource 1}: {URL}
238
+ - {Resource 2}: {URL}
239
+
240
+ {About section -- 2-3 sentences about the channel}
241
+
242
+ #hashtag1 #hashtag2 #hashtag3
243
+ ```
244
+
245
+ ### Community Post Format
246
+
247
+ - **Poll:** Question (under 65 characters) + 2-4 options (under 25 characters each)
248
+ - **Text:** 1-3 paragraphs, conversational tone, end with a question to drive comments
249
+ - **Image:** High-contrast image with minimal text, paired with 1-2 sentence caption
250
+
251
+ ---
252
+
253
+ ## Examples
254
+
255
+ ### Good: Strong Hook + Complementary Title-Thumbnail
256
+
257
+ ```
258
+ Title: "I Analyzed 1,000 YouTube Thumbnails -- Here's What Actually Works"
259
+
260
+ Thumbnail brief:
261
+ - Element 1: Creator's face with surprised expression
262
+ - Element 2: Bold text "1,000 THUMBNAILS" in yellow
263
+ - Element 3: Dark background with faded grid of thumbnail images
264
+ - Colors: Yellow text on dark charcoal
265
+ - Mobile test: Face and text readable at 168x94px
266
+
267
+ Script opening:
268
+ "The average YouTube thumbnail gets mass-ignored. Out of 1,000 thumbnails
269
+ I analyzed across 50 channels, only 12% followed the pattern that
270
+ correlates with above-average CTR. Here's what they all had in common."
271
+ ```
272
+
273
+ Why it works: Title promises data-driven insight. Thumbnail shows the scale (face + "1,000") without repeating the title. Hook delivers a specific stat immediately.
274
+
275
+ ### Bad: Weak Hook + Redundant Title-Thumbnail
276
+
277
+ ```
278
+ Title: "YouTube Thumbnail Tips"
279
+
280
+ Thumbnail brief:
281
+ - Element 1: Text "Thumbnail Tips"
282
+ - Element 2: Stock photo of a computer screen
283
+ - Element 3: Channel logo
284
+ - Element 4: Subscribe button graphic
285
+ - Element 5: Arrow pointing at screen
286
+
287
+ Script opening:
288
+ "Hey guys, welcome back to the channel! Today we're going to be talking
289
+ about thumbnails. Before we get into it, a quick word from our sponsor..."
290
+ ```
291
+
292
+ Why it fails: Title is generic (no promise, no number, no curiosity). Thumbnail repeats the title text and has 5 elements (cluttered). Script opens with greeting + sponsor before any hook.
293
+
294
+ ---
295
+
296
+ ## Anti-Patterns
297
+
298
+ 1. **Opening with "Hey guys"** -- Greetings before the hook lose viewers in the first 3 seconds. YouTube's retention graph shows the steepest drop in the first 5 seconds. The hook must come first.
299
+
300
+ 2. **Burying the hook after a sponsor read** -- Sponsor integrations in the first 30 seconds kill retention. Place sponsor reads after the hook and initial value delivery (typically 2-4 minutes in).
301
+
302
+ 3. **Thumbnail text duplicating the title** -- If the thumbnail says the same words as the title, you have wasted one of your two click-driving elements. The thumbnail should SHOW what the title TELLS.
303
+
304
+ 4. **Description with no keywords or links** -- A one-sentence description like "New video!" wastes SEO opportunity. YouTube indexes description text for search -- treat it as a mini blog post.
305
+
306
+ 5. **Scripts without retention markers** -- A script that reads as a continuous essay without scene breaks, B-roll notes, or pattern interrupts will produce a monotonous video. Mark structural variety explicitly.
307
+
308
+ 6. **Generic end-screen CTA** -- "Like and subscribe" is background noise. Specific CTAs ("Watch this video next where I show the exact template") drive measurable end-screen click rates.
309
+
310
+ 7. **Cluttered thumbnails** -- More than 3 visual elements compete for attention at mobile size. Thumbnails must be readable at 168x94 pixels -- the size they appear in mobile feeds.
311
+
312
+ ---
313
+
314
+ ## Metrics
315
+
316
+ Track these indicators for YouTube content after shipping:
317
+
318
+ - **Views** -- Total views over 7/30/90 day windows. Compare against channel average.
319
+ - **Watch time (hours)** -- Total accumulated watch time. YouTube's primary ranking signal.
320
+ - **Average view duration** -- Mean watch time per view. Indicates content quality and retention. Target: above 50% of video length.
321
+ - **Click-through rate (CTR)** -- Impressions to views ratio from YouTube Studio. Measures title + thumbnail effectiveness. Channel benchmark: 4-10%.
322
+ - **Subscriber conversion** -- New subscribers attributed to the video. Measures audience growth impact.
323
+ - **End-screen click rate** -- Percentage of viewers who click end-screen elements. Measures CTA effectiveness.
324
+ - **Comments and engagement rate** -- Comments, likes, shares as a percentage of views. Measures community engagement.
325
+ - **Traffic sources** -- Breakdown of Browse, Search, Suggested, External. Indicates discovery path.