@growthub/cli 0.3.34 → 0.3.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/assets/worker-kits/creative-strategist-v1/brands/_template/brand-kit.md +123 -0
- package/assets/worker-kits/creative-strategist-v1/brands/solawave/brand-kit.md +139 -0
- package/assets/worker-kits/creative-strategist-v1/bundles/creative-strategist-v1.json +47 -0
- package/assets/worker-kits/creative-strategist-v1/growthub-meta/README.md +14 -0
- package/assets/worker-kits/creative-strategist-v1/growthub-meta/kit-standard.md +47 -0
- package/assets/worker-kits/creative-strategist-v1/kit.json +82 -0
- package/assets/worker-kits/creative-strategist-v1/skills.md +341 -0
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/INDEX.md +94 -0
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/bedroom-minimic-talk.md +197 -0
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/frame-analysis.md +209 -0
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/process-specialist-medical.md +105 -0
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/villain-animation.md +183 -0
- package/assets/worker-kits/creative-strategist-v1/templates/brief-template.js +470 -0
- package/assets/worker-kits/creative-strategist-v1/templates/hooks-library/500-winning-hooks.csv +539 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/INDEX.md +151 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/before-after-flatlay.md +143 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/minimic-problem.md +109 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/product-demo-glow.md +123 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/tiktok-skeptic-pivot.md +119 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/villain-agitation.md +156 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/cta/bogo-meme-bookend.md +144 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/cta/guarantee-close.md +143 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/dollar-amount.md +105 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/meme-overlay.md +104 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/pov-confession.md +92 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/tiktok-comment.md +116 -0
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/villain-hook.md +134 -0
- package/assets/worker-kits/creative-strategist-v1/workers/creative-strategist/CLAUDE.md +440 -0
- package/dist/index.js +206 -0
- 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
|
+
```
|
package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/minimic-problem.md
ADDED
|
@@ -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
|
+
```
|
package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/product-demo-glow.md
ADDED
|
@@ -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
|
+
```
|