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 |
Metadata
Release files for eidos-podcast 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| eidos_podcast-0.3.0.tar.gz | 8.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eidos_podcast-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.1 kB
Release files / eidos_podcast-0.3.0.tar.gz
| Download URL | eidos_podcast-0.3.0.tar.gz |
|---|---|
| Size | 8.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
34ed0c79674f89309e842eae3691cb733ed19783a898932e315300a24b9bbd12
|
|
BLAKE2b-256 checksum How to use checksums |
9bb2dd048ff8358e463073f5ab8b32f891f52c9e1578b21c4f635ba5a3c56a9d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / eidos_podcast-0.3.0-py3-none-any.whl
| Download URL | eidos_podcast-0.3.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad76f55224aa7e62cafe80f101187a81295040d18aeeac459c511beb15ea1272
|
|
BLAKE2b-256 checksum How to use checksums |
51f2f69b7ea90dbd171faf322d66bedde0d1184c0a35bae5558a15d8da4a3536
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Security for eidos-podcast 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.