Guide

How to make TikTok videos from Claude Code

If you already live in a terminal, the fastest way to make a Reddit story video is to not open a video tool at all. Install StoryTok as an MCP server, ask Claude Code for the video, approve the cost, and the MP4 lands in your folder. Here is the whole loop, with the real transcript, and what it costs.

claude mcp add storytok -e STORYTOK_API_KEY=stk_live_… -- npx -y storytok-agent mcp

Replace stk_live_… with a key from Settings, Developer API. Other clients: install lines for Codex, Cursor, Windsurf and Claude Desktop.

  1. Step 1

    Install the MCP server

    Create an API key under Settings, Developer API, then run one command in your terminal: claude mcp add storytok -e STORYTOK_API_KEY=<your key> -- npx -y storytok-agent mcp. That registers StoryTok as a tool server for Claude Code. There is nothing to host and no OAuth screen; the key is the whole setup. If you would rather not paste a key, npx -y storytok-agent login opens a code page in the browser and stores one for you.

  2. Step 2

    Ask for the video

    Open Claude Code in the folder where you want the file and describe the video the way you would to a person: the format, the story or a Reddit URL, the footage, the caption look, roughly how long. Claude reads the tool descriptions, calls get_catalog for the real voice and background ids, and drafts the script itself.

  3. Step 3

    Read the estimate

    Before anything is charged, Claude calls create_story_video without confirm and gets back an estimate: about how many seconds, how many credits, and your balance. It shows you the script and the cost together. If the estimate is more than your balance the tool refuses to confirm and tells you the shortfall.

  4. Step 4

    Say yes

    Only after you agree does Claude call the tool again with confirm: true. Credits are reserved from the estimate and the job is queued. If you change your mind about the voice or want it shorter, say so first; every change is a new estimate, not a new charge.

  5. Step 5

    Wait

    A story renders in roughly one to three minutes. Claude calls wait_for_job, which blocks until the job is completed or failed and reports the credits actually charged, settled on the measured length rather than the estimate. A failed render refunds itself.

  6. Step 6

    Download

    download_job saves the 1080×1920 MP4 into your current folder (or one you name) and returns the path. Open it, post it. StoryTok does not upload to TikTok, Reels or Shorts for you.

The transcript

This is what the loop looks like in Claude Code once the server is installed. Tool calls are shown inline; in the terminal they appear as collapsible tool blocks.

youMake a 60-second Reddit story about a roommate who kept replacing my coffee with decaf for a month. Minecraft footage, Hormozi captions, intro card on.
claudeI'll check the catalog first, then write the script and get a cost estimate before rendering anything.
claudeget_catalog: 63 included voices, 16 caption presets, 46 backgrounds. Using Matthew (US, included), background Minecraft 4, preset hormozi.
claudeScript (152 words): "For a month I thought I was losing my mind. Every morning I'd drink two cups and still fall asleep at my desk…"
claudecreate_story_video estimate: about 58 s, 1 credit. Balance 3 credits. Should I render it?
youyes
claudecreate_story_video (confirm): job 2c91… queued. wait_for_job: processing… completed in 104 s, 1 credit charged.
claudedownload_job: saved ./decaf-roommate.mp4 (1080×1920, 58 s). Balance 2 credits.

Tips for scripts the agent writes

  • Give it a length in seconds, not words. The agent converts: roughly 150 words is a minute in a US voice, closer to 115 in a UK voice, and the estimate confirms it before you pay.
  • Ask for an original telling, not a reading. If you hand it a Reddit URL, tell it to rewrite the post in its own words. Verbatim narration of someone else's post is what YouTube's inauthentic-content policy and TikTok's originality weighting target.
  • Name the hook. "Open on the moment I found out" gets a better first sentence than "make it engaging". The first two seconds decide whether the video gets watched.
  • Pick the voice by register. Matthew and Joanna carry self-deprecating comedy; Brian and Amy suit dry conflict and horror. Premium ElevenLabs voices sound better and cost 2 credits a minute, and the agent will say so when it suggests one.
  • Iterate on the estimate, not the render. "Shorter, one credit" or "swap the voice" produces a new estimate for free; only the confirmed call spends anything.
  • Keep one folder per channel and run Claude Code from it, so download_job drops every MP4 where you expect it.

What it costs

  • 3 free trial minutes at signup, no card. The key you create for Claude Code spends them like any other render.
  • After that, packs: $5 for 20 minutes, $10 for 60, $50 for 360. 1 credit per rendered minute, rounded up; 2 with premium voices. Credits never expire.
  • Each key has a 24-hour cap of 30 credits by default, adjustable per key, so a runaway loop cannot empty a large balance.
  • Failed renders refund themselves, and identical inputs sent twice return the same job rather than charging twice.

Crayo and AutoShorts have no agent integration as of September 2026. If you are comparing, see StoryTok vs Crayo and the Crayo API alternative pages.

Make your first video from the terminal

3 free minutes at signup. Create a key, paste one line, ask.

Try StoryTok free

Keep reading