NotebookLM-style two-host podcasts — free, no API key (claude -p + edge/kokoro/dia)
Project description
eidos-podcast
NotebookLM-style two-host podcasts from any text — free and fixed-cost.
content ──► claude -p ──► 2-host dialogue ──► TTS engine ──► audio
(subscription, (ALEX + JORDAN) edge → .mp3
no API key) kokoro → .wav
No paid APIs anywhere. The script is written by claude -p (your Claude
subscription — fixed cost, no token bill, no key). The voices are Microsoft
Edge neural TTS via edge-tts (free, no key). That's the whole pitch vs.
Podcastfy and the other podcast MCPs, which route the script and/or the audio
through paid APIs.
Install
uv tool install . # gives `eidos-podcast` + `eidos-podcast-mcp`
Requires claude CLI on PATH (Claude Code).
CLI
eidos-podcast "any text you want explained" # text as arg
eidos-podcast --file notes.md -o show.mp3 # from a file
pbpaste | eidos-podcast # from stdin
eidos-podcast --file paper.md --turns 20 # longer show
eidos-podcast --file notes.md --engine kokoro # more expressive, local
Engines
--engine |
Voices | Output | Speed | When |
|---|---|---|---|---|
edge (default) |
MS Edge neural | .mp3 |
instant | quick, networked, good enough |
kokoro |
Kokoro-82M local | .wav |
fast | offline, more natural prosody |
dia |
Dia 1.6B local (MLX) | .wav |
~2× real-time | the keeper: two speakers + real laughs/overlap in one pass |
All three are free, no API key. edge networks to Microsoft; kokoro and dia
run fully local.
kokoro needs two model files in ~/.cache/eidos-podcast/
(kokoro-v1.0.onnx, voices-v1.0.bin) from the
kokoro-onnx releases.
dia needs mlx-audio (Apple Silicon only):
uv tool install mlx-audio --with misaki --prerelease=allow. It generates both
speakers together — real nonverbals and overlap that edge/kokoro can't do —
auto-chunking long scripts. Voices can drift slightly at chunk seams (upgrade
path: a fixed audio-prompt seed to pin S1/S2).
MCP
Register the server with Claude Code:
claude mcp add eidos-podcast eidos-podcast-mcp
Then ask Claude to "make a podcast from this." Exposes one tool:
create_podcast(content, out_path?, turns?) -> mp3 path.
Tuning
- Voices: edit
HOSTSineidos_podcast.py(edge-tts --list-voicesfor options). - "Compelling": the entire quality lever is
SCRIPT_PROMPTineidos_podcast.py— cold opens, host disagreement, concrete examples, callbacks.
Files
| File | What |
|---|---|
eidos_podcast.py |
Core: script generation + TTS render |
cli.py |
eidos-podcast CLI |
server.py |
eidos-podcast-mcp FastMCP server |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eidos_podcast-0.3.0.tar.gz.
File metadata
- Download URL: eidos_podcast-0.3.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34ed0c79674f89309e842eae3691cb733ed19783a898932e315300a24b9bbd12
|
|
| MD5 |
3ee6f194ab10475b73fe68002a2ec858
|
|
| BLAKE2b-256 |
9bb2dd048ff8358e463073f5ab8b32f891f52c9e1578b21c4f635ba5a3c56a9d
|
File details
Details for the file eidos_podcast-0.3.0-py3-none-any.whl.
File metadata
- Download URL: eidos_podcast-0.3.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad76f55224aa7e62cafe80f101187a81295040d18aeeac459c511beb15ea1272
|
|
| MD5 |
244fe1799e2b40dee37bbdbf3d143123
|
|
| BLAKE2b-256 |
51f2f69b7ea90dbd171faf322d66bedde0d1184c0a35bae5558a15d8da4a3536
|