# Podcast Generator

> 生成自然真实的双人访谈播客，使用共享TTS模块支持3种引擎（Edge TTS / IndexTTS2 / MiniMax）和情感控制

- Skill: `huangserva/podcast-generator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add huangserva/podcast-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/huangserva/podcast-generator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: huangserva (https://skillmd.com/u/huangserva)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/huangserva/podcast-generator

---


# 播客脚本生成规范

## 脚本格式（重要！）

**必须使用此格式**：`角色|情感|文本`

```
晓晓|cheerful|欢迎来到《历史不装》，我是晓晓。
云扬|calm|我是云扬。
晓晓|chat|今天咱们聊聊楚汉争霸。云扬你先说说，很多人觉得刘邦就是人多欺负人少，你怎么看？
云扬|serious|这话听着就不对。你知道吗，这场战争其实是17打1。
```

## 情感标签（核心！）

| 标签 | 含义 | 典型场景 | 典型句式 |
|-----|------|---------|---------|
| `cheerful` | 开心、愉快 | 赞同、有趣发现、成功 | "哈哈"、"太好了"、"没错"、"哦！" |
| `chat` | 日常聊天 | 普通对话、过渡 | "今天咱们聊聊"、"然后呢" |
| `calm` | 平静、沉稳 | 解释、陈述事实 | "简单来说"、"其实"、"原理是" |
| `serious` | 严肃、认真 | 强调重点、分析 | "关键是"、"核心在于"、"你知道吗" |
| `gentle` | 温柔、轻声 | 安慰、共情 | "没关系"、"慢慢来" |
| `fearful` | 惊讶、担忧 | 意外信息、震惊 | "真的吗？"、"这也太..."、"不会吧" |
| `sad` | 悲伤、低落 | 描述问题、痛点 | "惨啊"、"太难了"、"没办法" |
| `angry` | 愤怒、不满 | 批评、吐槽 | "太过分了"、"想得美"、"简直离谱" |
| `disgruntled` | 不满、吐槽 | 轻度抱怨 | "霸气是霸气，但..."、"够狠" |

## 角色设定

- **晓晓**：好奇的提问者，代表听众视角
  - 多用：`cheerful`、`chat`、`fearful`
  - 偶尔：`sad`（共鸣痛点）、`disgruntled`（吐槽）
  
- **云扬**：专业的解答者，用通俗语言讲解
  - 多用：`calm`、`serious`、`chat`、`cheerful`
  - 偶尔：`angry`（强调）、`sad`（描述惨状）

## 对话风格

### 必须做到
1. **口语化**：像朋友聊天，不像念稿
2. **短句为主**：每句不超过30字
3. **连续表达**：同一角色连续说2-4句再换人（重要！）
4. **完整观点**：每次发言要表达完整的想法，不要一句话就换人
5. **生活类比**：复杂概念必须配类比

### 对话节奏规则（核心！）
- ❌ **错误**：A说1句 → B说1句 → A说1句（太碎片）
- ✅ **正确**：A连续说2-3句完整表达 → B回应并展开2-3句 → A再接着说

**示例对比**：

❌ 错误（太碎）：
```
晓晓|chat|项羽分封了吗？
云扬|calm|分了。
晓晓|chat|分了多少？
云扬|calm|18个王。
```

✅ 正确（连贯）：
```
晓晓|chat|项羽火烧咸阳之后干了啥？分封诸侯了吗？
云扬|calm|对，分封诸侯。一共分了18个王。不过分得太随意了，你猜刘邦分到哪儿了？
晓晓|fearful|关中？他功劳最大嘛。
云扬|angry|想得美！巴蜀，秦朝流放犯人的地方。关中被一分为三，全给了秦国降将。刘邦当场差点吐血，拎着剑要去找项羽拼命。
```

### 晓晓的表达模式
- 提问："这是什么意思？"、"为什么会这样？"
- 反应："哦！"、"哇，原来是这样"、"有意思！"
- 追问："那具体怎么做呢？"、"能举个例子吗？"
- 惊讶："真的吗？"、"这也太厉害了吧"、"不会吧..."

### 云扬的表达模式
- 开场："说实话..."、"坦白讲..."、"不瞒你说..."
- 解释："简单来说就是..."、"你可以理解成..."
- 类比："就像...一样"、"好比..."、"这就跟...差不多"
- 强调："关键是..."、"最重要的是..."、"核心在于..."
- 举例："比如说..."、"举个例子..."、"你想啊..."

### 必须使用的转折和互动词

#### 转折词（增强对话流畅度）
- **轻转折**：不过、但是、可是、只是
- **强转折**：话说回来、反过来说、换个角度看
- **递进**：而且、更重要的是、关键是
- **对比**：相比之下、反而、恰恰相反

#### 回应词（增强互动感）
- **认同**：对对对、没错、确实、就是这样、你说得对
- **惊讶**：真的假的、不会吧、这么夸张、我去
- **理解**：懂了、明白了、原来如此、怪不得
- **追问**：然后呢、接着说、具体点、比如呢

#### 承接词（让对话连贯）
- **顺承**：那么、所以、这样一来、因此
- **举例**：比如说、就拿...来说、你看啊
- **总结**：说白了、简单讲、一句话
- **引入**：说到这个、提到...、讲起...

#### 互动提示（拉近距离）
- **征询**：你说是不是、对吧、你觉得呢、你懂我意思吧
- **共鸣**：咱们都知道、大家都经历过、谁没遇到过
- **反问**：你猜怎么着、你信不信、知道为什么吗

### 禁止使用
- ❌ "首先、其次、最后"
- ❌ "值得注意的是"、"需要指出的是"
- ❌ 破折号（用逗号或句号代替）
- ❌ "该"、"此"、"其"等文言词
- ❌ 连续超过3句没有互动
- ❌ 单句超过40字
- ❌ 学术腔和官方腔

## 完整示例（优化版）

```
【访谈式播客-带情感】楚汉争霸：刘邦凭什么赢？

晓晓|cheerful|欢迎来到《历史不装》，我是晓晓。
云扬|calm|我是云扬。
晓晓|chat|今天咱们聊聊楚汉争霸。云扬你先说说，很多人觉得刘邦就是人多欺负人少，你怎么看？
云扬|serious|这话听着就不对。你知道吗，这场战争其实是17打1。
晓晓|fearful|17打1？不是刘邦和项羽两个人吗？
云扬|chat|表面上是，但你得把彭越、英布、陈平、张良、萧何、韩信这帮人全算上。少了哪一个，刘邦都得完蛋。
晓晓|cheerful|哦！所以项羽是在跟整个天下对抗？
云扬|serious|对对对，可以这么说。但就是这样一场看似一边倒的战争，打得那叫一个精彩。

【第一章：项羽埋雷】
晓晓|chat|那咱们从项羽分封说起吧。项羽火烧咸阳之后干了啥？
云扬|calm|分封诸侯啊。一共分了18个王。
晓晓|cheerful|听起来挺霸气的。
云扬|disgruntled|霸气是霸气，不过分得太随意了。你猜刘邦分到哪儿了？
晓晓|gentle|关中？他功劳最大嘛。
云扬|angry|想得美。巴蜀！秦朝流放犯人的地方。关中被一分为三，全给了秦国降将。
晓晓|fearful|这也太欺负人了吧？
云扬|serious|可不是嘛。刘邦当场差点吐血，拎着剑要去找项羽拼命。还好萧何拉住他：苟着总比死了强，对吧？
晓晓|disgruntled|所以项羽这是在给自己埋雷？
云扬|cheerful|没错！这些雷很快就炸了。
```

**改进点**：
- ✅ 增加回应词："对对对"、"可不是嘛"、"没错"
- ✅ 增加转折词："不过"、"但"
- ✅ 增加承接词："那"、"所以"
- ✅ 增加互动提示："对吧"、"你猜"
- ✅ 让对话更像真实聊天，而不是一问一答

## 情感标注原则

1. **每句必标**：不要偷懒，每句话都要思考说话人的情感状态
2. **符合语境**：根据说的内容决定情感，不是随便标
3. **自然过渡**：情感变化要合理，不要跳跃太大
4. **chat是默认**：普通对话用chat，有明显情感才用其他

## 声音配置

### 参考音频位置
- 女声：`workspace/voice_female.wav`（真人录音优先）
- 男声：`workspace/voice_male.wav`（真人录音优先）

### IndexTTS2参数
- emo_weight: 情感强度（0-1，默认0.65）
- temperature: 随机性（0.1-2.0，默认0.8）

## 使用方式

### 生成脚本
```
请根据以下内容生成双人访谈播客脚本：
[粘贴文章内容]

要求：
1. 使用 角色|情感|文本 格式
2. 遵循SKILL.md中的对话规范和情感标签
3. 晓晓提问，云扬解答
4. 口语化，有互动感
5. 每段不超过40字
```

### 生成音频
```bash
python skill.py workspace/脚本.txt --tts-engine indextts2 -o 播客.mp3
```


