Without MergeStory
Rebuild the author's thinking.
You open the diff and work out what changed and why. It takes time, and a risky line is easy to miss.
MergeStory turns a pull request into a short narrated video. What changed, why, and what to review.
Free, open source, and it runs on your machine.
Pick the way you work. Then run mergestory doctor to check your setup.
npm install -g mergestory
Paste it into your terminal. Then run mergestory doctor.
/plugin install mergestory --marketplace PiniShv/MergeStory
Type it inside Claude Code (2.1.275 or newer). Then ask: explain this pull request as a video.
npx skills add PiniShv/MergeStory
Needs Node.js 22.20 or newer. It adds the MergeStory skill for your coding agents.
You need Node.js 22.12 or newer, git, FFmpeg, and Google Chrome or another Chromium browser. Open a terminal, paste the line and press Return. mergestory doctor then tells you what is missing and how to fix it. See the three steps.
Works with Claude Code, Codex, GitHub Copilot, Cursor and more. Or use it on its own.
Without MergeStory
You open the diff and work out what changed and why. It takes time, and a risky line is easy to miss.
With MergeStory
A narrator explains what changed, why, and what to review. You know where to look before you open the diff.
Usually 45 seconds to 3 minutes. You also get captions, a poster image and a watch page.
The big picture
Animated diagrams show the components that changed and how they connect. The changed parts stand out.
Under the hood
The important code is highlighted as the narrator explains it. It is read from your repository, never generated.
Before and after
Shown only when there is something real to show.
What to review
Risky or subtle spots, each with a link to the file and line.
Captions
Every video comes with captions, as VTT and SRT files.
The watch page
A page next to the video lists the chapters, the review checklist and every claim, with links to the code it is based on.
The pictures here are illustrations. See a real video.
A weather client learns to retry with exponential backoff.
Your coding agent writes the story. The engine checks every claim before it draws a single frame.
It made the change, or it reviews it. So it writes the storyboard. Without an agent, MergeStory builds one offline from the analysis.
Each narration line must cite evidence from the change. Each line reference must point at real code. Claims nobody can check, like "all tests pass", are removed unless real test results were supplied.
The same input gives the same video. Code on screen is read from your repository. Simulated visuals are labelled.
A default run calls no paid service at all. No account. No key for your first video.
per video
Written by the coding agent you already use. No extra bill.
Kokoro, an open English voice that runs on your own CPU. Installed once.
Your own browser draws each frame. FFmpeg encodes.
Every claim and line reference is checked on your machine.
On your own YouTube channel or Google Drive. A fraction of a cent a month on R2 or S3.
Understanding the change and writing the story is the costly work. Your coding agent has done it, so it writes the storyboard. No second model reads the whole change again. Its usage is part of the session you already run.
An open voice model on your CPU, the browser you already have, and FFmpeg. No render farm. No cloud GPU.
You can let a model write the storyboard, or use a cloud voice. The default is the cheapest capable model.
It also lists every outbound transfer: the host, the purpose and the size.
Both are opt-in. These are the built-in prices, checked in November 2026. You can override them in the config.
--llm anthropicClaude Haiku 5.5 storyboard: usually under $0.01 per video ($0.10 per million input tokens, $0.50 per million output tokens)--tts openaiOpenAI gpt-4o-mini-tts: $18 per million characters, about $0.015 per minute of speech--tts elevenlabsElevenLabs Flash: $40 per million characters--tts elevenlabsElevenLabs v3 and Multilingual v2: $80 per million charactersA 2-minute narration is roughly 1,600 characters.
No paid call can take a run over its budget. A model with an unknown price is counted at the highest rate, so the budget still holds. Change it with --budget.
Or ask your agent: "explain this pull request as a video".
npm install -g mergestory
mergestory doctor lists anything missing, with a fix for each.
mergestory generate <pull request URL>
You need Node.js 22.12 or newer, git, FFmpeg, and Google Chrome or another Chromium browser. No pull request? Run mergestory generate . --base main --head feature/retry on a local branch. It works with every git host. Add --dry-run to see the plan, the cost estimate and what would leave your machine, without rendering.
Quality presets: draft is 1280x720 at 24 fps. Standard, the default, is 1920x1080 at 30 fps. High is 1920x1080 at 60 fps.
MergeStory is an Agent Skill. Install it in the place your agent reads.
Install the plugin from inside Claude Code 2.1.275 or newer.
/plugin install mergestory --marketplace PiniShv/MergeStory
On an older version: /plugin marketplace add PiniShv/MergeStory, then /plugin install mergestory@mergestory. Or copy the skill to ~/.claude/skills/mergestory.
Needs Node.js 22.20 or newer.
npx skills add PiniShv/MergeStory
Copy plugins/mergestory/skills/mergestory to .agents/skills/mergestory for one project, or ~/.agents/skills/mergestory for all projects.
Copilot also reads .github/skills. Cursor also reads .cursor/skills.
Needs GitHub CLI 2.90 or newer.
gh skill install PiniShv/MergeStory mergestory
Copy the same skill folder here.
.devin/skills/mergestory.kiro/skills/mergestory.cline/skills/mergestoryThe engine works on its own. Use it from the command line, over an HTTP API, as a library, or in GitHub Actions.
With the skill, the agent writes the storyboard itself from MergeStory's evidence pack. The skill runs the mergestory command, and asks before it installs it. The engine still checks every claim and every line reference before rendering. Windsurf is now Devin Desktop. Gemini CLI and Google's Antigravity CLI both read .agents/skills.
Your code stays on your machine unless you decide otherwise.
MergeStory does not report what you do or what you make.
Nothing from your code or the change goes anywhere until you turn on a model, a cloud voice or an upload. The only download is the free voice, once. It sends nothing from the change.
Files like .env, keys and credentials are left out of every video.
Secrets and e-mail addresses are masked in every frame, caption and log.
Private S3 links stop working after 7 days at most. Google Drive and YouTube links do not expire. Public links for a private repository are blocked unless you allow them.
MergeStory never changes your repository or its git state.
Run any command with --dry-run. It shows the plan, the cost estimate and what would leave your machine, and renders nothing.
Or read the code. MergeStory is open source under the Apache-2.0 licence. Read it on GitHub. Security policy
mergestory generate <pull request URL> --dry-run
A video stays on your machine until you choose to share it.
Know before you install
The first English video installs the free voice once. That is about 400 MB, then the voice model, so it takes a minute or two longer. Nothing from the change is sent.
mergestory setup kokoro, for example in CI.mergestory doctor checks all of this. Get started in the READMEShort answers. The documentation has the rest.
Not by default. The analysis, the checks, the voice and the rendering all run on your machine. There is no telemetry.
Something leaves only if you turn it on: a model that writes the storyboard, a cloud voice, or an upload. Run --dry-run to see what would leave. Your coding agent already sees the change in your session. MergeStory adds no other service.
$0 per video by default. No paid service is called. If you opt in to a model for the storyboard, Claude Haiku 5.5 usually costs under $0.01 per video. Cloud voices are priced per million characters. A budget of $0.25 per run is checked before every paid call. See the full cost.
It is an Agent Skill for Claude Code, Codex, GitHub Copilot, Cursor, OpenCode, Goose, Amp, Gemini CLI, Windsurf, Kiro and Cline. See where each one reads it from.
Yes. Run mergestory generate on a pull request URL or a local branch. Without an agent, it builds the storyboard offline from the analysis. You can also use the HTTP API or the library.
They stay on your machine. You get an MP4 video, captions (VTT and SRT), a poster image and a local watch page. Share one when you are happy with it: YouTube, Google Drive, S3-compatible storage, or a comment on the pull request.
Every narration line cites evidence from the change, and the code on screen is read from your repository. Claims nobody can check, like "all tests pass", are removed unless real test results were supplied. The checks run on your machine before rendering.
It checks claims against the change. It cannot judge whether the change is a good idea, so use the review checklist as a starting point.
Yes. The GitHub Actions example makes a video when a maintainer adds a label to a pull request. It uploads the video to your own storage and posts one comment with the link. Read the guide.
Node.js 22.12 or newer, git, FFmpeg, and Google Chrome or another Chromium browser. The first English video also installs the free voice once, about 400 MB plus the voice model. Run mergestory doctor to check.
Reads. Tells. Checks. Free, on your machine.
Install MergeStory and turn your next pull request into a video.
npm install -g mergestory
/plugin install mergestory --marketplace PiniShv/MergeStory
Use npm in a terminal, or the second line inside Claude Code. Then run mergestory doctor.
Read the code on GitHub · All install options · Watch page demo