How to Make Faceless YouTube Shorts With Claude Code (Free Project)

TL;DR

No camera, no microphone, no video editor, no drawing. You describe a short in one sentence and claude-faceless-shorts-creator, my free open-source project, plans it, draws it as code, narrates it, and lands the captions on the exact spoken word. Setup is about half an hour. You need a paid Claude plan (there is no free tier), Node, ffmpeg, and one API key for the voice. The hard part is not the setup, it is knowing what makes a short worth watching, so the last half of this page is the beat grammar the fourteen examples follow.

What you'll have at the end
  • The project running, with all sixteen example compositions playable on your own machine
  • One key in a .env file, and a clear map of which key unlocks which track
  • Your first short planned, built, voiced and rendered as a 1080x1920 mp4
  • The six-beat grammar that separates a short people finish from one they swipe

Ok, let's start.

I built this because I wanted to test one idea: how far can you get making video when you remove the camera, the editor and the stock footage, and keep only a description of what the video should teach. The answer turned out to be further than I expected, so I open sourced the whole thing.

See what it makes

These are the example shorts that ship inside the repo. Every one was made by the project, with no footage and no stock. Click any one to play it. The still on each card is that short's opening frame, straight out of the render.

Every script, beat sheet and sound cue sheet behind them is in the repo, so you can read exactly how any of them was built.


Watch it build one

You have seen the finished shorts. Here is the middle part: one sentence in, the plan, the animation, the voice, and a rendered short out. Same project and same commands as the steps below, so if you would rather watch first and set up after, start here.


What this is, and what a skill is

Two words show up on every step below, so let's define them once.

Claude Code is an AI assistant that does the work. It can run in your terminal, the plain text window where you type commands to your computer, or as a panel inside VS Code, which is how I run it. Either way, you talk to it in normal English, and it reads files, runs commands and writes code for you.

A skill is a folder with a written playbook inside it. Someone works out how to do one job well, writes it down once, and Claude follows that playbook every time you ask for that job. You never open these files.

This project is five of those playbooks. Three of them are whole production lines, and Claude picks the right one from the way you ask.

You say Track Where the pixels come from
make a short about the x11 trick make-short 100% code. A Remotion animation, no footage, no stock
make a vox-style short about coffee make-vox Paper collage. AI image layers, die-cut, with a camera flying across them
make an AI video short with blue-man make-ai-short A video model animating a locked recurring character

The other two skills are support. suggest-sfx is the sound pass, and it works from a library that grows every time you make a short. vidtsx-2d-generator is the rulebook that keeps an animation from crashing mid-render, and you never call it yourself.

Remotion is the engine underneath all three tracks. It builds video out of layers the way a web page is built out of elements, and it draws every frame from code. That is the reason a chess board and a watercolour forest can come out of the same project: neither one is footage.


What you need first

Here is the full list before the steps. Everything except the Claude plan and the voice is free.

  • VS Code, a free code editor. Your workspace.
  • Claude Code, the assistant that does the work. New to it? That page is the full tour.
  • Node 18 or newer. Remotion is a Node project. Install the current LTS build and you are covered.
  • Python 3.10 or newer. The voice, sound and mixing tools are small Python programs.
  • ffmpeg. The free program that encodes and muxes the video. Everything leans on it.

Here is the part I did not expect to be able to write. For the default track, there is no pip install step at all. The Python tools in this repo are standard library only, so once Python itself is on your machine, they run. There is no requirements.txt and no virtual environment to remember. Only the paper-collage track needs extra Python packages, and I flag those where they come up.

Heads up

Install Node, Python and ffmpeg before Step 5, not during it. If one is missing, the setup stops with something like 'npm' is not recognized or 'ffmpeg' is not recognized. That is not a bug in the project. It means that tool is not installed, or not on your PATH.


Step 1: Install VS Code

VS Code, short for Visual Studio Code, is a free code editor from Microsoft. For this guide, think of it as one window holding everything: your project files on the left, Claude Code in its own panel, and a terminal at the bottom for the few commands you run yourself.

  1. Go to code.visualstudio.com.
  2. Download the build for your system. The site usually detects it for you.
  3. Install it like any app, and open it once so you know it works.

If you already have VS Code, skip ahead.


Step 2: Install Claude Code

There are two ways to install it, and both end in the same place. I use the VS Code extension, because it keeps the chat, the project files and the terminal in one window.

The VS Code extension (what I use)

In VS Code, click the Extensions icon in the left bar or press Ctrl+Shift+X, search Claude Code, and install the one published by Anthropic. It adds a Claude Code panel to VS Code, and that panel is where I direct this whole project.

VS Code with the Claude Code extension open: the claude-faceless-shorts-creator folders in the Explorer on the left, and the Claude Code chat panel on the right with its prompt box waiting
The panel the extension adds. The input box at the bottom is where you will direct everything. The files on the left are the project, which you get in the next step.

The terminal version

Prefer the plain terminal? Same tool, same abilities. Open a terminal on your own machine. On Windows the simplest is PowerShell: press Start, type PowerShell, open it. Then paste one line. It downloads and installs Claude Code, and it keeps itself updated afterwards.

irm https://claude.ai/install.ps1 | iex

On Mac or Linux, paste this instead. Same job, same result:

curl -fsSL https://claude.ai/install.sh | bash

Now check it landed. Run this in the same terminal. It should print a version number:

claude --version

If it says the command is not found, close the terminal, open a new one, and run it again. A fresh terminal is the fix nine times out of ten.

Either way, the first time you start Claude Code it opens your browser to sign in. It needs a paid Claude plan, and I put the whole cost picture near the end.


Step 3: Get the project

The project is free and MIT licensed, which means you can clone it, change it, and sell what you make with it.

The public GitHub page for hassancs91/claude-faceless-shorts-creator, showing the green Code button and the top-level folders: .claude/skills, ai-shorts, media, remotion, shorts, tools and vox-shorts
The repo. The green Code button on the right is the download route if you do not use git.

Option A: clone with git (the normal way)

If you have git installed, use this path, because updating later is one command. Run this on your own machine, in the folder where you keep projects. It downloads the project into a new folder:

git clone https://github.com/hassancs91/claude-faceless-shorts-creator

Then walk into it. cd means change directory, and every command after this runs from inside that folder:

cd claude-faceless-shorts-creator

Option B: download the ZIP (no git needed)

No git, no problem. Open the repo page, click the green Code button, choose Download ZIP, and unzip it somewhere you will remember. That folder is your project.


Step 4: Open the folder and start Claude Code

Open VS Code. Choose File, then Open Folder, and pick the project folder. Your files appear on the left.

Now start Claude Code. I click the Claude Code icon the extension added, and the panel opens next to my files, already looking at the project. This is what my screen looks like from here on:

Close-up of VS Code after File then Open Folder: the project folders .claude, ai-shorts, media, remotion, shorts, tools and vox-shorts in the Explorer, with the Claude Code panel open beside them
The project open. The same folders you saw on GitHub sit on the left, and Claude Code sits next to them, already looking at the repo.

If you installed the terminal version instead, open the built-in terminal with Terminal, then New Terminal. A panel opens at the bottom, already sitting in your project folder. Start Claude Code by typing one word and pressing Enter:

claude

Whichever way you started it, you get one thing for free here. The project ships its five skills in a .claude/skills/ folder, and Claude Code finds them the moment you open the folder. Nothing to install, nothing to switch on.

Tip

Run everything from the repo root. This trips people up, so here is the reason. The tools find engine paths, like the sound library, relative to their own location. They find project paths, like shorts/short-1-chess, relative to where you are standing. Stand somewhere else and the project paths miss. The only exception is the npm commands in the next step, which run inside the remotion folder and then come back.


Step 5: The one-time setup

This looks like the scary step. It is four commands, once, and then never again for this project.

First, move into the animation engine's folder. Run this from the repo root:

cd remotion

Now install Remotion's own parts. This is the long one, a minute or two on a normal connection:

npm install

Next, build the registry. This scans the shots folder and writes the list of compositions so the studio and the renderer can find them. Run it again any time you add or rename a short:

npm run gen

It prints what it found, which is a quick way to confirm the install worked:

Outputgen-registry: 16 shot(s) -> registry.gen.tsx
  - Ai1Door  1080x1920@30 36.4s
  - Short1Chess  1080x1920@30 42s
  - Short7Kids  1080x1920@30 55s
  - Vox1Coffee  1080x1920@30 40.5s
  ...

Now go back up to the repo root, where the rest of the work happens:

cd ..

See the examples before you spend anything

Before you make anything, look at what is already in there. Run this from the repo root. It opens Remotion Studio in your browser:

cd remotion && npm run studio

No API key is involved in this. The compositions are code, so they play on your machine for free.

Remotion Studio in the browser, sixteen compositions listed down the left sidebar, the Little Pip watercolour fox rendering in the preview, and the timeline at the bottom showing stacked Sequence layers staggered across the 55 second short
Remotion Studio with Little Pip open. Note the timeline at the bottom: each bar is one layer, and the whole short is those layers stacked on a single timeline.

That timeline is worth a second look, because it is the thing most people get wrong about AI video. Nothing here was generated as a finished clip. It is a stack of layers on one timeline, and each layer is code that knows what it should look like on any given frame. That is why you can change one line and re-render, instead of rolling the dice again.

Close the studio with Ctrl+C in the terminal, then cd .. back to the root.


Step 6: Add your ElevenLabs key

The project reads your keys from one file at the repo root. Make it by copying the example. On Windows:

copy .env.example .env

On Mac or Linux, the same job:

cp .env.example .env

An API key is a long password that lets the project use a paid online service as you. Open the new .env file in VS Code and paste yours in. It is git-ignored, so it never leaves your machine.

.env
ELEVENLABS_API_KEY=your_key_here
GEMINI_API_KEY=
FAL_KEY=

Only the first line matters to start. Here is what each one actually unlocks.

Key What it does Where to get it Need it to start?
ELEVENLABS_API_KEY The narration, the sound effects and the music beds elevenlabs.io Yes. This is the one
GEMINI_API_KEY Generated images, for storybook shorts and collage layers ai.google.dev No. Only for image-based shorts
FAL_KEY Generated video clips, for the third track only fal.ai No. Leave it blank

So the honest minimum for the default track is one ElevenLabs key. That is it.

One detail that saves real money once you start rewriting scripts: the narration clips are cached by the text of each line. Change one line out of twelve and only that line gets billed again. The other eleven come from cache.


Step 7: Ask for your first short

Now the good part. Go back to Claude Code, in its panel or in the terminal, and just say what you want in plain English:

make a short about the water cycle, for kids

It does not start building. It writes the plan first, and this is the part I want you to actually read rather than skim past. Here is a piece of the real answer to that exact sentence, on a clean run.

The plan comes before the pixels

Excerpt from a real run. Nothing was written to disk and nothing was rendered; this is the planning stage only.

claude-faceless-shorts-creator
> make a short about the water cycle, for kids

Read the skill, brand.md, and IDEAS.md. No files written, nothing run.

short-15 - "Older Than Dinosaurs"
1080x1920 @30 - 1260 frames = 42.0s

The hook
  "This water is older than the dinosaurs."
  Frame 0 is the whole cycle already running, mid-lap. Title card
  plus a live 240 / 240 DROPS chip. Thumbnail-grade, no fade from black.

Beat sheet
  HOOK    0.0-3.8    frames    0-114
  SETUP   3.8-11.6   frames  114-348   the lap plays backward
  QUIZ   11.6-14.8   frames  348-444   "How long does one drop stay up there?"
  REVEAL 14.8-32.8   frames  444-984   five steps, one per spoken word
  TWIST  32.8-38.6   frames  984-1158  a dinosaur drinks from the same sea
  LOOP   38.6-42.0   frames 1158-1260  last frame == frame 0

VO
  12 lines - 78 words - 2.5 words/sec (a kids read needs more air)

Three facts to settle before I write beats.json
  2. "Earth has never made a single new drop" is the teaching
     simplification, and it is literally false: hydrogen escapes to
     space, volcanoes add juvenile water, combustion makes new
     molecules. Recommended swap, same punch and true:
     "Earth doesn't get new water. It just reuses the old."
     Your call.

> Stopping here. Say go and I'll do the fact pass, then build.

Read the plan, then change it. On that run it caught a line in its own script that was not true and offered a replacement. That is the whole reason the plan comes first. Fixing a sentence costs you ten seconds here. Finding it after the render costs you the render, the narration and the sound pass.

When the plan looks right, tell it to go. From there it writes the animation, renders frames at phone size and reads them back to check the picture matches the words, renders the video, generates the narration, and lands the sound effects. Your finished short arrives in that short's own output/ folder as an mp4, 1080x1920, with voice and sound already mixed.


How to plan a short that's actually good

This is the part that matters, and it is the part nobody talks about, because it is the part the tool cannot do for you.

Making a short is easy now. Making one somebody watches to the end is not, and it has almost nothing to do with which AI you used. The fourteen examples in this repo all follow the same six-beat shape. The skill holds it, so you get it by default, but you should know it, because you are the one deciding whether a topic is worth 40 seconds.

The six beats, on a 42 second short

This is the grammar in the make-short skill. Times are the defaults; a topic can push them around.

  1. HOOK0.0 - 3.4s

    Frame 0 is already the payoff. No fade from black, no build-up, no logo. The first frame is fully composed and it is good enough to be the thumbnail, because on a vertical feed it is the thumbnail.

  2. SETUP3.4 - 11s

    The one piece of context the payoff needs. Not the history of the topic. One thing.

  3. QUIZ~2.5s, optional

    A card that asks the viewer to commit to a guess before the answer. It is optional, and it is what drives comments.

  4. REVEAL2 to 4 steps

    Each step lands on a spoken word. Not near it. On it. The captions carry real per-word timings from the narration, so the animation and the voice hit together.

  5. TWISTbefore the end

    The bit they did not see coming, and the bit they send to a friend.

  6. LOOPlast frame == frame 0

    The ending is a loop, not a call to action. The last frame dissolves back into the first, so the replay is seamless and the view counts twice.

No engagement outros. The skill refuses to end on "comment below" or "which one next". They read as dated, they cost you the loop, and the payoff line is a better ending than any question.

Write about 100 words, and not one more

This is the rule I got wrong first, and the numbers are from fixing it. A 40 second short holds about 100 words of narration. Push past that and the text to speech has to speed itself up to fit the window, which is audible and cheap sounding.

3.3 words per second needed a 1.3x speed-up. You can hear it
2.7 words per second peaked at 1.11x. Clean

So the working number is 2.7 words per second, with a little slack before the next line starts. Slower for a kids read. If your script does not fit, the script is too long, not the short too short.

Check the frames, not the vibe

Before any full render, the skill renders single frames at phone size and reads them. This catches things a description never will: a caption sitting under a UI element, a reveal that has not finished when the voice names it, a hook frame that is not actually composed yet.

The rule that makes it useful: render a frame at the exact moment of each payoff line, and check the thing the narration names is on screen right then. Checking only the beat boundaries misses it. On one of the shorts, the traffic jam looked half formed under the line calling it a wall of stopped cars, and only the opening frame looked right. Nothing but a frame at that exact second would have caught it.

The safe areas are not decoration

Vertical video has furniture on top of it. Captions sit centred around y1500, and nothing you care about goes in the bottom 340 pixels or the right 160. That is where the app puts its own buttons, the description and the account name. Put your payoff there and a third of your viewers never see it.

Tip

New to all of this? Everything above is a craft rule someone worked out and wrote down so a machine could follow it. Learning to write those rules yourself, for your own work rather than mine, is the actual skill. That is what Build With AI 1.0 is for.


The other two tracks

Once the default track works, the other two are the same conversation with a different opening sentence.

The paper collage track

This is the Vox-style documentary look: a paper background, die-cut shapes, a real map, and a camera moving across all of it. Ask for it like this:

make a vox-style short about the history of coffee

It needs the Gemini key for the image layers, and it is the one place the Python side needs extra packages. Run this from the repo root, once, if you want this track:

pip install pillow rembg

Some collage layers are built by screenshotting HTML instead of generating an image, which needs a headless browser. Also once, also only for this track:

pip install playwright && playwright install chromium

The visual language of this track is written down in vox-shorts/DESIGN.md, and the coffee example ships with all six of its layers committed, so you can open them and see exactly how a scene is cut apart.

One honest note about this track, since I put a poster of it in the gallery above: the frame-0 rule does not apply here. A collage short opens on bare paper and assembles itself over the first seconds. It is a documentary, and it has documentary pacing.

The generative track

This one animates a recurring character with a video model, and it is the only track where the pixels are not reproducible, so the generated clips are committed to the repo rather than rebuilt.

make an AI video short with blue-man

Two rules matter here, and the skill enforces both. It states the cost before it spends anything, because video models are billed per second. And it never regenerates a locked character from a text description, because that is how a character quietly stops looking like itself between shots. The character lives as a reference image plus a character.json, and both are in the repo.

If you want to see the reasoning behind the model choice, ai-shorts/IDEAS.md has the bake-off: three video models compared on the same shot, with the per-second cost worked out for each.


Make it your channel

The project ships with a house look: light, calm, indigo, a lot of whitespace. It is real and you can keep it. But if you change nothing, your shorts carry my brand, not yours.

The style contract is one file, brand.md at the repo root. Colours, fonts, motion, safe areas and sound taste, all in plain English. Every skill reads it before it builds anything, so editing that file changes every future short.

Heads up

Change the palette in two places, not one. brand.md is what the skills read. remotion/src/brand.ts is the same palette as code, and it is what the animations actually import. Change one and not the other and your shorts will keep rendering in the old colours while the plan describes the new ones.

You can also just tell Claude what you want and let it edit both. That is the whole point of the thing.


What it costs

The project is free and MIT licensed. The services it calls are not, and they run on your own keys, on your own accounts. Nothing here is a subscription to me.

Service For Cost note
Claude Code Directing everything Paid. Claude Pro is about $20 a month. No free tier
ElevenLabs Voice, sound effects, music Paid, per character of narration. Clips are cached, so a rewrite only re-bills the lines you changed
Gemini Generated images Only for image-based shorts and collage layers
fal.ai Generated video clips The most expensive by far, billed per second of clip. Third track only
Remotion Rendering every frame Free for individuals and teams of up to 3. Companies of 4 or more need a paid licence

I am deliberately not giving you a per-short figure. It moves with your script length, your track and each provider's pricing, and a number I measured last month would be a number you plan against wrongly next month. Check each provider before you plan a batch.


FAQ

Do I need to know how to code?

No. You describe the short in a sentence and review what comes back. The only file you edit by hand is .env, where you paste your key, and that is copy and paste. Claude writes the animation code, and the repo already carries the rules that keep it from crashing.

What is the smallest set of keys I need to start?

One. An ElevenLabs key covers the voice, the sound effects and the music beds, which is everything the default TSX track needs. GEMINI_API_KEY is only for shorts built on generated images, and FAL_KEY only for the generative video track. Leave both blank until you want those.

Do I need a camera, a microphone, or any drawing skill?

None of the three. Every pixel in the default track is drawn by code in Remotion, so there is no footage and no stock. The narration is text to speech. A microphone only matters if you decide to use your own voice instead of the default AI one, which I think you should once you are past your first few.

Can I use my own voice instead of the AI one?

Yes, and it is one flag. The examples use the ElevenLabs premade voice Liam. Pass --voice with any other ElevenLabs voice id, including a clone of your own voice, and regenerate. Word timings come back from the same call, so the captions stay locked to the exact spoken word.

How long is a short, and what does it come out as?

1080 by 1920 at 30 frames per second, around 38 to 42 seconds. The finished file lands in the short's own output/ folder as an mp4 with the voice and sound effects already mixed in. It is a normal video file, so you upload it to YouTube, TikTok or Instagram like anything else.

Why does the project keep telling me to run commands from the repo root?

Because the tools resolve two kinds of path differently. Engine paths like the sound library are found relative to the tool's own location, but project paths like shorts/short-1-chess are found relative to where you are standing. Run from anywhere else and the project paths miss. The one exception is the npm commands, which run inside the remotion folder.

Does this work on Mac and Linux?

It should. Claude Code, Node, Python and ffmpeg all run on the three systems, and the Python tools are standard library only. I build on Windows 11, so that is what I have actually tested and what the screenshots show. If you hit a platform bug, open an issue on the repo and I will fix it.


What this is part of

Take the video away and this guide taught one habit. You do not do the hard job yourself, and you do not hand it over blind either. You write down how the job should be done, point a set of small sharp tools at it, and read the plan before anything runs.

Here the job was a 40 second short. In a real product it is your app, your data, your deploy, wired exactly the same way.

That is the thing I actually teach. Build With AI 1.0 walks from an empty folder to a deployed AI product:

  • Building a real AI app with Python and Django, start to finish
  • Wiring AI models into real features, the same pattern this project uses
  • Directing AI with written playbooks instead of copy, paste and hope
  • Auth, payments, and shipping to real users

Course

Want the full system?

Build With AI 1.0

  • Updated July 2026
  • Stack Claude Code + Remotion
  • Tested on Windows 11
  • Setup ~30 minutes
  • Difficulty Beginner
Last verified: July 30, 2026 against the shipped repo. Every command on this page is the one in the project's own README and CLAUDE.md, and the studio screenshot is a live capture of it running.


Hasan Aboul Hasan giving a thumbs up

Go describe your first short.

Hasan Aboul Hasan builds open-source tools and teaches solo developers how to build, host, and sell AI-powered products. Founder of LearnWithHasan.com, creator of SimplerLLM and PyRunner.

Vibe Engineering Blocks — free guide
Free guide

Get the free Vibe Engineering Blocks guide

The exact building blocks I use to ship real products with AI — yours as a free PDF.

Free PDF · double opt-in · unsubscribe anytime.

Have a question? Ask it in the community — it's tagged #guide and linked back here. Reading is open to everyone; posting needs a free account.

Loading questions…