Skip to content
Marketing
Skill

/generate-video

Generate short-form video via a 5-stage human-in-the-loop pipeline — concept, first frame, last frame, motion, final render — with approval at every stage before credits are spent. Triggers on \"/generate-video\", \"make a video\", \"video for P12\", \"animate this image\",

From plugin
socialforge
3820 skills5 agents25 commands
Install
$ npx -y skills add indranilbanerjee/socialforge --skill generate-video --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/generate-video

Context preview

The summary Claude sees to decide when to auto-load this skill.

Generate short-form video via a 5-stage human-in-the-loop pipeline — concept, first frame, last frame, motion, final render — with approval at every stage before credits are spent. Triggers on \"/generate-video\", \"make a video\", \"video for P12\", \"animate this image\",

SKILL.md

generate-video.SKILL.md
name: generate-video
description: "Generate short-form video via a 5-stage human-in-the-loop pipeline — concept, first frame, last frame, motion, final render — with approval at every stage before credits are spent. Triggers on \"/generate-video\", \"make a video\", \"video for P12\", \"animate this image\", \"reel from this\", \"image to video\", \"video post\", or any calendar post whose content_type is video, reel, or story. Models and prices are resolved live, never hardcoded; sound costs extra — quote it first."
argument-hint: "[--post <id>] [--script-only] [--thumbnail]"
effort: high
user-invocable: true

/socialforge:generate-video — Video Production Kit

Generate video production assets through a 5-stage human-in-the-loop pipeline. Each stage requires user approval before advancing.

Context efficiency

Asset-heavy skill. **Grep before Read** the asset catalog (`${CLAUDE_PLUGIN_DATA}/socialforge/brands/<brand>/asset-index.json`) — never list the asset directory. Reference generated images / videos by path, not by loading metadata. Brand profile loads once per session.

Prerequisites

  • Credentials must be configured via `/socialforge:setup`:
  • **Vertex AI** (Nano Banana Pro / Gemini 3 Pro Image, resolved via `latest-image-google`) — used for first-frame and last-frame keyframe generation
  • **WaveSpeed API** — used for image-to-video generation via Kling v3.0 Pro
  • Brand profile must be active (`/socialforge:switch-brand` if needed)
  • Calendar must be parsed (`/socialforge:parse-calendar`) with video posts identified

The 5-Stage Pipeline

Stage 1: Video Concept + Script (no API call)

Claude generates **2-3 video concept ideas** based on the post brief, brand voice, and platform requirements. Each concept includes:

  • Working title and hook
  • Visual narrative arc (opening, middle, close)
  • Suggested duration and pacing
  • Tone and style direction

The user picks one concept (or requests refinements). Then **fill the script scaffold** (`generate_script` in generate_video.py) from the chosen concept and the post's actual brief, in the brand's voice — every `[FILL]` replaced, no placeholder survives into Stage 2. The scaffold enforces the structure; this pass supplies the craft, under four rules the scaffold carries with it:

1. **Hook first, never the logo.** The open earns attention with the single most arresting thing the brief supports; the brand mark lives as the corner watermark and in the end card. Three seconds of logo reveal is the classic retention killer this pipeline used to scaffold by default. 2. **Payoff per scene.** Every scene's `payoff` field states what the viewer has gained by the time it ends. A beat that only sets up the next beat is where viewers leave — give it a payoff or fold it. 3. **The pairing rule.** The hook's text overlay and the post's caption (written by adapt-copy) do different jobs and never echo. Check against the adapted copy if it already exists for this post. 4. **Compliance before credits.** Run the filled script's narration and overlay text through `compliance_check.py` BEFORE Stage 2 — a banned phrase caught in a script costs nothing; caught in a rendered video it costs the whole generation chain. Claims in narration follow the same rules as claims in copy: sourced or absent.

The user approves the filled script before any generation spend.

Stage 2: First Frame Generation (Vertex AI / Nano Banana Pro)

Generate **2 first-frame options** based on the chosen concept. These set the opening visual and establish the look and feel.

  • Images are shown **inline** in the terminal for immediate review
  • User selects one or requests a regeneration with adjusted direction

Stage 3: Last Frame Generation (Vertex AI / Nano Banana Pro)

Generate **2 last-frame options** that complete the visual narrative arc, matching the approved first frame.

  • Images are shown **inline** in the terminal for immediate review
  • User selects one or requests a regeneration with adjusted direction

Stage 4: Video Generation (WaveSpeed / Kling v3.0 Pro)

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).

  • A **video gallery is opened in the browser** for side-by-side comparison
  • User selects the final version or requests a regeneration

Stage 5: Post-Process, Save & Deliver

After the user picks the final video, post-processing runs before saving:

  • **Logo watermark** is automatically added to the video via video_postprocess.py
  • **Subtitles:** User is asked whether to burn subtitles into the video (optional). SRT was already generated from the script and is saved separately regardless.
  • **Background music:** If the video has no audio (sound=False in Kling config), user is asked whether to add background music (optional).
  • **Platform resize:** Video is automatically resized for each target platform (letterbox/pillarbox with black padding, no stretching)

Save all final assets to `{post_folder}/` -- keyframes in `keyframes/`, video versions in `versions/`, platform-resized final videos in `final/`:

  • **Video files** (.mp4) — post-processed and resized per platform
  • **Script** — timestamped narration/dialogue
  • **Storyboard** — shot-by-shot visual breakdown with keyframe references
  • **SRT subtitle file** (.srt) — for captioned playback

Output Per Video Post

| Asset | Format | Always Generated | |-------|--------|-----------------| | Script | Markdown | Yes | | Storyboard | Markdown + keyframe images | Yes | | Thumbnail | PNG/WebP (via compose-creative) | Yes | | First frame | PNG | Yes (Stage 2) | | Last frame | PNG | Yes (Stage 3) | | AI Video Clip | MP4 via WaveSpeed / Kling v3.0 Pro (image-to-video, 3-15 seconds) | If pipeline completed | | SRT subtitles | .srt | If video generated |

Video Types

| Type | Duration | AI Generation | Production Notes | |------|----------|--------------|----------

Read more
Ships withsocialforge

Your client wants 30 days of social content across six platforms with brand-faithful imagery, AI-generated video, and provenance signed for EU markets. You have five days.

Get the whole plugin

Other skills on socialforge.