Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Shortcast for Windows

Long videos → ready-to-post shorts for TikTok, Instagram Reels and YouTube Shorts. Found, cut, captioned, reframed and scheduled — fully on your PC. Open-source.

Platform Python Model Whisper


Drop a long video → it transcribes, finds the best moments, cuts them, writes the copy, reframes to vertical → review the grid → publish or schedule the whole week.


What it does

Shortcast has two modes:

🎬 Make shorts from a long video (the main one)

Drop a podcast, talk, stream or any long recording. Shortcast transcribes it locally, finds the best 3–6 viral moments, cuts each one, and writes the full post copy for all three platforms — all in one pass. Horizontal (16:9) footage is reframed to vertical 9:16, tracking the speaker's face. You get a grid of finished shorts you can play with sound, edit, download, publish, or schedule one-per-day across the week.

✏️ Caption a short

Already have a short vertical clip? Drop it and Shortcast watches the frames and hears the audio (local multimodal model) and writes the three platform captions directly, rendered as editable phone-style previews.

What's different about Shortcast:

  • 🛰️ Nothing leaves your PC during processing. No cloud model, no upload. Your video is only sent to a network when you choose to publish it.
  • 🧠 One model does the thinking. A single on-device LLM reads the whole transcript, picks the moments and writes every caption in the same pass.
  • 🎯 Tuned per platform. TikTok gets punchy. Instagram gets storytelling and 20–30 hashtags. YouTube gets short, search-friendly titles — in the language spoken in the video.
  • 📐 Auto vertical reframe. On-device face tracking (MediaPipe) turns 16:9 into 9:16, panning to keep the speaker centred, with a blurred-background fallback when there's no clear face.
  • 🗓️ Schedule the week in one click. Distribute approved shorts one per day, pick the time, and Upload-Post publishes them automatically.
  • 🪶 No Electron. No Swift. Just Python and FFmpeg.

How a long video becomes shorts

 ┌──────────────────────────────────────────────────────────────────────┐
 │ YOUR PC — nothing leaves until you press Publish │
 │ │
 │ drop a long video │
 │ │ │
 │ ▼ │
 │ ┌──────────────┐ ┌────────────────────┐ ┌───────────────────┐ │
 │ │ Whisper │──►│ Director LLM │──►│ FFmpeg │ │
 │ │ (CPU/GPU) │ │ Ollama (local) │ │ cut each clip │ │
 │ │ transcribe │ │ finds moments + │ │ + reframe 9:16 │ │
 │ └──────────────┘ │ writes 3 captions │ │ (MediaPipe) │ │
 │ └────────────────────┘ │ + hook overlay │ │
 │ └───────────────────┘ │
 │ │ │
 │ ▼ │
 │ ┌───────────────────┐ │
 │ │ grid of shorts: │ │
 │ │ play w/ sound, │ │
 │ │ edit, download, │ │
 │ │ approve │ │
 │ └───────────────────┘ │
 └──────────────────────────────────────────────────────────────────────┘
 │ Publish now / Schedule the week
 ▼
 ┌─────────────────┐
 │ Upload-Post │ TikTok · Instagram · YouTube
 │ API │ (now, or scheduled per day)
 └─────────────────┘

Concretely:

  1. Transcribe. If the video has a .srt/.vtt sidecar, it's used instantly. Otherwise Whisper transcribes on the CPU/GPU. The transcript's language is detected from the text, so captions stay in the spoken language.
  2. Find the moments + write the copy. The Director — a local LLM — reads the whole transcript and returns a single JSON: the best clips (start/end, why, hook, a short on-screen overlay) and the full TikTok / Instagram / YouTube caption package for each, in one pass. A tolerant parser strips fences/thinking and validates clip durations.
  3. Cut. FFmpeg cuts each moment to its own file.
  4. Reframe (optional, automatic for horizontal clips). MediaPipe samples faces across the clip; if the speaker is found, FFmpeg pans a 9:16 crop to follow them. No clear face → a blurred-background letterbox. A short text hook can be burned over the top.
  5. Review. A grid of phone-style tiles — loop each short, play it with sound, edit the captions, download the rendered .mp4, or approve it.
  6. Publish or schedule. Publish now, or schedule the week: approved shorts go out one per day at a times you choose, via Upload-Post's scheduled_date. TikTok lands as a draft by default so you can finish in-app.

Choosing the model

Settings → Caption writer picks the local model:

Model Role Notes
Llama 3.2 3B (default) Director + inline captions Fast, good writing, one pass. Runs via Ollama.
Qwen 2.5 7B Director + inline captions Stronger writing, one pass.
Phi-3.5 Mini Director + inline captions Lightweight, fast on modest hardware.

Install

Prerequisites

  1. FFmpeg — needed for video cutting and reframing.

    winget install FFmpeg

    Or download from https://ffmpeg.org/download.html and add to PATH.

  2. Ollama — for running the local LLM.

    winget install Ollama

    Or download from https://ollama.com

  3. Python 3.10+ — for the Shortcast app.

    winget install Python.Python.3.12

Setup

# Clone and install
git clone https://github.com/YOUR-USER/shortcast-windows.git
cd shortcast-windows
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
# Pull the default model
ollama pull llama3.2:3b
# Run the app
python -m shortcast

The app opens in your browser at http://127.0.0.1:8501

Build from source

git clone https://github.com/YOUR-USER/shortcast-windows.git
cd shortcast-windows
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python -m shortcast

The stack

Layer Used
UI Streamlit (web app)
Transcription whisper large-v3 (CPU/GPU)
Director model Llama 3.2 3B or Qwen 2.5 7B, runs via Ollama (local)
Face tracking MediaPipe face detection
Video processing FFmpeg (cut, reframe, export)
Publishing Upload-Post API (publish + schedule)
Build pip, FFmpeg, Ollama

Privacy

Transcription, moment-finding, captioning, cutting and reframing all run locally on your PC. The only outbound traffic before you publish is:

  • First use only: one-time download of the model weights from Ollama's registry.
  • On Publish / Schedule: an upload to Upload-Post with the rendered short and the copy you approved (immediately, or at the scheduled time).

Your Upload-Post API key is stored locally and is only ever sent to Upload-Post over HTTPS when you publish. It is never written into the repository.

Known limitations

  • The Director runs a local LLM. On a modest PC, a ~2-minute video takes a few minutes end-to-end (transcription + generation). Faster PCs are quicker.
  • The app runs as a local web server — open it in any browser on the same machine.
  • One video at a time — no history, no batch processing. By design, for now.
  • Upload-Post free tier limits monthly uploads. One publish to three networks counts as three.

License

Apache License 2.0 — see LICENSE.

About

Long videos → ready-to-post shorts for TikTok, Instagram Reels, YouTube Shorts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /