用途
Podcast Generator 是一个用于从任意内容来源自动生成韩语播客节目的技能。它可以接收用户提供的 URL、文章、推文、PDF 或 GitHub 仓库等来源,分析并融合内容后,自动撰写韩语播客脚本、生成音频、转换为 MP4 视频,并上传到 YouTube。
主要能力
完整流水线为:来源收集 → 分析/融合 → 脚本撰写 → TTS 生成 → MP4 转换 → YouTube 上传。
Step 1:来源收集与分析
按类型处理用户提供的来源:
- URL/文章:使用 WebFetch 或子代理获取全文
- 推文/X 帖子:使用 WebFetch 配合 api.fxtwitter.com(替换 X/Twitter URL 中的域名)
- PDF:直接用 Read 工具读取
- GitHub 仓库:克隆并分析结构(使用子代理)
- 对话上下文:复用当前会话中已分析的内容
当提供 2 个以上来源时,会为每个来源并行启动子代理。
Step 2:脚本撰写
脚本结构为 8-12 分钟、3000-5000 字符,包含:开场(1 分钟,含钩子、来源介绍、结论前置)、正文第一部分(3 分钟,深入分析第一个来源/视角)、正文第二部分(3 分钟,深入分析第二个来源/视角)、融合/交汇(3 分钟,组合来源后的涌现洞见、模式、共性、对比和可推广含义)、结尾(30 秒,一句话总结核心信息和结束语)。
脚本撰写原则:
- 像说话一样写作,使用口语化韩语("~입니다"、"~거죠"、"~인데요")
- 数字用韩语表达:"267K" → "이십육만","$75,000" → "칠만오천 달러"
- 英文名用韩语发音:"Garry Tan" → "개리 탄"
- 不使用表格或代码块(TTS 无法朗读),将表格内容转换为句子
- 引用时转换语气:用"개리 탄 본인이 이렇게 말합니다."制造区分感
- 短句:每句控制在 50 字符以内
文件布局:输出目录包含 script.md(脚本)、episode.mp3(音频)、episode.mp4(视频,用于 YouTube)、metadata.json(标题、描述、标签、YouTube URL)。输出目录可由用户指定,默认相对当前工作目录为 podcast/YYYY-MM-DD-[slug]/。
Step 3:TTS 生成
使用 scripts/generate_tts.py 将脚本转为音频:
python3 <plugin-path>/skills/podcast/scripts/generate_tts.py \
--input <script.md path> \
--output <episode.mp3 path> \
--api-key <OpenAI API key>
将 <plugin-path> 替换为插件实际安装路径(可用 ${CLAUDE_PLUGIN_ROOT} 或解析后的插件安装路径)。
OpenAI API Key:先检查 OPENAI_API_KEY 环境变量,未设置则询问用户。
TTS 设置:
- 模型:gpt-4o-mini-tts(支持 instructions 的最新模型)
- 语音:marin(最适合韩语),cedar 为备选
- 分块大小:1500 字符(2000 token 限制,韩语约 1.5 字符/token)
- Instructions:按脚本自动生成
默认 TTS instructions:"따뜻하고 친근한 한국어 팟캐스트 호스트. 명확한 발음으로 또박또박 읽되, 자연스러운 억양과 적절한 감정을 담아서. 중요한 포인트에서는 약간 힘을 주고, 인용구에서는 톤을 살짝 바꿔서 구분감을 준다. 전체적으로 지적이면서도 편안한 분위기."
若用户指定语气,可通过 --instructions 自定义。
Step 4:MP4 转换
将 MP3 转换为带静态标题卡的 MP4:
python3 <plugin-path>/skills/podcast/scripts/convert_mp4.py \
--input <episode.mp3 path> \
--output <episode.mp4 path> \
--title "Episode Title" \
--subtitle "Subtitle"
生成 1920x1080、深色背景(#1a1a2e)带韩语标题/字幕叠加的视频。
Step 5:YouTube 上传
python3 <plugin-path>/skills/podcast/scripts/upload_youtube.py \
--video <episode.mp4 path> \
--title "Episode Title" \
--description "Description" \
--privacy unlisted
OAuth 设置:Google OAuth client secret 自动发现 ~/Downloads/client_secret_.json 或 ~/.config/google/client_secret_.json;token 默认存储在视频文件旁(可用 --token-path 覆盖);首次运行需要浏览器 Google 认证;若有多个 YouTube 账号会询问用户使用哪个。
注意:切勿将脚本复制到节目目录,始终从插件原始路径运行。
上传默认值:隐私 unlisted(除非用户另行指定)、分类 People & Blogs (22)、语言 ko。
Step 6:完成报告
上传后向用户报告:
Done!
- Script: <path>/script.md
- Audio: <path>/episode.mp3
- Video: <path>/episode.mp4
- YouTube: https://youtu.be/VIDEO_ID (unlisted)
用 afplay 播放 episode.mp3 让用户立即收听。
部分执行
用户可只请求流水线的一部分:
- "Just write the script" → 仅 Step 1-2
- "Generate TTS from this script" → 仅 Step 3
- "Upload to YouTube" → 仅 Step 5(需已有 MP4)
- "Make it public" → 通过 API 更新 YouTube 隐私设置
适用场景
适合将文章、推文、PDF、GitHub 仓库等内容快速转化为韩语播客节目,并发布到 YouTube 的场景。支持多来源融合分析,适合需要将多个来源观点整合成单集内容的用户。
限制与要求
- ffmpeg:音频合并和 MP4 转换必需。macOS 上可能需要 homebrew-ffmpeg/ffmpeg tap 以获得完整编解码器支持
- OpenAI API key:TTS 生成必需(OPENAI_API_KEY 环境变量或用户提供)
- Google OAuth client secret:YouTube 上传必需(从 Google Cloud Console 下载)
- macOS 字体:韩语文本叠加使用 /System/Library/Fonts/AppleSDGothicNeo.ttc。其他平台需调整 convert_mp4.py 中的 FONT_PATH
- Python 3.10+:所有脚本仅使用标准库(无需 pip install)
- 输出内容为韩语播客