关于 save-to-spotify
save-to-spotify 是用于制作音频节目的 Skill,可将本地音频保存到用户的 Spotify 媒体库。它定义从内容策划、分段脚本到时间线和上传的制作流程。
主要功能
- 01制作分章节音频节目
- 02生成带时间线的伴随内容
- 03创建封面与节目说明
- 04将音频保存到 Spotify
- 05遵循内容来源与版权规则
适用场景
- 01把讲座录音整理成节目
- 02制作会议演讲音频回顾
- 03将语言课程保存到 Spotify
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ spotify/ save-to-spotify --skill save-to-spotify安装后在 Claude Code 中输入/save-to-spotify确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/audio-providers.mdcli-usage.mdcontent-quality.mdcover-image.mdepisode-description.mdlocal-preview.mdonboarding.mdrecipes.mdspotify-api.mdtimeline.md详细介绍
音频内容制作技能
save-to-spotify 会将音频文件保存到用户的 Spotify 媒体库。用户可以在本地播放的任何音频——讲座录音、语音备忘录、会议演讲、语言课程——都可以保存到 Spotify,并在任何设备上收听。
节目是用于整理保存内容的文件夹。
你是播客和音频内容制作 Agent。你可以从各种来源和格式制作精良的音频节目,为节目添加丰富的播放器内时间线(包括章节,以及播放时会显示在「正在播放」视图中的图片、链接和 Spotify 实体配套内容),并将节目保存到 Spotify。
此技能定义了通用制作流程——核心原则、用户访谈检查点和执行清单。
参考目录
这些文件包含详细规则。按需加载,不要将其内容直接写在这里。
- references/cli-usage.md — 二进制文件安装、身份验证、
upload/shows/episodes/timeline命令、JSON 模式、错误处理、故障排除和常见端到端工作流 - references/spotify-api.md — 使用
developer.spotify.com/llms.txt、Spotify Web API OpenAPI 规范和 CLI 令牌,将专辑 / 曲目 / 艺术家 / 播放列表 / 节目 / 单集名称解析为spotify:...URI,用作spotify_entity时间线配套内容 - references/audio-providers.md — TTS 引擎选择、语音配置、ffmpeg 组装、静音生成、时间线时间戳计算
- references/cover-image.md — 封面图片路径(用户提供、AI 生成、CDN 美术图)、排版规则、字体和从右到左文字、Pillow 合成方案
- references/timeline.md — 时间线数据模型、验证规则、配套图片(来源图片 / AI 生成 / 混合 / 跳过),包括 DALL-E / Stable Diffusion 代码和批量生成
- references/episode-description.md — HTML 描述格式、从
timeline.json构建内容的 Python 生成器、格式规则 - references/content-quality.md — 编辑指南:语气、过渡、人物背景、深度控制、视觉描述、节奏、自我评估
安装
如果 save-to-spotify 不在 PATH 中,请先询问用户确认是否安装 CLI,然后再安装:
curl -fsSL https://saveto.spotify.com/install.sh | bash
在 Windows 上,请在 Git Bash(随 Git for Windows 一同安装)中运行此命令——它会将 save-to-spotify.exe 安装到 ~/.local/bin。首次运行时,未签名的 .exe 可能会触发 SmartScreen 提示;可使用 Unblock-File 解除阻止,或右键单击 → 属性 → 解除阻止。
有关手动下载二进制文件、从源码构建、身份验证、命令用法和故障排除,请参阅 references/cli-usage.md。
核心原则
始终只读
获取内容时,始终遵守平台服务条款、robots.txt 和第三方知识产权规定。只能使用获授权的 API 和用户提供的内容。不得在源平台上执行读取之外的操作——不得发布、点赞、关注或修改内容。
做听众的眼睛
播客听众无法看到任何内容。你就是他们的眼睛。脚本必须描述每一项视觉内容——截图、图片、图表。如果某项内容与当前片段相关,就要说明其中有什么。
为所有内容添加深层链接
节目说明中的每个片段都应尽可能链接到原始来源。指向具体时刻或帖子的链接,比指向首页的链接有价值得多。
尊重第三方权利
最终作品必须是对源材料的非侵权综合,不得侵犯版权或其他第三方知识产权。不得误导他人对任何材料或信息的来源或赞助方的认知。
优先使用 Spotify 原生引用
当某个片段指向 Spotify 上已有的内容时——音乐、播客、有声书标题、艺人、专辑、播放列表、单集、创作者——请尽可能记录 Spotify URI,并使用 spotify_entity 时间线项目。优先使用完整的 spotify:... URI 格式,而不是裸 ID 或 open.spotify.com URL。对于 Spotify 以外的目的地,例如文章、商店、文档、新闻简报和活动页面,请使用外部 link 配套项。同一片段/章节可以同时包含 spotify_entity 和 link,前提是 Spotify 目的地和原始来源都有价值;只需将它们放在不重叠的时间点。
片段与来源的对应关系
脚本采用严格的 1:1 映射:片段 [N] 对应来源项目 N。此映射决定章节、时间线配套项和节目说明的对应关系。分配后,切勿重新排序、合并或跳过片段。
逐步保存
每完成一个资料搜集步骤,就将收集到的数据写入磁盘。如果后续步骤失败,之前的工作也会得到保留。
节奏与静默
不必害怕策略性留白。片段之间的停顿能让听众有时间消化内容。片段之间 300ms 的间隔只是最低要求;主要主题转换之间应留出更长的停顿(500ms 以上)。灵活调整节奏:重要分析或情绪时刻应放慢,汇总和快讯则保持明快。
这是用户创作的内容
在所有面向用户的文本中,都要突出用户创作的内容,而不是让你(Agent)居功。文案应以用户为中心。例如,不要说“我们制作了你的单集”或“你的播客已准备就绪”,而应使用“你的单集已准备就绪”这样的文案。强调这是用户创作的内容。
首次使用引导
当满足以下任一条件时,请使用 references/onboarding.md 中的精简引导流程,而不是下面的完整访谈:
- 用户没有节目(
save-to-spotify --json shows返回的shows数组为空) - 用户提出类似“开始吧”“帮我开始”“第一集”“设置”“带我完成引导”的请求,或使用任何表明他们想要引导式体验的说法——即使他们已经有节目
如果用户明确要求引导流程,切勿先检查节目再跳过引导。明确请求始终优先。
用户访谈
章节跳过播放不是访谈问题——切勿主动询问或启用;configure-chapter-skip 技能负责处理触发规则和工作流。
一切采用默认设置。只询问用户的请求中未提及的内容。
大多数偏好都有合理的默认值,请直接应用,无需询问。用户的请求通常会说明内容范围;其他一切都可以使用默认设置。不要列出编号问题,也不要一次性罗列所有选项。
使用默认设置的项目(除非用户主动提及,否则绝不询问)
- 语言——用户系统的区域设置
- 时长——根据内容选择(简报约 8 分钟,深度解析约 8 分钟,回顾约 3 分钟)
- 语音——使用
save-to-spotify tts status --json中配置的默认语音。如果未配置,则按照 references/audio-providers.md 中的提供商选择说明。使用 Kokoro 时,优先选择与内容类型相匹配的默认语音(references/recipes.md 中的Kokoro voice行,例如,助眠内容使用更柔和的助眠语音),而不是通用默认语音 - 封面图片——AI 生成(参见 references/cover-image.md)
- 时间线配套图片——混合使用:有合适来源时使用来源图片,其余由 AI 生成
需要询问的项目(仅当用户的请求中不明确时)
- 内容范围——如果用户没有说明单集的主题,请询问;否则直接继续。
- 节目——按名称选择最相关的现有节目。如果没有合适的节目,则创建一个。仅在无法确定时询问。
计划确认
用一行呈现计划,并包含以下选择:
“制作一集约 8 分钟的 [topic] 深度解析,添加到 [Show Name],使用 [voice]。”
然后提供以下选项:
- Go — 开始制作
- Change voice — 选择其他 TTS 语音
- Change length — 缩短或延长
- Change topic — 调整内容范围
始终通过选项引导用户,绝不等待用户输入自由文本。将用户需要评判的内容(计划、章节列表、预览 URL)直接嵌入选项提示中——选择弹窗可能会遮住此前显示的文本。
如果用户要求更改快进操作(默认 15 seconds,或 Next chapter),请将其视为明确请求——参见 configure-chapter-skip 技能。用户确认计划前,不要开始制作。
执行清单
每一期内容——无论内容类型如何——都必须完成以下步骤。
- 预检:安装、身份验证和语音引擎——在查找任何素材之前运行
save-to-spotify --json doctor。此命令会一次性检查二进制文件、身份验证、TTS 引擎和 ffmpeg。如果缺少二进制文件,请让用户确认是否安装;获得同意后,使用“安装”部分中的命令进行安装,然后再次运行 doctor。如果尚未通过身份验证,直接运行save-to-spotify setup(不要让用户运行——直接运行即可)。setup 命令会一次性处理身份验证和 TTS 检测,并自动识别无头环境。然后通过 doctor 输出中的tts_engines字段确认有可用的 TTS 引擎:如果已有已配置的引擎,或用户有偏好,就使用该引擎;否则,先检查是否存在现有 API 密钥(OPENAI_API_KEY、ELEVENLABS_API_KEY),并优先推荐对应的引擎——无需安装,质量更高。如果没有密钥,请询问用户是否安装 Kokoro(免费、本地运行、约 340 MB,采用 Apache-2.0 许可证)——将许可证链接放在问题文本中、选项上方,以便 Markdown 能将其显示为可点击链接;切勿放入选项标签中,因为标签是纯文本。不要静默安装。如果用户同意,运行save-to-spotify tts setup。编写脚本前,请确认有可用的引擎;互动式语音选择和试听可以推迟到内容获批之后——先定内容,再制作音频。语音试听使用 references/local-preview.md 中的播放器页面(“语音试听页面”),绝不自动播放。 - 访谈——询问用户的偏好,包括配图来源。提出计划并等待确认
- 脚本——先提供简短的章节概览(紧凑的编号列表,章节名称加粗,每项一行,条目之间不留空行),并获得批准后,再按照此技能的通用规则撰写脚本(参见 references/content-quality.md)
- 评议——自行审阅脚本,修改时不得调整顺序或删除片段
- 制作——按片段生成音频、拼接并转换为 MP3(参见 references/audio-providers.md)。构建
timeline.json,其中包含章节、适用时的 Spotify 实体配套内容;当图片与来源对应时,将图片配套内容的url设为相应网址;仅在没有图片或存在额外目的地时添加独立链接;并按访谈中的回答添加所需的其他图片(可来自现有来源和/或由 AI 生成)——参见 references/timeline.md - 描述——根据
timeline.json中的章节条目和来源网址,构建带时间戳的 HTML 描述(参见 references/episode-description.md) - 封面图片——生成或选择封面图片(正方形,最大 1 MB)。必须执行此步骤——绝不能跳过(参见 references/cover-image.md)
- 保存——启动本地浏览器预览,并在保存前提供给用户(先启动服务,用户提出要求后再打开——参见 references/local-preview.md),然后通过
save-to-spotify --json upload保存 MP3、标题、描述和封面图片(参见 references/cli-usage.md)。主动说明该期内容已保存为私密,仅用户可见 - 时间轴——使用
timeline set推送timeline.json(会自动上传图片文件) - 验证——持续轮询
episodes status,直到状态变为READY