Skip to main content

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 HOSTS in eidos_podcast.py (edge-tts --list-voices for options).
  • "Compelling": the entire quality lever is SCRIPT_PROMPT in eidos_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eidos_podcast-0.3.0.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eidos_podcast-0.3.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

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

Hashes for eidos_podcast-0.3.0.tar.gz
Algorithm Hash digest
SHA256 34ed0c79674f89309e842eae3691cb733ed19783a898932e315300a24b9bbd12
MD5 3ee6f194ab10475b73fe68002a2ec858
BLAKE2b-256 9bb2dd048ff8358e463073f5ab8b32f891f52c9e1578b21c4f635ba5a3c56a9d

See more details on using hashes here.

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

Hashes for eidos_podcast-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ad76f55224aa7e62cafe80f101187a81295040d18aeeac459c511beb15ea1272
MD5 244fe1799e2b40dee37bbdbf3d143123
BLAKE2b-256 51f2f69b7ea90dbd171faf322d66bedde0d1184c0a35bae5558a15d8da4a3536

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page