# Story Render

> Regenerate and render an existing story. Use to change a line of narration, swap a voice, redo one image, switch orientation, or re-render to mp4.

- **Type:** Skill
- **Install:** `agentstack add skill-marketcalls-story-telling-story-render`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [marketcalls](https://agentstack.voostack.com/s/marketcalls)
- **Installs:** 0
- **Category:** [Content & Media](https://agentstack.voostack.com/c/content-and-media)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [marketcalls](https://github.com/marketcalls)
- **Source:** https://github.com/marketcalls/story-telling/tree/main/.claude/skills/story-render

## Install

```sh
agentstack add skill-marketcalls-story-telling-story-render
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

Re-run part of an existing story without paying for the whole thing again.

## Arguments

- `$0` = slug, the folder name under `public/`
- `$1` = what changed: `narration`, `voice`, `images`, `orientation`, or
  `render` for no change at all

If no slug, list the folders under `public/` that contain a `story.json` and
ask which one.

## How the skip logic works

`npm run generate` skips any `voice-N.wav` or `image-N.jpg` already on disk.
That is the whole cost control: delete exactly what should change, leave the
rest, and rerun. `--force` regenerates everything and should be rare.

## Recipes

### Changed a line of narration

Edit `scenes[N].narration` in `public//story.json`, then:

```bash
rm public//voice-N.wav
npm run generate -- --slug  --only voice
```

The new duration is measured and written back into `story.json`, so the scene
and its subtitles resize themselves. Never hand edit `durationInFrames`.

### Changed the voice or the language

Edit `voice.speaker` or `voice.languageCode`, then regenerate all narration:

```bash
rm public//voice-*.wav
npm run generate -- --slug  --only voice
```

Speaker names are lowercase. Check the catalog in
`story-telling/rules/voices.md`, and remember a non-Latin `languageCode` needs
a font that covers the script, added in `src/lib/fonts.ts`.

### One image is wrong

Edit that image's `prompt`, then:

```bash
rm public//image-7.jpg
npm run generate -- --slug  --only images
```

For a face that drifted from its reference, move the likeness clause to the
front of the prompt. See `story-telling/rules/images.md`.

### The whole look is wrong

Change `style.artPrompt`, delete every image, regenerate. Narration is
untouched, so this only costs the image calls:

```bash
rm public//image-*.jpg
npm run generate -- --slug  --only images
```

To iterate cheaply, set `FLUX_TEXT_MODEL=fal-ai/flux-2/flash` in `.env`, tune
the prompts, then switch back to `fal-ai/flux-2-pro` and regenerate.

### Switching landscape to vertical, or back

Images are generated at the composition size, so all of them are now the wrong
shape:

```bash
# after editing "orientation" in story.json
rm public//image-*.jpg
npm run generate -- --slug  --only images
```

Voices are unaffected. Check the result in the Studio: the stat card moves to
top centre and subtitles regroup to 4 words automatically.

### Adding a scene

Append a scene with the next `id`, give its images unused ids, then
`npm run generate -- --slug `. Only the new assets are generated.

### Just re-render

```bash
npx remotion render  out/.mp4 --codec h264
```

Useful options: `--concurrency 4` if memory is tight, `--frames 0-120` to check
a section quickly, `--scale 0.5` for a fast rough cut.

## Checks before reporting

- `npm run typecheck` clean
- Read the real output duration rather than assuming the planned one
- Watch the last scene: subtitle drift shows there first
- Report duration, file size and path as measured

## Example usage

`/story-render big-bull narration`
`/story-render big-bull images`
`/story-render big-bull render`

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [marketcalls](https://github.com/marketcalls)
- **Source:** [marketcalls/story-telling](https://github.com/marketcalls/story-telling)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-marketcalls-story-telling-story-render
- Seller: https://agentstack.voostack.com/s/marketcalls
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
