Metadata-Version: 2.4
Name: cast2md
Version: 2026.5.0rc1
Summary: Podcast transcription service - download episodes via RSS and transcribe with Whisper
Author: cast2md
License: MIT
Project-URL: Homepage, https://cast2md.meltforce.org
Project-URL: Repository, https://codeberg.org/meltforce/cast2md
Project-URL: Issues, https://codeberg.org/meltforce/cast2md/issues
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: feedparser>=6.0.0
Requires-Dist: httpx[socks]>=0.26.0
Requires-Dist: faster-whisper>=1.0.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: click>=8.1.0
Requires-Dist: fastapi>=0.109.0
Requires-Dist: uvicorn[standard]>=0.27.0
Requires-Dist: jinja2>=3.1.0
Requires-Dist: apscheduler>=3.10.0
Requires-Dist: bleach>=6.0
Requires-Dist: mcp[cli]>=1.2.0
Requires-Dist: sentence-transformers>=2.2.0
Requires-Dist: psycopg2-binary>=2.9.0
Requires-Dist: pgvector>=0.2.0
Requires-Dist: runpod>=1.6.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: zensical>=1.0.0; extra == "dev"
Provides-Extra: mlx
Requires-Dist: mlx-whisper>=0.4.0; extra == "mlx"
Provides-Extra: node
Requires-Dist: httpx[socks]>=0.26.0; extra == "node"
Requires-Dist: faster-whisper>=1.0.0; extra == "node"
Requires-Dist: pydantic-settings>=2.0.0; extra == "node"
Requires-Dist: python-dotenv>=1.0.0; extra == "node"
Requires-Dist: click>=8.1.0; extra == "node"
Requires-Dist: fastapi>=0.109.0; extra == "node"
Requires-Dist: uvicorn[standard]>=0.27.0; extra == "node"
Requires-Dist: jinja2>=3.1.0; extra == "node"
Provides-Extra: node-mlx
Requires-Dist: mlx-whisper>=0.4.0; extra == "node-mlx"
Dynamic: license-file

# cast2md

Podcast transcription service -- download episodes via RSS and transcribe with Whisper. Automatically fetches publisher-provided transcripts (Podcasting 2.0) or Pocket Casts auto-generated transcripts before falling back to local transcription.

> **Note**: This is a personal project under active development. I'm sharing it in case others find it useful, but I'm not currently providing support or reviewing pull requests.

<!-- Screenshot placeholder -->

## Features

- **Transcript-first workflow** -- fetches external transcripts from Podcasting 2.0 tags and Pocket Casts before downloading audio
- **Whisper transcription** -- local transcription with faster-whisper or mlx-whisper (CPU, CUDA, Apple Silicon)
- **Distributed transcription** -- use remote machines (M4 Macs, GPU PCs) or RunPod GPU pods to transcribe in parallel
- **Hybrid search** -- full-text and semantic search across episode metadata and transcript content (pgvector)
- **Web UI, CLI, REST API** -- manage feeds, view episodes, search transcripts, monitor processing
- **MCP server** -- Claude integration via Model Context Protocol

## Quick Start

```bash
git clone https://codeberg.org/meltforce/cast2md.git
cd cast2md
cp .env.example .env
# Edit .env -- set POSTGRES_PASSWORD at minimum
docker compose up -d
```

Open `http://localhost:8000` to access the web UI.

## Documentation

Full documentation is available at **[meltforce.org/cast2md](https://meltforce.org/cast2md)**.

| Section | Description |
|---------|-------------|
| [Getting Started](https://meltforce.org/cast2md/getting-started/) | Architecture and key concepts |
| [Installation](https://meltforce.org/cast2md/installation/) | Docker, manual install, transcriber nodes |
| [Configuration](https://meltforce.org/cast2md/configuration/) | Environment variables, Whisper models |
| [Usage](https://meltforce.org/cast2md/usage/) | Web UI, CLI, REST API, MCP server |
| [Distributed Transcription](https://meltforce.org/cast2md/distributed/) | Multi-machine setup, RunPod GPU workers |
| [Deployment](https://meltforce.org/cast2md/deployment/) | Production deployment, server sizing |

## License

MIT

---

_This project moved from GitHub to [codeberg.org/meltforce/cast2md](https://codeberg.org/meltforce/cast2md). Please update bookmarks and pull URLs._

