Skip to content

Repository files navigation

Poddie

Poddie ⎨beta⎬

Text-based, local-first video & podcast editor.

Cut video or audio by deleting words — local, private, and free, all on your Mac.

🔒 100% local & private · 💸 Free transcription · 🔇 Silence auto-trim · 💬 Caption burn-in · 🎬 One-click export

Poddie demo

Poddie turns podcast editing into text editing. Import a recording — video or audio-only — get a word-level transcript, then delete the words you don't want, and Poddie cuts the media to match. What takes an hour of timeline scrubbing now takes minutes of proofreading.

Built for podcasters and creators who don't have time to edit their footage.

  • 🎙️ Transcribe free & offline with a local Whisper model — or use OpenAI's API (~$0.006/min) when you want it faster.
  • ✂️ Edit by deleting words — select words or silences, hit delete, done. Full undo/redo.
  • 🔇 Silence auto-trim — strip dead air across the whole episode in one click, no hunting for gaps.
  • ▶️ Preview instantly — the player skips your cuts live, no re-encoding, with a zoomable waveform for frame-precise selections.
  • 💬 Caption burn-in — generate captions from your transcript and burn them straight into the video. The kind of subtitle feature other editors put behind a subscription.
  • 📤 Export anything — cut video (MP4), audio-only podcast (M4A/MP3), or captions as a standalone SRT file. Audio sources export audio and captions — no fake video track.

No lock-in, no hidden database, no cloud.

Beta / personal tool. Poddie was built for one person's podcast workflow and runs on macOS only. Expect rough edges, and see Known limitations before relying on it.


Requirements

Requirement Notes
macOS (Apple Silicon or Intel) Distributed as a universal build. Uses h264_videotoolbox with a libx264 software fallback, and probes both Homebrew prefixes (/opt/homebrew on Apple Silicon, /usr/local on Intel). Best-tested on Apple Silicon.
Node.js 22+ and npm To run or build from source.
ffmpeg brew install ffmpeg-full recommended — the standard ffmpeg bottle works but lacks libass, so caption burn-in is disabled (SRT export still works).
whisper.cpp (optional) brew install whisper-cpp — only needed for the free local transcription engine. Without it, the OpenAI API engine still works.
OpenAI API key (optional) Only needed for the API transcription engine. Set OPENAI_API_KEY, or enter it once in the app.

Poddie shells out to system ffmpeg/ffprobe/whisper-cli (it does not bundle them), preferring the ffmpeg-full keg (either Homebrew prefix), then /opt/homebrew/bin/usr/local/binPATH, health-checking each. Override with PODDIE_FFMPEG, PODDIE_FFPROBE, or PODDIE_WHISPER_CLI.


Install & run from source

git clone https://github.com/SinanTang/poddie.git
cd poddie
npm install
npm run dev

Optionally create a .env in the repo root so the app picks up your API key in dev:

OPENAI_API_KEY=sk-...

Build a distributable app

npm run dist:dir   # unpacked universal Poddie.app in dist/mac-universal/ (try this first)
npm run dist       # a universal .dmg in dist/

The build is ad-hoc signed, not notarized. The first time you open it, macOS Gatekeeper will warn about an "unidentified developer" — right-click the app → Open, then confirm, and it launches normally from then on.


How to use

  1. Open Media… — pick a video (.mov/.mp4/.m4v) or audio file (.m4a/.mp3/.wav/.flac/.ogg/.opus/.aac). iPhone HEVC is auto-converted to an H.264 preview proxy, and audio Chromium can't play (e.g. ALAC) to an AAC one — your original is untouched and is what gets exported.
  2. Choose how to transcribe in the header — Local model (free, private, no key) or OpenAI API (paste your key). Local's first run downloads a ~1.6 GB Whisper model once. You'll see a cost/time estimate and confirm.
  3. Edit — click a word to seek; drag or shift-click to select, then to cut (press again on a fully-cut selection to restore). Double-click a word to fix its text. Use ✂ Trim silences to bulk-remove dead air.
  4. Preview — the player skips your cuts live. Zoom the waveform for precise selections.
  5. Export the cut video, audio-only, or captions. (Audio sources offer audio and captions only.)

Keyboard: Space play/pause · / ±3s · ⌘F search · ⌘Z/⇧⌘Z undo/redo.


Where your files live

  • Your edits are saved as a sidecar next to the source video: <video>.poddie.json (API engine) and <video>.poddie.local.json (local engine). Each engine keeps its own file, so switching engines swaps transcript + edits without losing either. These files are plain JSON — readable, diffable, no hidden database.
  • App data (preview proxies, waveform peaks, extracted audio, downloaded Whisper models, logs, and your saved API key) lives in ~/Library/Application Support/poddie/.

Two things to know:

  • Keep the video where it is. The sidecar is tied to the video's path — move or rename the video and its project file is orphaned. If you move the video, move its .poddie*.json files alongside it.
  • The video's folder must be writable for edits to save. A video opened from a read-only location (mounted DMG, locked SD card) will transcribe but fail to save a project.

Contributing

Poddie is an Electron + Vite + React + TypeScript app. Main process (Node/ffmpeg/fs), preload bridge, and renderer (React UI) live under src/.

npm run dev        # run in development (hot reload)
npm test           # unit tests (Vitest)
npm run typecheck  # tsc --noEmit
npm run lint       # eslint
  • Architecture & conventions: CLAUDE.md explains the core edit model (non-destructive EditItem / keptRanges), the media-serving approach, and the packaging gotchas.
  • Design decisions & history: docs/development/ records every architecture decision.
  • Keep business logic as pure, unit-tested functions (see src/shared/).

Please open an issue to discuss substantial changes before a PR.


Known limitations

  • macOS only. Universal build runs on Apple Silicon and Intel; no Windows/Linux. Best-tested on Apple Silicon.
  • Depends on Homebrew toolsffmpeg/whisper-cli are not bundled; other users must install them (see Requirements).
  • Tuned for iPhone H.264/HEVC recordings; exotic codecs are untested.

License

Poddie is licensed under the GNU General Public License v3.0 or later. See LICENSE for the full license text.

Releases

Packages

Contributors

Languages