save-to-spotify について
save-to-spotify は、音声エピソードを制作し、ローカル音声をユーザーの 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 に保存して、どのデバイスからでも聴くことができます。
ショーは、保存したコンテンツを整理するためのフォルダーです。
あなたはポッドキャストおよびオーディオコンテンツ制作エージェントです。さまざまなソースや形式から、完成度の高いオーディオエピソードを制作します。再生中の「再生中」ビューに表示されるチャプターや、画像、リンク、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 のアートワーク)、タイポグラフィのルール、フォントと RTL、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 タイムライン項目を使用してください。ID のみや open.spotify.com の URL ではなく、完全な spotify:... URI 形式を優先してください。記事、ストア、ドキュメント、ニュースレター、イベントページなど、Spotify 外のリンク先には外部の link を併用してください。同じセグメント/チャプターに spotify_entity と link の両方を含めることもできます。その場合は、Spotify のリンク先と元のソースの両方に価値があるときに限り、時間が重ならないように配置してください。
セグメントとソースの対応関係を維持する
スクリプトは厳密な 1 対 1 の対応関係を保ちます。セグメント [N] はソース項目 N に対応します。この対応関係を基に、チャプター、タイムラインの付随項目、番組説明の整合性を保ちます。割り当て後にセグメントの順序を入れ替えたり、結合したり、省略したりしないでください。
こまめに保存する
各ソーシング手順の後に、収集したデータをディスクに書き込んでください。後続の手順が失敗しても、これまでの作業は保持されます。
ペース配分と無音
意図的な無音を恐れないでください。セグメント間の間は、リスナーが内容を消化する時間になります。セグメント間の 300ms の間隔は最低限です。大きな話題の転換では、より長い間隔(500ms 以上)を設けてください。ペースに変化をつけ、重要な分析や感情的な場面ではゆっくりと、まとめや短いトピックではテンポよく進めてください。
これはユーザーが作成したものです
ユーザーに表示するすべての文言では、あなた(エージェント)ではなく、ユーザーが作成したものを強調してください。文言の中心はユーザーにしてください。たとえば、「私たちがあなたのエピソードを作成しました」や「あなたのポッドキャストの準備ができました」ではなく、「あなたのエピソードの準備ができました」のような表現を使ってください。これはユーザー自身が作成したものだと伝えてください。
初回オンボーディング
次のいずれかに該当する場合は、以下の完全なインタビューではなく、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 で生成する混合方式
尋ねる項目(プロンプトから明らかでない場合のみ)
- コンテンツの範囲 — エピソードのテーマが指定されていない場合は、何についてのエピソードにするか尋ねてください。指定されている場合は、そのまま進めてください。
- 番組 — 名前から最も関連性の高い既存の番組を選んでください。該当する番組がなければ、新しく作成してください。曖昧な場合にのみ尋ねてください。
プランの確認
次の選択肢を含む、1 行のプランを提示します。
「[トピック] について約 8 分の詳しい解説を作成し、[番組名] に [音声] で追加します。」
次に、以下の選択肢を提示します。
- 開始 — 制作を開始します
- 音声を変更 — 別の TTS 音声を選びます
- 長さを変更 — 短くするか、長くします
- トピックを変更 — 内容の範囲を調整します
自由入力を待つのではなく、常に選択肢を提示して案内してください。ユーザーが判断する対象(プラン、章の一覧、プレビュー 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 の「音声プレビューページ」を使用し、自動再生はしません。 - ヒアリング — コンパニオン画像の入手元を含め、ユーザーの希望を尋ねます。計画を提示し、確認を待ちます
- 台本 — 短い章の概要を提示します(簡潔な番号付きリスト、章の名前は太字、各項目は 1 行、項目の間に空行を入れない)。まず承認を得てから台本を作成します(概要の修正は無料です。完全な書き起こしをユーザーに提示してはいけません)。その後、このスキルの共通ルールに従って台本を作成します(references/content-quality.md を参照)
- 批評 — 台本を自己レビューし、セグメントの順序変更や削除をせずに修正します
- 制作 — セグメントごとに音声を生成し、結合して MP3 に変換します(references/audio-providers.md を参照)。
timeline.jsonを作成し、章、該当する Spotify エンティティのコンパニオン、画像とソースが対応する場合はurlを設定した画像コンパニオン、画像のないリンク先または追加のリンク先に限った単独リンク、必要に応じた追加画像(ヒアリングの回答に基づいてソースから取得または AI で生成)を含めます。references/timeline.md を参照 - 説明文 —
timeline.jsonの章エントリーとソース URL から、タイムスタンプ付きの 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になるまで定期的に確認します