GenPod 是一个基于 ChatTTS 的播客自动化生成方案。它能够将 Markdown 脚本一键转化为包含欢迎语、主体音频和背景音乐的完整播客项目,并自动生成符合标准的 RSS Feed。
- 🚀 统一 CLI:一个
genpod命令集成初始化、构建、海选、RSS 生成全流程。 - 📦 脚手架支持:
genpod init一键生成标准化播客项目目录。 - 🎙️ 播音海选:
genpod audition随机生成语音样本,助您快速挑选最合适的 Seed。 - ⚡ 增量构建:基于文本哈希的音频缓存系统,修改脚本后仅重新生成变化的段落。
- 📝 智能分段:自动处理长文本,确保每一段音频都在 ChatTTS 的最佳表现长度内。
- 📡 自动 RSS:根据已完成的节目自动生成带时长、大小和 Meta 信息的播客订阅源。
- ⚙️ 层级配置:支持 全局 (
~/.genpod.toml) -> 项目 -> 节目的三级配置覆盖。 - 🛡️ 生产安全:支持 Atomic Write(原子写入)防止文件损坏,以及 Merge Validation(合并校验)防止段落缺失。
- 💻 开发友好:内置
ruff代码检查与pytest自动化测试,提供 Pre-commit Hook 保障代码质量。
# 克隆仓库
git clone https://github.com/your-repo/GenPod.git
cd GenPod
# 使用 uv 安装环境(推荐)
uv sync
# 安装成功后即可使用 genpod 命令
genpod --help注意:首次运行需要下载约 1GB 的 ChatTTS 模型文件。
genpod init my_podcast
cd my_podcast# 生成 5 个随机试音样本到 workspace/audition
genpod audition -n 5听完样本后,将喜欢的种子填入项目根目录的 genpod.toml 中的 voice_seed。
在 workspace/input/20260130/(以日期命名)下创建 script.md。
# 为 20260130 这期构建播客
# 使用 -w 指定当前项目为工作空间
# 使用 -n 显式指定节目名称(输出目录名),防止输入路径导致的命名混乱
genpod build 20260130 -w . -v
# 或者:genpod build input_folder -n 20260130生成的成品将保存在 workspace/output/20260130/。
genpod rss .生成的 RSS 文件位于 website/rss/feed.xml。
my_podcast/
├── genpod.toml # 项目级配置文件
├── assets/ # 音频素材
│ ├── bgm/ # 背景音乐
│ ├── welcome/ # 片头
│ └── outro/ # 片尾
├── episodes/ # 已归档节目 (.md + .wav)
├── website/ # 网站资源与 RSS
├── workspace/ # 生产车间 (已加入 .gitignore)
│ ├── input/ # 待处理脚本
│ └── output/ # 构建中间件与成品
└── scripts/ # 维护脚本
GenPod 采用层级配置系统,支持三级覆盖:~/.genpod.toml (全局) > 项目根目录 > 节目目录。
| 参数 | 说明 | 示例 |
|---|---|---|
voice_seed |
音色种子。决定播音员的声音。 | 2222 |
podcast_link |
播客主页。重要!用于拼接音频和图片的完整下载链接。 | https://name.github.io/pod |
podcast_audio_url_prefix |
音频托管前缀。若音频不在 /audio 下,请修改此项。 |
https://cdn.com/mp3 |
welcome_audio |
片头音频路径。 | assets/welcome/intro.wav |
outro_bgm |
片尾音频路径。 | assets/bgm/music.mp3 |
GenPod 的目录结构原生支持 GitHub Pages。
确保你的目录如下:
website/rss/feed.xml(RSS 源)website/audio/(音频文件,可通过软链接或直接存放)website/images/(封面图)
podcast_link = "https://<你的用户名>.github.io/<仓库名>"
# 这样 RSS 里的音频链接会自动变为 https://<用户名>.github.io/<仓库名>/audio/xxx.wav进入仓库 Settings -> Pages -> Build and deployment -> Branch 选择 main 分支,路径选择 /docs (或根目录,取决于你将 website 映射到哪)。
GenPod 使用 uv 进行包管理。
# 安装依赖(包括开发依赖 ruff, pytest)
uv sync项目内置了自动化测试脚本,会自动运行 Ruff 代码检查和 Pytest 单元测试。
./run_tests.sh建议启用 Git Pre-commit 钩子,确保每次提交前代码质量:
cp .git/hooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commitMIT License