@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,197 @@
|
|
|
1
|
+
# Ad Format: Bedroom Mini-Mic Talk
|
|
2
|
+
> ID: `bedroom-minimic-talk`
|
|
3
|
+
> Category: Skincare / Beauty Tech / Consumer Product (any)
|
|
4
|
+
> Length: 20–30 seconds (proven at 23s)
|
|
5
|
+
> Scene Count: 6
|
|
6
|
+
> Hook Variations: 5 (A–E)
|
|
7
|
+
> Status: ✅ PROVEN — Solawave BOGO brief, April 2026
|
|
8
|
+
> Aspect Ratios: 9:16 primary, 1:1 secondary
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## MUSE REFERENCE
|
|
13
|
+
|
|
14
|
+
- **Creator:** @frankyshaw (Instagram / TikTok)
|
|
15
|
+
- **URL:** https://www.instagram.com/reels/DU1lWOeDsdg/
|
|
16
|
+
- **Original product featured:** Dr. Melaxin Cemenrete (Korean skincare)
|
|
17
|
+
- **Local muse file:** `~/Downloads/Korean skincare truth…mp4`
|
|
18
|
+
- **Runtime:** 23 seconds | 720×1280 | 9:16 vertical
|
|
19
|
+
- **Why it works:** High-spend, high-persuasion skincare category. Meme-bookend (opens tired/closes approving) creates an emotional payoff that feels earned. Mini-mic prop signals authenticity without production cost. TikTok comment overlay intercepts the #1 objection before it forms. Self-aware humor prevents it from feeling like an ad.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## FORMAT SIGNALS (non-negotiable)
|
|
24
|
+
|
|
25
|
+
These elements define the format. Remove any one and the format stops working.
|
|
26
|
+
|
|
27
|
+
1. **Mini-mic prop** — silver condenser-style microphone held at chin/chest level in every close-up. This is the TikTok "I'm about to tell you the truth" signal.
|
|
28
|
+
2. **Meme bookend** — viral meme overlay opens the ad (relatable problem) and closes it (approving/satisfied). Same meme character, emotional state flips from tired → happy. DW from Arthur was the original; any relatable viral character works.
|
|
29
|
+
3. **Bedroom / cozy desk setting** — warm ambient light, slightly messy background. Specifically NOT a studio. Authenticity depends on this.
|
|
30
|
+
4. **Karaoke-style captions** — white text, black outline, key words bolded. Bottom third. Essential — 70%+ views are silent.
|
|
31
|
+
5. **Product shown 3× minimum** — held casually (Scene 2), in use/active state (Scene 4), flat lay with arrows (Scene 5). Never just once.
|
|
32
|
+
6. **"this is the real deal."** — this exact phrase with arrows pointing at the product in the flat lay scene (Scene 5). Proven persuasion trigger. Do not paraphrase.
|
|
33
|
+
7. **TikTok comment overlay** — "Is this legit?" comment bubble overlaid in Scene 3. Addresses skepticism from inside the format, not as a defensive rebuttal.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## PROVEN SCENE STRUCTURE
|
|
38
|
+
|
|
39
|
+
| # | Scene Name | Timecode | Beat | Sacred Element |
|
|
40
|
+
|---|------------|----------|------|----------------|
|
|
41
|
+
| 1 | Opening Hook | 0–3s | Pattern interrupt — scroll stop | Meme overlay + problem statement. 5 variations (A–E). |
|
|
42
|
+
| 2 | Authority & Problem | 3–8s | Shared experience builds credibility | Mini-mic, product held casually, "$X spent, nothing worked" |
|
|
43
|
+
| 3 | Skeptic Pivot | 8–13s | Disarm objection before it forms | TikTok comment "Is this legit?" overlay + product reveal |
|
|
44
|
+
| 4 | Product Demo | 13–18s | Product in action — visual proof | Active visual effect (red light, glow, motion). Product in use. |
|
|
45
|
+
| 5 | Before/After + Authority | 18–21s | Receipt / social proof | Split screen + flat lay + arrows + "this is the real deal." |
|
|
46
|
+
| 6 | CTA Close | 21–23s | Convert | Meme bookend (approving) + offer overlay + "link in bio" |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## SCENE MODULES USED IN THIS FORMAT
|
|
51
|
+
|
|
52
|
+
Plug these directly from `scene-modules/`:
|
|
53
|
+
|
|
54
|
+
| Scene | Module ID | File |
|
|
55
|
+
|-------|-----------|------|
|
|
56
|
+
| 1 | `meme-overlay` OR `tiktok-comment` OR `pov-confession` OR `dollar-amount` | `hooks/<id>.md` |
|
|
57
|
+
| 2 | `minimic-problem` | `body/minimic-problem.md` |
|
|
58
|
+
| 3 | `tiktok-skeptic-pivot` | `body/tiktok-skeptic-pivot.md` |
|
|
59
|
+
| 4 | `product-demo-glow` | `body/product-demo-glow.md` |
|
|
60
|
+
| 5 | `before-after-flatlay` | `body/before-after-flatlay.md` |
|
|
61
|
+
| 6 | `bogo-meme-bookend` | `cta/bogo-meme-bookend.md` |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## ADAPTATION RULES
|
|
66
|
+
|
|
67
|
+
### Keep (sacred)
|
|
68
|
+
- Scene count: exactly 6
|
|
69
|
+
- Mini-mic prop in Scenes 1, 2, 3, 6
|
|
70
|
+
- Meme overlay in Scene 1 (hook) AND Scene 6 (approving bookend) — same meme, emotional flip
|
|
71
|
+
- TikTok comment overlay in Scene 3
|
|
72
|
+
- "this is the real deal." + arrows in Scene 5
|
|
73
|
+
- Self-aware humor beat — one moment in Scene 3–4 (breaks 4th wall)
|
|
74
|
+
- Bedroom/cozy setting throughout — never studio
|
|
75
|
+
|
|
76
|
+
### Swap (per brand)
|
|
77
|
+
- The specific meme character (DW from Arthur → any relatable viral character)
|
|
78
|
+
- The product shown — must have a visually active state (glow, motion, transformation)
|
|
79
|
+
- The dollar amount in Scene 2 ("$300 on serums" → "$X on [category product]")
|
|
80
|
+
- The TikTok comment text — keep structure, swap the product reference
|
|
81
|
+
- The offer text in Scene 6 ("BOGO" → "50% off" → "Free trial" → etc.)
|
|
82
|
+
|
|
83
|
+
### Never
|
|
84
|
+
- Studio lighting or production set — ruins the UGC authenticity
|
|
85
|
+
- Full-frame video meme cuts — meme must be overlay on creator's frame (eyes always visible above)
|
|
86
|
+
- Voiceover-only — the actor must be on screen speaking (this format is UGC dialogue, not VO)
|
|
87
|
+
- More than 3 seconds of uninterrupted talking head — always break with a visual
|
|
88
|
+
- Product shown without active state — for beauty tech, the glow/effect IS the product
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## AI ACTOR SPEC (default — adapt per brand)
|
|
93
|
+
|
|
94
|
+
```yaml
|
|
95
|
+
age_range: "22–32"
|
|
96
|
+
gender: "Female-presenting"
|
|
97
|
+
look: "Natural, warm skin tone. Light or no visible makeup. Hair loosely pulled back or down."
|
|
98
|
+
outfit: "Oversized hoodie or neutral crew-neck top. Bedroom-casual — NOT styled."
|
|
99
|
+
setting: "Cozy desk or bedroom. Warm ambient light (lamp or diffused window). Slight background clutter (books, skincare items, etc.) — NOT minimalist."
|
|
100
|
+
prop: "Silver condenser-style mini microphone. Essential. Always in hand for Scenes 1–3 and 6."
|
|
101
|
+
energy: "Conspiratorial best-friend energy. 'I looked this up so you don't have to.' NOT spokesperson."
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## DOCX JS STUBS
|
|
107
|
+
|
|
108
|
+
Paste these sceneBlock() calls into the brief JS file. Replace `[PLACEHOLDERS]`.
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
// SCENE 1 — Hook Window (use for the shared scene setup above the 5 hook cards)
|
|
112
|
+
sceneBlock("SCENE 1 — HOOK WINDOW", "0–3 seconds | MUST stop the scroll", [
|
|
113
|
+
["Visual Direction", "AI actor at desk/bedroom. Meme overlay fills lower 60% of frame. Actor's eyes visible above meme. Mini-mic in hand at chin level. Warm ambient lighting."],
|
|
114
|
+
["On-Screen Text", "[Hook line from variation — white bold caption, bottom third]"],
|
|
115
|
+
["AI Actor VO", "[Hook line from active variation — natural delivery, not scripted]"],
|
|
116
|
+
["Purpose", "Stop the scroll. Pattern-interrupt with meme format. Identify pain point before viewer can tap away."],
|
|
117
|
+
])
|
|
118
|
+
|
|
119
|
+
// SCENE 2 — Authority & Problem
|
|
120
|
+
sceneBlock("SCENE 2 — AUTHORITY & PROBLEM", "3–8 seconds | Consistent across all variations", [
|
|
121
|
+
["Visual Direction", "AI actor close-up. Mini-mic in one hand, [PRODUCT_NAME] held casually in the other. Skincare shelf visible, slightly out-of-focus background."],
|
|
122
|
+
["Actor Line", "'I've tried [CATEGORY_PRODUCTS]. [DOLLAR_SPENT] later. Nothing gave me what I actually needed for [PAIN_POINT].'"],
|
|
123
|
+
["On-Screen Text", "'[products listed].' — caption. Key words bold."],
|
|
124
|
+
["Purpose", "Build credibility through shared experience. She's not naive — she's tried everything. Positions [PRODUCT_NAME] reveal as earned discovery."],
|
|
125
|
+
["Transition", "Direct cut to close-up of [PRODUCT_NAME] being lifted into frame."],
|
|
126
|
+
])
|
|
127
|
+
|
|
128
|
+
// SCENE 3 — Skeptic Pivot + Product Intro
|
|
129
|
+
sceneBlock("SCENE 3 — SKEPTIC PIVOT + PRODUCT INTRO", "8–13 seconds | Consistent across all variations", [
|
|
130
|
+
["Visual Direction", "TikTok comment bubble overlaid: 'Is this legit tho?' — actor glances at it, smiles, looks back at camera. [PRODUCT_NAME] now held up, [ACTIVE_STATE]."],
|
|
131
|
+
["Actor Line", "'That's literally what I said. So I looked it up. [MECHANISM] — [WHAT IT DOES] — in [PRODUCT_FORM] you use at home.'"],
|
|
132
|
+
["On-Screen Text", "TikTok comment: 'Is this legit tho?' → clears. Caption: '[MECHANISM]. at home.' — bold highlight on [MECHANISM]."],
|
|
133
|
+
["Purpose", "Intercept #1 objection ('is this a gimmick?') before viewer consciously forms it. [ACTIVE_STATE] = visual proof it does something."],
|
|
134
|
+
["Transition", "Cut to [PRODUCT_NAME] in use — [ACTIVE_STATE] in motion."],
|
|
135
|
+
])
|
|
136
|
+
|
|
137
|
+
// SCENE 4 — Product Demo
|
|
138
|
+
sceneBlock("SCENE 4 — PRODUCT DEMO", "13–18 seconds | Consistent across all variations", [
|
|
139
|
+
["Visual Direction", "Close-up of [PRODUCT_NAME] in use: [USE_AREA_1], [USE_AREA_2], [USE_AREA_3]. [ACTIVE_STATE] visible and cinematic. Skin looks luminous, dewy."],
|
|
140
|
+
["Actor Line", "'[MECHANISM_SHORT] — [BENEFIT]. You use it for [TIME]. Done.'"],
|
|
141
|
+
["On-Screen Text", "'[MECHANISM_SHORT]' — caption. Then: '[TIME]. That's it.' — bold, centered."],
|
|
142
|
+
["Purpose", "Show the product WORKING. [ACTIVE_STATE] is [BRAND]'s visual superpower. Make viewer want that effect on their own skin."],
|
|
143
|
+
["Transition", "Cut to split-screen: before LEFT — [PRODUCT_NAME] in use RIGHT."],
|
|
144
|
+
])
|
|
145
|
+
|
|
146
|
+
// SCENE 5 — Before/After + Product Authority
|
|
147
|
+
sceneBlock("SCENE 5 — BEFORE/AFTER + PRODUCT AUTHORITY", "18–21 seconds | Consistent across all variations", [
|
|
148
|
+
["Visual Direction", "(1) Split-screen 1.5s: bare skin LEFT — same with [PRODUCT_NAME] in use RIGHT.\n\n(2) Product flat lay: [PRODUCT_NAME] centered on clean surface. [ACTIVE_STATE]. 3 white arrows point down at product. Warm lighting."],
|
|
149
|
+
["Actor Line", "'This is the real deal. [PERSONAL_RESULT_STATEMENT].'"],
|
|
150
|
+
["On-Screen Text", "Split: LEFT 'before [BRAND_NAME]' / RIGHT '[TIMEFRAME]'\n\nFlat lay: 'this is the real deal.' — bold white + 3 animated arrows pointing down. '[BRAND_NAME]' below."],
|
|
151
|
+
["Purpose", "Social proof + product authority. Split-screen is the receipt. 'this is the real deal.' closes the credibility loop before the CTA."],
|
|
152
|
+
["Transition", "Hard cut to CTA frame."],
|
|
153
|
+
])
|
|
154
|
+
|
|
155
|
+
// SCENE 6 — CTA Close
|
|
156
|
+
sceneBlock("SCENE 6 — CTA + OFFER CLOSE", "21–23 seconds | Consistent across all variations", [
|
|
157
|
+
["Visual Direction", "Actor back on camera, mini-mic in hand, [PRODUCT_NAME] raised toward camera ([ACTIVE_STATE]). Approving/confident expression. Optional: meme bookend (approving version of Scene 1 meme) for 0.5–1s."],
|
|
158
|
+
["Actor Line", "'[OFFER_TEXT] right now — link in bio.'"],
|
|
159
|
+
["On-Screen Text", "'[OFFER_TEXT]' — large bold\n'[LANDING_PAGE]' — below\n'Shop Now →'\n(Optional: 'Limited time | Results may vary')"],
|
|
160
|
+
["Purpose", "Drive the one action: click. [OFFER] is the urgency mechanism. 2 seconds max — viewer already knows. Just close."],
|
|
161
|
+
])
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## AI GENERATION PROMPTS (per-scene stubs)
|
|
167
|
+
|
|
168
|
+
Replace `[PLACEHOLDERS]` with brand-specific values.
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
SCENE 1 — Muse Hook
|
|
172
|
+
Photoreal female creator, [AI_ACTOR_AGE], natural look, warm skin tone. Bedroom desk. Casual [OUTFIT]. Silver condenser mini-mic in hand. [MEME_CHARACTER] overlay fills lower 60% — creator's eyes visible above. She glances at meme, looks up with knowing half-smile. Authentic TikTok creator bedroom reel. 9:16. 3 seconds.
|
|
173
|
+
|
|
174
|
+
SCENE 2 — Authority & Problem
|
|
175
|
+
Same creator. Mini-mic in left hand. [PRODUCT_NAME] held casually in right (not presenting). [CATEGORY_ITEMS] slightly out-of-focus on shelf behind. She speaks candidly, slightly frustrated then resolving. Warm golden light. Tight angles: face / hands / shelf. 9:16. 5 seconds.
|
|
176
|
+
|
|
177
|
+
SCENE 3 — Skeptic Pivot + Reveal
|
|
178
|
+
Same creator. TikTok comment bubble overlaid: 'Is this legit tho?' — she glances at it, smiles, looks at camera. Turns [PRODUCT_NAME] toward lens — [ACTIVE_STATE] faces camera. [ACTIVE_STATE] cinematic and warm. Handheld feel. 9:16. 5 seconds.
|
|
179
|
+
|
|
180
|
+
SCENE 4 — Product Demo
|
|
181
|
+
Extreme close-up of [PRODUCT_NAME] gliding along skin: [USE_AREA_1], [USE_AREA_2], [USE_AREA_3]. [ACTIVE_STATE] warm and cinematic. Dewy healthy skin texture. Micro-clips, cut every 1.5–2s. Creator's voice continues over. 9:16. 5 seconds.
|
|
182
|
+
|
|
183
|
+
SCENE 5 — Before/After + Flat Lay
|
|
184
|
+
CLIP 1: Split-screen. LEFT bare natural skin label 'before [BRAND_NAME]' / RIGHT [PRODUCT_NAME] in use label '[TIMEFRAME]'. Matching warm light both sides.
|
|
185
|
+
CLIP 2: [PRODUCT_NAME] centered on white/marble surface. [ACTIVE_STATE]. 3 white arrows pointing down. 'this is the real deal.' bold white text. 9:16. 3 seconds.
|
|
186
|
+
|
|
187
|
+
SCENE 6 — CTA
|
|
188
|
+
Creator energized, [PRODUCT_NAME] raised toward camera ([ACTIVE_STATE]). Warm, direct smile. Optional: meme bookend 0.5s. Fades to: '[OFFER_TEXT]' bold + '[LANDING_PAGE]' + 'Shop Now →'. 9:16. 2 seconds.
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## FIRST DEPLOYED — Solawave BOGO Campaign
|
|
194
|
+
|
|
195
|
+
- Brief: `~/Downloads/Solawave_VideoBrief_KoreanSkincaretruth_v1_20260409.docx`
|
|
196
|
+
- Brand kit: `brands/solawave/brand-kit.md`
|
|
197
|
+
- Script: `/tmp/docx_work/solawave_brief_v1.js`
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Frame-by-Frame Video Analysis — Full Methodology
|
|
2
|
+
> **Load this file only when:** a muse video is provided AND no frozen format matches in `INDEX.md`.
|
|
3
|
+
> **Skip this file when:** a matching format exists in `INDEX.md` — use the format file instead.
|
|
4
|
+
>
|
|
5
|
+
> Source of truth: proven on Clarifion ODRx brief (April 2026), TheraPet muse → 9-scene match.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## WHY THIS MATTERS
|
|
10
|
+
|
|
11
|
+
A muse video is not a reference for "tone and feel." It is a **performance-proven creative structure**.
|
|
12
|
+
When a user says "use this as the muse," they mean:
|
|
13
|
+
- Same number of scenes — same types in the same order
|
|
14
|
+
- Same visual character format (villain objects, product characters, UGC creator, etc.)
|
|
15
|
+
- Same karaoke text rhythm and placement
|
|
16
|
+
- Same emotional arc (where the tone shifts from problem → solution)
|
|
17
|
+
- Same CTA structure
|
|
18
|
+
|
|
19
|
+
Writing a brief based on vibes from the muse = wrong. Reverse engineering frame by frame = right.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## PHASE 1: VIDEO INGESTION
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Get runtime + dimensions
|
|
27
|
+
ffprobe -v quiet -print_format json -show_format -show_streams "/path/to/video.mp4" \
|
|
28
|
+
| python3 -c "import sys,json; d=json.load(sys.stdin); \
|
|
29
|
+
[print(s.get('duration','?'),'sec |',s.get('width','?'),'x',s.get('height','?')) \
|
|
30
|
+
for s in d['streams'] if s.get('codec_type')=='video']"
|
|
31
|
+
|
|
32
|
+
# Create frame output dir + extract at 3-second intervals
|
|
33
|
+
mkdir -p /tmp/muse_frames
|
|
34
|
+
ffmpeg -i "/path/to/video.mp4" -vf fps=1/3 /tmp/muse_frames/frame_%ds.jpg 2>&1 | tail -3
|
|
35
|
+
ls /tmp/muse_frames/ | sort
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Interval guide:**
|
|
39
|
+
- 90–120s video → fps=1/3 (~30 frames, covers every beat)
|
|
40
|
+
- 20–30s TikTok video → fps=1/2 (~12 frames)
|
|
41
|
+
- Already extracted? Check `/tmp/muse_frames/` before re-running ffmpeg.
|
|
42
|
+
|
|
43
|
+
**If URL only (no local file):** Note URL in brief as muse reference. Ask user for local copy.
|
|
44
|
+
Frames stored at: `/tmp/muse_frames/frame_Xs.jpg` (X = elapsed seconds)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## PHASE 2: FRAME READING — WHAT TO LOOK FOR
|
|
49
|
+
|
|
50
|
+
Read ALL frames using the Read tool. Never skip. Batch 3 frames per tool call for speed.
|
|
51
|
+
|
|
52
|
+
| Element | What to Note |
|
|
53
|
+
|---|---|
|
|
54
|
+
| **Setting** | Interior? Exterior? Warm? Clinical? Chaotic? |
|
|
55
|
+
| **Characters** | Real creator? Animated? Product objects with villain faces? Animals? |
|
|
56
|
+
| **Villain format** | Animated product objects with expressive faces + small arms? |
|
|
57
|
+
| **On-screen text** | Exact words. Which word is highlighted? Color? Position? |
|
|
58
|
+
| **Tone/lighting** | Warm golden? Cool clinical? Chaotic? Clean minimal? |
|
|
59
|
+
| **Scene energy** | Agitation/frustration OR resolution/warmth/calm? |
|
|
60
|
+
|
|
61
|
+
**6 structural questions — answer before writing a single word of the brief:**
|
|
62
|
+
1. How many distinct scenes? (count by setting/character changes, not frame count)
|
|
63
|
+
2. Exactly when does the tone flip from problem → solution? (which scene number?)
|
|
64
|
+
3. What is the character format? (villain animated objects? UGC creator? doctor?)
|
|
65
|
+
4. What is the on-screen text style? (karaoke word-by-word? full sentences? stacked?)
|
|
66
|
+
5. When does the product first appear? (what scene? floor/wall/box/hand?)
|
|
67
|
+
6. How does the CTA end? (stacked boxes? product close-up? person holding? static card?)
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## PHASE 3: SCENE MAP FORMAT
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
SCENE MAP: [Muse Title] — [Total Runtime]
|
|
75
|
+
|
|
76
|
+
SCENE N | 0–Xs
|
|
77
|
+
Setting: [description]
|
|
78
|
+
Character: [villain format or creator type]
|
|
79
|
+
Text: "[word1]" → "[WORD2 — highlighted]" → "[word3]" → ...
|
|
80
|
+
Beat: HOOK / AGITATION / PRODUCT INTRO / SOCIAL PROOF / CTA
|
|
81
|
+
Energy: CHAOTIC / WARM / CLINICAL / ASPIRATIONAL
|
|
82
|
+
|
|
83
|
+
KEY STRUCTURAL FINDINGS:
|
|
84
|
+
- Total scenes: N
|
|
85
|
+
- Tone flip at: Scene N
|
|
86
|
+
- Character format: [description]
|
|
87
|
+
- Text style: [karaoke / sentences / stacked]
|
|
88
|
+
- Product reveal: Scene N, [floor/wall/box]
|
|
89
|
+
- CTA end format: [description]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## PHASE 4: ADAPTATION RULES
|
|
95
|
+
|
|
96
|
+
**The hierarchy — in order of priority:**
|
|
97
|
+
1. **Scene count is sacred** — if the muse has 9 scenes, the brief has 9 scenes. No exceptions.
|
|
98
|
+
2. **Scene TYPE is sacred** — if Scene 2 is "villain-inside-failed-product," the new brief Scene 2 must be villain-inside-failed-product equivalent.
|
|
99
|
+
3. **Character format is sacred** — animated villain objects → stay animated villain objects. Never swap to real people.
|
|
100
|
+
4. **Text rhythm is sacred** — karaoke word-by-word → specify karaoke word-by-word. Show exact muse text then new brand equivalent.
|
|
101
|
+
5. **Tone shift scene is sacred** — the warmth flip happens at the same scene number.
|
|
102
|
+
6. **Only the product + copy change** — everything else is replicated.
|
|
103
|
+
|
|
104
|
+
| Muse Element | Action |
|
|
105
|
+
|---|---|
|
|
106
|
+
| Animated product villain character | Keep format — swap to equivalent failed competitor product |
|
|
107
|
+
| Specific competitor brand names | Remove — use generic label ("Enzyme Cleaner," "Scented Plug-In") |
|
|
108
|
+
| Brand-specific animals | Keep same animals — emotional arc mirrors the problem/solution |
|
|
109
|
+
| Calendar on wall (60 days) | Adapt to match your guarantee period exactly |
|
|
110
|
+
| Social proof persona (gray-haired woman) | Match to target persona age and type |
|
|
111
|
+
| Product packaging color/design | Replace with real product from brand assets |
|
|
112
|
+
| Guarantee language | Must match brand compliance exactly |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## PHASE 5: BRIEF FORMAT FOR NEW MUSE-DRIVEN BRIEFS
|
|
117
|
+
|
|
118
|
+
Each scene must have:
|
|
119
|
+
```
|
|
120
|
+
[SCENE N header bar — brand secondary color]
|
|
121
|
+
→ Scene number + name + timecode
|
|
122
|
+
|
|
123
|
+
[MUSE reference strip — light gray, italics]
|
|
124
|
+
→ "MUSE: [exact description of what the muse does + exact text shown]"
|
|
125
|
+
|
|
126
|
+
[3-column table: VISUAL DIRECTION | ON-SCREEN TEXT | VOICEOVER]
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**The ↑ mirrors: notation** — for every on-screen text line, show the muse equivalent:
|
|
130
|
+
```
|
|
131
|
+
→ RED LIGHT THERAPY
|
|
132
|
+
• AT HOME (highlight)
|
|
133
|
+
↑ mirrors: MOTHER CAT PRODUCES / SAFE HERE 24
|
|
134
|
+
```
|
|
135
|
+
This notation lets animators/editors confirm they are matching the muse, not improvising.
|
|
136
|
+
|
|
137
|
+
**Scene mapping table** — always the FIRST section of the brief:
|
|
138
|
+
```
|
|
139
|
+
| # | Muse — What Happens | New Brand — Equivalent Beat |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| 1 | [timecode + muse beat + exact text] | [new brand equivalent] |
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## PHASE 6: FREEZE THE NEW FORMAT
|
|
147
|
+
|
|
148
|
+
After completing the brief, freeze the format so future sessions don't re-derive it:
|
|
149
|
+
1. Create `templates/ad-formats/<new-id>.md` — copy any existing format file as schema
|
|
150
|
+
2. Add row to `templates/ad-formats/INDEX.md`
|
|
151
|
+
3. Extract any reusable scene modules → `templates/scene-modules/<type>/<id>.md`
|
|
152
|
+
4. Add rows to `templates/scene-modules/INDEX.md`
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## PROVEN EXAMPLE: TheraPet → Clarifion ODRx (April 2026)
|
|
157
|
+
|
|
158
|
+
**Muse:** TheraPet AI Animation | Runtime: 98.47s | 9:16 | 360×640 | 30fps
|
|
159
|
+
**URL:** facebook.com/100068524006696/posts/1227321179562004
|
|
160
|
+
|
|
161
|
+
| Scene | Timecode | Character | Text | Beat |
|
|
162
|
+
|---|---|---|---|---|
|
|
163
|
+
| 1 | 0–17s | Villain plug-in between 3 devices | WHY NOTHING CHANGED / AND YOU HAVE / MIGHT WORK | HOOK |
|
|
164
|
+
| 2 | 17–29s | Villain INSIDE litter box | YOU'VE SPENT $300 / IN EVERY ROOM / YOU ARE JUST | AGITATION 1 |
|
|
165
|
+
| 3 | 29–41s | Clay litter bag villain | YOU'VE TRIED CLAY / AND YOUR CATS / PROBLEM / SYSTEM | AGITATION 2 |
|
|
166
|
+
| 4 | 41–50s | Enzyme cleaner + vinegar villains | PROBLEM IS SOLVED / EXACTLY WHERE THEY | AGITATION 3 |
|
|
167
|
+
| 5 | 50–62s | Floxetine pill bottle villain | SURE THE SPRAYING / YOU GOT ZOMBIES / YOU'RE ZOMBIFYING | AGITATION 4 |
|
|
168
|
+
| 6 | 62–74s | **TONE FLIP** — 3 TheraPet units glowing | MARKING AND SPRAYING / ALL IN ONE | PRODUCT INTRO |
|
|
169
|
+
| 7 | 74–83s | Units plugged in, cat resting below | MOTHER CAT PRODUCES / SAFE HERE 24 | IN ACTION |
|
|
170
|
+
| 8 | 83–92s | Gray-haired woman + cats + calendar | 60 DAYS / NO MESS | SOCIAL PROOF |
|
|
171
|
+
| 9 | 92–98s | Stacked boxes + cats | PARENTS ALREADY / BACK GUARANTEED | CTA |
|
|
172
|
+
|
|
173
|
+
**Key findings:** 9 scenes. Tone flip at Scene 6. Karaoke word-by-word, green highlight. Villain objects with faces + arms. Product reveal in trio formation on floor.
|
|
174
|
+
|
|
175
|
+
**Frozen as:** `templates/ad-formats/villain-animation.md`
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## CHECKLIST: BEFORE SUBMITTING A NEW MUSE-DRIVEN BRIEF
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
[ ] All frames read — none skipped
|
|
183
|
+
[ ] Scene count matches muse exactly
|
|
184
|
+
[ ] Scene mapping table on page 1
|
|
185
|
+
[ ] Every scene has a MUSE: reference strip
|
|
186
|
+
[ ] On-screen text word-by-word with ↑ mirrors: notation
|
|
187
|
+
[ ] Tone shift scene identified and explicitly called out
|
|
188
|
+
[ ] Villain/character format described exactly as in muse
|
|
189
|
+
[ ] Product reveal scene matches muse scene number and format
|
|
190
|
+
[ ] Social proof persona age + calendar day count correct
|
|
191
|
+
[ ] CTA has correct offer + guarantee language (compliance checked)
|
|
192
|
+
[ ] Brief ≤ 7 pages — tight, editor-readable
|
|
193
|
+
[ ] No paragraph essays inside scene blocks — 3-column table format
|
|
194
|
+
[ ] Format frozen in templates/ad-formats/ after brief is done
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## CRITICAL FAILURE MODES (DO NOT REPEAT)
|
|
200
|
+
|
|
201
|
+
| Failure | What Happened | Correct Approach |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| Ignored muse structure | Wrote generic 5-section brief based on ad strategy, not the muse | Read every frame. Use the muse's scene count. |
|
|
204
|
+
| Wrong scene count | Brief had 5 sections, muse had 9 scenes | Scene count must match muse exactly — no exceptions |
|
|
205
|
+
| Generic visual direction | "animated home interior" — no villain spec | Describe character format exactly: animated object villains with faces and arms |
|
|
206
|
+
| Missing karaoke specifics | No ↑ mirrors notation | Every text line maps back to muse text |
|
|
207
|
+
| Prose-heavy scenes | Multi-paragraph essays in scene blocks | 3-column table, bullet-style, editor-readable |
|
|
208
|
+
| Re-extracting existing frames | Re-ran ffmpeg when frames already in /tmp/muse_frames/ | Always `ls /tmp/muse_frames/` before running ffmpeg |
|
|
209
|
+
| Skipping the freeze step | New format not added to template library | After every muse brief: freeze the format |
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Ad Format: "The Process Specialist"
|
|
2
|
+
**ID:** `process-specialist-medical`
|
|
3
|
+
**Category:** Medical / Regenerative Medicine / Healthcare Authority
|
|
4
|
+
**Length:** ~50 seconds
|
|
5
|
+
**Scene Count:** 5
|
|
6
|
+
**Status:** ✅ PROVEN (Greentree Medical Center — v1 April 2026)
|
|
7
|
+
**Muse:** None — original format built for Greentree Medical Center
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## FORMAT OVERVIEW
|
|
12
|
+
|
|
13
|
+
**Core Premise:** Lead with WHY the category fails (lack of diagnosis), not with the problem symptom. Position the brand as an elite diagnostic facility before positioning it as a treatment clinic. The 90% success rate is the proof point — and the diagnostic process is the explanation.
|
|
14
|
+
|
|
15
|
+
**Primary Differentiator vs. Standard Doctor-Led Format:** Does NOT open with the doctor. Opens with an elderly UGC actor (patient voice) who experienced the category failure. Doctor appears in Scene 2 onward as the authority who explains the solution.
|
|
16
|
+
|
|
17
|
+
**Competitor Framing:** Indirect. "Some clinics / most practices" language — no brand names. Creates category contrast without direct attack.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## SCENE STRUCTURE
|
|
22
|
+
|
|
23
|
+
| Scene | Name | Timecode | Beat | Talent |
|
|
24
|
+
|-------|------|----------|------|--------|
|
|
25
|
+
| 1 | Opening Hook | 0–5s | Category failure question — scroll-stop | Elderly UGC actor OR Doctor clone |
|
|
26
|
+
| 2 | The Problem at Other Clinics | 5–18s | Why the category fails — diagnostic gap | VO + B-roll (institutional/cool grade) |
|
|
27
|
+
| 3 | The Brand's Diagnostic Process | 18–33s | The 3-step process that explains the success rate | Doctor AI clone + diagnostic B-roll |
|
|
28
|
+
| 4 | The 90% Proof + Patient Story | 33–43s | Earned proof point + relatable patient outcome | Elderly UGC actor (1 line) + Doctor close |
|
|
29
|
+
| 5 | CTA — Diagnostic Screening Request | 43–52s | Drive one action: screening request (NOT consultation) | Doctor AI clone + branded end card |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## SACRED ELEMENTS (never remove)
|
|
34
|
+
|
|
35
|
+
- **Scene 2 color contrast:** Must be cooler/more institutional than Scenes 3–5. The visual shift IS the argument.
|
|
36
|
+
- **Three B-roll badges in Scene 3:** Blood Work Reviewed → Imaging Analyzed → Candidate Confirmed. These make the process tangible.
|
|
37
|
+
- **90% stat with context:** Always paired with "because we screen first" framing. Stat alone is a boast. Stat with explanation is authority.
|
|
38
|
+
- **CTA language:** "Request a Diagnostic Screening" — NOT "schedule a consultation." This reframe attracts qualified prospects and repels passive/symptom-management patients.
|
|
39
|
+
- **Results may vary disclaimer:** Mandatory alongside the 90% claim.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## HOOK VARIATIONS (5 — Scene 1 only)
|
|
44
|
+
|
|
45
|
+
| Hook | Type | Talent | Hook Line |
|
|
46
|
+
|------|------|--------|-----------|
|
|
47
|
+
| A | Patient Story — Missed Step | Elderly woman 65–72 | "I went to one of those injection clinics. They didn't order a single blood test before they treated me." |
|
|
48
|
+
| B | Doctor Challenge | Doctor AI clone | "Before we do anything at Greentree, I need to know one thing first — are you actually a candidate for this therapy?" |
|
|
49
|
+
| C | Patient Story — Failed Attempt | Elderly man 67–74 | "I tried a regenerative treatment at another clinic. It didn't work. Took me a year to find out why." |
|
|
50
|
+
| D | Doctor Authority | Doctor AI clone | "If your doctor didn't review your bloodwork before recommending a regenerative treatment — that's a major problem." |
|
|
51
|
+
| E | Patient Story — Two Clinics | Elderly woman 65–73 | "Two different clinics told me I was a candidate for PRP. Neither one ever reviewed my imaging." |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## AI ACTOR SPECS
|
|
56
|
+
|
|
57
|
+
**Elderly UGC Actors (2 required):**
|
|
58
|
+
- Actor 1: Woman, 65–72, active-casual clothing, warm home or outdoor setting
|
|
59
|
+
- Actor 2: Man, 67–74, active-outdoor look (golf/outdoor casual), backyard or garage setting
|
|
60
|
+
- Both: Genuine expression, NOT stock-photo polished. NOT frail or clinical.
|
|
61
|
+
|
|
62
|
+
**Doctor AI Clone:**
|
|
63
|
+
- Physician, 50–60, white coat, clean clinic exam room background
|
|
64
|
+
- Direct to camera. Measured pace. Clinical-warm lighting.
|
|
65
|
+
- Must appear consistent across Scenes 2–5 (same clone instance)
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## ADAPTATION RULES
|
|
70
|
+
|
|
71
|
+
| Adapt | Keep | Never |
|
|
72
|
+
|-------|------|-------|
|
|
73
|
+
| Client name, doctor name, location | Scene structure and timecodes | Pain med / pain management language |
|
|
74
|
+
| Specific services (PRP / Stem Cell / other regen modalities) | The diagnostic-process-as-differentiator angle | Direct competitor brand names |
|
|
75
|
+
| Success rate percentage (verify and source before use) | Three-step process revelation in Scene 3 | Imagery suggesting pain clinic / opioid context |
|
|
76
|
+
| Elderly UGC actor demographics (adjust for brand's target age) | CTA reframe as "Diagnostic Screening" | Guaranteed outcome claims |
|
|
77
|
+
| B-roll sources | Color contrast Scene 2 (cool) vs Scenes 3–5 (warm) | Generic stock clinic imagery |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## COMPLIANCE REQUIREMENTS (Medical Formats)
|
|
82
|
+
|
|
83
|
+
- All scripts referencing a specific doctor by name require doctor approval before publishing
|
|
84
|
+
- "Results may vary" required alongside any success rate or outcome claim
|
|
85
|
+
- PRP and stem cell claims may require FTC/FDA compliance review for paid social
|
|
86
|
+
- DO NOT claim to diagnose or cure any condition
|
|
87
|
+
- DO NOT make surgical-outcome comparison guarantees
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## JS STUB REFERENCE
|
|
92
|
+
|
|
93
|
+
Source script: `/tmp/docx_work/greentree_process_specialist_v1.js`
|
|
94
|
+
Output: `~/Downloads/GreenTreeMedical_VideoBrief_ProcessSpecialist_v1_20260409.docx`
|
|
95
|
+
|
|
96
|
+
To adapt for a new medical client:
|
|
97
|
+
1. Update `CONFIG` fields (client_name, doctor_name, campaign_name, colors)
|
|
98
|
+
2. Update `CONFIG.brand_constraint` from new client's brand-kit.md guardrails
|
|
99
|
+
3. Update all hook lines (Scene 1) and the 3-step process (Scene 3) with new client specifics
|
|
100
|
+
4. Update CTA text and website/phone in Scene 5
|
|
101
|
+
5. Rename output file per naming convention
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
*Process Specialist format — frozen April 2026 — Greentree Medical Center v1*
|