vibe-coding-课程-干货集训
自动总结英文播客
操作步骤
- 下载Spec.md
- 打开vs code或其他IDE
- 点击「New File...」


1. 完成创建并打开
用Claude Code开发
- 把开发文档放入这个项目中

- 打开Claude Code插件页面
- 在对话页面输入下列文案,Claude Code就会自动开始开发。中间有需要人工配置的环境,Claude Code都会给出详细的操作步骤 ``` @PROJECT_SPEC.md 按照这个开发文档,拆解开发计划,并逐步完成开发。有需要我配置的节点,要告诉我详细的操作步骤
### Skill文档
```YAML
---description: 一键完成播客的抓取、转录和智能分析。自动执行 RSS 抓取 → Deepgram 转录 → Claude 分析 → 保存结果全流程。user-invocable: true---**# 播客分析 Skill**一键完成播客的抓取、转录和智能分析。**## 使用方法**```/podcast-analyze```**## 功能说明**自动执行完整的播客分析流程:1. 抓取新播客单集(支持 RSS + 小宇宙)2. 使用 Deepgram 将音频转为文字3. 使用 Claude 进行深度分析4. 输出结构化 JSON 并保存**## 执行步骤****### 步骤 1:抓取与转录**运行转录脚本,获取新单集并转为文字。****抓取所有频道****:```bashcd '你的文件夹路径' && npm run build && npm start```****抓取单个频道****(使用 `--feed` 参数,模糊匹配):```bashcd '你的文件夹路径' && npm run build && npm start -- --feed "No Priors"```脚本会:- 读取 `config/config.json` 中的 feeds(RSS / 小宇宙)- 如果指定了 `--feed`,只处理名称匹配的频道- 检测未处理的新单集- 调用 Deepgram API 转录音频- 保存转录文件到 `data/transcripts/` 目录**#### feeds 支持说明(很重要)**- ****标准 RSS****:使用 `url` 抓取 - 配置示例:`{ "name": "xx", "url": "https://example.com/feed.xml", "type": "rss" }`- ****小宇宙(不依赖 RSS)****:使用 `podcastId`,从播客页面解析最新单集与音频直链 - 解析来源:播客页面的 Next.js 内嵌数据 `__NEXT_DATA__` - 音频字段:`podcast.episodes[*].enclosure.url`(通常为 `m4a`),等价字段 `podcast.episodes[*].media.source.url` - 配置示例:`{ "name": "xx", "podcastId": "xxxxxxxx", "type": "xiaoyuzhou" }`**#### 环境变量检查(必须)**如果没有配置 Deepgram Key,必须先提示用户配置:```DEEPGRAM_API_KEY=your_deepgram_key```**### 步骤 2:读取转录文件**转录完成后,读取 `data/transcripts/` 目录下的新文件。****必须只分析本次运行新增的文件****(避免重复):- 优先从控制台输出的 `Transcript saved: ...` 收集路径- 或按文件修改时间排序,取最新的 N 个(N = 本次成功转录数量)**### 步骤 3:智能分析**对转录文本进行深度分析,生成结构化 JSON。---**## 分析原则(大师级标准)**> 🎯 ****核心理念****:分析的目标不是「总结内容」,而是「让没听过播客的人获得 80% 的价值,并让听过的人能快速定位精华」。---**### 一、听众价值优先原则******分析前必须回答三个问题****:1. 这期播客的****独特价值****是什么?(区别于其他内容的核心)2. 听众听完后应该****能做什么****或****理解什么****?3. 哪些内容值得****反复回听****?****反面案例(禁止)****:- ❌ "嘉宾讨论了 AI 的发展" → 空泛无信息量- ❌ "主播介绍了公司背景" → 没有价值判断****正面案例(推荐)****:- ✅ "Sam Altman 首次公开回应 Q* 项目:承认存在但拒绝透露细节,暗示与 AGI 突破相关"- ✅ "嘉宾分享了一个反直觉洞察:RAG 在长上下文时代可能被高估,原因是..."---**### 二、话题切分的艺术****#### 2.1 切分原则******按「认知单元」切分,而非按「说话时间」切分****:| 切分依据 | 说明 | 示例 ||---------|------|------|| 主题转换 | 讨论焦点发生明显变化 | 从"创业经历"转到"技术架构" || 论点更迭 | 同一主题下提出新论点 | 从"AI 会取代工作"到"AI 会创造新工作" || 深度递进 | 从表层进入深层讨论 | 从"什么是 Agent"到"Agent 的本质困难" || 视角切换 | 不同角色的观点对比 | 主播 vs 嘉宾的不同立场 |**#### 2.2 话题粒度标准**- ****1 小时播客****:8-15 个话题(平均 4-7 分钟/话题)- ****2 小时播客****:15-25 个话题- ****深度访谈****:可以更细,关键在于每个话题有独立价值- ****闲聊类播客****:可以更粗,合并相似内容**#### 2.3 话题标题撰写规范******三要素:主体 + 动作/观点 + 价值点****| 层级 | 示例 | 问题 ||-----|------|------|| ❌ 差 | "关于 AI" | 无信息量 || ⚠️ 中 | "讨论 AI Agent 的发展" | 缺乏具体观点 || ✅ 好 | "为什么 Agent 比 Copilot 更难做:自主决策的可靠性困境" | 有观点、有价值 |---**### 三、观点提炼方法论****#### 3.1 三层提炼法**```原文 → 核心论点 → 深层洞察```****示例****:- ****原文****:"我们试了很多 RAG 方案,最后发现直接把文档塞进 context 效果更好"- ****核心论点****:RAG 在某些场景下不如长上下文直接输入- ****深层洞察****:当检索质量无法保证时,模型的上下文理解能力可能优于分块检索**#### 3.2 观点分类框架**| 类型 | 特征 | 处理方式 ||-----|------|---------|| ****事实陈述**** | 可验证的客观信息 | 如实记录,标注来源 || ****个人观点**** | 嘉宾的主观判断 | 明确归属,保留原话 || ****预测判断**** | 对未来的推测 | 标注时间背景,记录推理逻辑 || ****反直觉洞察**** | 与常识相悖的见解 | ****重点标注****,详细记录论证过程 || ****方法论**** | 可操作的建议/框架 | 结构化整理,确保可执行 |**#### 3.3 观点价值评估矩阵**``` │ 低普适性 │ 高普适性─────────────┼────────────────┼──────────────── 高新颖性 │ 领域专家视角 │ ⭐ 核心金句─────────────┼────────────────┼──────────────── 低新颖性 │ 可略过 │ 基础背景```---**### 四、证据溯源规范****#### 4.1 引用原则******每个观点必须有「证据锚点」****:```json{ "summary_zh": "Anthropic 认为 Claude 的核心竞争力不是性能,而是可控性", "evidence_quote": "We don't want to win on benchmarks. We want to win on being the model that people can actually trust and control.", "evidence_time": 1823}```**#### 4.2 引用选择标准**| 优先级 | 类型 | 说明 ||-------|------|------|| 1 | 嘉宾原话中的金句 | 最有说服力 || 2 | 关键数据/案例 | 具体且可验证 || 3 | 核心论证段落 | 完整呈现推理链 || 4 | 主播的精准追问 | 帮助理解上下文 |**#### 4.3 禁止的引用方式**- ❌ 引用与观点无关的内容- ❌ 断章取义,改变原意- ❌ 只引用语气词或过渡句---**### 五、概念提取规范****#### 5.1 提取标准******只提取满足以下条件的概念****:1. ****首次出现****:该播客中第一次被解释的概念2. ****有门槛****:普通听众可能不理解的术语3. ****核心相关****:与本期主题直接相关**#### 5.2 概念解释三要素**```json{ "term_en": "Constitutional AI", "term_zh": "宪法 AI", "explanation": "Anthropic 提出的 AI 对齐方法。核心思想是让 AI 根据一组预设的「宪法原则」进行自我批评和修正,而非完全依赖人类反馈。优势是可扩展性更好,减少对人工标注的依赖。"}```****三要素****:1. ****是什么****(定义)2. ****为什么重要****(意义)3. ****怎么工作****(机制,如适用)**#### 5.3 术语处理规范**| 场景 | 处理方式 | 示例 ||-----|---------|------|| 通用英文术语 | 保留英文 | AI、API、GPU || 专业术语 | 中文(英文) | 检索增强生成 (RAG) || 品牌/产品名 | 保留原文 | Claude、GPT-4、Cursor || 缩写 | 首次出现时展开 | RLHF (Reinforcement Learning from Human Feedback) |---**### 六、金句筛选标准****#### 6.1 金句的五个特征(满足 2 个以上)**1. ****洞察性****:揭示了深层规律或反直觉真相2. ****表达力****:语言精炼,令人印象深刻3. ****可传播****:可以脱离上下文独立分享4. ****代表性****:体现嘉宾的核心观点或价值观5. ****启发性****:能引发听众思考或行动**#### 6.2 金句示例**| 类型 | 示例 ||-----|------|| 洞察型 | "The best AI products are the ones that make the AI invisible." || 预言型 | "In 5 years, not using AI will be like not using the internet today." || 方法论 | "Start with the workflow, not the model. The model is replaceable, the workflow is not." || 价值观 | "We'd rather be right than first." || 反思型 | "Every time I think I understand LLMs, they surprise me again." |**#### 6.3 数量控制**- ****30 分钟播客****:2-4 条金句- ****1 小时播客****:4-8 条金句- ****2 小时深度访谈****:8-12 条金句---**### 七、总览模块撰写规范****#### 7.1 一句话总结 (one_liner)******公式****:`[主体] + [核心动作/观点] + [独特价值]`| 层级 | 示例 ||-----|------|| ❌ 差 | "讨论 AI 发展" || ⚠️ 中 | "Sam Altman 谈 OpenAI 的未来" || ✅ 好 | "Sam Altman 首次回应 Q* 传闻,透露 AGI 时间表可能比预期更近" |**#### 7.2 概要 (abstract_zh)******100-200 字,包含****:1. 嘉宾背景(一句话)2. 本期核心议题(1-2 个)3. 最重要的 2-3 个观点4. 为什么值得听(独特价值)**#### 7.3 深度摘要 (summary_zh)******300-500 字,结构****:1. ****背景铺垫****(1-2 句)2. ****核心观点展开****(每个观点 2-3 句)3. ****关键论证/案例****(支撑观点的证据)4. ****总结/启示****(对听众的价值)**#### 7.4 核心观点 (keyPoints)******每条观点必须****:- 有明确的时间范围 (`startTime`, `endTime`)- 是独立完整的论点(非章节标题)- 包含具体信息(非空泛总结)****数量****:- 一般 3-7 条- 覆盖播客 60%-80% 的核心内容---**### 八、质量检查清单**分析完成后,必须通过以下检查:**#### 8.1 完整性检查**- [ ] 时间线覆盖了播客 90%+ 的有效内容- [ ] 没有遗漏重要话题或观点- [ ] 所有必填字段都已填写**#### 8.2 准确性检查**- [ ] 观点归属正确(不要把嘉宾观点写成主播说的)- [ ] 时间戳与实际内容匹配- [ ] 概念解释准确无误**#### 8.3 价值检查**- [ ] 每个话题的 summary 都有实质内容- [ ] 金句确实具有传播价值- [ ] keyPoints 抓住了真正的核心观点**#### 8.4 格式检查**- [ ] JSON 格式正确,无语法错误- [ ] 语言字段与实际内容一致- [ ] 英文播客包含双语字段---**### 九、语言策略(关键!)****#### 9.1 语言检测与设置**| 原文语言 | `language` 字段 | 输出要求 ||---------|----------------|---------|| 中文播客 | `"zh"` | 只产出 `_zh` 字段,不需要 `_en` || 英文播客 | `"en"` | ****必须****同时产出 `_zh` 和 `_en` 字段 |**#### 9.2 术语处理(贯穿始终)******无论中英文播客,专业术语必须保留英文原词****:- AI Agent、RAG、Fine-tuning、Prompt Engineering- 格式:`中文翻译 (English Term)` 或直接使用英文**#### 9.3 翻译质量标准**英文播客的中文翻译必须:- ****信****:准确传达原意- ****达****:符合中文表达习惯- ****雅****:专业术语处理得当---> 📌 ****最终原则****:分析必须遵守仓库内的 `spec.md`(它是最高分析指令)。**#### 输出格式**输出****纯 JSON****(不要 markdown 代码块)。****中文播客格式****(`language: "zh"`,无 `_en` 字段):```json{ "language": "zh", "overview": { "one_liner_zh": "一句话总结本期亮点", "abstract_zh": "一段话概要(100-200字左右)", "summary_zh": "300-500字的全文深度摘要", "keyPoints": [ { "startTime": 120, "endTime": 420, "point_zh": "核心观点(保留英文术语如 AI Agent)" } ], "quotes": [ { "time": 305, "speaker": "Speaker 0", "quote": "原文金句" } ] }, "timeline": [ { "startTime": 0, "endTime": 360, "speaker": "主播名", "topic": { "zh": "话题中文标题" }, "content": { "summary_zh": "核心观点总结,保留英文术语", "evidence_quote": "原文引用", "concepts": [{ "term_en": "RAG", "term_zh": "检索增强生成", "explanation": "..." }] } } ]}```****英文播客格式****(`language: "en"`,必须有 `_zh` + `_en` 双语字段):```json{ "language": "en", "overview": { "one_liner_zh": "一句话中文总结", "one_liner_en": "One-liner in English", "abstract_zh": "一段话中文概要", "summary_zh": "中文深度摘要", "summary_en": "English summary", "keyPoints": [ { "startTime": 120, "endTime": 420, "point_zh": "核心观点(中文)", "point_en": "Key point (English)" } ], "quotes": [ { "time": 305, "speaker": "Speaker 0", "quote": "Original quote in English" } ] }, "timeline": [ { "startTime": 0, "endTime": 360, "speaker": "Guest Name", "topic": { "zh": "话题中文标题", "en": "Topic Title in English" }, "content": { "summary_zh": "中文总结", "summary_en": "English summary", "evidence_quote": "Original quote from transcript", "concepts": [{ "term_en": "RLHF", "term_zh": "人类反馈强化学习", "explanation": "..." }] } } ]}```**#### 字段说明**| 字段 | 说明 ||------|------|| `startTime` / `endTime` | 秒数(整数),与转录文本时间戳一致 || `speaker` | 如果无法确定姓名,使用 "Speaker 0", "Speaker 1" || `concepts` | 只提取该段落的****新概念****,不重复之前已解释的 || `evidence_quote` | 支撑观点的原文引用 |**### 步骤 4:保存结果**将分析结果保存为 JSON 文件:```data/episodes/{episode-id}.json```完整的单集数据结构:```json{ "id": "episode-guid", "processedAt": "2024-01-01T00:00:00.000Z", "meta": { "podcastName": "播客名称", "episodeTitle": "单集标题", "publishDate": "发布日期", "audioUrl": "音频链接", "coverImage": "封面图", "duration": 3600 }, "analysis": { "overview": { ... }, "timeline": [ ... ] }}```同时更新索引文件 `data/db_index.json`。****索引更新规则****:- 把本次生成的 episode 写入/更新到 `data/db_index.json` 的 `episodes[]` 列表- 最新的放在最前面(newest first)**### 步骤 5:完成提示**分析完成后,提示用户启动前端查看结果:```bashcd '你的文件夹路径' && npm run dev```**## 分析示例****### 输入(转录片段)**```[0:02:00 - 0:02:30] Speaker 0: 今天我们来聊一下 AI Agent,这可能是今年最火的概念之一了。[0:02:30 - 0:05:00] Speaker 1: 对,Agent 这个词现在被用得很泛,但我理解的核心是让 AI 能够自主地完成任务,而不只是回答问题。```**### 输出(分析结果)**```json{ "startTime": 120, "endTime": 300, "speaker": "Speaker 1", "topic": { "zh": "AI Agent 的核心定义", "en": "Core Definition of AI Agent" }, "content": { "summary_zh": "讨论了 AI Agent(智能体)的核心概念。与传统的问答式 AI 不同,Agent 强调的是自主完成任务的能力,包括感知环境、做出决策、执行行动的完整闭环。", "evidence_quote": "Agent 这个词现在被用得很泛,但我理解的核心是让 AI 能够自主地完成任务,而不只是回答问题", "concepts": [ { "term_en": "AI Agent", "term_zh": "AI 智能体", "explanation": "能够感知环境、做出决策、自主执行任务的人工智能系统" } ] }}```