$npx -y skills add indranilbanerjee/socialforge --skill generate-videoGenerate short-form video clips via a 5-stage human-in-the-loop pipeline: concept, keyframes, video generation, and delivery.
| 1 | # /socialforge:generate-video — Video Production Kit |
| 2 | |
| 3 | Generate video production assets through a 5-stage human-in-the-loop pipeline. Each stage requires user approval before advancing. |
| 4 | |
| 5 | ## Context efficiency |
| 6 | |
| 7 | Asset-heavy skill. **Grep before Read** the asset catalog (`${CLAUDE_PLUGIN_DATA}/<brand>/assets/index.json`) — never list the asset directory. Reference generated images / videos by path, not by loading metadata. Brand profile loads once per session. |
| 8 | |
| 9 | ## Prerequisites |
| 10 | |
| 11 | - Credentials must be configured via `/socialforge:setup`: |
| 12 | - **Vertex AI** (Gemini Imagen) — used for first-frame and last-frame keyframe generation |
| 13 | - **WaveSpeed API** — used for image-to-video generation via Kling v3.0 Pro |
| 14 | - Brand profile must be active (`/socialforge:switch-brand` if needed) |
| 15 | - Calendar must be parsed (`/socialforge:parse-calendar`) with video posts identified |
| 16 | |
| 17 | ## The 5-Stage Pipeline |
| 18 | |
| 19 | ### Stage 1: Video Concept (no API call) |
| 20 | |
| 21 | Claude generates **2-3 video concept ideas** based on the post brief, brand voice, and platform requirements. Each concept includes: |
| 22 | - Working title and hook |
| 23 | - Visual narrative arc (opening, middle, close) |
| 24 | - Suggested duration and pacing |
| 25 | - Tone and style direction |
| 26 | |
| 27 | The user picks one concept (or requests refinements) before proceeding. |
| 28 | |
| 29 | ### Stage 2: First Frame Generation (Vertex AI / Gemini Imagen) |
| 30 | |
| 31 | Generate **2 first-frame options** based on the chosen concept. These set the opening visual and establish the look and feel. |
| 32 | |
| 33 | - Images are shown **inline** in the terminal for immediate review |
| 34 | - User selects one or requests a regeneration with adjusted direction |
| 35 | |
| 36 | ### Stage 3: Last Frame Generation (Vertex AI / Gemini Imagen) |
| 37 | |
| 38 | Generate **2 last-frame options** that complete the visual narrative arc, matching the approved first frame. |
| 39 | |
| 40 | - Images are shown **inline** in the terminal for immediate review |
| 41 | - User selects one or requests a regeneration with adjusted direction |
| 42 | |
| 43 | ### Stage 4: Video Generation (WaveSpeed / Kling v3.0 Pro) |
| 44 | |
| 45 | Using the approved first and last frames, generate **2 video versions** via WaveSpeed's Kling v3.0 Pro image-to-video endpoint (3-15 seconds). |
| 46 | |
| 47 | - A **video gallery is opened in the browser** for side-by-side comparison |
| 48 | - User selects the final version or requests a regeneration |
| 49 | |
| 50 | ### Stage 5: Post-Process, Save & Deliver |
| 51 | |
| 52 | After the user picks the final video, post-processing runs before saving: |
| 53 | - **Logo watermark** is automatically added to the video via video_postprocess.py |
| 54 | - **Subtitles:** User is asked whether to burn subtitles into the video (optional). SRT was already generated from the script and is saved separately regardless. |
| 55 | - **Background music:** If the video has no audio (sound=False in Kling config), user is asked whether to add background music (optional). |
| 56 | - **Platform resize:** Video is automatically resized for each target platform (letterbox/pillarbox with black padding, no stretching) |
| 57 | |
| 58 | Save all final assets to `{post_folder}/` -- keyframes in `keyframes/`, video versions in `versions/`, platform-resized final videos in `final/`: |
| 59 | - **Video files** (.mp4) — post-processed and resized per platform |
| 60 | - **Script** — timestamped narration/dialogue |
| 61 | - **Storyboard** — shot-by-shot visual breakdown with keyframe references |
| 62 | - **SRT subtitle file** (.srt) — for captioned playback |
| 63 | |
| 64 | ## Output Per Video Post |
| 65 | |
| 66 | | Asset | Format | Always Generated | |
| 67 | |-------|--------|-----------------| |
| 68 | | Script | Markdown | Yes | |
| 69 | | Storyboard | Markdown + keyframe images | Yes | |
| 70 | | Thumbnail | PNG/WebP (via compose-creative) | Yes | |
| 71 | | First frame | PNG | Yes (Stage 2) | |
| 72 | | Last frame | PNG | Yes (Stage 3) | |
| 73 | | AI Video Clip | MP4 via WaveSpeed / Kling v3.0 Pro (image-to-video, 3-15 seconds) | If pipeline completed | |
| 74 | | SRT subtitles | .srt | If video generated | |
| 75 | |
| 76 | ## Video Types |
| 77 | |
| 78 | | Type | Duration | AI Generation | Production Notes | |
| 79 | |------|----------|--------------|-----------------| |
| 80 | | hero_video | 30-90s | Partial — AI generates 3-15s hero clip; full version needs filming | Script + storyboard + AI teaser clip | |
| 81 | | mini_case_study | 30-60s | Yes — AI animation from keyframes | Full pipeline supported | |
| 82 | | short_reel | 15-30s | Yes — ideal for AI generation | Full pipeline supported | |
| 83 | | story | 15s | Yes — image-to-video animation | Full pipeline supported | |
| 84 | | talking_head | 30-120s | No — needs filming | Script + storyboard only (use `--script-only`) | |
| 85 | |
| 86 | ## Rules |
| 87 | |
| 88 | - Every stage requires explicit user approval before advancing |
| 89 | - `--script-only` skips Stages 2-4 and generates script + storyboard only |
| 90 | - `--thumbnail` generates a video thumbnail via compose-creative (independent of the pipeline) |
| 91 | - AI video clips are never auto-saved; user must confirm the final selection |
| 92 | - Thumbnails use the same creative mode system as static images |
| 93 | - A |