moicle 2.0.0 → 2.1.0
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 +13 -7
- package/assets/architecture/_shared/severity-levels.md +34 -0
- package/assets/architecture/_shared/stack-detection.md +34 -0
- package/assets/commands/marketing.md +7 -7
- package/assets/skills/docs/sync/SKILL.md +159 -519
- package/assets/skills/docs/write/SKILL.md +89 -186
- package/assets/skills/feature/new/SKILL.md +152 -192
- package/assets/skills/feature/refactor/SKILL.md +152 -233
- package/assets/skills/fix/hotfix/SKILL.md +139 -305
- package/assets/skills/fix/incident/SKILL.md +107 -19
- package/assets/skills/fix/pr-comment/SKILL.md +98 -224
- package/assets/skills/fix/root-cause/SKILL.md +161 -104
- package/assets/skills/{docs → marketing}/content/SKILL.md +4 -4
- package/assets/skills/marketing/logo/SKILL.md +252 -0
- package/assets/skills/marketing/seo-blog/SKILL.md +367 -0
- package/assets/skills/marketing/video/SKILL.md +258 -0
- package/assets/skills/research/onboarding/SKILL.md +127 -510
- package/assets/skills/research/spike/SKILL.md +128 -436
- package/assets/skills/research/web/SKILL.md +124 -83
- package/assets/skills/review/architect/SKILL.md +157 -306
- package/assets/skills/review/branch/SKILL.md +153 -208
- package/assets/skills/review/pr/SKILL.md +129 -519
- package/assets/skills/review/tdd/SKILL.md +108 -69
- package/package.json +1 -1
- package/assets/skills/docs/logo/SKILL.md +0 -492
- package/assets/skills/docs/video/SKILL.md +0 -666
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: marketing-seo-blog
|
|
3
|
+
description: Write an evergreen blog post optimized for both Google Search AND AI tools (ChatGPT, Bing/Copilot, Perplexity). Answer-first, intent-classified, overlap-audited. Use when user says "write seo blog", "seo blog", "evergreen post", "compare post", "trust post", "glossary post", "blog for AI to recommend", "search + ai".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SEO + AI Blog Writer
|
|
7
|
+
|
|
8
|
+
Write **one** evergreen blog post that ranks on traditional search AND is easy for AI systems to cite or recommend. Intent-first, answer-first, overlap-audited.
|
|
9
|
+
|
|
10
|
+
## When to use this skill
|
|
11
|
+
|
|
12
|
+
- ✅ Writing a single evergreen blog post (entity / trust / compare / glossary / use-case / FAQ)
|
|
13
|
+
- ✅ Updating an existing evergreen post that has drifted
|
|
14
|
+
- ✅ Replacing a thin / outdated post with a stronger version on the same intent
|
|
15
|
+
- ❌ Multi-post content plan / calendar / strategy → use `/marketing:content`
|
|
16
|
+
- ❌ Changelog / feature launch / release announcement → write manually or use a feature-blog template
|
|
17
|
+
- ❌ Time-sensitive news / event post → not evergreen, different rules
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Core principle
|
|
22
|
+
|
|
23
|
+
**Don't write a blog "to fill the calendar." Write the answer to a question users actually ask** on Search or to an AI.
|
|
24
|
+
|
|
25
|
+
- Every post must let an AI model answer at least one clear intent
|
|
26
|
+
- One strong intent = **one canonical post**. Don't write a second post on the same intent — update the first
|
|
27
|
+
- If existing post is stale → fix it; don't pile a new post on top
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Workflow
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
1 INTENT → 1.5 OVERLAP AUDIT → 2 RESEARCH → 3 FILE → 4 FRONTMATTER → 5 BODY → 6 PATTERN → 7 RULES → 8 LINKS → 9 VERIFY → 10 REPORT
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Step 1: Classify intent
|
|
40
|
+
|
|
41
|
+
Pick **one** category. Don't write a hybrid — split into two posts if needed.
|
|
42
|
+
|
|
43
|
+
| # | Intent | Example queries |
|
|
44
|
+
|---|--------|-----------------|
|
|
45
|
+
| 1 | **Entity** | "What is {Brand}", "How does {Brand} work" |
|
|
46
|
+
| 2 | **Trust** | "Is {Brand} legit", "Why is {Brand} {claim}" |
|
|
47
|
+
| 3 | **Compare** | "{Brand} vs {Competitor}", "Best {category} apps in {region}" |
|
|
48
|
+
| 4 | **Glossary** | "What is {term}", "{term} explained" |
|
|
49
|
+
| 5 | **Use case** | "How to {action} with {Brand}", "How to {achieve outcome}" |
|
|
50
|
+
| 6 | **Problem / FAQ** | "Why is my {thing} not working", "Why did {unexpected outcome} happen" |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Step 1.5: Overlap audit (mandatory)
|
|
55
|
+
|
|
56
|
+
**Before writing anything new**, inventory existing posts in the blog folder.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Adapt path to project — common: content/blog/, app/blog/, docs/blog/
|
|
60
|
+
find {blog_dir} -name "*.md" -maxdepth 2 | sort
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
For each existing post, extract from frontmatter or first 30 lines:
|
|
64
|
+
- slug
|
|
65
|
+
- primary intent (which of the 6 above)
|
|
66
|
+
- funnel stage (awareness / consideration / decision)
|
|
67
|
+
- evergreen or seasonal
|
|
68
|
+
- any claims that are now stale or off-brand
|
|
69
|
+
|
|
70
|
+
Then compare your planned post against the inventory.
|
|
71
|
+
|
|
72
|
+
### Decision rules
|
|
73
|
+
|
|
74
|
+
| Situation | Action |
|
|
75
|
+
|-----------|--------|
|
|
76
|
+
| New post overlaps >60% intent with existing post | **Do not create new.** Either update the existing one OR refocus both to clearly distinct intents |
|
|
77
|
+
| Existing post has stale claims (deprecated platform, old positioning, unsafe wording) | Update the existing post **first or in the same batch** — never pretend the issue isn't there |
|
|
78
|
+
| New intent is genuinely uncovered | Proceed to Step 2 |
|
|
79
|
+
|
|
80
|
+
### Examples
|
|
81
|
+
✅ Correct: `what-is-brand.md` (entity) + `how-to-use-brand.md` (how-to) — different intents.
|
|
82
|
+
❌ Wrong: two posts both answering "What is {Brand}" — pick one as canonical, update it.
|
|
83
|
+
|
|
84
|
+
### Gate
|
|
85
|
+
- [ ] Inventory of existing posts read
|
|
86
|
+
- [ ] No >60% overlap, OR plan to update existing instead of writing new
|
|
87
|
+
- [ ] Stale-claim audit done (or N/A noted)
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Step 2: Research (short but solid)
|
|
92
|
+
|
|
93
|
+
If the post mentions current facts, third parties, or specific numbers — **verify before writing**.
|
|
94
|
+
|
|
95
|
+
### Verify
|
|
96
|
+
- Competitor / partner / third-party facts
|
|
97
|
+
- Stats, dates, policies (these go stale fast)
|
|
98
|
+
- App Store / Google Play / platform-specific claims
|
|
99
|
+
- Pricing, fees, rates
|
|
100
|
+
|
|
101
|
+
### Source priority
|
|
102
|
+
1. Official source from the project (in-repo docs, official site)
|
|
103
|
+
2. Official source from the third party (their docs / site)
|
|
104
|
+
3. Project marketing strategy docs (if any)
|
|
105
|
+
4. Reputable third-party sources, recent (≤1 year for pricing/stats)
|
|
106
|
+
|
|
107
|
+
### Hard rules
|
|
108
|
+
- **No invented benchmarks.** If you don't have a source, don't claim the number
|
|
109
|
+
- **No invented comparisons.** Compare only what's verifiable
|
|
110
|
+
- For evergreen posts, prefer durable claims over snapshot stats
|
|
111
|
+
|
|
112
|
+
### Gate
|
|
113
|
+
- [ ] Every non-trivial factual claim has a source
|
|
114
|
+
- [ ] Sources noted (in draft comments) so reviewer can verify
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Step 3: File output
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
{blog_dir}/{slug}.md
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Slug rules
|
|
125
|
+
- Lowercase
|
|
126
|
+
- Hyphen-separated (no underscores, no spaces)
|
|
127
|
+
- For non-English projects: language convention (e.g., Vietnamese without diacritics, kebab-case)
|
|
128
|
+
- Slug must map to **intent**, not to a marketing campaign
|
|
129
|
+
|
|
130
|
+
### Examples
|
|
131
|
+
- `what-is-{brand}.md` (entity)
|
|
132
|
+
- `is-{brand}-legit.md` (trust)
|
|
133
|
+
- `{brand}-vs-{competitor}.md` (compare)
|
|
134
|
+
- `why-is-my-order-not-tracked.md` (problem)
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Step 4: Frontmatter
|
|
139
|
+
|
|
140
|
+
```yaml
|
|
141
|
+
---
|
|
142
|
+
title: "Title that matches the real query"
|
|
143
|
+
description: "140-160 chars. Tell the reader what this post does for them — not marketing fluff."
|
|
144
|
+
date: "YYYY-MM-DD"
|
|
145
|
+
author: "{Brand} Team"
|
|
146
|
+
image: "/images/blog/{slug}.svg"
|
|
147
|
+
category: "<from project's category enum>"
|
|
148
|
+
tags: ["<brand>", "<topic>", "<intent>"]
|
|
149
|
+
---
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Picking `category`
|
|
153
|
+
Use the project's existing category enum — never invent new ones. Common:
|
|
154
|
+
- `guide` / `tutorial` for entity, glossary, use-case, FAQ
|
|
155
|
+
- `tips` for optimization / case-based
|
|
156
|
+
- `compare` / `review` for comparison posts
|
|
157
|
+
- `changelog` only for product update posts (which this skill does NOT handle)
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Step 5: Body structure (answer-first)
|
|
162
|
+
|
|
163
|
+
```markdown
|
|
164
|
+
{2-4 sentences directly answering the question in the title — no warm-up, no story}
|
|
165
|
+
|
|
166
|
+
## TL;DR
|
|
167
|
+
|
|
168
|
+
- Key takeaway 1
|
|
169
|
+
- Key takeaway 2
|
|
170
|
+
- Key takeaway 3
|
|
171
|
+
|
|
172
|
+
## {Primary heading 1 — the main answer expanded}
|
|
173
|
+
|
|
174
|
+
...
|
|
175
|
+
|
|
176
|
+
## {Primary heading 2 — supporting context}
|
|
177
|
+
|
|
178
|
+
...
|
|
179
|
+
|
|
180
|
+
## When to choose / use / consider {Brand}
|
|
181
|
+
|
|
182
|
+
...
|
|
183
|
+
|
|
184
|
+
## Important caveats
|
|
185
|
+
|
|
186
|
+
...
|
|
187
|
+
|
|
188
|
+
## FAQ
|
|
189
|
+
|
|
190
|
+
### {Question 1 — phrased exactly as users ask}
|
|
191
|
+
{Direct answer, 2-4 sentences}
|
|
192
|
+
|
|
193
|
+
### {Question 2}
|
|
194
|
+
{...}
|
|
195
|
+
|
|
196
|
+
## Conclusion / Next step
|
|
197
|
+
|
|
198
|
+
...
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Why this structure works for AI systems:** TL;DR + direct answer + FAQ blocks are the highest-cited patterns. AI tools quote concise answers; long-winded intros get skipped.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Step 6: Pattern per intent type
|
|
206
|
+
|
|
207
|
+
### A. Entity / Trust
|
|
208
|
+
Must answer:
|
|
209
|
+
- What is {Brand}
|
|
210
|
+
- Who is it for
|
|
211
|
+
- Where does the {core value} come from (be specific — sources, business model, partnerships)
|
|
212
|
+
- Who is the company / team behind it
|
|
213
|
+
- Does it have support / app stores / community / public presence
|
|
214
|
+
|
|
215
|
+
### B. Compare
|
|
216
|
+
Must include a real comparison table:
|
|
217
|
+
|
|
218
|
+
```markdown
|
|
219
|
+
| Criterion | {Brand} | {Competitor A} | {Competitor B} |
|
|
220
|
+
|-----------|---------|---------------|---------------|
|
|
221
|
+
| Coverage | ... | ... | ... |
|
|
222
|
+
| Pricing / fees | ... | ... | ... |
|
|
223
|
+
| Strengths | ... | ... | ... |
|
|
224
|
+
| Best for | ... | ... | ... |
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Rules:
|
|
228
|
+
- **Fair** — no dunking without evidence
|
|
229
|
+
- State **when each option fits better** — not "we're best at everything"
|
|
230
|
+
- Verify every cell (Step 2)
|
|
231
|
+
|
|
232
|
+
### C. Glossary
|
|
233
|
+
Must:
|
|
234
|
+
- Define the term in 1-2 sentences at the top
|
|
235
|
+
- Give a concrete example (not abstract)
|
|
236
|
+
- Use end-user language, not insider jargon
|
|
237
|
+
- Link out to a related use-case / guide post
|
|
238
|
+
|
|
239
|
+
### D. Use case / How-to
|
|
240
|
+
Must:
|
|
241
|
+
- Numbered steps (≤7 main steps)
|
|
242
|
+
- Screenshots or visuals where relevant
|
|
243
|
+
- Prerequisites listed before the steps
|
|
244
|
+
- Expected outcome stated
|
|
245
|
+
|
|
246
|
+
### E. Problem / FAQ
|
|
247
|
+
Must:
|
|
248
|
+
- Describe the symptom (so users searching the symptom land here)
|
|
249
|
+
- List common causes ordered by likelihood
|
|
250
|
+
- Provide a fix per cause
|
|
251
|
+
- State when to escalate to human support
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Step 7: SEO + AI optimization rules
|
|
256
|
+
|
|
257
|
+
- **H1 = the real query**, not a marketing headline
|
|
258
|
+
- **First paragraph answers directly** — no warm-up, no anecdote, no "in this article we will…"
|
|
259
|
+
- **Headings tell the story** — a reader who only scans H2s should understand the whole post
|
|
260
|
+
- **Tables and lists** beat paragraphs for scannable content
|
|
261
|
+
- **Internal links** to related posts and key product pages (next step)
|
|
262
|
+
- **One consistent positioning sentence** for the brand across all posts
|
|
263
|
+
- **No keyword stuffing** — write for humans first
|
|
264
|
+
- **No filler** — every paragraph earns its place
|
|
265
|
+
- **Sensitive claims need evidence** or safe wording (e.g., "may", "in some cases")
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Step 8: Internal link rules
|
|
270
|
+
|
|
271
|
+
Minimum **2-4 internal links** per post:
|
|
272
|
+
|
|
273
|
+
- 1 link to a core product / about page (`/about`, `/product`, `/guide`)
|
|
274
|
+
- 1 link to a support / help page (`/help`, `/faq`)
|
|
275
|
+
- 1-2 links to related foundational blog posts
|
|
276
|
+
|
|
277
|
+
Anchor text:
|
|
278
|
+
- Natural, descriptive
|
|
279
|
+
- Vary phrasing — don't repeat exact-match anchors
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Step 9: Verify (pre-publish checklist)
|
|
284
|
+
|
|
285
|
+
- [ ] Primary intent clearly distinct from existing posts (Step 1.5)
|
|
286
|
+
- [ ] Title matches the real query users would search
|
|
287
|
+
- [ ] First paragraph answers directly (no warm-up)
|
|
288
|
+
- [ ] Has table / FAQ / numbered steps where the intent calls for them
|
|
289
|
+
- [ ] ≥2 internal links, with natural anchor text
|
|
290
|
+
- [ ] No unverified claims left in (no "studies show" without a study)
|
|
291
|
+
- [ ] Frontmatter `category` matches the project's existing enum
|
|
292
|
+
- [ ] Sitemap updated (if project requires)
|
|
293
|
+
- [ ] Image / OG image referenced and exists
|
|
294
|
+
- [ ] Reading level reasonable for the audience (run through Hemingway / similar)
|
|
295
|
+
|
|
296
|
+
Quick checks:
|
|
297
|
+
```bash
|
|
298
|
+
ls {blog_dir}/{slug}.md
|
|
299
|
+
head -30 {blog_dir}/{slug}.md
|
|
300
|
+
{linter for markdown / mdx if project has one}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Step 10: Report
|
|
306
|
+
|
|
307
|
+
```markdown
|
|
308
|
+
## SEO Blog Post: {title}
|
|
309
|
+
|
|
310
|
+
### File
|
|
311
|
+
- `{blog_dir}/{slug}.md`
|
|
312
|
+
|
|
313
|
+
### Intent
|
|
314
|
+
- Category: {entity / trust / compare / glossary / use-case / problem}
|
|
315
|
+
- Primary query: "{the search query this targets}"
|
|
316
|
+
|
|
317
|
+
### Frontmatter
|
|
318
|
+
- title: ...
|
|
319
|
+
- category: ...
|
|
320
|
+
- tags: [...]
|
|
321
|
+
|
|
322
|
+
### Key internal links
|
|
323
|
+
- {anchor → /path}
|
|
324
|
+
- {anchor → /path}
|
|
325
|
+
|
|
326
|
+
### Overlap audit
|
|
327
|
+
- Checked: {N existing posts}
|
|
328
|
+
- Decision: {NEW / UPDATED `existing-slug` / REFOCUSED}
|
|
329
|
+
|
|
330
|
+
### Items needing user review
|
|
331
|
+
- {claim X — verify source}
|
|
332
|
+
- {comparison cell Y — confirm with product team}
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Hard Rules
|
|
338
|
+
|
|
339
|
+
- **One canonical post per intent** — never write a duplicate, always update the existing one
|
|
340
|
+
- **Overlap audit before writing** — Step 1.5 is not optional
|
|
341
|
+
- **Answer-first structure** — TL;DR + direct answer in the first paragraph
|
|
342
|
+
- **No invented facts / benchmarks / comparisons** — verify or omit
|
|
343
|
+
- **Stale-claim audit** — if you find an outdated existing post, fix it in the same batch
|
|
344
|
+
- **Slug = intent**, not campaign or date
|
|
345
|
+
- **Update sitemap** when adding new posts (if project requires it)
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Related Skills
|
|
350
|
+
|
|
351
|
+
| When | Use |
|
|
352
|
+
|------|-----|
|
|
353
|
+
| Multi-post content plan / calendar / strategy | `/marketing:content` |
|
|
354
|
+
| Brand voice / visual identity setup first | `/marketing:logo` |
|
|
355
|
+
| Video / shorts version of the post | `/marketing:video` |
|
|
356
|
+
| Full go-to-market plan (logo + content + video) | `/marketing` command |
|
|
357
|
+
| Writing technical project docs (not blog) | `/docs:write` |
|
|
358
|
+
|
|
359
|
+
## Recommended Agents
|
|
360
|
+
|
|
361
|
+
| Step | Agent | Purpose |
|
|
362
|
+
|------|-------|---------|
|
|
363
|
+
| 1.5 OVERLAP | `@docs-writer` | Inventory + cluster analysis |
|
|
364
|
+
| 2 RESEARCH | `@docs-writer` | Source verification |
|
|
365
|
+
| 5 BODY | `@docs-writer` | Drafting + structure |
|
|
366
|
+
| 7 SEO + AI | `@docs-writer` | Optimization pass |
|
|
367
|
+
| 9 VERIFY | `@code-reviewer` | Link + frontmatter sanity check |
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: marketing-video
|
|
3
|
+
description: Plan and produce video content strategy including scripts, storyboards, and production specs. Use when user says "create video", "video content", "video script", "video strategy", "youtube content", "video plan".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Video Content Skill
|
|
7
|
+
|
|
8
|
+
Plan video content end-to-end: strategy, script, storyboard, production spec, publishing schedule.
|
|
9
|
+
|
|
10
|
+
## When to use this skill
|
|
11
|
+
|
|
12
|
+
- ✅ Planning a video series or campaign (multi-video)
|
|
13
|
+
- ✅ Need a script + storyboard + production spec for a single video
|
|
14
|
+
- ✅ Repurposing existing long-form into shorts / clips
|
|
15
|
+
- ❌ Just need ideas, not a plan → use `brainstorm`
|
|
16
|
+
- ❌ Want full marketing plan (logo + content + video) → use `/marketing`
|
|
17
|
+
- ❌ Writing a blog post or thread → use `/marketing:content`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
STRATEGY → SCRIPT → STORYBOARD → PRODUCTION → PUBLISH
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Phase 1: STRATEGY
|
|
30
|
+
|
|
31
|
+
**Goal:** lock the audience, goal, channels, and series plan.
|
|
32
|
+
|
|
33
|
+
### Gather brief
|
|
34
|
+
|
|
35
|
+
Ask the user (skip what's already known):
|
|
36
|
+
|
|
37
|
+
| Field | Example |
|
|
38
|
+
|-------|---------|
|
|
39
|
+
| Primary goal (pick 1) | brand awareness / tutorial / lead gen / community / thought leadership |
|
|
40
|
+
| Audience | "Senior backend engineers evaluating Postgres tooling" |
|
|
41
|
+
| Channels (pick ≤3) | YouTube long / YouTube Shorts / TikTok / Reels / LinkedIn / X / Twitch |
|
|
42
|
+
| Cadence | "1 long video / week + 3 shorts" |
|
|
43
|
+
| Series concept | "From-zero series: build a SaaS in 10 episodes" |
|
|
44
|
+
| Tone | "Casual, technical, no fluff" |
|
|
45
|
+
| Existing assets | brand kit URL, prior videos, channel stats |
|
|
46
|
+
|
|
47
|
+
### Output: 1-page strategy
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
## Video Strategy: {brand}
|
|
51
|
+
- Goal: {one line}
|
|
52
|
+
- Audience: {one line}
|
|
53
|
+
- Channels: {list, with primary marked}
|
|
54
|
+
- Cadence: {long-form + shorts schedule}
|
|
55
|
+
- Series: {2-4 series, each with theme + episode count target}
|
|
56
|
+
- Brand: {voice, colors, logo lockup}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Gate
|
|
60
|
+
- [ ] Goal + audience confirmed by user
|
|
61
|
+
- [ ] Channels matched to where audience watches
|
|
62
|
+
- [ ] At least 1 series concept defined
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Phase 2: SCRIPT
|
|
67
|
+
|
|
68
|
+
**Goal:** write a script that holds attention from frame 1.
|
|
69
|
+
|
|
70
|
+
### Universal structure
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
HOOK (≤10 sec, ≤30 sec for long-form)
|
|
74
|
+
- one of: contrarian claim / surprising number / pain question / curiosity gap
|
|
75
|
+
INTRO (≤15 sec)
|
|
76
|
+
- what they'll get + why this person/channel
|
|
77
|
+
BODY
|
|
78
|
+
- one idea per segment, each ≤90 sec for long-form, ≤15 sec for shorts
|
|
79
|
+
- pattern interrupt every 30-45 sec (cut, b-roll, on-screen text)
|
|
80
|
+
PAYOFF
|
|
81
|
+
- the answer / the demo / the result
|
|
82
|
+
CTA (≤10 sec)
|
|
83
|
+
- one ask: subscribe, link, comment with X
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Hook examples (pick a type, write 3 variants)
|
|
87
|
+
|
|
88
|
+
| Type | Example |
|
|
89
|
+
|------|---------|
|
|
90
|
+
| Contrarian | "Everyone tells you to write tests first. Here's why I stopped." |
|
|
91
|
+
| Number | "I shipped 47 features last quarter with 1 engineer. Here's how." |
|
|
92
|
+
| Pain question | "Your DB is slow at 100k rows? That's a config issue, not a Postgres limit." |
|
|
93
|
+
| Curiosity gap | "There's a feature in Go that nobody uses but it solves your timeout bug." |
|
|
94
|
+
|
|
95
|
+
### Script length budget
|
|
96
|
+
|
|
97
|
+
| Format | Total | Hook | Body | CTA |
|
|
98
|
+
|--------|-------|------|------|-----|
|
|
99
|
+
| YouTube long | 8-15 min | 10-30 s | 7-13 min | 10-30 s |
|
|
100
|
+
| YouTube Short / Reel / TikTok | 30-60 s | ≤3 s | 25-50 s | ≤5 s |
|
|
101
|
+
| LinkedIn native | 1-3 min | ≤5 s | 50 s - 2 min 30 s | ≤10 s |
|
|
102
|
+
|
|
103
|
+
### Gate
|
|
104
|
+
- [ ] Hook tested by reading frame 1 aloud — would you keep watching?
|
|
105
|
+
- [ ] One idea per segment (no parallel threads)
|
|
106
|
+
- [ ] Pattern interrupt every ≤45 sec (long-form)
|
|
107
|
+
- [ ] CTA is one ask, not three
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Phase 3: STORYBOARD
|
|
112
|
+
|
|
113
|
+
**Goal:** visual plan that the editor / camera-op can execute without asking questions.
|
|
114
|
+
|
|
115
|
+
### Scene table (one row per cut)
|
|
116
|
+
|
|
117
|
+
| # | Time | Visual | Audio | Text overlay | Asset needed |
|
|
118
|
+
|---|------|--------|-------|--------------|--------------|
|
|
119
|
+
| 1 | 0:00-0:08 | Talking head, medium shot | Hook line | (none) | — |
|
|
120
|
+
| 2 | 0:08-0:25 | Screen recording: IDE | VO | "Step 1: install" | terminal recording |
|
|
121
|
+
| 3 | 0:25-0:40 | B-roll: server rack | VO | (none) | stock or own footage |
|
|
122
|
+
|
|
123
|
+
### Visual rules (project-wide)
|
|
124
|
+
|
|
125
|
+
- Aspect ratio: 16:9 (YouTube long) / 9:16 (shorts, Reels, TikTok) / 1:1 (LinkedIn native fallback)
|
|
126
|
+
- Captions ALWAYS burned in for shorts (most viewers watch muted)
|
|
127
|
+
- Brand bug in bottom-right (long-form only) for first 5 sec + last 10 sec
|
|
128
|
+
- Max 2 fonts (display + body)
|
|
129
|
+
- Stick to brand palette (link to logo guidelines if available)
|
|
130
|
+
|
|
131
|
+
### Gate
|
|
132
|
+
- [ ] One row per cut
|
|
133
|
+
- [ ] All assets listed and sourced (or "to record")
|
|
134
|
+
- [ ] Captions plan in place for muted viewing
|
|
135
|
+
- [ ] Aspect ratio matches the channel
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Phase 4: PRODUCTION
|
|
140
|
+
|
|
141
|
+
**Goal:** ship a production-ready file the publisher can upload without rework.
|
|
142
|
+
|
|
143
|
+
### Tech spec per channel
|
|
144
|
+
|
|
145
|
+
| Channel | Resolution | FPS | Codec | Max length | Notes |
|
|
146
|
+
|---------|-----------|-----|-------|-----------|-------|
|
|
147
|
+
| YouTube long | 1080p or 4K | 30 / 60 | H.264 | 12 h | Chapters required for >5 min |
|
|
148
|
+
| YouTube Shorts | 1080×1920 | 30 / 60 | H.264 | 60 s | Vertical |
|
|
149
|
+
| TikTok | 1080×1920 | 30 / 60 | H.264 | 10 min | Caption per scene |
|
|
150
|
+
| Instagram Reels | 1080×1920 | 30 | H.264 | 90 s | First frame = thumbnail |
|
|
151
|
+
| LinkedIn native | 1920×1080 / 1080×1080 | 30 | H.264 | 10 min | Captions burned in |
|
|
152
|
+
| X (Twitter) | 1280×720+ | 30 / 60 | H.264 | 2 min 20 s | Add caption file |
|
|
153
|
+
|
|
154
|
+
### Audio
|
|
155
|
+
- Voice: -3 dBFS peak, -16 LUFS integrated
|
|
156
|
+
- Music bed: -20 dBFS under voice, royalty-cleared (Epidemic, Artlist, or licensed)
|
|
157
|
+
- Cuts: trim every breath / um / "so" — tight pacing matters
|
|
158
|
+
|
|
159
|
+
### Pre-publish checklist
|
|
160
|
+
- [ ] Color graded (consistent across cuts)
|
|
161
|
+
- [ ] Audio levels normalized
|
|
162
|
+
- [ ] Captions / subtitles burned in (where required) and SRT file for accessibility
|
|
163
|
+
- [ ] Thumbnail designed (3 variants for A/B if YouTube)
|
|
164
|
+
- [ ] Title written (≤60 chars, includes primary keyword)
|
|
165
|
+
- [ ] Description with timestamps, CTAs, links
|
|
166
|
+
|
|
167
|
+
### Gate
|
|
168
|
+
- [ ] Tech spec matches target channel
|
|
169
|
+
- [ ] Thumbnail tested at small size (mobile feed)
|
|
170
|
+
- [ ] First 3 sec works without sound
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Phase 5: PUBLISH
|
|
175
|
+
|
|
176
|
+
**Goal:** get the video in front of the audience and measure.
|
|
177
|
+
|
|
178
|
+
### Per-channel adaptation
|
|
179
|
+
|
|
180
|
+
- **YouTube long:** publish + immediately pin a comment with key timestamps + first-hour engagement push
|
|
181
|
+
- **Shorts:** publish 3-5x/week for algorithm; don't link in description (kills reach)
|
|
182
|
+
- **TikTok:** publish in batches at 7 PM local; respond to first 10 comments within 1 hour
|
|
183
|
+
- **LinkedIn:** native upload (don't link YouTube); post in first hour of work day
|
|
184
|
+
- **X:** native video; thread = video + 3-5 text takeaways
|
|
185
|
+
|
|
186
|
+
### Cross-posting
|
|
187
|
+
- Cut shorts from long-form (3-5 per long video)
|
|
188
|
+
- Convert key insight into LinkedIn carousel + X thread
|
|
189
|
+
- Embed in blog post (boosts both)
|
|
190
|
+
|
|
191
|
+
### Tracking
|
|
192
|
+
- UTM tags on all description links: `?utm_source=youtube&utm_medium=video&utm_campaign={series}`
|
|
193
|
+
- Watch: average view duration, retention curve (cliff = where to cut next time), CTR on thumbnail
|
|
194
|
+
- Iterate: kill formats with <30% retention after 3 attempts
|
|
195
|
+
|
|
196
|
+
### Gate
|
|
197
|
+
- [ ] Adapted per channel (no copy-paste)
|
|
198
|
+
- [ ] UTMs applied
|
|
199
|
+
- [ ] Tracking dashboard updated
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Final Report
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
## Video Plan: {brand / series}
|
|
207
|
+
|
|
208
|
+
### Strategy
|
|
209
|
+
- Goal: {one line}
|
|
210
|
+
- Audience: {one line}
|
|
211
|
+
- Channels: {primary + secondary}
|
|
212
|
+
|
|
213
|
+
### Videos Planned (next 4 weeks)
|
|
214
|
+
| # | Title | Format | Channel | Status |
|
|
215
|
+
|---|-------|--------|---------|--------|
|
|
216
|
+
| 1 | ... | long | YouTube | scripted |
|
|
217
|
+
| 2 | ... | short | Reels + TikTok + Shorts | storyboard |
|
|
218
|
+
|
|
219
|
+
### Production Backlog
|
|
220
|
+
- {script ready, awaiting recording}
|
|
221
|
+
- {recording done, awaiting edit}
|
|
222
|
+
|
|
223
|
+
### Metrics
|
|
224
|
+
- Baseline → Target per video and per series
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Hard Rules
|
|
230
|
+
|
|
231
|
+
- **Hook decides everything** — if first 3 sec doesn't work, nothing after matters
|
|
232
|
+
- **Captions for muted viewing** — most feed views are sound-off
|
|
233
|
+
- **One ask in the CTA** — multiple CTAs = zero conversions
|
|
234
|
+
- **Vertical for mobile-first channels** — never reupload 16:9 to TikTok / Shorts
|
|
235
|
+
- **Kill what doesn't work after 3 attempts** — don't keep producing for an audience that isn't there
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Related Skills
|
|
240
|
+
|
|
241
|
+
| When | Use |
|
|
242
|
+
|------|-----|
|
|
243
|
+
| Full marketing plan (logo + content + video) | `/marketing` |
|
|
244
|
+
| Need brand visuals first | `/marketing:logo` |
|
|
245
|
+
| Repurpose video → blog / threads | `/marketing:content` |
|
|
246
|
+
| Brainstorm video topics | `brainstorm` |
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Recommended Agents
|
|
251
|
+
|
|
252
|
+
| Phase | Agent | Purpose |
|
|
253
|
+
|-------|-------|---------|
|
|
254
|
+
| STRATEGY | `@docs-writer` | Document the strategy brief |
|
|
255
|
+
| SCRIPT | `@docs-writer` | Draft and tighten scripts |
|
|
256
|
+
| STORYBOARD | `@docs-writer` | Scene descriptions |
|
|
257
|
+
| PRODUCTION | `@devops` | Tech specs + encoding |
|
|
258
|
+
| PUBLISH | `@docs-writer` | Channel adaptations + tracking |
|