--- 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 --- # 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-thought-leadership.local.md` for posting state (streak, weekly progress, recent topics) - Read `skills/linkedin-thought-leadership/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 to the `video-scripter` agent for script generation. 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 3-Second Test:** - [ ] Hook grabs attention in first 3 seconds (8 words or fewer) - [ ] 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 - [ ] Post caption (200-400 chars) included - [ ] Thumbnail suggestion included - [ ] First comment pre-written - [ ] Topic aligns with expertise pillars - [ ] No external links in post caption ## 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' '' | 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) - [ ] Vertical format: 9:16 (1080×1920) for LinkedIn vertical feed (3-4x watch duration vs landscape) - [ ] 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