Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

◆ PodForge Studio

Turn any podcast or video episode into a client-ready content pack — entirely on your own PC.

PodForge downloads an episode (or accepts a local audio/video file), transcribes it locally with OpenAI Whisper, gives you a review workspace where the transcript plays in sync with the audio, then assembles show notes, pull quotes, social posts, blog drafts and newsletter blurbs into one polished markdown bundle.

No cloud transcription. No API keys. No per-episode costs.


✨ Features

🔗 Paste a link YouTube, podcast feeds — anything yt-dlp supports
📎 Or upload a file mp3 · wav · m4a · mp4 · mkv · mov · webm (converted automatically)
🎙️ Local transcription faster-whisper runs on your GPU (CUDA) with CPU fallback
🎧 Synced review click any timestamp to jump the audio; the current row follows playback; every line is editable with autosave
🗂️ Project explorer folders, drag-and-drop moving, manual reordering, rename, delete
⏱️ Live progress real download % and transcription position ("7:42 / 13:32"), cancel anytime
📦 Batch queue multiple projects process sequentially in the background
🤖 Optional AI extras show notes + chapters, pull quotes, social posts (X/thread/LinkedIn/Instagram), SEO blog post, newsletter blurb — written by a local AI writer via OpenCode, fully editable before export
📤 One-click client bundle pick your sections → download a single markdown file ready to send

🚀 Quick start

Requirements

  • Python 3.10+ (python.org) — tick "Add to PATH" during install
  • ffmpeg on PATH (Windows builds here; brew install ffmpeg / apt install ffmpeg elsewhere)
  • An NVIDIA GPU is strongly recommended (any 6 GB+ card). CPU-only works but is ~4× slower.
  • Optional, for AI-written extras: the OpenCode CLI (npm i -g opencode-ai), which connects to free models out of the box

Install

git clone https://github.com/YOUR_USERNAME/podforge-studio.git
cd podforge-studio
pip install -r requirements.txt

faster-whisper will fetch its CUDA libraries automatically on first run. (On some setups you may need: uv pip install nvidia-cublas-cu12 nvidia-cudnn-cu12 into the same environment — the server registers their DLL directories itself.)

Run

python app/server.py

Open http://127.0.0.1:8555 (the port prints on startup).

Using OpenCode somewhere unusual? Point PodForge at it: PODFORGE_OPENCODE="C:/path/to/opencode.cmd" python app/server.py

First project

  1. Paste an episode link → choose a model → Process
  2. Watch the progress bar (download % → transcription position)
  3. Click the project to open the review workspace — play the audio, fix names/numbers inline
  4. Open Extras & export, generate what you need, edit the output
  5. Tick sections → Download bundle (.md) → send to your client

🎛️ Speech-to-text models

All models are local Whisper variants fetched automatically on first use.

Model Best for Rough speed*
Tiny quick scans, draft quality ~6 min per hour of audio
Base slightly better than Tiny ~9 min/hr
Small clear single-speaker audio ~18 min/hr
Medium most podcasts ~48 min/hr
Large-v3 ★ recommended best names/numbers/accents ~25–35 min/hr

* on a mid-range NVIDIA GPU (RTX 2080 class). CPU-only: multiply by ~4–5.

🤖 How the AI extras work

Extras are generated by the OpenCode CLI running on your machine. PodForge ships the prompts; OpenCode handles the model. By default it uses free models from OpenCode's gateway (big-pickle, grok-code, qwen3-coder, gpt-5-nano) — configure your own provider inside OpenCode if you prefer. You can change the model and customise every prompt in ⚙ Settings.

Nothing is sent anywhere by PodForge itself; there are no API keys in this codebase. Transcripts stay on your disk under data/episodes/<id>/.

If OpenCode isn't installed, everything else still works — extras just report an error when you try to generate them.

📖 Using it day-to-day

  • Duplicate protection — processing an existing episode asks before redoing it; your reviewed corrections are backed up first
  • Folders & ordering — create folders, drag projects into them, drag a project onto another to reorder; order persists
  • Rename — click any project title
  • Cancel — running jobs can be cancelled mid-download or mid-transcription
  • Remote access — bind to 0.0.0.0 in app/server.py and reach it from your phone/tablet on the same network. Add authentication before exposing it beyond your LAN.

Where files live

data/
├── episodes/<video-id>/
│   ├── audio.mp3                  source audio
│   ├── meta.json                  title/channel/duration
│   ├── transcript.json            segments incl. your edits
│   ├── extras.json                generated add-ons
│   ├── pack.md / bundle.md        exports
│   └── state.json                 pipeline status
├── folders.json                   folder tree
├── order.json                     manual sort order
└── settings.json                  writer model, prompts, limits

🏗️ Architecture

Deliberately boring, on purpose:

app/server.py    stdlib HTTP server + pipeline (yt-dlp → ffmpeg → faster-whisper → writer)
app/www/         single-page vanilla JS/CSS front end (no build step)
data/            everything the app creates (gitignored)

No frameworks, no node_modules, no database. The writing stage is provider-neutral: swap opencode_write() for any LLM API without touching the rest of the pipeline.

🙏 Credits & licences

Built on open-source shoulders:

Respect copyright: only process content you have rights to use, and follow each platform's terms of service.

⚠️ Honest limitations

  • Transcription accuracy is excellent but not perfect — the human review pass is part of the workflow, not optional. Names, numbers and jargon deserve a listen-check before delivery.
  • Auto chapters are time-based heuristics; the LLM stage improves them when enabled.
  • One transcription job at a time (fine for a one-person service).
  • Windows is the primary development platform; macOS/Linux should work but are less tested.

📄 Licence

MIT — see LICENSE.

About

Turn any podcast or video episode into a client-ready content pack, entirely on your own PC: local Whisper transcription, synced review workspace, AI extras, one-click bundle export.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages