[ PACK LIBRARY / DESIGN & BRAND ]

CHAINFREE SAMPLE

One narrative, three deliverables: deck, narrated video, social cutdowns

STAFF LISA / FRAMES · V0.1.0
gemskills:deck-creatorgemskills:generate-videobopen-tools:voice-clone

REQUIRES

  • claude plugin install gemskills@b-open-io
  • claude plugin install bopen-tools@b-open-io

WHEN TO REACH FOR THIS

You have one story to tell - a launch or a raise - and you need it in three formats: a deck to present, a narrated video for the homepage or social, and short vertical cutdowns for feeds. Doing these as three separate projects means re-briefing three times and ending up with three slightly different stories. This chain writes the narrative once in the deck, then reuses the exact slides and copy as the video's frames and script, then slices that video into social clips, so one brief produces three deliverables that stay on message with each other.

REQUIRES

  • gemskills plugin: claude plugin install gemskills@b-open-io
  • bopen-tools plugin: claude plugin install bopen-tools@b-open-io
  • GEMINI_API_KEY - slide images and Veo video generation
  • ELEVENLABS_API_KEY - narration voice (voice-clone / TTS); IVC voice cloning needs a Starter-tier ElevenLabs account or above
  • ffmpeg (brew install ffmpeg) - audio prep and clip cutting; REPLICATE_API_TOKEN if you use Replicate-Veo features (reference frames, 9:16 at higher res)

CONTEXT INPUTS

{{STORY}}          The narrative in 3-5 sentences: what it is, who it is for, the ask.
{{AUDIENCE}}       Who watches/reads, e.g. "seed investors" or "developer users".
{{DECK_DIR}}       Working directory for the deck and its assets, e.g. ./launch-deck.
{{ART_STYLE}}      Optional style id from the library (e.g. pixl, deco) applied to every slide for consistency. Omit for a clean business theme.
{{VOICE}}          Narration voice: path/URL to reference audio to clone, or "default" for a stock TTS voice.
{{CLIP_TARGETS}}   Which social cutdowns you need, e.g. "3x 9:16 clips, 8s each, hook + one point + CTA".

THE PROMPT

PASTE INTO YOUR AGENT
Run a three-link chain. Each link names who owns it, what it consumes, and what
"done" means before the next link starts. Do not collapse the links - the whole
point is that the deck is the single source the video and clips derive from.

LINK 1 - Lisa (Visual Content Specialist) builds the deck.
  Load `gemskills:deck-creator` and follow its phased workflow in {{DECK_DIR}}.
  Discovery is already answered: topic/story = {{STORY}}, audience = {{AUDIENCE}},
  ~10-12 slides, output mode html+pdf. Write THEME.md and DECK-PLAN.md, then apply
  {{ART_STYLE}} (pass --style to every slide generation so all slides match). Plan
  the copy with one message per slide and a problem -> solution -> proof -> ask arc.
  Generate slides, stitch the PDF, and write DECK-INDEX.md.
  DONE when: DECK-INDEX.md lists every slide, deck.pdf renders, and DECK-PLAN.md
  holds the per-slide headline + narration line. HANDOFF to Frames: the ordered
  slide PNGs plus the per-slide narration lines from DECK-PLAN.md.

LINK 2 - Frames (Audio Producer) turns the deck into a narrated video.
  First, the voice. If {{VOICE}} is a reference clip, load `bopen-tools:voice-clone`
  and run its pipeline (source -> prepare -> clone) to get a voice_id; surface it.
  If {{VOICE}} is "default", skip cloning and use a known stock ElevenLabs voice_id
  from the account. Then generate the narration for each slide's line with
  voice-clone's test subcommand pointed at that voice_id
  (voice-clone.ts test --voice-id <id> --text "<line>" --output-dir <dir>), which is
  the skill's text-to-speech path; collect one audio file per slide.
  Then animate. Load `gemskills:generate-video` and, per slide, produce a short
  motion clip using the slide PNG as the starting frame (--input) at 16:9 so the
  aspect matches; keep motion subtle (slow push/parallax), let the narration drive
  timing. Run generation as a background task (Veo takes up to several minutes) and
  read only the output path. Assemble slides + narration into one video with ffmpeg.
  DONE when: a single narrated .mp4 plays start to finish and matches the deck order.
  HANDOFF to Lisa: the master .mp4 and the DECK-PLAN.md arc.

LINK 3 - Lisa cuts social clips.
  From the master video and {{CLIP_TARGETS}}, cut vertical (9:16) clips with ffmpeg,
  each a self-contained hook + one point + CTA drawn from the deck arc - do not
  invent new claims, only reuse what the deck already says. Where a 9:16 reframe
  crops badly, regenerate that segment at --aspect 9:16 rather than letterboxing.
  DONE when: every clip in {{CLIP_TARGETS}} exists, is under the platform length,
  and reads on mute-then-unmute.

Negative prompts: never read generated .mp4 or slide images back into context -
report file paths and have me play them with `open <file>`. Do not re-brief the
story between links; the deck copy is the script. Do not letterbox 16:9 into 9:16;
reframe or regenerate. Do not fabricate metrics or quotes for the clips.

EXPECTED OUTPUT

In {{DECK_DIR}}: deck.pdf and DECK-INDEX.md, one narrated master .mp4, and the set of vertical social clips named per {{CLIP_TARGETS}} - all telling the same story, produced from one brief.

FOLLOW-UP CHAIN

  • db-explainer-video - spin a dedicated feature-explainer off the same voice and style.
  • db-campaign-landing-chain - build the landing page these assets point to.
  • db-social-asset-batch - generate the still social posts that surround the video clips in the campaign.
  • db-custom-art-style - capture the deck's look as a reusable style so the next campaign matches this one.

← PACK CONTENTS