@jaimevalasek/aioson 1.7.0 → 1.7.2
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/CHANGELOG.md +25 -0
- package/package.json +1 -1
- package/src/constants.js +13 -0
- package/template/.aioson/agents/copywriter.md +463 -0
- package/template/.aioson/agents/dev.md +29 -1
- package/template/.aioson/agents/deyvin.md +1 -0
- package/template/.aioson/agents/neo.md +5 -1
- package/template/.aioson/agents/qa.md +101 -0
- package/template/.aioson/agents/setup.md +17 -1
- package/template/.aioson/agents/squad.md +190 -0
- package/template/.aioson/agents/ux-ui.md +169 -3
- package/template/.aioson/genomes/copywriting.md +204 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +2 -0
- package/template/.aioson/skills/marketing/references/anti-patterns.md +254 -0
- package/template/.aioson/skills/marketing/references/fascinations.md +192 -0
- package/template/.aioson/skills/marketing/references/five-acts.md +248 -0
- package/template/.aioson/skills/marketing/references/market-intelligence.md +198 -0
- package/template/.aioson/skills/marketing/references/offer-structure.md +203 -0
- package/template/.aioson/skills/marketing/references/one-belief.md +149 -0
- package/template/.aioson/skills/marketing/references/patterns.md +218 -0
- package/template/.aioson/skills/marketing/references/pms-research.md +193 -0
- package/template/.aioson/skills/marketing/vsl-craft.md +385 -0
- package/template/.aioson/skills/static/landing-page-deploy.md +192 -0
- package/template/.aioson/skills/static/landing-page-forge.md +730 -0
- package/template/.aioson/skills/static/ui-ux-modern.md +1 -0
- package/template/.aioson/tasks/squad-create.md +22 -0
- package/template/.aioson/tasks/squad-design.md +30 -0
- package/template/.aioson/templates/squads/digital-marketing-agency/template.json +96 -0
- package/template/CLAUDE.md +1 -0
- package/template/.aioson/skills/design-system/components/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/dashboards/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/foundations/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/motion/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/patterns/SKILL.md:Zone.Identifier +0 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vsl-craft
|
|
3
|
+
description: Video Sales Letter production skill — script structure, hook formulas, retention techniques, testing methodology, and production specs. Loaded by @copywriter when Mode 5 (VSL) is active.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# VSL Craft — Video Sales Letter Production
|
|
7
|
+
|
|
8
|
+
## When to load this skill
|
|
9
|
+
|
|
10
|
+
- User requests a VSL script
|
|
11
|
+
- User requests a video sales page (page with embedded sales video)
|
|
12
|
+
- User requests an advertorial video
|
|
13
|
+
- @copywriter Mode 5 is activated
|
|
14
|
+
- Squad executor with VSL deliverable
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. What is a VSL?
|
|
19
|
+
|
|
20
|
+
A Video Sales Letter is a scripted video (typically 10-45 minutes) designed to convert cold traffic into buyers. It replaces the live salesperson with a pre-recorded, optimized sales presentation.
|
|
21
|
+
|
|
22
|
+
**Key differences from a written sales page:**
|
|
23
|
+
- The viewer can't scan — they must watch sequentially
|
|
24
|
+
- Retention is everything — if they leave at minute 3, the offer at minute 20 never gets seen
|
|
25
|
+
- Audio + visual = two channels to reinforce the message
|
|
26
|
+
- Pacing, pauses, and emotional tone are scripted, not left to chance
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 2. VSL formats
|
|
31
|
+
|
|
32
|
+
### 2.1 Traditional VSL (horizontal)
|
|
33
|
+
- 16:9 format, presenter or slides
|
|
34
|
+
- Duration: 15-45 minutes
|
|
35
|
+
- Best for: sophisticated offers, higher ticket (R$297+), cold traffic from YouTube/Facebook
|
|
36
|
+
- Production: can be "ugly" (slides only) or "cinematic" (B-roll, editing)
|
|
37
|
+
|
|
38
|
+
### 2.2 Vertical VSL (mobile-native)
|
|
39
|
+
- 9:16 format, looks like organic content
|
|
40
|
+
- Duration: 3-15 minutes
|
|
41
|
+
- Best for: TikTok/Reels traffic, lower ticket, younger audiences
|
|
42
|
+
- Production: phone-filmed, fast cuts, captions mandatory
|
|
43
|
+
|
|
44
|
+
### 2.3 Hybrid (advertorial + VSL)
|
|
45
|
+
- Written advertorial page with embedded video at the mechanism section
|
|
46
|
+
- The text does Act 1-2, the video does Act 3-5
|
|
47
|
+
- Best for: sophisticated audiences who want to read before watching
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 3. The VSL script structure (5 Acts adapted for video)
|
|
52
|
+
|
|
53
|
+
### Act 1 — The Hook (0:00 to 0:30)
|
|
54
|
+
|
|
55
|
+
**Goal:** Stop the scroll and keep them watching for the next 30 seconds.
|
|
56
|
+
|
|
57
|
+
**The 3-second rule:** If the first 3 seconds aren't arresting, the viewer leaves.
|
|
58
|
+
|
|
59
|
+
**Hook formulas for VSL:**
|
|
60
|
+
|
|
61
|
+
**Formula 1: The Discovery Hook**
|
|
62
|
+
> "What you're about to see in the next [X] minutes could change the way you [desired outcome] forever. I'm going to show you [specific discovery] that [specific proof]."
|
|
63
|
+
|
|
64
|
+
**Formula 2: The Proof-First Hook**
|
|
65
|
+
> "[Name], [age], from [city], lost [specific result] in [specific time]. And she did it without [painful thing]. Today I'm going to show you exactly how — and why it works even if [objection]."
|
|
66
|
+
|
|
67
|
+
**Formula 3: The Paradox Hook**
|
|
68
|
+
> "Why do [specific group] [achieve result] while [audience group] [fail despite effort]? The answer has nothing to do with [obvious thing] — and everything to do with [curiosity element]."
|
|
69
|
+
|
|
70
|
+
**Formula 4: The Warning Hook**
|
|
71
|
+
> "If you're [doing common thing], stop immediately. A [authority/study] just revealed that [counterintuitive finding] — and it's costing you [consequence]. Stay with me for [time] and I'll show you [solution]."
|
|
72
|
+
|
|
73
|
+
**Formula 5: The Story Hook**
|
|
74
|
+
> "Last [day], [specific person] sent me this message: [screenshot/quote]. [X time] ago, they were [painful situation]. Today they [desired outcome]. This is their story — and it starts with [curiosity element]."
|
|
75
|
+
|
|
76
|
+
**Anti-pattern hooks:**
|
|
77
|
+
- "Hey everyone, welcome to my channel..." → Zero curiosity
|
|
78
|
+
- "In this video I'm going to talk about..." → Passive, no hook
|
|
79
|
+
- "So, I've been getting a lot of questions about..." → About you, not them
|
|
80
|
+
|
|
81
|
+
### Act 2 — The Background (0:30 to 3:00)
|
|
82
|
+
|
|
83
|
+
**Goal:** Build authority and emotional connection quickly.
|
|
84
|
+
|
|
85
|
+
**For expert-led VSL:**
|
|
86
|
+
> "[Credentials in one sentence]. But what matters more than my degrees is this: I've helped [specific number] of people [achieve result], and what I discovered along the way is the reason you're watching this video."
|
|
87
|
+
|
|
88
|
+
**For avatar transformation:**
|
|
89
|
+
> "I know what it's like to [specific pain]. [Time] ago, I was [painful situation — specific details]. I tried [what they've tried]. Nothing worked. Until [discovery moment]."
|
|
90
|
+
|
|
91
|
+
**Key rule:** Act 2 must be SHORT in a VSL. On a written page, you can have a long background section. On video, 1-2 minutes max. Get to the mechanism fast.
|
|
92
|
+
|
|
93
|
+
### Act 3 — The Mechanism (3:00 to 12:00)
|
|
94
|
+
|
|
95
|
+
**Goal:** Create the "Aha!" moment. This is where the One Belief is built.
|
|
96
|
+
|
|
97
|
+
**Structure:**
|
|
98
|
+
|
|
99
|
+
**Part A — Why nothing else worked (2-4 minutes)**
|
|
100
|
+
1. Name what they've tried (validate their experience)
|
|
101
|
+
2. Reveal the hidden reason it failed (the enemy — not them)
|
|
102
|
+
3. Use a visual metaphor or diagram to make the concept tangible
|
|
103
|
+
|
|
104
|
+
**Part B — How [Mechanism Name] works (3-5 minutes)**
|
|
105
|
+
1. Introduce the mechanism by name
|
|
106
|
+
2. Explain it at surface level (simple enough for a 12-year-old)
|
|
107
|
+
3. Show ONE proof point (study, case study, demonstration)
|
|
108
|
+
4. Use B-roll or diagrams to illustrate — never just talk over static slides for more than 30 seconds
|
|
109
|
+
|
|
110
|
+
**Retention techniques for Act 3:**
|
|
111
|
+
- **Pattern interrupt every 60-90 seconds:** Change the visual, show a diagram, cut to B-roll, display a quote
|
|
112
|
+
- **Open loops:** "In a moment I'll show you the third step — but first you need to understand why..."
|
|
113
|
+
- **Micro-fascinations:** Drop curiosity bullets throughout: "The ingredient I'm about to mention is in 90% of Brazilian homes but nobody knows it does THIS..."
|
|
114
|
+
- **Density escalation:** Each minute should be MORE interesting than the last, not less
|
|
115
|
+
|
|
116
|
+
### Act 4 — The Offer (12:00 to 18:00)
|
|
117
|
+
|
|
118
|
+
**Goal:** Transition from education to sale without breaking trust.
|
|
119
|
+
|
|
120
|
+
**The transition bridge:**
|
|
121
|
+
> "So now you understand WHY [mechanism] works and HOW it produces [result]. The question is: how do YOU implement it? That's exactly why I created [Product Name]."
|
|
122
|
+
|
|
123
|
+
**VSL-specific offer rules:**
|
|
124
|
+
- Never call it a "course" — use Protocol, System, Blueprint, Accelerator
|
|
125
|
+
- Show each component visually (mockup, icon, or slide)
|
|
126
|
+
- Read the fascinations with enthusiasm — pacing matters
|
|
127
|
+
- Pause after stating the price — let it sink in
|
|
128
|
+
- Show the guarantee prominently (text on screen + verbal)
|
|
129
|
+
|
|
130
|
+
**Reference:** `.aioson/skills/marketing/references/offer-structure.md`
|
|
131
|
+
|
|
132
|
+
### Act 5 — The Close (18:00 to 22:00)
|
|
133
|
+
|
|
134
|
+
**Goal:** Push the fence-sitters over the edge.
|
|
135
|
+
|
|
136
|
+
**The Two Paths technique (optimized for video):**
|
|
137
|
+
> "Right now, you're at a fork in the road.
|
|
138
|
+
> [Pause — 2 seconds]
|
|
139
|
+
> Path one: you close this video. You go back to [specific pain]. Tomorrow feels the same as today. Next month, same. Next year...
|
|
140
|
+
> [Pause — 3 seconds]
|
|
141
|
+
> Path two: you click the button below. You start [Product Name] today. In [timeframe], you [specific visualizable result].
|
|
142
|
+
> [Pause — 2 seconds]
|
|
143
|
+
> Which path makes more sense?"
|
|
144
|
+
|
|
145
|
+
**Recovery techniques (the "Kenyan Village" strategy):**
|
|
146
|
+
- **Pause thumbnail:** When the viewer pauses, a thumbnail appears with a hook to resume
|
|
147
|
+
- **Exit-intent popup:** On the page, when cursor moves to close — offer a discount or bonus
|
|
148
|
+
- **Post-VSL autoplay:** After the main VSL, play a shorter 3-minute "for those still deciding" video
|
|
149
|
+
- **SMS/email retargeting:** Capture email early (before VSL starts) and send follow-up sequence
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 4. VSL script format
|
|
154
|
+
|
|
155
|
+
When writing a VSL script, use this format:
|
|
156
|
+
|
|
157
|
+
```markdown
|
|
158
|
+
# VSL Script: [Product Name]
|
|
159
|
+
|
|
160
|
+
## Metadata
|
|
161
|
+
- Duration target: [X] minutes
|
|
162
|
+
- Format: Horizontal / Vertical
|
|
163
|
+
- Traffic temperature: Cold / Warm / Hot
|
|
164
|
+
- One Belief: "[New Opportunity] is the key to [Benefit] through [Mechanism]"
|
|
165
|
+
- Awareness level: [1-5]
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## ACT 1 — HOOK (0:00–0:30)
|
|
170
|
+
|
|
171
|
+
### VISUAL:
|
|
172
|
+
[What appears on screen]
|
|
173
|
+
|
|
174
|
+
### AUDIO:
|
|
175
|
+
[What is said — scripted word-for-word]
|
|
176
|
+
|
|
177
|
+
### NOTES:
|
|
178
|
+
[Production notes: B-roll, text overlay, music cue]
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## ACT 2 — BACKGROUND (0:30–3:00)
|
|
183
|
+
|
|
184
|
+
### VISUAL:
|
|
185
|
+
[Screen description]
|
|
186
|
+
|
|
187
|
+
### AUDIO:
|
|
188
|
+
[Script]
|
|
189
|
+
|
|
190
|
+
### NOTES:
|
|
191
|
+
[Production notes]
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## ACT 3 — MECHANISM (3:00–12:00)
|
|
196
|
+
|
|
197
|
+
### 3A — Why nothing else worked
|
|
198
|
+
|
|
199
|
+
#### VISUAL:
|
|
200
|
+
[Screen]
|
|
201
|
+
|
|
202
|
+
#### AUDIO:
|
|
203
|
+
[Script]
|
|
204
|
+
|
|
205
|
+
#### PATTERN INTERRUPT at [timestamp]:
|
|
206
|
+
[Visual change / diagram / B-roll description]
|
|
207
|
+
|
|
208
|
+
### 3B — How [Mechanism] works
|
|
209
|
+
|
|
210
|
+
#### VISUAL:
|
|
211
|
+
[Screen]
|
|
212
|
+
|
|
213
|
+
#### AUDIO:
|
|
214
|
+
[Script]
|
|
215
|
+
|
|
216
|
+
#### PROOF POINT:
|
|
217
|
+
[Study / case study / demonstration]
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## ACT 4 — OFFER (12:00–18:00)
|
|
222
|
+
|
|
223
|
+
### TRANSITION:
|
|
224
|
+
|
|
225
|
+
#### AUDIO:
|
|
226
|
+
[Bridge sentence]
|
|
227
|
+
|
|
228
|
+
### COMPONENT STACK:
|
|
229
|
+
|
|
230
|
+
#### VISUAL:
|
|
231
|
+
[Mockup / slide of each component]
|
|
232
|
+
|
|
233
|
+
#### AUDIO:
|
|
234
|
+
[Component name, benefit, value, fascination]
|
|
235
|
+
|
|
236
|
+
### PRICE REVEAL:
|
|
237
|
+
|
|
238
|
+
#### VISUAL:
|
|
239
|
+
[Anchoring → crossed out prices → final price]
|
|
240
|
+
|
|
241
|
+
#### AUDIO:
|
|
242
|
+
[Not paying X. Not even Y. Today: Z. Reason why.]
|
|
243
|
+
|
|
244
|
+
### GUARANTEE:
|
|
245
|
+
|
|
246
|
+
#### VISUAL:
|
|
247
|
+
[Guarantee badge / text on screen]
|
|
248
|
+
|
|
249
|
+
#### AUDIO:
|
|
250
|
+
[Full guarantee statement]
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## ACT 5 — CLOSE (18:00–22:00)
|
|
255
|
+
|
|
256
|
+
### TWO PATHS:
|
|
257
|
+
|
|
258
|
+
#### AUDIO:
|
|
259
|
+
[Path 1 → Path 2 → Which makes more sense?]
|
|
260
|
+
|
|
261
|
+
### FINAL CTA:
|
|
262
|
+
|
|
263
|
+
#### VISUAL:
|
|
264
|
+
[Button, URL, QR code on screen]
|
|
265
|
+
|
|
266
|
+
#### AUDIO:
|
|
267
|
+
[Click the button below / link in description]
|
|
268
|
+
|
|
269
|
+
### RECOVERY ELEMENTS:
|
|
270
|
+
- Pause thumbnail text: [text]
|
|
271
|
+
- Exit-intent offer: [discount/bonus]
|
|
272
|
+
- Post-VSL summary video: [Y/N]
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 5. Testing methodology
|
|
278
|
+
|
|
279
|
+
### Phase 1 — Validate the thesis (before production)
|
|
280
|
+
Create an "ugly" VSL:
|
|
281
|
+
- White background, black text on slides
|
|
282
|
+
- Presenter reads from teleprompter (or text-to-speech for testing)
|
|
283
|
+
- No B-roll, no editing, no music
|
|
284
|
+
- Duration: 10-15 minutes (condensed version)
|
|
285
|
+
|
|
286
|
+
Run R$500-R$1,000 in cold traffic. Measure:
|
|
287
|
+
- **Hook retention:** % watching past 30 seconds (target: >50%)
|
|
288
|
+
- **Mechanism retention:** % watching past Act 3 (target: >25%)
|
|
289
|
+
- **Offer conversion:** % who reach offer AND click CTA (target: >2%)
|
|
290
|
+
|
|
291
|
+
If the ugly version converts → invest in production.
|
|
292
|
+
If it doesn't → rewrite the script before spending on video production.
|
|
293
|
+
|
|
294
|
+
### Phase 2 — Optimize the hook
|
|
295
|
+
Create 3-5 hook variations (first 30 seconds only).
|
|
296
|
+
Run equal traffic to each. The winning hook gets 2-3x more budget.
|
|
297
|
+
|
|
298
|
+
**Hook metrics:**
|
|
299
|
+
- 3-second retention rate
|
|
300
|
+
- 15-second retention rate
|
|
301
|
+
- 30-second retention rate
|
|
302
|
+
|
|
303
|
+
### Phase 3 — Scale with production
|
|
304
|
+
Once the script is validated:
|
|
305
|
+
- Add B-roll and visual elements
|
|
306
|
+
- Professional audio recording
|
|
307
|
+
- Add pattern interrupts and visual variety
|
|
308
|
+
- Consider vertical format for mobile-first traffic
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## 6. VSL page structure
|
|
313
|
+
|
|
314
|
+
The page that hosts the VSL should be minimal:
|
|
315
|
+
|
|
316
|
+
```html
|
|
317
|
+
<!-- Above the fold — ONLY the video -->
|
|
318
|
+
<section class="vsl-hero">
|
|
319
|
+
<div class="video-container">
|
|
320
|
+
<!-- Video player (VTurb, Wistia, or custom) -->
|
|
321
|
+
<!-- CTA button appears ONLY after offer section plays -->
|
|
322
|
+
</div>
|
|
323
|
+
</section>
|
|
324
|
+
|
|
325
|
+
<!-- Below the fold — revealed after video plays past offer -->
|
|
326
|
+
<section class="vsl-offer">
|
|
327
|
+
<!-- Component stack (text version of what's in the video) -->
|
|
328
|
+
<!-- Guarantee -->
|
|
329
|
+
<!-- CTA button -->
|
|
330
|
+
<!-- FAQ -->
|
|
331
|
+
<!-- Testimonials -->
|
|
332
|
+
</section>
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**Key rules:**
|
|
336
|
+
- **No navigation menu** — remove all escape routes
|
|
337
|
+
- **CTA button hidden until the offer section plays** — don't let them see the price before the mechanism
|
|
338
|
+
- **Video auto-plays on mute with captions** — most mobile traffic has sound off
|
|
339
|
+
- **Exit-intent popup** — "Wait! Before you go..." with a discount or bonus
|
|
340
|
+
- **Timer optional** — only if the offer has a real deadline
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## 7. Production specifications
|
|
345
|
+
|
|
346
|
+
### Audio
|
|
347
|
+
- Clear, professional recording (condenser mic, treated room)
|
|
348
|
+
- Pacing: 150-170 words per minute (conversational speed)
|
|
349
|
+
- Consider 1.1x-1.3x playback speed for higher engagement
|
|
350
|
+
- Music: subtle background only, never competing with voice
|
|
351
|
+
|
|
352
|
+
### Video
|
|
353
|
+
- Resolution: minimum 1080p
|
|
354
|
+
- B-roll: 2-3 second clips every 60-90 seconds in Act 3
|
|
355
|
+
- Text overlays: key claims and proof points on screen while spoken
|
|
356
|
+
- Captions: always (auto-generated + manually corrected)
|
|
357
|
+
|
|
358
|
+
### Hosting
|
|
359
|
+
- VTurb (Brazilian market — best heatmap and button reveal features)
|
|
360
|
+
- Wistia (international — CTA tools built in)
|
|
361
|
+
- Custom player (maximum control — no platform branding)
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## 8. Conditional reference loading
|
|
366
|
+
|
|
367
|
+
When writing a VSL script, the @copywriter agent should load:
|
|
368
|
+
|
|
369
|
+
| Phase | Load |
|
|
370
|
+
|---|---|
|
|
371
|
+
| Research | `pms-research.md` + `market-intelligence.md` |
|
|
372
|
+
| Script — hook | `one-belief.md` + `patterns.md` (headline formulas adapt to hooks) |
|
|
373
|
+
| Script — mechanism | `five-acts.md` (Acts 3 focus) |
|
|
374
|
+
| Script — offer | `offer-structure.md` + `fascinations.md` |
|
|
375
|
+
| Script — validation | `anti-patterns.md` |
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## 9. Output contract
|
|
380
|
+
|
|
381
|
+
VSL script saves to: `.aioson/context/vsl-script-{slug}.md`
|
|
382
|
+
VSL page spec saves to: `.aioson/context/vsl-page-{slug}.md` (if page design is needed)
|
|
383
|
+
|
|
384
|
+
If invoked from @ux-ui: return the page spec for visual implementation.
|
|
385
|
+
If invoked from a squad: save to the squad's output directory.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: landing-page-deploy
|
|
3
|
+
description: Deploy workflows for landing pages and static sites — Vercel (Git-connected, CDN) and Hostinger VPS (LiteSpeed). Load when the user asks to deploy a site or when project_type=site is ready for production.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Landing Page Deploy
|
|
7
|
+
|
|
8
|
+
Two production-ready deploy paths. Choose based on where your domain is registered and your cost preference.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Path A — Vercel (recommended for Cloudflare domains + automated CI/CD)
|
|
13
|
+
|
|
14
|
+
**Requirements:**
|
|
15
|
+
- Vercel account (Pro plan minimum — $20/mo — for custom domain on production)
|
|
16
|
+
- Domain registered in Cloudflare (or any DNS provider with CNAME/A record access)
|
|
17
|
+
- Git repository (GitHub, GitLab, or Bitbucket)
|
|
18
|
+
|
|
19
|
+
### Step A1 — Create Vercel project
|
|
20
|
+
```bash
|
|
21
|
+
# If Vercel CLI is installed
|
|
22
|
+
vercel login
|
|
23
|
+
vercel --prod
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Or via dashboard: vercel.com → New Project → Import Git Repository
|
|
27
|
+
|
|
28
|
+
### Step A2 — Configure project settings
|
|
29
|
+
- Framework Preset: `Other` (for plain HTML) or the correct framework
|
|
30
|
+
- Build Command: leave blank for plain HTML
|
|
31
|
+
- Output Directory: `.` or `dist` (wherever index.html lives)
|
|
32
|
+
- Install Command: leave blank for plain HTML
|
|
33
|
+
|
|
34
|
+
### Step A3 — Connect domain (Cloudflare DNS)
|
|
35
|
+
1. In Vercel: Settings → Domains → Add `yourdomain.com` and `www.yourdomain.com`
|
|
36
|
+
2. Vercel shows you DNS records to add
|
|
37
|
+
3. In Cloudflare: DNS → Add records as shown by Vercel
|
|
38
|
+
- Type A: `@` → Vercel IP (proxied OFF — orange cloud OFF for Vercel)
|
|
39
|
+
- Type CNAME: `www` → `cname.vercel-dns.com`
|
|
40
|
+
4. Wait for propagation (5–30 min)
|
|
41
|
+
|
|
42
|
+
### Step A4 — Verify SSL
|
|
43
|
+
Vercel auto-provisions SSL via Let's Encrypt. Verify:
|
|
44
|
+
- `https://yourdomain.com` loads without warnings
|
|
45
|
+
- `https://www.yourdomain.com` redirects correctly
|
|
46
|
+
|
|
47
|
+
### Step A5 — Set environment variables (if needed)
|
|
48
|
+
Vercel Dashboard → Settings → Environment Variables
|
|
49
|
+
Add tracking IDs, API keys as env vars — never hardcode them.
|
|
50
|
+
|
|
51
|
+
### Step A6 — Post-deploy validation checklist
|
|
52
|
+
- [ ] Production URL loads correctly
|
|
53
|
+
- [ ] SSL certificate active (green padlock)
|
|
54
|
+
- [ ] www → non-www redirect working (or vice versa — consistent)
|
|
55
|
+
- [ ] Preview URL from Vercel PR/branch works
|
|
56
|
+
- [ ] Analytics receiving data (Vercel Analytics or GA)
|
|
57
|
+
- [ ] Meta Pixel fires on production URL (verify with Pixel Helper)
|
|
58
|
+
- [ ] GTM fires on production URL (verify with Tag Assistant)
|
|
59
|
+
- [ ] Test UTM: `https://yourdomain.com?utm_source=test` → check sessionStorage
|
|
60
|
+
|
|
61
|
+
### Vercel MCP integration (for automated deploy from Claude Code)
|
|
62
|
+
If the Vercel MCP is configured in Claude Code:
|
|
63
|
+
```
|
|
64
|
+
# Deploy current project to Vercel production
|
|
65
|
+
vercel deploy --prod
|
|
66
|
+
```
|
|
67
|
+
Claude Code can trigger deploys directly via MCP without leaving the session.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Path B — Hostinger VPS (recommended for BRL billing + Brazilian users)
|
|
72
|
+
|
|
73
|
+
**Requirements:**
|
|
74
|
+
- Hostinger VPS plan (R$29.90+/mo, includes free domain on some plans)
|
|
75
|
+
- Domain registered in Hostinger (or any DNS provider)
|
|
76
|
+
- SSH access to the VPS
|
|
77
|
+
|
|
78
|
+
### Step B1 — Prepare VPS
|
|
79
|
+
```bash
|
|
80
|
+
# SSH into VPS
|
|
81
|
+
ssh root@YOUR_VPS_IP
|
|
82
|
+
|
|
83
|
+
# Update system
|
|
84
|
+
apt update && apt upgrade -y
|
|
85
|
+
|
|
86
|
+
# Install LiteSpeed (or use OpenLiteSpeed — pre-installed on some plans)
|
|
87
|
+
# Check if already installed
|
|
88
|
+
litespeed -v
|
|
89
|
+
|
|
90
|
+
# Create site directory
|
|
91
|
+
mkdir -p /var/www/yourdomain.com/public_html
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step B2 — Upload site files
|
|
95
|
+
```bash
|
|
96
|
+
# From local machine — upload entire site folder
|
|
97
|
+
scp -r ./dist/* root@YOUR_VPS_IP:/var/www/yourdomain.com/public_html/
|
|
98
|
+
|
|
99
|
+
# Or use rsync for incremental updates
|
|
100
|
+
rsync -avz --delete ./dist/ root@YOUR_VPS_IP:/var/www/yourdomain.com/public_html/
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Step B3 — Configure virtual host (LiteSpeed)
|
|
104
|
+
Via Hostinger hPanel → Websites → Add Website → point to your folder.
|
|
105
|
+
|
|
106
|
+
Or via CLI if you have direct LiteSpeed access:
|
|
107
|
+
```
|
|
108
|
+
# /usr/local/lsws/conf/vhosts/yourdomain.com/vhconf.conf
|
|
109
|
+
docRoot /var/www/yourdomain.com/public_html/
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Step B4 — SSL certificate
|
|
113
|
+
```bash
|
|
114
|
+
# Using Let's Encrypt via certbot
|
|
115
|
+
apt install certbot python3-certbot-apache -y
|
|
116
|
+
certbot --apache -d yourdomain.com -d www.yourdomain.com
|
|
117
|
+
|
|
118
|
+
# Auto-renewal
|
|
119
|
+
certbot renew --dry-run
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Or use Hostinger's built-in SSL (hPanel → SSL → Free SSL).
|
|
123
|
+
|
|
124
|
+
### Step B5 — Set up domain DNS
|
|
125
|
+
In Hostinger hPanel → Domains → DNS Zone:
|
|
126
|
+
- Type A: `@` → your VPS IP
|
|
127
|
+
- Type A: `www` → your VPS IP
|
|
128
|
+
|
|
129
|
+
Or in Cloudflare if domain is there:
|
|
130
|
+
- Type A: `@` → VPS IP (proxied ON for DDoS protection)
|
|
131
|
+
- Type A: `www` → VPS IP (proxied ON)
|
|
132
|
+
|
|
133
|
+
### Step B6 — Start web service
|
|
134
|
+
```bash
|
|
135
|
+
# LiteSpeed
|
|
136
|
+
service lsws start
|
|
137
|
+
|
|
138
|
+
# Verify site is accessible
|
|
139
|
+
curl -I https://yourdomain.com
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Step B7 — Post-deploy validation checklist
|
|
143
|
+
- [ ] Production URL loads correctly
|
|
144
|
+
- [ ] SSL active (no mixed content warnings)
|
|
145
|
+
- [ ] PageSpeed score ≥ 90 (LiteSpeed cache helps significantly)
|
|
146
|
+
- [ ] `curl -I https://yourdomain.com` returns `200 OK`
|
|
147
|
+
- [ ] Meta Pixel fires on production URL
|
|
148
|
+
- [ ] GTM fires on production URL
|
|
149
|
+
- [ ] UTM capture working end-to-end
|
|
150
|
+
- [ ] Form submissions go to the correct endpoint
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Deploy decision matrix
|
|
155
|
+
|
|
156
|
+
| Factor | Vercel | Hostinger VPS |
|
|
157
|
+
|---|---|---|
|
|
158
|
+
| Domain in Cloudflare | ✓ Best | Works |
|
|
159
|
+
| Domain in Hostinger | Works | ✓ Best |
|
|
160
|
+
| Pay in BRL | ✗ USD only | ✓ BRL |
|
|
161
|
+
| Automated CI/CD | ✓ Git-push deploys | Manual rsync |
|
|
162
|
+
| MCP integration | ✓ Available | SSH only |
|
|
163
|
+
| Serverless functions | ✓ Edge functions | ✗ Not native |
|
|
164
|
+
| Cache/CDN | Vercel Edge Network | LiteSpeed cache |
|
|
165
|
+
| Cheapest option | $20/mo USD | R$29.90/mo BRL |
|
|
166
|
+
| Best for Brazilian users | Both | LiteSpeed + BR server |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Deploy from within Claude Code (no manual steps)
|
|
171
|
+
|
|
172
|
+
### Vercel via MCP
|
|
173
|
+
If Vercel MCP is connected in Claude Code settings, the agent can deploy directly:
|
|
174
|
+
```
|
|
175
|
+
Deploy this project to Vercel production with domain yourdomain.com
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Hostinger via SSH
|
|
179
|
+
Claude Code can SSH into the VPS and run the deploy:
|
|
180
|
+
```bash
|
|
181
|
+
# The agent executes this sequence
|
|
182
|
+
ssh root@VPS_IP "cd /var/www/yourdomain.com/public_html && rm -rf *"
|
|
183
|
+
scp -r ./dist/* root@VPS_IP:/var/www/yourdomain.com/public_html/
|
|
184
|
+
ssh root@VPS_IP "service lsws restart"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Post-deploy automated check
|
|
188
|
+
After any deploy, run:
|
|
189
|
+
```bash
|
|
190
|
+
curl -o /dev/null -s -w "%{http_code}" https://yourdomain.com
|
|
191
|
+
# Should return 200
|
|
192
|
+
```
|