@growthub/cli 0.3.41 → 0.3.43
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 +87 -220
- package/assets/shared-templates/ad-formats/INDEX.md +94 -0
- package/assets/shared-templates/ad-formats/bedroom-minimic-talk.md +197 -0
- package/assets/shared-templates/ad-formats/frame-analysis.md +209 -0
- package/assets/shared-templates/ad-formats/process-specialist-medical.md +105 -0
- package/assets/shared-templates/ad-formats/villain-animation.md +183 -0
- package/assets/shared-templates/manifest.json +23 -0
- package/assets/shared-templates/scene-modules/INDEX.md +151 -0
- package/assets/shared-templates/scene-modules/body/before-after-flatlay.md +143 -0
- package/assets/shared-templates/scene-modules/body/minimic-problem.md +109 -0
- package/assets/shared-templates/scene-modules/body/product-demo-glow.md +123 -0
- package/assets/shared-templates/scene-modules/body/tiktok-skeptic-pivot.md +119 -0
- package/assets/shared-templates/scene-modules/body/villain-agitation.md +156 -0
- package/assets/shared-templates/scene-modules/cta/bogo-meme-bookend.md +144 -0
- package/assets/shared-templates/scene-modules/cta/guarantee-close.md +143 -0
- package/assets/shared-templates/scene-modules/hooks/dollar-amount.md +105 -0
- package/assets/shared-templates/scene-modules/hooks/meme-overlay.md +104 -0
- package/assets/shared-templates/scene-modules/hooks/pov-confession.md +92 -0
- package/assets/shared-templates/scene-modules/hooks/tiktok-comment.md +116 -0
- package/assets/shared-templates/scene-modules/hooks/villain-hook.md +134 -0
- package/dist/index.js +2606 -600
- package/package.json +4 -4
- package/dist/index.js.map +0 -7
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Scene Module: Guarantee Calendar Close
|
|
2
|
+
> ID: `guarantee-close`
|
|
3
|
+
> Type: cta (Scene 9 / final scene)
|
|
4
|
+
> Compatible Formats: `villain-animation`
|
|
5
|
+
> Timecode: 92–98s (in 98s format)
|
|
6
|
+
> Status: ✅ PROVEN — Clarifion ODRx brief (Scene 9)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## WHAT IT DOES
|
|
11
|
+
|
|
12
|
+
Closes the ad with stacked product boxes, satisfied animals/characters, and a satisfaction guarantee badge. The guarantee is the final objection remover — it converts "this looks good but I'm not sure" into "what do I have to lose?" The bokeh/clean background isolates the product and the proof, removing all cognitive clutter before the ask.
|
|
13
|
+
|
|
14
|
+
**Why it works:** After 4 agitation scenes and a product reveal, the viewer wants the product but fears waste. The guarantee calendar (already seen in Scene 8 social proof) is called back here — but now it's in the context of the CTA, not just social proof. Stacked product boxes signal popularity and availability. Satisfied animals complete the emotional arc: problem → solution → peace.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## VISUAL DIRECTION
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Setting: Clean bokeh background. Soft warm out-of-focus environment.
|
|
22
|
+
No environment clutter — complete contrast to Scenes 1–5.
|
|
23
|
+
|
|
24
|
+
Products: [HERO_PRODUCT] × 1–3 boxes stacked or arranged.
|
|
25
|
+
Shows product packaging (box), not just the device.
|
|
26
|
+
Stacking implies popularity/bundle/value.
|
|
27
|
+
|
|
28
|
+
Animals/Characters: [ANIMAL/CHARACTER] present and visibly calm/happy.
|
|
29
|
+
Positioned near or beside the product stack.
|
|
30
|
+
This is the "everything is resolved" signal.
|
|
31
|
+
|
|
32
|
+
Badge: Satisfaction guarantee badge visible in corner or overlaid.
|
|
33
|
+
Shows [GUARANTEE_DAYS]-day guarantee explicitly.
|
|
34
|
+
|
|
35
|
+
Animation: Subtle particle or glow effect optional — aspirational, not distracting.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## ON-SCREEN TEXT
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Karaoke beats (continue word-by-word rhythm from throughout the ad):
|
|
44
|
+
"[SOCIAL_PROOF_NUMBER]" → "PARENTS/CUSTOMERS" → "ALREADY" → "[TRIED/TRUSTED]"
|
|
45
|
+
"[OFFER_TEXT]" → "FREE [BENEFIT]" → "IN [TIMEFRAME]"
|
|
46
|
+
"[GUARANTEE_DAYS] DAY" → "[GUARANTEE_TYPE]" → "GUARANTEED"
|
|
47
|
+
|
|
48
|
+
CTA overlay (final 2 seconds):
|
|
49
|
+
Line 1: "[OFFER_TEXT]" — large, bold
|
|
50
|
+
Line 2: "[LANDING_PAGE]"
|
|
51
|
+
Line 3: "Shop Now →" or "Order Today →"
|
|
52
|
+
Badge: "[GUARANTEE_DAYS]-Day Satisfaction Guarantee"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## ACTOR/VO DIALOGUE
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Pattern: [social proof number] + [offer] + [guarantee as risk-removal]
|
|
61
|
+
|
|
62
|
+
Full template:
|
|
63
|
+
"[NUMBER] [CUSTOMERS/PET PARENTS] already [trusted/tried] [PRODUCT_NAME].
|
|
64
|
+
[OFFER_TEXT]. And if it doesn't work — [GUARANTEE_DAYS]-day money back. Guaranteed."
|
|
65
|
+
|
|
66
|
+
Short template:
|
|
67
|
+
"[OFFER_TEXT] at [LANDING_PAGE]. [GUARANTEE_DAYS] days, money back. Try it."
|
|
68
|
+
|
|
69
|
+
Delivery: Confident, calm, direct. The VO has earned trust through the ad — no need to push.
|
|
70
|
+
"Guaranteed" is the last word heard — it neutralises the final hesitation.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## GUARANTEE CALIBRATION
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
Match EXACTLY to brand-kit.md → compliance_notes and the actual guarantee offered.
|
|
79
|
+
|
|
80
|
+
Common guarantee periods:
|
|
81
|
+
30 days: Standard consumer product guarantee
|
|
82
|
+
60 days: Premium / higher-ticket product
|
|
83
|
+
90 days: Supplement category standard
|
|
84
|
+
|
|
85
|
+
Language compliance:
|
|
86
|
+
✅ "[N]-Day Satisfaction Guarantee"
|
|
87
|
+
✅ "[N]-Day Money Back Guarantee"
|
|
88
|
+
✅ "Try it risk-free for [N] days"
|
|
89
|
+
❌ "It will definitely work" — never
|
|
90
|
+
❌ "100% guaranteed results" — never (results may vary required)
|
|
91
|
+
|
|
92
|
+
Always verify against brand-kit.md → compliance_notes before finalizing.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## SOCIAL PROOF NUMBER
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Use a real number if available from brand assets.
|
|
101
|
+
If not available, use ranges: "thousands of" / "over 10,000" / "[X]K+ customers"
|
|
102
|
+
|
|
103
|
+
Sources to check:
|
|
104
|
+
- brand-kit.md → previous_ads / asset_links
|
|
105
|
+
- Brand website (review count, customer count)
|
|
106
|
+
- Instagram / TikTok (follower / engagement signal)
|
|
107
|
+
|
|
108
|
+
Never fabricate a specific number without brand confirmation.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## BRAND-KIT PLACEHOLDERS
|
|
114
|
+
|
|
115
|
+
| Placeholder | Source | Example |
|
|
116
|
+
|-------------|--------|---------|
|
|
117
|
+
| `[HERO_PRODUCT]` | `brand-kit.md → primary_service` | "Clarifion ODRx" |
|
|
118
|
+
| `[ANIMAL/CHARACTER]` | Brief content | "happy cats" / "calm dog" |
|
|
119
|
+
| `[GUARANTEE_DAYS]` | `brand-kit.md → compliance_notes` | "30" / "60" |
|
|
120
|
+
| `[OFFER_TEXT]` | `brand-kit.md → cta_offer` | "Buy 1 Get 1 FREE" |
|
|
121
|
+
| `[LANDING_PAGE]` | `brand-kit.md → landing_page` | "info.clarifionodrx.com" |
|
|
122
|
+
| `[SOCIAL_PROOF_NUMBER]` | Brand research | "10,000+" / "thousands of" |
|
|
123
|
+
| `[BRAND_ACCENT_COLOR]` | `brand-kit.md → colors.secondary` | "2C7FF8" |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## JS STUB (sceneBlock row content)
|
|
128
|
+
|
|
129
|
+
```js
|
|
130
|
+
// Drop into sceneBlock() rows array for final CTA scene
|
|
131
|
+
["Visual Direction", "Bokeh/clean background. [HERO_PRODUCT] × 1–3 boxes stacked. [ANIMAL/CHARACTER] calm and happy nearby. Satisfaction guarantee badge visible. Subtle warm glow — aspirational, not clinical."],
|
|
132
|
+
["On-Screen Text", "Karaoke: '[SOCIAL_PROOF_NUMBER]' → 'ALREADY' → '[TRUSTED]'\n\nCTA overlay: '[OFFER_TEXT]' large bold + '[LANDING_PAGE]' + 'Shop Now →' + '[GUARANTEE_DAYS]-Day Satisfaction Guarantee' badge."],
|
|
133
|
+
["VO", "'[SOCIAL_PROOF_NUMBER] [customers] already [trusted] [PRODUCT_NAME]. [OFFER_TEXT]. [GUARANTEE_DAYS] days, money back. Guaranteed.'"],
|
|
134
|
+
["Purpose", "Remove the final objection: risk of waste. Guarantee converts hesitation to action. Stacked boxes = popularity signal."],
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## AI GENERATION PROMPT STUB
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
3D animated bokeh background — clean, warm, soft focus. [HERO_PRODUCT] boxes stacked in pyramid or neat stack (2–3 boxes, packaging visible). [ANIMAL/CHARACTER] seated calmly beside the stack — happy, peaceful expression. Satisfaction guarantee badge in lower corner. Warm aspirational lighting. Subtle particle glow effect optional. Karaoke text overlaid word-by-word. Final 2s: CTA overlay '[OFFER_TEXT]' + '[LANDING_PAGE]' + 'Shop Now →'. 9:16. 6 seconds.
|
|
143
|
+
```
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Scene Module: Dollar Amount Confession Hook
|
|
2
|
+
> ID: `dollar-amount`
|
|
3
|
+
> Type: hook (Scene 1)
|
|
4
|
+
> Compatible Formats: `bedroom-minimic-talk`, `villain-animation`
|
|
5
|
+
> Status: ✅ PROVEN — Solawave BOGO (Hook C)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## WHAT IT DOES
|
|
10
|
+
|
|
11
|
+
Opens with a specific dollar amount the viewer has already wasted on the category. No product shown. No solution yet. Just the number — and the frustration. The specificity of the dollar amount is what makes it land: "spent $300 on serums" is a receipt the viewer recognizes from their own life.
|
|
12
|
+
|
|
13
|
+
**Why it works:** Specificity creates credibility. "$300" is a real number that signals the creator has lived the same experience. Vague language ("I tried so many things") is forgettable. A dollar amount is a memory trigger. Works across all demographics — everyone has overspent on something that didn't work.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## VISUAL DIRECTION
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Frame: Creator at desk, mini-mic in hand. Leaning slightly toward camera.
|
|
21
|
+
No product shown. No meme overlay. Pure spoken confession.
|
|
22
|
+
Expression: slightly exasperated → resolving to knowing.
|
|
23
|
+
Lighting: Warm ambient bedroom. Consistent with rest of format.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Variation: Text-over-shoulder stack**
|
|
27
|
+
Dollar amount and product list appear as stacked text overlaid beside the creator's face:
|
|
28
|
+
```
|
|
29
|
+
"$300 on serums ❌"
|
|
30
|
+
"$120 eye cream ❌"
|
|
31
|
+
"red light panel $600 ❌"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## ON-SCREEN TEXT
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Option A — Single stat:
|
|
40
|
+
"spent $[AMOUNT] on [CATEGORY]. still [PROBLEM]."
|
|
41
|
+
|
|
42
|
+
Option B — Stack:
|
|
43
|
+
"$[AMOUNT_1] on [PRODUCT_1] ❌"
|
|
44
|
+
"$[AMOUNT_2] on [PRODUCT_2] ❌"
|
|
45
|
+
"$[AMOUNT_3] on [PRODUCT_3] ❌"
|
|
46
|
+
|
|
47
|
+
Style: White text, black outline. Dollar amounts bolded.
|
|
48
|
+
❌ emoji optional — signals failure visually without words.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## ACTOR DIALOGUE
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Pattern: [dollar amount + category] + [the failure] + [discovery pivot]
|
|
57
|
+
|
|
58
|
+
Templates:
|
|
59
|
+
"I was that person. [AMOUNT] on [CATEGORY]. Zero results. Then I found this."
|
|
60
|
+
"Spent [AMOUNT] on [CATEGORY_PRODUCTS]. Nothing was working. Until [PRODUCT_NAME]."
|
|
61
|
+
"I did the [AMOUNT] routine. The whole thing. Didn't move the needle."
|
|
62
|
+
|
|
63
|
+
Delivery: Matter-of-fact. Not self-pitying. She's moved past it — this is the origin story.
|
|
64
|
+
Slight emphasis on the dollar amount.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## BRAND-KIT PLACEHOLDERS
|
|
70
|
+
|
|
71
|
+
| Placeholder | Source | Example |
|
|
72
|
+
|-------------|--------|---------|
|
|
73
|
+
| `[AMOUNT]` | Brief context / category research | "$300" / "$500" / "$150" |
|
|
74
|
+
| `[CATEGORY]` | `brand-kit.md → industry` | "serums" / "supplements" / "litter" |
|
|
75
|
+
| `[CATEGORY_PRODUCTS]` | Brief content | "serums, eye creams, sheet masks" |
|
|
76
|
+
| `[PROBLEM]` | `brand-kit.md → target_pain_point` | "still saw fine lines" |
|
|
77
|
+
| `[PRODUCT_NAME]` | `brand-kit.md → primary_service` | "Solawave" |
|
|
78
|
+
|
|
79
|
+
**Amount calibration by category:**
|
|
80
|
+
- Skincare/beauty: $150–$400
|
|
81
|
+
- Pet products: $200–$500
|
|
82
|
+
- Home devices: $300–$800
|
|
83
|
+
- Supplements: $100–$300
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## JS STUB (hookCard)
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
hookCard("C", "Dollar Amount Confession",
|
|
91
|
+
"VISUAL: Actor at desk, mini-mic in hand, leaning toward camera. No meme, no product. Pure confession.\n" +
|
|
92
|
+
"Optional: stacked text overlay beside face listing products + prices + ❌.\n\n" +
|
|
93
|
+
"ON-SCREEN TEXT: 'spent $[AMOUNT] on [CATEGORY]. still [PROBLEM].'\n\n" +
|
|
94
|
+
"ACTOR LINE: 'I was that person. [AMOUNT] on [CATEGORY_PRODUCTS]. Zero results. Then I found [PRODUCT_NAME].'\n\n" +
|
|
95
|
+
"NOTE: Dollar-amount specificity is the credibility signal. Pick an amount the target audience actually spends."
|
|
96
|
+
)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## AI GENERATION PROMPT STUB
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Photoreal female creator, [AI_ACTOR_AGE], natural look, warm skin tone. Bedroom desk. Silver mini-mic in hand, leaning slightly toward camera. Expression: slightly exasperated at first, resolving to knowing confidence. No meme overlay. Warm ambient light. Optional: stacked text overlaid beside face ('$[AMOUNT] on [PRODUCT] ❌'). Direct, candid delivery. 9:16. 3 seconds.
|
|
105
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Scene Module: Meme Overlay Hook
|
|
2
|
+
> ID: `meme-overlay`
|
|
3
|
+
> Type: hook (Scene 1)
|
|
4
|
+
> Compatible Formats: `bedroom-minimic-talk`
|
|
5
|
+
> Status: ✅ PROVEN — Solawave BOGO (Hook A)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## WHAT IT DOES
|
|
10
|
+
|
|
11
|
+
Opens with a viral meme character overlaid on the creator's frame (lower 60% of screen). Creator's eyes are visible above the meme. The meme character expresses the target audience's pain state (tired, stressed, broke, defeated). The meme clears at ~2 seconds and the creator speaks — now the viewer is already emotionally calibrated.
|
|
12
|
+
|
|
13
|
+
**Why it works:** The meme is a pre-loaded emotional shorthand. The viewer sees "D.W. Arthur tired face" and instantly downloads 8 words of emotional context in 0.5 seconds. It also signals "this person has the same taste as me" — a micro-trust signal before any product is mentioned.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## VISUAL DIRECTION
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Frame: Creator at bedroom desk, mini-mic at chin level.
|
|
21
|
+
Meme: [MEME_CHARACTER] overlaid — fills lower 60% of frame.
|
|
22
|
+
Creator's eyes and forehead visible above.
|
|
23
|
+
Meme should match the pain state (tired = dark circles, broke = crying money, etc.)
|
|
24
|
+
Duration: 1.5–2 seconds of meme before it clears or fades.
|
|
25
|
+
Lighting: Warm ambient — bedroom or desk lamp.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Meme selection guide:**
|
|
29
|
+
- Under-eye / tired skin → D.W. from Arthur (dark circles), "4am" memes
|
|
30
|
+
- Wasted money on skincare → Sad Keanu, Crying Jordan, "SPENT $300" text meme
|
|
31
|
+
- Feeling old → Miss Minutes, aging character memes
|
|
32
|
+
- Frustrated with solutions not working → "This is fine" dog, "I've tried everything" formats
|
|
33
|
+
- Skepticism → "well yes but actually no" meme, Pacha "ugh finally" reverse
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## ON-SCREEN TEXT
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Line 1: "[RELATABLE_PAIN_STATEMENT]"
|
|
41
|
+
e.g. "me looking at my forehead every morning"
|
|
42
|
+
e.g. "oh hey 4am its me"
|
|
43
|
+
e.g. "me after spending $300 on skincare"
|
|
44
|
+
|
|
45
|
+
Style: White text, black outline. Bold key words. Bottom third.
|
|
46
|
+
Timing: Text appears with meme, stays through creator's first spoken word.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## ACTOR DIALOGUE (spoken after meme clears)
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Pattern: [acknowledgment of meme state] + [pivot to discovery]
|
|
55
|
+
|
|
56
|
+
Templates:
|
|
57
|
+
"ok but actually... I found something."
|
|
58
|
+
"real. and then I found [PRODUCT_NAME]."
|
|
59
|
+
"been that person. here's what actually worked."
|
|
60
|
+
"[laugh/exhale] — ok so this changed it."
|
|
61
|
+
|
|
62
|
+
Delivery: Casual, slightly conspiratorial. NOT an announcer voice.
|
|
63
|
+
Like texting a friend the thing that fixed it.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## BRAND-KIT PLACEHOLDERS
|
|
69
|
+
|
|
70
|
+
| Placeholder | Source | Example |
|
|
71
|
+
|-------------|--------|---------|
|
|
72
|
+
| `[MEME_CHARACTER]` | User direction or brief | "D.W. from Arthur (tired face)" |
|
|
73
|
+
| `[RELATABLE_PAIN_STATEMENT]` | `brand-kit.md → target_pain_point` | "me looking at my forehead every morning" |
|
|
74
|
+
| `[PRODUCT_NAME]` | `brand-kit.md → primary_service` | "Solawave wand" |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## MUSE REFERENCE
|
|
79
|
+
|
|
80
|
+
Muse: @frankyshaw — frame_1s.jpg, frame_2s.jpg
|
|
81
|
+
Text: "oh hey 4am its me" + "getting five"
|
|
82
|
+
Meme: D.W. from Arthur (cartoon character with dark circles, tired expression)
|
|
83
|
+
Format: Meme overlay on creator's face. Eyes visible above. Mini-mic in hand.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## JS STUB (hookCard)
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
hookCard("A", "Tired Skin Meme — Direct Muse Mirror",
|
|
91
|
+
"VISUAL: [MEME_CHARACTER] overlaid on lower 60% of frame. Actor's eyes visible above. Mini-mic in hand.\n\n" +
|
|
92
|
+
"ON-SCREEN TEXT: '[RELATABLE_PAIN_STATEMENT]'\n\n" +
|
|
93
|
+
"ACTOR LINE (after meme clears): '[PIVOT_LINE_TO_PRODUCT]'\n\n" +
|
|
94
|
+
"NOTE: Direct mirror of muse format. Test first — highest muse fidelity."
|
|
95
|
+
)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## AI GENERATION PROMPT STUB
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Photoreal female creator, [AI_ACTOR_AGE], natural look, warm skin tone. Bedroom desk. Casual [OUTFIT]. Silver condenser mini-mic held at chin. [MEME_CHARACTER] overlay fills lower 60% of frame — creator's eyes and forehead visible above. She glances slightly downward at the meme, looks up with a knowing half-smile. Warm ambient light from left (bedside lamp). Handheld feel. Authentic TikTok creator bedroom aesthetic. 9:16. 3 seconds.
|
|
104
|
+
```
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Scene Module: POV Mirror Confession Hook
|
|
2
|
+
> ID: `pov-confession`
|
|
3
|
+
> Type: hook (Scene 1)
|
|
4
|
+
> Compatible Formats: `bedroom-minimic-talk`
|
|
5
|
+
> Status: ✅ PROVEN — Solawave BOGO (Hook E)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## WHAT IT DOES
|
|
10
|
+
|
|
11
|
+
Creator is caught in a candid moment: looking at herself in a mirror, scrutinizing her skin. "POV:" text appears — a TikTok native language signal that puts the viewer IN the moment. She turns to camera with mini-mic, transitioning from the private moment to the share.
|
|
12
|
+
|
|
13
|
+
**Why it works:** "POV:" is the highest-engagement text format on TikTok/Reels — it collapses the distance between creator and viewer. The mirror moment is relatable to anyone who's ever examined their own face. The turn-to-camera creates a reveal beat in 3 seconds.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## VISUAL DIRECTION
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Frame: Creator in bathroom or bedroom, facing mirror. Camera captures her OVER THE SHOULDER
|
|
21
|
+
so we see both her face and the mirror reflection simultaneously.
|
|
22
|
+
OR: creator looking directly into front camera as if checking skin — then pulls back.
|
|
23
|
+
Beat: She leans in to look at her skin (1 second) → recognition/reaction face (0.5s)
|
|
24
|
+
→ turns toward camera/phone with mini-mic (1.5s).
|
|
25
|
+
Lighting: Warm bathroom/vanity light. Natural, slightly imperfect. NOT studio.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## ON-SCREEN TEXT
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Line 1: "POV: [PAIN_POINT_AS_POV_STATEMENT]"
|
|
34
|
+
|
|
35
|
+
Templates:
|
|
36
|
+
"POV: your $80 eye cream stopped working"
|
|
37
|
+
"POV: you've been using the same serum for 6 months and nothing changed"
|
|
38
|
+
"POV: you just turned [AGE] and your face noticed first"
|
|
39
|
+
"POV: you've tried every skincare thing on your FYP"
|
|
40
|
+
|
|
41
|
+
Style: White text, black outline. "POV:" in slightly smaller text than the statement.
|
|
42
|
+
Appears at top of frame (unlike other hooks which use bottom third).
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## ACTOR DIALOGUE
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Pattern: [names the specific failed product/investment] + [pivot to solution]
|
|
51
|
+
|
|
52
|
+
Templates:
|
|
53
|
+
"Been there. Here's what actually moved the needle."
|
|
54
|
+
"That was me. And then I stopped wasting money and tried this."
|
|
55
|
+
"Same. For [TIME]. Until I found [PRODUCT_NAME]."
|
|
56
|
+
"I had that exact face every morning until [PRODUCT_NAME]."
|
|
57
|
+
|
|
58
|
+
Delivery: Matter-of-fact. She's past the frustration stage — she found the answer.
|
|
59
|
+
Slight confidence in the turn-to-camera moment.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## BRAND-KIT PLACEHOLDERS
|
|
65
|
+
|
|
66
|
+
| Placeholder | Source | Example |
|
|
67
|
+
|-------------|--------|---------|
|
|
68
|
+
| `[PAIN_POINT_AS_POV_STATEMENT]` | `brand-kit.md → target_pain_point` | "your $80 eye cream stopped working" |
|
|
69
|
+
| `[PRODUCT_NAME]` | `brand-kit.md → primary_service` | "Solawave" |
|
|
70
|
+
| `[AGE]` | `brand-kit.md → target_age_range` midpoint | "28" / "32" |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## JS STUB (hookCard)
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
hookCard("E", "POV Mirror Confession",
|
|
78
|
+
"VISUAL: Creator in bathroom/bedroom facing mirror. Camera over-shoulder — we see face + reflection.\n" +
|
|
79
|
+
"She leans in to examine skin, reaction face, then turns to camera with mini-mic.\n\n" +
|
|
80
|
+
"ON-SCREEN TEXT (top of frame): 'POV: [PAIN_POINT_AS_POV_STATEMENT]'\n\n" +
|
|
81
|
+
"ACTOR LINE: '[PIVOT_TO_SOLUTION_LINE]'\n\n" +
|
|
82
|
+
"NOTE: Native TikTok language. Mirror moment is universally relatable. Best for 25–35 female demo."
|
|
83
|
+
)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## AI GENERATION PROMPT STUB
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
Photoreal female creator, [AI_ACTOR_AGE], natural look. Bathroom or bedroom vanity. Camera captures her over-the-shoulder — both face and mirror reflection visible. She leans in to look at her skin, expression: scrutiny → recognition → resolves to discovery. Turns to camera/phone with silver mini-mic in hand. Warm vanity/bathroom lighting. Unfiltered, authentic. Text overlay at top: 'POV: [PAIN_POINT]'. 9:16. 3 seconds.
|
|
92
|
+
```
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Scene Module: TikTok Comment Hook
|
|
2
|
+
> ID: `tiktok-comment`
|
|
3
|
+
> Type: hook (Scene 1)
|
|
4
|
+
> Compatible Formats: `bedroom-minimic-talk`
|
|
5
|
+
> Status: ✅ PROVEN — Solawave BOGO (Hook B)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## WHAT IT DOES
|
|
10
|
+
|
|
11
|
+
Opens with a TikTok-style comment bubble overlaid on screen. The comment voices the viewer's exact skepticism about the category/product ("Is this legit or just another skincare scam?"). The creator reads it, recognizes it, and responds directly to camera — turning the comment into a shared moment rather than a defensive rebuttal.
|
|
12
|
+
|
|
13
|
+
**Why it works:** It names the objection in the viewer's own voice before the viewer consciously forms it. The comment feels like a peer asking, not an ad defending. The creator's response ("Girl, I had the same question") transforms skepticism into curiosity in 3 seconds. High persuasion hook for any category with trust barriers.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## VISUAL DIRECTION
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Frame: Creator at bedroom desk, mini-mic in one hand.
|
|
21
|
+
She's holding her phone slightly toward the camera, or comment appears as overlay.
|
|
22
|
+
Comment: TikTok-style comment bubble (dark rounded rectangle, white username + text).
|
|
23
|
+
Positioned in lower-middle or left-of-center of frame.
|
|
24
|
+
Creator glances DOWN at it → raises an eyebrow → looks UP at camera.
|
|
25
|
+
Duration: Comment visible for 1.5–2 seconds.
|
|
26
|
+
Lighting: Warm bedroom ambient.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Comment text options (pick one per variation):**
|
|
30
|
+
```
|
|
31
|
+
"Is this legit or just another skincare scam?"
|
|
32
|
+
"does this actually work or is it just hype"
|
|
33
|
+
"Is this legit tho?"
|
|
34
|
+
"wait is this actually real??"
|
|
35
|
+
"tried so many of these. Do they actually work?"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## ON-SCREEN TEXT
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Overlay: [TikTok comment bubble] — "Is this legit or just another [CATEGORY] scam?"
|
|
44
|
+
Username: @[generic — e.g. @sarahtrying2024 / @beautygirl_real]
|
|
45
|
+
|
|
46
|
+
After: Comment fades. Creator's caption appears:
|
|
47
|
+
"[RESPONSE_LINE]"
|
|
48
|
+
e.g. "girl. i had the same question."
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## ACTOR DIALOGUE
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Pattern: [validates the question] + [earned credibility signal] + [pivot to answer]
|
|
57
|
+
|
|
58
|
+
Templates:
|
|
59
|
+
"Girl. I had the same question. So I actually tested it."
|
|
60
|
+
"Literally me 3 weeks ago. I looked it up."
|
|
61
|
+
"Same. I went down the rabbit hole so you don't have to."
|
|
62
|
+
"I asked that too. Here's what I found."
|
|
63
|
+
|
|
64
|
+
Delivery: Slight amused smile at the comment. Recognition, not defensiveness.
|
|
65
|
+
She's not selling — she's answering a question she had herself.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## BRAND-KIT PLACEHOLDERS
|
|
71
|
+
|
|
72
|
+
| Placeholder | Source | Example |
|
|
73
|
+
|-------------|--------|---------|
|
|
74
|
+
| `[CATEGORY]` | `brand-kit.md → industry` | "skincare" / "pet" / "supplement" |
|
|
75
|
+
| `[PRODUCT_NAME]` | `brand-kit.md → primary_service` | "Solawave wand" |
|
|
76
|
+
| `[RESPONSE_LINE]` | Brief content | "girl. i had the same question." |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## DUAL USE: Hook OR Body Scene
|
|
81
|
+
|
|
82
|
+
This module works in TWO positions:
|
|
83
|
+
1. **As Hook A or B** (Scene 1, 0–3s) — pure skepticism open. No product shown.
|
|
84
|
+
2. **As Scene 3 body beat** (8–13s) — comment appears mid-ad as the "skeptic pivot" after the problem confession. Product is introduced immediately after.
|
|
85
|
+
|
|
86
|
+
When used in Scene 3, pair with `body/tiktok-skeptic-pivot.md` for the full beat.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## MUSE REFERENCE
|
|
91
|
+
|
|
92
|
+
Muse: @frankyshaw — frames around 11–13s (the "if you even" + "me rn editing" beat)
|
|
93
|
+
The muse doesn't use a literal TikTok comment — but addresses viewer skepticism directly at this beat.
|
|
94
|
+
The TikTok comment format is the **Solawave enhancement** of that skepticism-disarm beat.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## JS STUB (hookCard)
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
hookCard("B", "TikTok Comment — 'Is This Legit?'",
|
|
102
|
+
"VISUAL: TikTok comment bubble overlaid: 'Is this legit or just another [CATEGORY] scam?'\n" +
|
|
103
|
+
"Actor glances down at it, raises eyebrow, looks back at camera with amused recognition.\n\n" +
|
|
104
|
+
"ON-SCREEN TEXT: [comment bubble] → clears → '[RESPONSE_LINE]'\n\n" +
|
|
105
|
+
"ACTOR LINE: '[RESPONSE_LINE] So I actually tested it.'\n\n" +
|
|
106
|
+
"NOTE: Preempts #1 consumer objection in the first 2 seconds. High persuasion."
|
|
107
|
+
)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## AI GENERATION PROMPT STUB
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
Photoreal female creator, [AI_ACTOR_AGE], natural look, warm skin tone. Bedroom desk. Silver mini-mic in one hand. TikTok comment bubble overlaid on frame: 'Is this legit or just another [CATEGORY] scam?' (dark rounded rectangle, white text, @username visible). She looks down at comment, raises an eyebrow in recognition, looks up at camera with slight amused smile. Warm ambient bedroom lighting. Authentic TikTok creator aesthetic. 9:16. 3 seconds.
|
|
116
|
+
```
|