🎬 Short Film
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:
- Enter your film premise
- Choose a visual style
- Pick a music vibe
- 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
- Align on Premise: Describe your short film concept
- Choose Style & Music: Pick from cinematic styles and music vibes
- Generate Starting Frame: AI creates the opening shot using DALL-E
- Chain Video Clips: Each 10-second clip uses the previous clip's last frame as its first frame
- 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:
- OpenAI Sora - AI video generation
- Google Gemini - Alternative video generation
- Typer - CLI framework
- Rich - Terminal formatting
Made with ❤️ by Aaron Levin
Metadata
Release files for short-film 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| short_film-0.1.0.tar.gz | 18.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| short_film-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.0 kB
Release files / short_film-0.1.0.tar.gz
| Download URL | short_film-0.1.0.tar.gz |
|---|---|
| Size | 18.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e83fe347b025a8a6147e52eeecb9199f5690dc38db0a9aca0905eded6a32844
|
|
BLAKE2b-256 checksum How to use checksums |
58185dda46e7247c26b52136ce369c9298385f7f56eb1a2499accb9dcc1ec4eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / short_film-0.1.0-py3-none-any.whl
| Download URL | short_film-0.1.0-py3-none-any.whl |
|---|---|
| Size | 17.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e52c5ba71b0523be67d2205ecf7d1b767902cfd8fb152dd3f17900666920555
|
|
BLAKE2b-256 checksum How to use checksums |
808c2b7ca69cdd5b4fd6785c103fae578616eaecd1f1531221b3578467565a7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for short-film 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.