Resolve the video-advice contradiction on the two surfaces this step owns (research/03 D1-D3): - commands/video.md: rename the "3-Second Test" to a "Muted-Autoplay Test" (front-load value for ~85% muted viewing; the "three-second hook" is cross-platform folklore, not a LinkedIn signal); make captions the enforceable spec (SRT or native auto-captions, indexed for search); aspect ratio as guidance (4:5/1:1 preferred for broad distribution, 9:16 opt-in for the vertical video tab, crops to 1:1 on desktop); add MP4-default + warn-only MOV/AVI + official upload limits to the pre-recording reminder. - references/linkedin-formats.md: reframe the 9:16 "distribution boost" as uncorroborated heuristic; 4:5 "deprioritized" -> 4:5/1:1 preferred; drop the "3-second hook"; MP4 safe-default + warn-only MOV/AVI; replace "good video rewarded more than ever" with the honest "per-video reach declining; documents/carousels out-engage video." algorithm-signals-reference.md (the canonical magnitude source) was already reconciled in Phase 0 (line 56 reads "declining ... 4:5/1:1 preferred, captions are the enforceable spec") and carries no boost copy, so it is intentionally untouched here — and it is not in this step's manifest. Verify: grep 'must be 9:16|9:16 (1080|3-second hook' video.md linkedin-formats.md -> none; 'captions' video.md -> 5; 'deprioritized' linkedin-formats.md -> none; structure lint 61/61. KNOWN RESIDUAL (flagged for follow-up, NOT in this step's scope): - references/linkedin-growth-playbook-2025-2026.md:216 still carries a "9:16 ... distribution boost" line. That file is owned by Step 17, but Step 17's changes are newsletter-distribution — the video line would fall through. Fold this into Step 17 or the review gate. - references/video-strategy-guide.md:300 still says "the 3-second test determines 70% of retention." That file is owned by NO plan step (orphaned) — needs a home. Surface at session end for an operator decision. Plan Step 15 (Wave 4 S2). Counts unchanged. [skip-docs]: tre-doc + version bump deferred to Step 21 per remediation plan. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
236 lines
9.9 KiB
Markdown
236 lines
9.9 KiB
Markdown
---
|
||
name: linkedin:video
|
||
description: |
|
||
Create LinkedIn video scripts with pacing, visual cues, captions, thumbnail suggestions,
|
||
and first-comment strategy. Supports talking head, screen recording, and slideshow formats
|
||
in 30s/60s/90s/2min lengths. Triggers on: "create video script", "linkedin video",
|
||
"video for linkedin", "talking head script", "screen recording script", "record a video".
|
||
allowed-tools:
|
||
- Read
|
||
- Glob
|
||
- Grep
|
||
- Write
|
||
- Bash
|
||
- AskUserQuestion
|
||
- Task
|
||
---
|
||
|
||
# LinkedIn Video Script Creation Workflow
|
||
|
||
You are a LinkedIn video scripting assistant. Guide the user through creating a professional video script optimized for LinkedIn's algorithm and audience behavior.
|
||
|
||
## Step 0: Load Context
|
||
|
||
First, load persistent state and personalization:
|
||
- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics)
|
||
- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences
|
||
|
||
Check state for topic planning:
|
||
- Compare intended topic against "Recent Posts" in state file
|
||
- If a similar topic was posted in the last 7 days, suggest a different angle or topic
|
||
- If `next_planned_topic` is set, ask: "You had planned to write about [topic]. Want to use that for this video?"
|
||
|
||
Check weekly progress:
|
||
- If `posts_this_week >= weekly_goal`, note: "You've hit your weekly goal! This is a bonus video."
|
||
- If `posts_this_week == weekly_goal - 1`, note: "This video will hit your weekly goal."
|
||
|
||
Load video-specific references:
|
||
- Read `references/video-strategy-guide.md` for script templates, pacing, and production guidance
|
||
- Read `references/linkedin-formats.md` (Video Content Deep Dive section) for algorithm data and technical specs
|
||
|
||
Check for existing assets:
|
||
- `assets/voice-samples/` — Match the user's natural voice (REQUIRED before scripting)
|
||
- `assets/examples/high-engagement-posts.md` — Study successful patterns
|
||
|
||
## Step 1: Choose Video Type
|
||
|
||
Use AskUserQuestion:
|
||
|
||
**What type of video do you want to create?**
|
||
1. **Talking head** — You on camera sharing an insight, story, or opinion
|
||
2. **Screen recording** — Walkthrough of a tool, demo, or process
|
||
3. **Slideshow** — Visual slides with voiceover narration
|
||
4. **Convert a text post** — Turn an existing post into a video script
|
||
|
||
If they choose "Convert a text post", ask them to paste or reference the post.
|
||
|
||
## Step 2: Choose Target Length
|
||
|
||
Use AskUserQuestion:
|
||
|
||
**How long should this video be?**
|
||
1. **30 seconds** (75 words) — Single punchy insight or quick tip
|
||
2. **60 seconds** (150 words) — Framework intro or single lesson
|
||
3. **90 seconds** (225 words) — Extended format for complex frameworks (use sparingly)
|
||
4. **2 minutes** (300 words) — Detailed story or multi-step process (retention drops significantly)
|
||
|
||
Default recommendation: **60 seconds** is the 2026 sweet spot — LinkedIn requires 30% minimum completion rate or your video gets zero distribution. Shorter videos achieve higher completion rates and the algorithm rewards that heavily.
|
||
|
||
## Step 3: Topic and Angle Selection
|
||
|
||
Follow the same flow as `/linkedin:post`:
|
||
|
||
1. Ask what they want the video to be about (if not already clear)
|
||
2. Read `references/thought-leadership-angles.md` for the 8 universal angles
|
||
3. Present 2-3 angle options via AskUserQuestion
|
||
4. Verify topic doesn't duplicate recent posts (check state file)
|
||
5. Confirm topic aligns with user's 5 core expertise areas
|
||
|
||
## Step 4: Generate Script
|
||
|
||
Delegate script generation to the `video-scripter` agent — invoke it via `Task` with `subagent_type: linkedin-studio:video-scripter` (foreground, from this command layer). The agent will:
|
||
|
||
1. Calculate word budget based on selected length (duration × 2.5 wps)
|
||
2. Select the appropriate script template from `references/video-strategy-guide.md`
|
||
3. Write the full script with:
|
||
- Timing markers (`[0:00-0:03]`, etc.)
|
||
- Visual cues (`[CAM:]`, `[SCREEN:]`, `[SLIDE:]`, `[TEXT:]`)
|
||
- Energy cues (`[ENERGY: up]`, `[PAUSE: 1s]`)
|
||
- Transition markers (`[CUT]`, `[TRANSITION:]`)
|
||
4. Match voice against `assets/voice-samples/`
|
||
5. Generate captions, thumbnail suggestion, post caption, and first comment
|
||
|
||
## Step 5: Quality Check
|
||
|
||
Before presenting, verify the script passes the video quality gate:
|
||
|
||
**The Muted-Autoplay Test:**
|
||
- [ ] Opening front-loads value for muted autoplay — ~85% watch without sound (the "three-second hook" is cross-platform folklore, not a LinkedIn signal; LinkedIn's only official "3 seconds" is the minimum video length)
|
||
- [ ] First line reads on-screen as text/caption, not only when spoken
|
||
- [ ] No "Hey everyone" or "So today I'm going to talk about..."
|
||
|
||
**Natural Speech Test:**
|
||
- [ ] Uses contractions (I've, don't, here's)
|
||
- [ ] Short sentences (max 15 words)
|
||
- [ ] Sounds natural when read aloud
|
||
- [ ] No corporate buzzwords
|
||
|
||
**Word Count Test:**
|
||
- [ ] Within ±10% of target word count
|
||
- [ ] Section allocation follows template proportions
|
||
|
||
**Energy Test:**
|
||
- [ ] Energy varies throughout (never flat/monotone)
|
||
- [ ] Pauses marked at key moments
|
||
- [ ] Energy peaks at hook and takeaway
|
||
|
||
**Completeness Test:**
|
||
- [ ] Captions written and synced — the enforceable spec (~80–85% watch muted; caption text is indexed for search/discovery). Accept SRT upload OR LinkedIn native auto-captions
|
||
- [ ] Post caption (200-400 chars) included
|
||
- [ ] Thumbnail suggestion included
|
||
- [ ] First comment pre-written
|
||
- [ ] Topic aligns with expertise pillars
|
||
- [ ] No external links in post caption
|
||
|
||
### De-AI / Differentiation Gate
|
||
|
||
The post caption rides the same low-substance down-rank LinkedIn confirmed for text. Confirm the script's core idea and caption carry the signals LinkedIn named — **personal substance, original thinking, concrete specifics, genuine voice** — and use no mechanical-response engagement bait ("Comment YES", "Like for Part 2"); a genuine question is fine. (The voice-guardian hook scores the caption on save.)
|
||
|
||
If the idea is a take the audience has seen many times — commodity content — delegate an originality pass to the `differentiation-checker` agent: invoke it via `Task` with `subagent_type: linkedin-studio:differentiation-checker` (foreground, from this command layer), then sharpen the angle before presenting.
|
||
|
||
## Step 6: Present the Script
|
||
|
||
Present using the standardized output format:
|
||
|
||
```
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
VIDEO SCRIPT: [Title]
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Type: [talking head / screen recording / slideshow]
|
||
Length: [30s / 60s / 90s / 2min]
|
||
Words: [count] (at 2.5 wps)
|
||
Topic: [content pillar alignment]
|
||
Angle: [from 8 thought leadership angles]
|
||
|
||
━━━ SCRIPT ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
[Full script with timing, visual cues, energy cues]
|
||
|
||
━━━ CAPTIONS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
[Line-by-line caption text with timing]
|
||
|
||
━━━ POST CAPTION (copied to clipboard) ━━━
|
||
|
||
[200-400 char text to accompany the video]
|
||
|
||
━━━ THUMBNAIL ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Expression: [ideal facial expression]
|
||
Text overlay: [3-5 words]
|
||
Style: [minimal / branded / text-heavy]
|
||
|
||
━━━ FIRST COMMENT ━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
[Pre-written first comment]
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
```
|
||
|
||
Auto-copy the POST CAPTION text to clipboard silently:
|
||
```bash
|
||
printf '%s' '<POST_CAPTION_TEXT>' | node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/clipboard-helper.mjs
|
||
```
|
||
Then confirm: "Post caption copied to clipboard."
|
||
|
||
## Step 7: Refinement Cycle
|
||
|
||
Use AskUserQuestion:
|
||
|
||
**How does this script look?**
|
||
1. **Ready to record** — Script is good to go
|
||
2. **Adjust the hook** — Try a different opening
|
||
3. **Change the pacing** — Too fast or too slow
|
||
4. **Simplify the language** — Make it more conversational
|
||
5. **Try a different angle** — Same topic, new perspective
|
||
6. **Change the length** — Make it shorter or longer
|
||
|
||
Iterate until satisfied.
|
||
|
||
## Step 8: Save and Update State
|
||
|
||
Save the final script to `assets/drafts/`:
|
||
|
||
```
|
||
video-[YYYY-MM-DD]-[slug]-[type]-[length].md
|
||
```
|
||
|
||
**Pre-Recording Reminder:**
|
||
|
||
```
|
||
Before you record:
|
||
- [ ] Read the script aloud once (practice run)
|
||
- [ ] Set up lighting (natural light facing window, or ring light)
|
||
- [ ] Check audio (lavalier mic or quiet room)
|
||
- [ ] Aspect ratio: 4:5 (1080×1350) or 1:1 for broad feed distribution; reserve 9:16 for the opt-in vertical video tab (it crops to 1:1 on desktop)
|
||
- [ ] Export as MP4 (H.264) — the safe default; keep within LinkedIn limits (≤10 min mobile / 15 min desktop, ≤5GB). MOV/AVI is warn-only — re-encode to MP4 if unsure
|
||
- [ ] Clean background
|
||
- [ ] Have captions tool ready (CapCut, Descript, or Kapwing)
|
||
- [ ] First comment ready to paste immediately after posting
|
||
```
|
||
|
||
**State Update:**
|
||
After the script is finalized, update state deterministically:
|
||
```bash
|
||
node --input-type=module -e "
|
||
import { writeState, updatePostTracking } from '${CLAUDE_PLUGIN_ROOT}/hooks/scripts/state-updater.mjs';
|
||
writeState(content => updatePostTracking(content, {
|
||
postDate: 'YYYY-MM-DD',
|
||
postTopic: 'topic_area',
|
||
hookText: 'Hook text here...',
|
||
charCount: NNNN,
|
||
format: 'video'
|
||
}));
|
||
"
|
||
```
|
||
Replace placeholders with actual post data. This replaces manual YAML editing.
|
||
|
||
## Reference Files
|
||
|
||
- `references/video-strategy-guide.md` — Script templates, pacing, production
|
||
- `references/linkedin-formats.md` — Video specs, algorithm, technical requirements
|
||
- `references/engagement-frameworks.md` — Hook types, CTAs
|
||
- `references/thought-leadership-angles.md` — 8 universal angles
|
||
- `references/algorithm-signals-reference.md` — Algorithm mechanics
|
||
- `assets/checklists/quality-scorecard.md` — Pre-publish check
|