Can Claude Make Videos? What Opus 5.5 Can Do (2026)
No. Claude does not generate video, and that includes Opus 5.5. It is a language model: it writes text and code. What it can do is write the code that renders a video, or direct other tools that do the rendering. Since the Opus 5.5 launch on 2026-09-22 the internet has filled with "made with Opus 5.5" videos, and they were made in one of three ways: code that Claude wrote, an outside video model Claude directed, or footage the creator filmed and had Claude edit. This page walks through the two that make video from nothing, and a third route, a skill, for when you need a realistic AI person. It says what each one is good at and where the limits are.
Route 1: Claude writes the code, the code renders the video
This is the route behind almost every Opus 5.5 video you have seen. Claude, running inside Claude Code, writes a program in a framework that draws frames: Remotion (React components on a timeline), p5.js or the HTML canvas, Three.js for 3D, Manim for math-style animation. A renderer plays the program frame by frame, headless Chrome captures it, and ffmpeg writes the MP4. Anthropic's Opus 5.5 announcement does not mention video anywhere; the video work is the code work.
What it is good at: motion graphics, kinetic type, UI walkthroughs, product launch cards, explainers, 3D scenes and lyric visuals. One curated list, awesome-opus-5-5-videos, sorted 1,119 such files and found 350 motion-graphics and UI pieces, 324 3D renders, 230 games and 215 ads and launches. A second list, awesome-opus5-5-videos, holds 389 prompts, and awesome-opus-5-5-video-prompts collects verbatim prompts by category. Browse them as galleries. If Remotion is your pick, two public Claude skills wrap it: claude-remotion-skill and remotion-ads.
Where Opus 5.5 earned its reputation is the size of the program it can write in one pass: whole compositions with timing, easing and scene changes, sometimes split across parallel subagents.
The limit is just as clear. Code draws; it does not film. A renderer can move a rectangle, animate a chart or import a clip you give it. It cannot generate a person talking to camera, a hand holding your product or a kitchen with real light in it. Where the code-drawn pieces show a person, the creator filmed themselves: one shrank his talking head into a corner while the code drew about 30 shots around it, two others had Opus edit their own takes.
Route 2: Claude directs an outside video model
The second route treats Claude as the director and hands the rendering to a model built for it. Claude writes the shot list and the prompts, calls a video model through an API or a connector, checks the clips that come back, and stitches them with ffmpeg. None of this is an official Anthropic feature; it is how people wire things together.
The documented examples are few but concrete. One creator posted Opus 5.5 driving Seedance 2.5, with the useful note that the prompts work best when you tell the model who holds the camera, where they sit and how it moves. In the Hacker News thread on Opus 5.5 videos, a commenter described making b-roll with MiniMax H3 Max, and reported costs in the thread were around $3 to $4 per video. Some video platforms now offer MCP connectors that plug into Claude's settings and expose dozens of models, Seedance among them. Open-source pipelines exist too: UGC-Factory chains hosted video models, Seedance 2.0 among them, with ffmpeg, and motion-graphics-music-video-skill adds Fal image, video and audio adapters to a Claude Code plugin.
This route gets you realistic AI people. What it does not give you is a finished post: you still write every prompt, judge every clip, and handle audio and captions yourself. It fits a one-off shot with a specific camera move better than a weekly stream of ads.
Route 3: Short video ads with realistic AI people, from inside your agent
The third route is a skill. Riffkit packages the whole ad pipeline behind one hosted API, and the skill teaches your agent to run it. You say what you want in a sentence; the agent picks the source, drafts the creative direction, asks you to confirm, submits, polls, and hands back a finished video with a caption and hashtags. We wrote up the day-to-day workflow in Claude Code video skill: turn your agent into a video maker.
Three modes cover the cases Route 1 cannot:
- Adapt keeps the formula of a TikTok that already worked (the hook, the pacing, the emotional beats) and tells your own story with your product in it. No frame of the source is reused.
- Swap keeps a video's shots and timing and changes the person, the product or the setting. Point it at a template or at your own finished video.
- Create makes an original ad from a written brief, with a fixed length from 4 to 45 seconds if you need one.
Rendering runs on Seedance 2.0, Seedance 2.0 Fast, Seedance 2.5 or MiniMax H3, and the people in the output are realistic AI people generated by those models, not stock footage and not code. Setup is one line pasted into the agent: Read https://riffkit.ai/SKILL.md and follow the instructions to join Riffkit. The agent then shows a one-click sign-in link and never sees a password. The skill works in Claude Code, Codex and Cursor, and in any agent that can read a URL and make HTTP calls. New accounts get free credits with no card, enough for about 20 seconds of finished video on MiniMax H3 at 768P, and billing after that is per second of finished video with no watermark.
Add realistic AI people to an Opus 5.5 video ad
The strongest result combines Route 3 with Route 1: a Riffkit clip supplies the person, and Claude writes the motion-graphics layer on top. Here is the shape of it.
- Make the person clip in Riffkit. Ask your agent for a Create video at 9:16 with a fixed length that matches the composition you have in mind, or Adapt a winning TikTok if you want a proven hook. Riffkit's default ratio is 9:16. An Adapt job can deliver several vertical ratios (9:16, 3:4, 1:1, 4:5) at once; a Create video takes one ratio at submit and can be reframed to more vertical ratios afterwards. A horizontal ratio has to be requested alone.
- Download the caption-free file. A finished asset has a
file_url(the delivered video, with subtitles burned in) and, whenever the final went through post-processing, ansd_video_urlpointing at the render before post-processing: no burned-in captions, but the final mixed audio is already in it. Usesd_video_urlfor compositing so your own text layer does not fight burned-in captions; if it is absent,file_urlis that render. Either way the download needs the session cookie and must follow redirects, because production hands you a 302 to object storage. - Know what the audio is. The clip's sound is one mixed track: the voice and the music sit together. In Remotion you can keep it, lower it or mute it as a whole, but you cannot pull the music out from under the voice. Plan your overlay music accordingly.
- Drop it into Remotion. Put the file in your project's
public/folder and use it as the base layer with<OffthreadVideo src={staticFile("clip.mp4")} />in a 1080x1920 composition, the pattern the public Remotion skills already use. - Let Claude draw the rest. Ask it for the overlay: a headline that lands on the first beat, a product card, a price sticker, an end card with your handle. The tested run below shows what that looks like end to end.
A tested run: Riffkit clip in, Remotion MP4 out
We ran the steps below on 2026-09-29 on a Mac with Apple silicon, Node 24, Remotion 4.0.529 and React 19.3. A 15-second Riffkit clip with a code-drawn headline rendered to a 1080x1920, 30 fps H.264 MP4 with its audio intact. What follows is the code, laid out as src/index.ts and src/Root.tsx, and the commands we ran.
Download the caption-free master. Take the asset's sd_video_url (a site path such as /data/tasks/<task_id>/generated_video_sd2.mp4), put https://riffkit.ai in front of it, and fetch it with your session cookie, following the redirect:
curl -sS -L -b "vee_session=$TOKEN" -o public/clip.mp4 \
"https://riffkit.ai/data/tasks/<task_id>/generated_video_sd2.mp4"
The first response is a 302 to a signed storage URL and the second is the file. Without -L you stop at the 302; without the cookie you get a 401. Fetch the /data/... path fresh each time instead of saving the signed URL, which only works for a short time. The file we pulled this way was 720x1280 at 24 fps with a single AAC stereo track: the voice and the music mixed together, no separate stems. The same asset's file_url had a caption burned in on every frame we sampled (one every 2 seconds); sd_video_url had none.
Install Remotion. In an empty folder with public/ and src/ inside it:
npm install remotion @remotion/cli react react-dom
Write the composition. Two files. src/index.ts registers the root:
import { registerRoot } from 'remotion';
import { RemotionRoot } from './Root';
registerRoot(RemotionRoot);
src/Root.tsx lays the clip down as the base layer and slides a headline in over it, then fades the headline out at the five-second mark:
import React from 'react';
import { AbsoluteFill, Composition, OffthreadVideo, interpolate, spring,
staticFile, useCurrentFrame, useVideoConfig } from 'remotion';
const FPS = 30;
const CLIP_SECONDS = 15.041667; // ffprobe: video stream length of public/clip.mp4
const RiffOverlay: React.FC = () => {
const frame = useCurrentFrame();
const { fps, width } = useVideoConfig();
const enter = spring({ frame: frame - 6, fps, config: { damping: 14 } });
const x = interpolate(enter, [0, 1], [-width, 0]);
const fade = interpolate(frame, [4.5 * fps, 5 * fps], [1, 0],
{ extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
return (
<AbsoluteFill style={{ backgroundColor: 'black' }}>
<OffthreadVideo src={staticFile('clip.mp4')} />
<div style={{ position: 'absolute', top: 180, left: 60, right: 60,
transform: `translateX(${x}px)`, opacity: fade, padding: '28px 36px',
background: '#6d4ae0', color: 'white', borderRadius: 24, fontSize: 72,
fontWeight: 800, fontFamily: 'Helvetica, Arial, sans-serif' }}>
3 swipes. One shade.
</div>
</AbsoluteFill>
);
};
export const RemotionRoot: React.FC = () => (
<Composition id="RiffOverlay" component={RiffOverlay} fps={FPS}
durationInFrames={Math.floor(CLIP_SECONDS * FPS)} width={1080} height={1920} />
);
Render.
npx remotion render src/index.ts RiffOverlay out.mp4
On the first run Remotion downloads its own headless Chrome build (about 190 MB) into node_modules; that went through without any flag. The render took 9 seconds for 451 frames when we timed it. The output was 1080x1920, 30 fps, H.264 with AAC stereo audio at 48 kHz, 15.03 seconds long, and its loudness matched the source clip when we measured both with ffmpeg's volumedetect (mean -18.3 dB on each).
Three things worth knowing. Set durationInFrames from the video stream length (ffprobe -v error -select_streams v:0 -show_entries stream=duration -of csv=p=0 public/clip.mp4), not from the container, which runs a few hundredths of a second longer and would leave a frozen last frame. A 24 fps clip inside a 30 fps composition renders cleanly. And Remotion is free for individuals and for companies with up to three people; larger companies need its company licence.
What we verified and what we did not: the download and the render were two separate checks. The download pulled a caption-free Adapt clip from a live account; the render used a Riffkit clip from our own showcase that was already caption-free, in the same format (720x1280, 24 fps, H.264, one AAC stereo track). We did not chain the two into one run, did not render a Swap or Create clip, and only tested on macOS.
The video model does the one thing code cannot, a believable person; Claude does the thing video models are bad at, precise typography and timing.
Which route fits
| You want | Route | Why |
|---|---|---|
| Motion graphics, kinetic type, a UI demo, an explainer | Route 1 (Remotion, p5.js, Manim) | Everything is drawn; Opus 5.5 writes the whole composition |
| 3D scenes, lyric or music visuals | Route 1 (Three.js, p5.js) | Same reason; no person needed |
| One specific shot with a camera move you can describe | Route 2 (Claude + a video model) | You control the prompt for every clip |
| A short ad with a realistic AI person, from a winning TikTok or a brief | Route 3 (the Riffkit skill) | Formula, footage, voice, captions and caption text come back as one finished post |
| An ad with a person and code-drawn overlays | Route 3 + Route 1 | Riffkit supplies the person clip, Claude draws the layer on top |
Where to start
If your video has no person in it, open Claude Code and start with Remotion; the galleries above will show you what a good brief looks like. If it needs a person, add the Riffkit skill to the same agent and ask for the clip in one sentence, or make it in the browser at riffkit.ai and download it from there. The free credits cover a first clip either way.
FAQ
Can Claude make videos?
Not by itself. Claude is a language model: it writes text and code, it does not output video frames. People make videos with Claude in three ways. It writes code (Remotion, p5.js, Three.js, Manim) that a renderer turns into an MP4, which suits motion graphics, 3D, lyric visuals and UI demos. It acts as a director and calls an outside video model such as Seedance or MiniMax H3 through an API or a connector. Or it runs a skill like Riffkit, which produces short video ads with realistic AI people from a winning TikTok's formula or from a written brief.
Can Claude Opus 5.5 generate video?
No. Opus 5.5, released on 2026-09-22, is not a video-generation model, and Anthropic's announcement does not mention video at all. The videos credited to Opus 5.5 online were rendered by code it wrote (p5.js, Three.js or Remotion, then headless Chrome and ffmpeg), by an outside video model it called, or by editing footage the creator filmed. What Opus 5.5 changed is how much of that code it can write in one pass, not what it outputs.
How do I put realistic AI people in a Claude-made video?
Code renderers like Remotion draw shapes, text and imported media; they cannot generate a person. Make the person clip with a video model first, then import it. With the Riffkit skill, your agent creates the clip (Adapt a winning TikTok, Swap a person into an existing video, or Create one from a brief), downloads it with the session cookie, and drops it into your Remotion project's public folder. Use it as the base layer with the OffthreadVideo component and let Claude write the motion-graphics layer on top. Use the asset's sd_video_url when it is present: that file has no burned-in captions, so your own overlays do not collide with them.
Does the Riffkit skill work in Codex and Cursor, or only in Claude Code?
It works in Claude Code, Codex and Cursor, and in any agent that can read a URL and make HTTP calls. Setup is one line pasted into the agent: Read https://riffkit.ai/SKILL.md and follow the instructions to join Riffkit. The agent then shows you a one-click sign-in link; you approve it in your browser and the agent never sees a password. There is no MCP server to install and no local model: rendering happens on Riffkit's hosted engines.
Is it free to try making a video with Claude and Riffkit?
Yes. New Riffkit accounts get free credits with no card required. As of September 2026 that is 800 credits, which is about 20 seconds of finished video on MiniMax H3 at 768P for Adapt or Create, or about 13 seconds of Swap on Seedance 2.0 at 480p. Billing is per second of finished video, at the rate of the engine and resolution you pick, and the output carries no watermark. The code route (Remotion, p5.js and the rest) costs whatever you already pay for Claude, plus Remotion's company licence if your company has more than three people.
Keep reading
Write What Changes, Not a Prompt: How to Direct an AI Ad Video Remake
When you remake a winning video with AI, the source already carries the hook, pacing and shots. Write only what should change, placed at the beat where it changes, and fewer renders come back as misses.
Higgsfield Genjutsu Alternative: Other Ways to Reshoot a Video (2026)
Looking for a Higgsfield Genjutsu alternative? What Genjutsu does well, how face swap and character swap and full reshoots actually differ, and when remaking the shot in your own pipeline fits better.
How to Use Higgsfield Genjutsu: A Real Guide to Reshooting a Video (2026)
How to use Higgsfield Genjutsu: Motion Transfer vs Object Swap, the 4 to 30 second limit, reference images, how credits work, and where reshooting a video gets frustrating.