Vertical story frame pipeline for {{PERSONA_NAME}} — generates 3-5 story frames (9:16) with text overlays, then stitches them into a 15-second video with crossfade transitions.
How It Works
Content Ideation — Gemini generates a story concept: topic, 3-5 frames, per-frame text (2-5 words), image prompts, and {{PERSONA_NAME}} YES/NO per frame.
Image Generation — FAL nano-banana-2 generates each frame at 9:16 aspect ratio using {{PERSONA_NAME}}'s reference face for character consistency.
Text Overlay — ffmpeg drawtext burns short, bold text centered on each frame.
Video Stitch — ffmpeg stitches all frames into a single 15-second MP4 with crossfade transitions.
Output — Frame PNGs + stitched video + sidecar JSON saved to ~/{{PersonaDir}}/stories/{date}-{slug}/
1---2name: stories-gen3description: stories-gen4---5# stories-gen67Vertical story frame pipeline for {{PERSONA_NAME}} — generates 3-5 story frames (9:16) with text overlays, then stitches them into a 15-second video with crossfade transitions.89## How It Works10111. **Content Ideation** — Gemini generates a story concept: topic, 3-5 frames, per-frame text (2-5 words), image prompts, and {{PERSONA_NAME}} YES/NO per frame.122. **Image Generation** — FAL nano-banana-2 generates each frame at 9:16 aspect ratio using {{PERSONA_NAME}}'s reference face for character consistency.133. **Text Overlay** — ffmpeg `drawtext` burns short, bold text centered on each frame.144. **Video Stitch** — ffmpeg stitches all frames into a single 15-second MP4 with crossfade transitions.155. **Output** — Frame PNGs + stitched video + sidecar JSON saved to `~/{{PersonaDir}}/stories/{date}-{slug}/`1617## Usage1819```bash20node skills/stories-gen/scripts/stories-gen.js [options]2122Options:23 --topic "Sunday in Samoa" # Override auto-topic selection24 --frames 4 # Override frame count (default: Gemini decides, 3-5)25 --dry-run # Print story plan, skip image generation26```2728## Output2930- Frame images: `~/{{PersonaDir}}/stories/{date}-{slug}/frame-01.png` through `frame-N.png`31- Stitched video: `~/{{PersonaDir}}/stories/{date}-{slug}/story.mp4`32- Metadata sidecar: `~/{{PersonaDir}}/stories/{date}-{slug}/story.json`3334## Prerequisites3536- `GEMINI_API_KEY` in `.env`37- `FAL_KEY` in `.env`38- ffmpeg installed39- Reference image: `brand-content/persona/reference.png`4041## Content Pillars (auto-rotated)42431. Hidden Samoa442. Local Life453. Adventure464. Business Spotlight475. Travel Tips486. Culture Education
Run npx skillmds@latest add kevinbadi/stories-gen in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
stories-gen It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
kevinbadi (@kevinbadi) published this skill. Their other Agent Skills are listed on their SkillMD profile.