Skip to main content

CLI tool for generating 60-second short films via AI video APIs

Project description

🎬 Short Film

PyPI version Python 3.9+ License: MIT

Generate 60-second short films using AI video generation APIs. Creates cinematic videos by chaining clips together using last-frame-to-first-frame transitions.

✨ Features

  • 🎥 Multiple Video Providers: OpenAI Sora and Google Gemini support
  • 🎨 8 Film Styles: Cinematic, noir, anime, documentary, sci-fi, fantasy, horror, comedy
  • 🎵 Music Vibes: Epic, suspenseful, calm, upbeat, dark, whimsical
  • 🔗 Frame Chaining: Automatically chains clips by using the last frame as the first frame of the next clip
  • 💾 Resume Support: Interrupted generations can be resumed from the last checkpoint
  • 🎯 Interactive & Non-interactive: Use conversationally or with config files
  • 📊 Progress Tracking: Beautiful progress bars and status updates

🚀 Quick Start

Installation

# Using uv (recommended)
uv tool install short-film

# Using pipx
pipx install short-film

# Using pip
pip install short-film

Usage

Interactive Mode (Recommended)

short-film generate

You'll be guided through the process:

  1. Enter your film premise
  2. Choose a visual style
  3. Pick a music vibe
  4. Watch as your film is generated!

Non-Interactive Mode

short-film generate \
  --premise "A lone astronaut discovers an alien artifact on Mars" \
  --style scifi \
  --music-vibe suspenseful \
  --provider openai \
  --duration 60

List Available Options

# Show all film styles
short-film styles

# Show all music vibes
short-film vibes

🎬 How It Works

  1. Align on Premise: Describe your short film concept
  2. Choose Style & Music: Pick from cinematic styles and music vibes
  3. Generate Starting Frame: AI creates the opening shot using DALL-E
  4. Chain Video Clips: Each 10-second clip uses the previous clip's last frame as its first frame
  5. Stitch Together: All clips are combined into a 60-second film

The secret sauce: By chaining the last frame of each clip to the first frame of the next, we create smooth transitions and can exceed single-clip duration limits!

🔑 Setup

You'll need API keys for the video generation providers:

OpenAI (Sora)

export OPENAI_API_KEY="sk-..."

Google Gemini

export GEMINI_API_KEY="..."

📖 Advanced Usage

Resume Interrupted Generation

If generation is interrupted, simply run the same command again:

short-film generate --resume

The tool automatically saves progress after each step and will continue from where it left off.

Custom Output Directory

short-film generate \
  --premise "Your premise" \
  --output /path/to/output

Disable Interactive Mode

short-film generate \
  --no-interactive \
  --premise "Your premise"

🎨 Film Styles

  • cinematic: Dramatic, film-like quality with professional cinematography
  • noir: Black and white, high contrast, dramatic shadows
  • anime: Japanese animation style with vibrant colors
  • documentary: Realistic, natural lighting, authentic feel
  • scifi: Futuristic, high-tech, neon-lit environments
  • fantasy: Magical, ethereal, fantastical elements
  • horror: Dark, ominous, unsettling atmosphere
  • comedy: Bright, colorful, lighthearted tone

🎵 Music Vibes

  • epic: Grand, sweeping orchestral music
  • suspenseful: Tense, dramatic, keeps you on edge
  • calm: Peaceful, relaxing, ambient
  • upbeat: Energetic, positive, fun
  • dark: Ominous, foreboding, intense
  • whimsical: Playful, quirky, lighthearted
  • none: No music (video only)

🛠️ Requirements

  • Python 3.9+
  • ffmpeg (for video stitching)
  • OpenAI API key (for Sora) or Google Gemini API key

Installing ffmpeg

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Amazon Linux
sudo dnf install ffmpeg

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📝 License

MIT License - see LICENSE file for details.

🙏 Credits

Built with:


Made with ❤️ by Aaron Levin

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

short_film-0.1.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

short_film-0.1.0-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file short_film-0.1.0.tar.gz.

File metadata

  • Download URL: short_film-0.1.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for short_film-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0e83fe347b025a8a6147e52eeecb9199f5690dc38db0a9aca0905eded6a32844
MD5 9eadabaf2ba8e55c7443cda2ed735f41
BLAKE2b-256 58185dda46e7247c26b52136ce369c9298385f7f56eb1a2499accb9dcc1ec4eb

See more details on using hashes here.

File details

Details for the file short_film-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: short_film-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for short_film-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e52c5ba71b0523be67d2205ecf7d1b767902cfd8fb152dd3f17900666920555
MD5 0eb24f46f20505056488748077519d14
BLAKE2b-256 808c2b7ca69cdd5b4fd6785c103fae578616eaecd1f1531221b3578467565a7b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page