Purffle / PurffleShorts / Guides

How to automate YouTube Shorts for free.

From a topic to a published Short with no editing: an AI writes the script, a free neural voice reads it, footage and captions are matched to every word, and the video uploads itself. Here is the whole setup.

7 min readUpdated 27 September 2026By Chaman Raj RFor PurffleShorts v2.0.0

What you need

  • Python 3.10–3.13 and ffmpeg. No GPU — rendering is a single ffmpeg pass.
  • One AI model for scripts: a key for OpenAI, Claude, Gemini, Groq, DeepSeek or another provider — or a free local model through Ollama or LM Studio.
  • A free Pexels and/or Pixabay key for stock footage. Or skip it and use free AI images.
  • A Google Cloud project for uploading, when you are ready to publish.

The first render needs no keys at all.

Set it up

Install PurffleShorts

Get the zip from the download section or clone it, then inside the folder:

python -m venv venv && source venv/bin/activate   # Windows: venv\Scripts\activate
pip install -e .

See it work with no keys

This renders a sample Short with a built-in script, a free neural voice and generated backgrounds:

python -m purffle_shorts demo

Configure

Copy .env.example to .env, add one LLM key (or run Ollama) and a Pexels or Pixabay key, then run the self-check, which tests ffmpeg, your model, keys, fonts and YouTube setup:

python -m purffle_shorts doctor

Make one video, locally

Nothing is uploaded yet:

python -m purffle_shorts make --topic "why octopuses have three hearts" --no-upload

Connect YouTube once

Create an OAuth client of type Desktop app with the YouTube Data API v3 enabled, save it as credentials.json, then run python -m purffle_shorts auth. The upload guide covers this step in detail.

Start autopilot

It picks a topic, writes, voices, renders and uploads — then does the next one:

python -m purffle_shorts run

Prefer a form to a terminal? python -m purffle_shorts studio opens a local dashboard at 127.0.0.1:8765 where you can create Shorts, watch the log and upload with one click.

StudioPurffleShorts Studio dashboard with the create-a-Short form, job log and a library of rendered Shorts
Studio, the local web dashboard.

Pick a niche and a format

Topics can come from your own niche, Google Trends, Wikipedia's "On this day", Reddit TIL or a list you write:

python -m purffle_shorts run --source niche --niche "space" --style facts

Formats: facts, story, listicle, myth, quiz, explainer, motivational and news. Voices come in 75 languages; set LANGUAGE=hi, ta, es and so on, and the script, voice and caption font switch together. Captions come in six styles — bold, boxed, neon, clean, karaoke and minimal.

CaptionsThe six PurffleShorts caption styles side by side
The six caption styles, drawn by the same renderer the videos use.

Keep it good

Automation makes volume easy; it does not make videos worth watching. Three habits help:

  • Facts need a capable model. In testing, a 3B local model confidently claimed flamingos get their colour from carrots. Use a larger model for fact-based formats.
  • Check the script. Every video folder has a script.json. Fix it and re-render with make --script path/to/script.json — no new AI call needed.
  • Render in bulk, release on a schedule, so you can review before anything goes public.

Stay inside YouTube's rules

YouTube allows AI-assisted content but requires disclosure of realistic synthetic media and penalises low-effort, mass-produced videos. PurffleShorts sets the altered or synthetic content flag for you (SYNTHETIC_MEDIA=true); what you publish, and whether it follows the platform's rules, is up to you.