@growthub/cli 0.3.34 → 0.3.35

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 (31) hide show
  1. package/README.md +21 -0
  2. package/assets/worker-kits/creative-strategist-v1/brands/_template/brand-kit.md +123 -0
  3. package/assets/worker-kits/creative-strategist-v1/brands/solawave/brand-kit.md +139 -0
  4. package/assets/worker-kits/creative-strategist-v1/bundles/creative-strategist-v1.json +46 -0
  5. package/assets/worker-kits/creative-strategist-v1/growthub-meta/README.md +14 -0
  6. package/assets/worker-kits/creative-strategist-v1/growthub-meta/kit-standard.md +47 -0
  7. package/assets/worker-kits/creative-strategist-v1/kit.json +72 -0
  8. package/assets/worker-kits/creative-strategist-v1/skills.md +341 -0
  9. package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/INDEX.md +94 -0
  10. package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/bedroom-minimic-talk.md +197 -0
  11. package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/frame-analysis.md +209 -0
  12. package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/process-specialist-medical.md +105 -0
  13. package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/villain-animation.md +183 -0
  14. package/assets/worker-kits/creative-strategist-v1/templates/brief-template.js +470 -0
  15. package/assets/worker-kits/creative-strategist-v1/templates/hooks-library/500-winning-hooks.csv +539 -0
  16. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/INDEX.md +151 -0
  17. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/before-after-flatlay.md +143 -0
  18. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/minimic-problem.md +109 -0
  19. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/product-demo-glow.md +123 -0
  20. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/tiktok-skeptic-pivot.md +119 -0
  21. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/villain-agitation.md +156 -0
  22. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/cta/bogo-meme-bookend.md +144 -0
  23. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/cta/guarantee-close.md +143 -0
  24. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/dollar-amount.md +105 -0
  25. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/meme-overlay.md +104 -0
  26. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/pov-confession.md +92 -0
  27. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/tiktok-comment.md +116 -0
  28. package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/villain-hook.md +134 -0
  29. package/assets/worker-kits/creative-strategist-v1/workers/creative-strategist/CLAUDE.md +440 -0
  30. package/dist/index.js +206 -0
  31. package/package.json +3 -2
@@ -0,0 +1,151 @@
1
+ # Scene Module Library — INDEX
2
+ > These are the plug-in building blocks. Each module = one scene or one hook variation.
3
+ > Pull a module file → swap `[PLACEHOLDERS]` from brand-kit.md → paste into brief JS.
4
+ > All modules are format-compatible as noted. Mix across formats where marked.
5
+
6
+ ---
7
+
8
+ ## HOW MODULES WORK
9
+
10
+ Every module contains:
11
+ - **What it does** — the job this scene performs in the ad
12
+ - **Visual direction** — camera, character, setting, lighting
13
+ - **On-screen text** — exact template with `[PLACEHOLDERS]`
14
+ - **Actor dialogue** — full template with delivery notes
15
+ - **JS stub** — ready-to-paste `sceneBlock()` or `hookCard()` row content
16
+ - **AI generation prompt** — ready-to-paste Veo 3 / Runway prompt stub
17
+ - **Brand-kit placeholders** — maps each `[PLACEHOLDER]` to its source field
18
+
19
+ **Placeholder schema (universal across all modules):**
20
+ ```
21
+ [BRAND_NAME] → brand-kit.md → client_name
22
+ [PRODUCT_NAME] → brand-kit.md → primary_service
23
+ [PRICE] → brief content / website
24
+ [OFFER_TEXT] → brand-kit.md → cta_offer
25
+ [LANDING_PAGE] → brand-kit.md → landing_page
26
+ [PAIN_POINT] → brand-kit.md → target_pain_point
27
+ [MECHANISM] → brand-kit.md → approved_phrases
28
+ [ACTIVE_STATE] → brief content (device glow, motion, effect)
29
+ [AI_ACTOR_AGE] → brand-kit.md → ai_actor_age_range
30
+ [ACCENT_COLOR] → brand-kit.md → colors.secondary (hex, no #)
31
+ [GUARANTEE_DAYS] → brand-kit.md → compliance_notes
32
+ ```
33
+
34
+ ---
35
+
36
+ ## HOOKS
37
+
38
+ > Scene 1 only. One hook per variation (A–E). Scenes 2–N identical across all variations.
39
+
40
+ | File | ID | Best For | Format |
41
+ |------|----|----------|--------|
42
+ | `hooks/meme-overlay.md` | `meme-overlay` | Relatable lifestyle pain (tired, broke, frustrated) | `bedroom-minimic-talk` |
43
+ | `hooks/tiktok-comment.md` | `tiktok-comment` | High-skepticism categories; objection-first opens | `bedroom-minimic-talk` |
44
+ | `hooks/pov-confession.md` | `pov-confession` | Mirror moment; female 25–35 demo; skincare/beauty | `bedroom-minimic-talk` |
45
+ | `hooks/dollar-amount.md` | `dollar-amount` | Any category where overspending is the shared pain | `bedroom-minimic-talk`, `villain-animation` |
46
+ | `hooks/villain-hook.md` | `villain-hook` | Animated format; any product displacing incumbents | `villain-animation` |
47
+
48
+ **Recommended hook pairings (5-variation set):**
49
+ ```
50
+ bedroom-minimic-talk (skincare/beauty tech):
51
+ A: meme-overlay ← direct muse mirror — test first
52
+ B: tiktok-comment ← highest persuasion for skeptical categories
53
+ C: dollar-amount ← works for 28–40 Facebook/Meta feed
54
+ D: product-reveal* ← custom hook; device with active glow in frame 1
55
+ E: pov-confession ← native TikTok; mirror moment
56
+
57
+ villain-animation (pet / home / supplement):
58
+ A–E: villain-hook × 5 with different VO lines (see villain-hook.md → Hook Variations section)
59
+ ```
60
+ *product-reveal hook = custom variant; write inline in brief, no module file needed.
61
+
62
+ ---
63
+
64
+ ## BODY SCENES
65
+
66
+ > Scenes 2–N. Identical across all hook variations.
67
+
68
+ | File | ID | Scene # | Format | Beat |
69
+ |------|----|---------|--------|------|
70
+ | `body/minimic-problem.md` | `minimic-problem` | 2 | `bedroom-minimic-talk` | Authority + failed solutions confession |
71
+ | `body/tiktok-skeptic-pivot.md` | `tiktok-skeptic-pivot` | 3 | `bedroom-minimic-talk` | Skeptic disarm + product intro |
72
+ | `body/product-demo-glow.md` | `product-demo-glow` | 4 | `bedroom-minimic-talk` | Product in active use (glow/effect visible) |
73
+ | `body/villain-agitation.md` | `villain-agitation` | 2–5 (×4) | `villain-animation` | Stacked failed solutions as villain characters |
74
+ | `body/before-after-flatlay.md` | `before-after-flatlay` | 5 | `bedroom-minimic-talk` | Split-screen + "this is the real deal." flat lay |
75
+
76
+ **Sequencing rules:**
77
+ ```
78
+ bedroom-minimic-talk order:
79
+ minimic-problem → tiktok-skeptic-pivot → product-demo-glow → before-after-flatlay → [CTA]
80
+
81
+ villain-animation order:
82
+ villain-agitation × 4 → [product intro inline] → [social proof inline] → [CTA]
83
+ (product intro + social proof are format-specific — write inline, not from modules)
84
+ ```
85
+
86
+ ---
87
+
88
+ ## CTAs
89
+
90
+ > Final scene only. One CTA per brief. Select based on offer type + format.
91
+
92
+ | File | ID | Format | Offer Type |
93
+ |------|----|--------|------------|
94
+ | `cta/bogo-meme-bookend.md` | `bogo-meme-bookend` | `bedroom-minimic-talk` | BOGO / % off / any flash offer |
95
+ | `cta/guarantee-close.md` | `guarantee-close` | `villain-animation` | Guarantee + social proof number |
96
+
97
+ **Offer → module mapping:**
98
+ ```
99
+ Buy 1 Get 1 FREE → bogo-meme-bookend
100
+ % Discount → bogo-meme-bookend (swap offer text)
101
+ Free trial → bogo-meme-bookend (swap offer text)
102
+ Satisfaction guarantee → guarantee-close
103
+ Bundle deal → guarantee-close or bogo-meme-bookend depending on format
104
+ ```
105
+
106
+ ---
107
+
108
+ ## ASSEMBLY RECIPES
109
+
110
+ Copy-paste these to brief the production team or start a new JS file.
111
+
112
+ ### Recipe 1: Skincare/Beauty Tech — 23s BOGO (bedroom-minimic-talk)
113
+ ```
114
+ Scene 1: hooks/meme-overlay.md (Hook A — test first)
115
+ hooks/tiktok-comment.md (Hook B)
116
+ hooks/dollar-amount.md (Hook C)
117
+ [custom product-reveal hook] (Hook D — write inline)
118
+ hooks/pov-confession.md (Hook E)
119
+ Scene 2: body/minimic-problem.md
120
+ Scene 3: body/tiktok-skeptic-pivot.md
121
+ Scene 4: body/product-demo-glow.md
122
+ Scene 5: body/before-after-flatlay.md
123
+ Scene 6: cta/bogo-meme-bookend.md
124
+ ```
125
+
126
+ ### Recipe 2: Pet / Home / Supplement — 90–120s Villain Format
127
+ ```
128
+ Scene 1: hooks/villain-hook.md (5 variations A–E)
129
+ Scene 2: body/villain-agitation.md (Agitation 1 — COST)
130
+ Scene 3: body/villain-agitation.md (Agitation 2 — EFFORT)
131
+ Scene 4: body/villain-agitation.md (Agitation 3 — FUTILITY)
132
+ Scene 5: body/villain-agitation.md (Agitation 4 — RISK)
133
+ Scene 6: [product intro — write inline]
134
+ Scene 7: [product in action — write inline]
135
+ Scene 8: [social proof persona — write inline]
136
+ Scene 9: cta/guarantee-close.md
137
+ ```
138
+
139
+ ---
140
+
141
+ ## ADDING NEW MODULES
142
+
143
+ When you build a new brief and a scene is clearly reusable:
144
+ 1. Create `scene-modules/<type>/<new-id>.md` using any existing module as the template
145
+ 2. Add a row to the relevant table above
146
+ 3. Add it to `ad-formats/INDEX.md` under the compatible format
147
+ 4. Note which brief it was first deployed in at the bottom of the module file
148
+
149
+ ---
150
+
151
+ *Scene Module Library — Creative Strategy Worker Kit — April 2026*
@@ -0,0 +1,143 @@
1
+ # Scene Module: Before/After + Product Flat Lay
2
+ > ID: `before-after-flatlay`
3
+ > Type: body (Scene 5)
4
+ > Compatible Formats: `bedroom-minimic-talk`
5
+ > Timecode: 18–21s (in 23s format)
6
+ > Status: ✅ PROVEN — Solawave BOGO (Scene 5)
7
+
8
+ ---
9
+
10
+ ## WHAT IT DOES
11
+
12
+ Two rapid clips back-to-back. First: a split-screen before/after that delivers the social proof in a single glance. Second: a product flat lay with arrows pointing at it and the phrase "this is the real deal." — the product authority close. Together these 3 seconds are the brief's receipt: proof it works, proof of what to buy.
13
+
14
+ **Why it works:** The split-screen is the most trusted visual format for product proof on TikTok/Reels — viewers parse it instantly. The flat lay + arrows is borrowed from the muse's most persuasive moment — it says "I'm putting the camera on the thing that actually matters" without any words needing to explain it. "this is the real deal." is the copy that closes this scene — it's been proven in the muse and should not be paraphrased.
15
+
16
+ ---
17
+
18
+ ## VISUAL DIRECTION
19
+
20
+ ```
21
+ CLIP 1 — Split-Screen (1.5 seconds):
22
+ LEFT side: Bare, natural skin (or before-product state). Label: "before [BRAND_NAME]"
23
+ RIGHT side: Same creator/subject with [PRODUCT_NAME] in use ([ACTIVE_STATE]). Label: "[TIMEFRAME]"
24
+ Lighting: Matching warm light both sides. NOT dramatic — subtle, believable difference.
25
+ Note: "Before" should look normal/real — not intentionally bad. Authenticity > drama.
26
+
27
+ CLIP 2 — Product Flat Lay (1.5 seconds):
28
+ Subject: [PRODUCT_NAME] centered on clean surface (white, marble, or warm wood).
29
+ [ACTIVE_STATE] ON — product facing camera.
30
+ Arrows: 3 white animated arrows pointing DOWN toward the product.
31
+ Appear in sequence (staggered 0.2s each) — not all at once.
32
+ Text: "this is the real deal." — bold white text. Appears after arrows.
33
+ Brand: "[BRAND_NAME]" in smaller text below.
34
+ Lighting: Warm, slightly aspirational. Clean but not clinical.
35
+ ```
36
+
37
+ ---
38
+
39
+ ## ON-SCREEN TEXT
40
+
41
+ ```
42
+ CLIP 1 — Split-Screen labels:
43
+ Left: "before [BRAND_NAME]" — small, white, top or bottom of left panel
44
+ Right: "[TIMEFRAME]" — e.g. "week 3" / "day 14" / "30 days"
45
+ Small, white, top or bottom of right panel.
46
+
47
+ Note: "week 3" not "after 3 weeks" — brevity is required.
48
+ Note: do not use "after" label — it implies a clinical claim. Use timeframe only.
49
+
50
+ CLIP 2 — Flat Lay:
51
+ Line 1: "this is the real deal." — bold, white, all lowercase (muse style)
52
+ Line 2: "[BRAND_NAME]" — slightly smaller, white
53
+ Arrows: animated (not static) — stagger entry for dynamism
54
+ ```
55
+
56
+ ---
57
+
58
+ ## ACTOR DIALOGUE
59
+
60
+ ```
61
+ Spoken over BOTH clips (continuous):
62
+
63
+ Pattern: [personal result statement — specific but not a clinical claim]
64
+
65
+ Template:
66
+ "This is the real deal. [PERSONAL_RESULT] since before I had a reason to worry about it."
67
+
68
+ Examples:
69
+ "This is the real deal. My skin hasn't looked this good since before I had a reason to worry about it."
70
+ "This is the real deal. The marking stopped. Week 3 — completely different house."
71
+ "This is the real deal. I stopped counting how many serums are in the trash."
72
+
73
+ Delivery: Quiet conviction. Not shouting. Not a sales line. Just the truth.
74
+ "This is the real deal." — slight pause before it. Let it land.
75
+ ```
76
+
77
+ ---
78
+
79
+ ## TIMEFRAME CALIBRATION
80
+
81
+ ```
82
+ Use a timeframe that is:
83
+ - Long enough to be believable (not "next day")
84
+ - Short enough to be motivating (not "after 6 months")
85
+ - Consistent with brand compliance guidelines
86
+
87
+ Calibration guide:
88
+ Skincare device: "week 3" / "week 4" / "day 21"
89
+ Supplement: "day 30" / "week 6"
90
+ Pet behavior: "week 2" / "week 3" (behavior changes faster)
91
+ Air quality: "day 3" / "first week" (immediate-ish results credible)
92
+
93
+ Check brand-kit.md → compliance_notes before setting timeframe.
94
+ Never use exact % improvement without clinical backing.
95
+ ```
96
+
97
+ ---
98
+
99
+ ## BRAND-KIT PLACEHOLDERS
100
+
101
+ | Placeholder | Source | Example |
102
+ |-------------|--------|---------|
103
+ | `[BRAND_NAME]` | `brand-kit.md → client_name` | "Solawave" |
104
+ | `[PRODUCT_NAME]` | `brand-kit.md → primary_service` | "Solawave wand" |
105
+ | `[ACTIVE_STATE]` | Brief content | "red light glowing" |
106
+ | `[TIMEFRAME]` | Brief content (compliance-checked) | "week 3" |
107
+ | `[PERSONAL_RESULT]` | Brief content | "My skin hasn't looked this good..." |
108
+
109
+ ---
110
+
111
+ ## COMPLIANCE CHECK (run before finalizing)
112
+
113
+ ```
114
+ [ ] No "before/after" labels (use timeframe on right side only)
115
+ [ ] No specific % improvement claim
116
+ [ ] "Results may vary" included in Scene 6 bottom strip if making any outcome statement
117
+ [ ] Timeframe is plausible and consistent with brand-kit.md → compliance_notes
118
+ [ ] "this is the real deal." is a subjective personal statement — not a clinical claim ✓
119
+ ```
120
+
121
+ ---
122
+
123
+ ## JS STUB (sceneBlock row content)
124
+
125
+ ```js
126
+ // Drop into sceneBlock() rows array for Scene 5
127
+ ["Visual Direction", "(1) Split-screen 1.5s: bare [skin/state] LEFT 'before [BRAND_NAME]' — [PRODUCT_NAME] in use RIGHT '[TIMEFRAME]'. Matching warm light both sides.\n\n(2) Product flat lay: [PRODUCT_NAME] centered on [SURFACE]. [ACTIVE_STATE]. 3 staggered white arrows pointing down. 'this is the real deal.' bold white. '[BRAND_NAME]' below."],
128
+ ["Actor Line", "'This is the real deal. [PERSONAL_RESULT_STATEMENT].'"],
129
+ ["On-Screen Text", "Split: LEFT 'before [BRAND_NAME]' / RIGHT '[TIMEFRAME]'\n\nFlat lay: 'this is the real deal.' bold white + 3 animated arrows + '[BRAND_NAME]'"],
130
+ ["Compliance note", "No % claims. No 'after' label. '[TIMEFRAME]' only. 'Results may vary' in Scene 6 strip."],
131
+ ["Purpose", "Social proof + product authority. Split-screen is the receipt. 'this is the real deal.' closes the credibility loop before CTA."],
132
+ ["Transition", "Hard cut to CTA frame."],
133
+ ```
134
+
135
+ ---
136
+
137
+ ## AI GENERATION PROMPT STUB
138
+
139
+ ```
140
+ CLIP 1 (split-screen): Two-panel vertical split. LEFT: creator bare natural [skin/state], soft warm light, small label 'before [BRAND_NAME]'. RIGHT: same creator with [PRODUCT_NAME] in use [ACTIVE_STATE], small label '[TIMEFRAME]'. Matching warm ambient light both panels. Authentic, subtle difference — not dramatic. 9:16. 1.5 seconds.
141
+
142
+ CLIP 2 (flat lay): [PRODUCT_NAME] centered on [white marble/warm wood] surface. [ACTIVE_STATE] facing camera. Warm soft light. 3 white arrows animated in sequence pointing down at product. 'this is the real deal.' appears in bold white after arrows. Clean, minimal. 9:16. 1.5 seconds.
143
+ ```
@@ -0,0 +1,109 @@
1
+ # Scene Module: Mini-Mic Problem Confession
2
+ > ID: `minimic-problem`
3
+ > Type: body (Scene 2)
4
+ > Compatible Formats: `bedroom-minimic-talk`
5
+ > Timecode: 3–8s (in 23s format)
6
+ > Status: ✅ PROVEN — Solawave BOGO (Scene 2)
7
+
8
+ ---
9
+
10
+ ## WHAT IT DOES
11
+
12
+ The creator lists the things she's already tried — with specificity. Mini-mic in hand, product held casually in the other (not showcasing it yet). The point is to establish shared experience: she's not naive, she's done the work, nothing worked. This converts the viewer from skeptic to peer before the product is ever named.
13
+
14
+ **Why it works:** Shared struggle = trust. If she's tried the same $300 serums and $120 eye creams the viewer has, she has earned the right to recommend something. The casual product hold (not presenting it) creates subconscious anticipation — the viewer wonders what she's holding — without feeling sold to.
15
+
16
+ ---
17
+
18
+ ## VISUAL DIRECTION
19
+
20
+ ```
21
+ Frame: Creator close-up. Mini-mic in one hand at chin/chest level.
22
+ [PRODUCT_NAME] held casually in OTHER hand — not presented, just held.
23
+ Skincare/category items slightly out-of-focus in background (shelf, counter).
24
+ Lighting: Warm ambient — same bedroom setup as hook scene.
25
+ Camera: Tight angles alternating: face → hands/product → face.
26
+ Slight low angle — intimate, confiding.
27
+ Duration: 4–5 seconds.
28
+ ```
29
+
30
+ ---
31
+
32
+ ## ON-SCREEN TEXT
33
+
34
+ ```
35
+ Lists the failed products/attempts the creator has tried.
36
+ Appears as stacked caption beats, not all at once.
37
+
38
+ Template:
39
+ "[FAILED_CATEGORY_1]. [FAILED_CATEGORY_2]. [FAILED_CATEGORY_3]."
40
+ Key words bolded. White text, black outline. Bottom third.
41
+
42
+ Examples:
43
+ "serums. eye creams. sheet masks."
44
+ "$600 red light panels. microneedling. facials."
45
+ "clay litter. crystal litter. enzyme cleaner."
46
+ "supplements. probiotics. prescription topicals."
47
+ ```
48
+
49
+ ---
50
+
51
+ ## ACTOR DIALOGUE
52
+
53
+ ```
54
+ Pattern: [category items tried + dollar anchor] + [the honest failure] + [leads into product]
55
+
56
+ Full template:
57
+ "I've tried [FAILED_1]. [FAILED_2]. [FAILED_3]. [DOLLAR_AMOUNT] later.
58
+ Nothing was giving me what I actually needed for [PAIN_POINT]."
59
+
60
+ Short template (for tighter edits):
61
+ "[DOLLAR_AMOUNT] on [CATEGORY_PRODUCTS]. Nothing for [PAIN_POINT]. Until this."
62
+
63
+ Delivery: Candid, slightly frustrated — but resolved. She's past the frustration.
64
+ This is the origin story, not the complaint. Keep it moving.
65
+ Target: 4–5 seconds spoken, ~30–35 words max.
66
+ ```
67
+
68
+ ---
69
+
70
+ ## TRANSITION OUT
71
+
72
+ ```
73
+ Direct cut to the product being lifted into frame (Scene 3 — Skeptic Pivot).
74
+ OR: Creator lifts the product naturally at end of line — camera follows.
75
+ Do NOT fade or wipe — this format uses hard cuts throughout.
76
+ ```
77
+
78
+ ---
79
+
80
+ ## BRAND-KIT PLACEHOLDERS
81
+
82
+ | Placeholder | Source | Example |
83
+ |-------------|--------|---------|
84
+ | `[FAILED_1/2/3]` | Brief content + category research | "serums / eye creams / sheet masks" |
85
+ | `[DOLLAR_AMOUNT]` | Brief content | "$300" |
86
+ | `[CATEGORY_PRODUCTS]` | Brief content | "serums and red light panels" |
87
+ | `[PAIN_POINT]` | `brand-kit.md → target_pain_point` | "fine lines" / "cat odor" |
88
+ | `[PRODUCT_NAME]` | `brand-kit.md → primary_service` | "Solawave wand" |
89
+
90
+ ---
91
+
92
+ ## JS STUB (sceneBlock row content)
93
+
94
+ ```js
95
+ // Drop into sceneBlock() rows array for Scene 2
96
+ ["Visual Direction", "AI actor close-up, mini-mic in one hand at chin level. [PRODUCT_NAME] held casually in other hand — not presenting, just holding. [CATEGORY_ITEMS] slightly out-of-focus on shelf behind. Warm ambient light. Tight alternating angles: face / hands."],
97
+ ["Actor Line", "'I've tried [FAILED_1], [FAILED_2], [FAILED_3]. [DOLLAR_AMOUNT] later. Nothing was giving me what I actually needed for [PAIN_POINT].'"],
98
+ ["On-Screen Text", "'[FAILED_1]. [FAILED_2]. [FAILED_3].' — stacked caption beats. Key words bold."],
99
+ ["Purpose", "Build credibility through shared experience. Positions [PRODUCT_NAME] reveal as earned discovery, not ad pitch."],
100
+ ["Transition", "Direct cut to [PRODUCT_NAME] lifted into frame for Scene 3."],
101
+ ```
102
+
103
+ ---
104
+
105
+ ## AI GENERATION PROMPT STUB
106
+
107
+ ```
108
+ Photoreal female creator, [AI_ACTOR_AGE], natural look. Bedroom desk. Silver mini-mic in left hand at chin level. [PRODUCT_NAME] held casually in right hand (not presenting — just in hand). [CATEGORY_ITEMS] slightly blurred on shelf behind. She speaks directly and candidly — slightly frustrated resolving to confident. Warm golden ambient light. Tight alternating angles: face close-up / hands + product. Handheld feel. 9:16. 5 seconds.
109
+ ```
@@ -0,0 +1,123 @@
1
+ # Scene Module: Product Demo — Glow / Active Effect
2
+ > ID: `product-demo-glow`
3
+ > Type: body (Scene 4)
4
+ > Compatible Formats: `bedroom-minimic-talk`
5
+ > Timecode: 13–18s (in 23s format)
6
+ > Status: ✅ PROVEN — Solawave BOGO (Scene 4)
7
+
8
+ ---
9
+
10
+ ## WHAT IT DOES
11
+
12
+ Close-up of the product in active use — the mechanism is visible (red light, UV-C glow, steam, vibration). This is the scene where the product EARNS its claim. No words needed to explain what's happening — the visual does the work. Three micro-clips edited back-to-back at 1.5–2 second intervals: different use areas, same active state.
13
+
14
+ **Why it works:** For any product with a visible active state (light, motion, color, texture change), this scene is the single highest-converting moment in the ad. The viewer imagines it on their own skin/home. The "glow" is aspirational without being a claim — it's just the product working. Skin looks luminous because of the light, not because of a claim.
15
+
16
+ **Use this module when:** The product has a visually distinct active state. If the product has no visible effect (e.g. a cream), swap to a texture/application demo instead.
17
+
18
+ ---
19
+
20
+ ## VISUAL DIRECTION
21
+
22
+ ```
23
+ Format: 3 micro-clips in sequence, cut every 1.5–2 seconds.
24
+ Each clip: extreme close-up of product in use on a different area.
25
+
26
+ Clip 1: [USE_AREA_1] — e.g. under-eye, under-snout, near outlet
27
+ Clip 2: [USE_AREA_2] — e.g. cheekbone/jaw, flank area, second outlet
28
+ Clip 3: [USE_AREA_3] — e.g. forehead, neck, third outlet / wide establishing
29
+
30
+ Active state: [ACTIVE_STATE] warm and cinematic. Product's signature visual element.
31
+ Skin/surface: Dewy, healthy texture. No exaggeration — natural luminosity.
32
+ Camera: Extreme close-up. Product fills 40–60% of frame.
33
+ Lighting: Warm ambient. [ACTIVE_STATE] light adds practical illumination.
34
+ ```
35
+
36
+ **Active state guide by product type:**
37
+ - Red light therapy (Solawave): warm red/amber glow. Skin reflects it. Cinematic.
38
+ - UV-C (Clarifion ODRx): soft blue/violet glow. Device face visible.
39
+ - Microcurrent: subtle shimmer on skin. Focus on smoothing motion.
40
+ - Vibration/massage: motion blur suggestion. Muscle relaxation visual.
41
+ - Pheromone plug-in: soft warm light emanating from outlet. Cat/pet calming nearby.
42
+ - Serum/topical: texture close-up. Application swipe. Absorption into skin.
43
+
44
+ ---
45
+
46
+ ## ON-SCREEN TEXT
47
+
48
+ ```
49
+ Beat 1 (with Clip 1–2):
50
+ "[MECHANISM_SHORT]" — e.g. "microcurrent + red light"
51
+ White caption, key words bold.
52
+
53
+ Beat 2 (with Clip 3):
54
+ "[TIME_CLAIM]. That's it." — e.g. "5 minutes. That's it."
55
+ Bold, centered. White on slight dark scrim.
56
+ ```
57
+
58
+ ---
59
+
60
+ ## ACTOR DIALOGUE (VO over demo clips)
61
+
62
+ ```
63
+ Pattern: [mechanism in plain language] + [key benefit] + [time/ease anchor]
64
+
65
+ Full template:
66
+ "[MECHANISM_1] + [MECHANISM_2] — [BENEFIT]. You use it for [TIME]. Done."
67
+
68
+ Examples:
69
+ "Microcurrent + red light — exactly what I needed. 5 minutes. Done."
70
+ "UV-C light breaks down the odor molecules. You plug it in. Done."
71
+ "Pheromone tech — calms the territorial behavior at the source. Plug it in."
72
+
73
+ Delivery: Clean, direct, no fluff. She's describing the mechanism the way you'd text it.
74
+ Speed: slightly faster than Scenes 2–3 — this is the momentum scene.
75
+ ```
76
+
77
+ ---
78
+
79
+ ## TRANSITION OUT
80
+
81
+ ```
82
+ Cut to split-screen: bare/before skin LEFT — product in use RIGHT. (Scene 5: Before/After)
83
+ The word "done" or end of sentence is the verbal cut cue.
84
+ ```
85
+
86
+ ---
87
+
88
+ ## BRAND-KIT PLACEHOLDERS
89
+
90
+ | Placeholder | Source | Example |
91
+ |-------------|--------|---------|
92
+ | `[ACTIVE_STATE]` | Brief content | "red light glowing" / "UV-C on" |
93
+ | `[USE_AREA_1/2/3]` | Brief content | "under-eye / cheekbone / forehead" |
94
+ | `[MECHANISM_SHORT]` | `brand-kit.md → approved_phrases` | "microcurrent + red light" |
95
+ | `[BENEFIT]` | `brand-kit.md → core_message` | "reduces fine lines" / "calms marking behavior" |
96
+ | `[TIME_CLAIM]` | Brief content | "5 minutes" / "plug it in once" |
97
+
98
+ ---
99
+
100
+ ## JS STUB (sceneBlock row content)
101
+
102
+ ```js
103
+ // Drop into sceneBlock() rows array for Scene 4
104
+ ["Visual Direction", "3 micro-clips: [USE_AREA_1], [USE_AREA_2], [USE_AREA_3]. Cut every 1.5–2s. [ACTIVE_STATE] warm and cinematic throughout. Extreme close-up — product fills 40–60% of frame. Dewy, healthy skin/surface texture."],
105
+ ["Actor Line", "'[MECHANISM_SHORT] — [BENEFIT]. You use it for [TIME_CLAIM]. Done.'"],
106
+ ["On-Screen Text", "'[MECHANISM_SHORT]' → '[TIME_CLAIM]. That\\'s it.' — bold, centered."],
107
+ ["Purpose", "Show the product WORKING. [ACTIVE_STATE] is [BRAND]'s visual superpower. Make viewer want that effect on their own [skin/home/pet]."],
108
+ ["Transition", "Cut to split-screen: bare [skin/before] LEFT — [PRODUCT_NAME] in use RIGHT."],
109
+ ```
110
+
111
+ ---
112
+
113
+ ## AI GENERATION PROMPT STUB
114
+
115
+ ```
116
+ CLIP 1: Extreme close-up of [PRODUCT_NAME] gliding along [USE_AREA_1]. [ACTIVE_STATE] warm and cinematic. [SKIN/SURFACE] texture: dewy, healthy, natural. 9:16. 1.5 seconds.
117
+
118
+ CLIP 2: Same setup, [USE_AREA_2]. [ACTIVE_STATE] faces camera slightly. 9:16. 1.5 seconds.
119
+
120
+ CLIP 3: [USE_AREA_3] or slight pullback showing product in context. Creator's face partially in frame. [ACTIVE_STATE] illuminates the area naturally. 9:16. 2 seconds.
121
+
122
+ Edit: hard cuts between clips. No transitions. Creator's VO continues over all three.
123
+ ```
@@ -0,0 +1,119 @@
1
+ # Scene Module: TikTok Skeptic Pivot
2
+ > ID: `tiktok-skeptic-pivot`
3
+ > Type: body (Scene 3)
4
+ > Compatible Formats: `bedroom-minimic-talk`
5
+ > Timecode: 8–13s (in 23s format)
6
+ > Status: ✅ PROVEN — Solawave BOGO (Scene 3)
7
+
8
+ ---
9
+
10
+ ## WHAT IT DOES
11
+
12
+ A TikTok comment bubble ("Is this legit tho?") appears overlaid on screen. The creator reads it, recognizes it as her own former question, and uses it as the bridge to introduce the product. The comment externalises the viewer's skepticism — she answers it, not defensively, but as someone who did the research.
13
+
14
+ **Why it works:** This is the highest-leverage scene in the format. By the time Scene 3 starts, the viewer is curious but skeptical. The comment names their doubt in their own voice before they consciously form the objection. The creator's response ("I asked that too — here's what I found") converts resistance into open curiosity. Product introduced here lands 3× harder than if introduced in Scene 2.
15
+
16
+ ---
17
+
18
+ ## VISUAL DIRECTION
19
+
20
+ ```
21
+ Frame: Creator close-up. Same warm bedroom setting.
22
+ Comment: TikTok-style comment bubble overlaid — dark rounded rectangle, white text.
23
+ Username: @[generic relatable handle — e.g. @sarahtrying2024]
24
+ Comment text: "Is this legit tho?" or variation (see below)
25
+ Positioned: lower-center or left-of-center. Does NOT cover creator's face.
26
+ Beat: Creator glances DOWN at comment (0.5s) → slight smile / raised eyebrow (0.5s)
27
+ → looks UP at camera (1s) → lifts [PRODUCT_NAME] into frame ([ACTIVE_STATE] visible).
28
+ Duration: 4–5 seconds total.
29
+ ```
30
+
31
+ **Comment text variations:**
32
+ ```
33
+ "Is this legit tho?" ← default (proven)
34
+ "wait does this actually work"
35
+ "is this legit or just another [CAT] scam?"
36
+ "tried so many of these. do they actually work?"
37
+ "my derm said these don't do anything lol"
38
+ ```
39
+
40
+ ---
41
+
42
+ ## ON-SCREEN TEXT
43
+
44
+ ```
45
+ Step 1: TikTok comment bubble visible for 1.5–2 seconds.
46
+ Step 2: Comment fades. Creator's response caption appears:
47
+ "[RESPONSE_LINE]"
48
+ e.g. "that's literally what I asked."
49
+ e.g. "i went down the rabbit hole for you."
50
+
51
+ Step 3: Product mechanism caption:
52
+ "[MECHANISM]. at home."
53
+ e.g. "red light therapy. at home."
54
+ Key word ([MECHANISM]) bolded/highlighted.
55
+ ```
56
+
57
+ ---
58
+
59
+ ## ACTOR DIALOGUE
60
+
61
+ ```
62
+ Pattern: [validates the comment] + [earned credibility — she did the research] + [mechanism reveal]
63
+
64
+ Full template:
65
+ "That's literally what I said. So I looked it up.
66
+ [MECHANISM] — [WHAT_IT_DOES] — in [PRODUCT_FORM] you use at home."
67
+
68
+ Short template:
69
+ "Same question. I looked it up. [MECHANISM]. At home. For [PRICE_ANCHOR]."
70
+
71
+ Delivery: Slight amused recognition at the comment. Then direct, clear, confident.
72
+ She's answering a question she had herself — not defending a brand.
73
+ Speed: crisp but not rushed. ~30 words in 4–5 seconds.
74
+ ```
75
+
76
+ ---
77
+
78
+ ## TRANSITION OUT
79
+
80
+ ```
81
+ Immediate cut to product in active state ([ACTIVE_STATE] in motion) — Scene 4 Demo.
82
+ The word "home" or the mechanism name is the verbal cue to cut.
83
+ Do NOT linger. The momentum built here needs an immediate visual payoff.
84
+ ```
85
+
86
+ ---
87
+
88
+ ## BRAND-KIT PLACEHOLDERS
89
+
90
+ | Placeholder | Source | Example |
91
+ |-------------|--------|---------|
92
+ | `[MECHANISM]` | `brand-kit.md → approved_phrases` | "red light therapy" / "UV-C light" / "pheromone tech" |
93
+ | `[WHAT_IT_DOES]` | Brief content | "reduces fine lines" / "eliminates odor at the source" |
94
+ | `[PRODUCT_FORM]` | Brief content | "a wand" / "a plug-in device" / "a patch" |
95
+ | `[PRICE_ANCHOR]` | Brief / brand-kit | "under $200" / "$49" / "less than one derm visit" |
96
+ | `[ACTIVE_STATE]` | Brief content | "red light glowing" / "UV-C on" / "pheromone releasing" |
97
+ | `[PRODUCT_NAME]` | `brand-kit.md → primary_service` | "Solawave" |
98
+
99
+ ---
100
+
101
+ ## JS STUB (sceneBlock row content)
102
+
103
+ ```js
104
+ // Drop into sceneBlock() rows array for Scene 3
105
+ ["Visual Direction", "TikTok comment bubble overlaid: 'Is this legit tho?' — actor glances down, slight smile, looks up at camera. Lifts [PRODUCT_NAME] into frame — [ACTIVE_STATE] visible."],
106
+ ["Actor Line", "'That\\'s literally what I said. So I looked it up. [MECHANISM] — [WHAT_IT_DOES] — in [PRODUCT_FORM] you use at home.'"],
107
+ ["On-Screen Text", "Comment bubble: 'Is this legit tho?' → clears → response: 'that\\'s literally what I asked.' → '[MECHANISM]. at home.' (key word bolded)."],
108
+ ["Mirrors (muse)", "'Is this legit?' mirrors muse's 'if you even [care]' — both address viewer skepticism, breaking 4th wall.\n\n'[MECHANISM]. at home.' mirrors muse's 'is the only' — the revelation moment."],
109
+ ["Purpose", "Intercept #1 objection before it forms. [ACTIVE_STATE] = immediate visual proof product does something."],
110
+ ["Transition", "Cut to [PRODUCT_NAME] in use — [ACTIVE_STATE] in motion."],
111
+ ```
112
+
113
+ ---
114
+
115
+ ## AI GENERATION PROMPT STUB
116
+
117
+ ```
118
+ Photoreal female creator, [AI_ACTOR_AGE], natural look. Bedroom desk. Silver mini-mic visible. TikTok comment bubble overlaid: 'Is this legit tho?' (@[generic_username], dark rounded rectangle, white text). She glances DOWN at comment, raises eyebrow in recognition, looks UP at camera with slight knowing smile. Then lifts [PRODUCT_NAME] into frame — [ACTIVE_STATE] facing camera. Warm bedroom lighting. Handheld feel. 9:16. 5 seconds.
119
+ ```