podcast について
podcast は、トピック、URL、または入力テキストをもとに、1~2 人の AI 話者による音声番組を作るスキルです。概要、深掘り、討論形式に対応し、音声と文字起こしを出力します。
主な機能
- 01トピック・URL・テキスト入力
- 021人または2人の番組生成
- 03概要・深掘り・討論モード
- 04入力に応じた言語判定
- 05音声と文字起こしの出力
活用シーン
- 01記事を対話形式にする
- 02トピックの概要ポッドキャスト制作
- 03討論形式のエピソード作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ marswaveai/ skills --skill podcastインストール後、Claude Code で/podcastを入力して読み込まれたか確認します。
同梱ファイルreferences/mode-guide.md
詳細
使用する場面
- ユーザーがあらゆるトピックについてポッドキャストのエピソードを作成したい場合
- URL またはテキストを提示し、ポッドキャスト形式のディスカッションにしたい場合
- 「ディベート」「対話」「ディスカッション」形式を希望する場合
- 「ポッドキャスト」「播客」「录一期节目」と言った場合
使用しない場面
- ユーザーがテキストの読み上げを希望する場合(
/speechを使用) - ユーザーが映像付きの解説動画を希望する場合(
/explainerを使用) - ユーザーが画像の生成を希望する場合(
/image-genを使用) - ユーザーが音声を生成せずに URL からコンテンツを抽出したいだけの場合(
/content-parserを使用)
目的
1~2 人の AI スピーカーがトピックについて話し合うポッドキャストのエピソードを生成します。手短な概要、詳細な分析、ディベート形式に対応しています。入力にはトピックの説明、URL、またはテキストを指定できます。出力は、文字起こし付きの音声エピソード全編です。
厳守事項
- 必ず
shared/cli-authentication.mdに従って CLI の認証状態を確認してください - コマンドの実行とエラー処理には
shared/cli-patterns.mdに従ってください - API 呼び出しでスピーカー ID をハードコードしないでください。フォールバックに限り、
shared/speaker-selection.mdの組み込みデフォルトを使用してください。ユーザーが音声の変更を希望する場合は、speakers API から取得してください - CLI コマンドやパラメーターを捏造しないでください
- 操作を開始する前に、必ず
shared/config-pattern.mdに従って設定を読み込んでください - スピーカーの選択では、必ず
shared/speaker-selection.mdに従ってください(テキストテーブルと自由入力) - ファイルを
~/Downloads/または.listenhub/に保存しないでください。アーティファクトは、わかりやすいトピックベースの名前を付けて現在の作業ディレクトリに保存してください(shared/config-pattern.md§ Artifact Naming を参照)
Step -1:CLI 認証の確認
shared/cli-authentication.md § Auth Check に従ってください。CLI がインストールされていない場合、またはユーザーがログインしていない場合は、自動でインストールしてログインしてください。ユーザーに手動でコマンドを実行するよう求めてはいけません。
続いて、shared/cli-authentication.md § Auth Mode Detection に従って AUTH_MODE を判定し、次を設定してください。
if [ "$AUTH_MODE" = "openapi" ]; then
CMD_PREFIX="listenhub openapi podcast"
else
CMD_PREFIX="listenhub podcast"
fi
以降の CLI 呼び出しでは、ハードコードした listenhub podcast の代わりに $CMD_PREFIX を使用してください。
Step 0:設定
shared/config-pattern.md の Step 0(Zero-Question Boot)に従ってください。
ファイルが存在しない場合 — デフォルト値で黙って作成し、そのまま続行してください。
mkdir -p ".listenhub/podcast"
echo '{"outputMode":"inline","language":null,"defaultMode":"quick","defaultSpeakers":{}}' > ".listenhub/podcast/config.json"
CONFIG_PATH=".listenhub/podcast/config.json"
CONFIG=$(cat "$CONFIG_PATH")
設定について質問してはいけません。 Interaction Flow に直接進んでください。
ファイルが存在する場合 — 設定を黙って読み込み、そのまま続行してください。
CONFIG_PATH=".listenhub/podcast/config.json"
[ ! -f "$CONFIG_PATH" ] && CONFIG_PATH="$HOME/.listenhub/podcast/config.json"
CONFIG=$(cat "$CONFIG_PATH")
設定フロー(ユーザーが再設定を開始した場合のみ)
ユーザーが明示的に再設定を求めた場合にのみ実行してください。現在の設定を表示します。
当前配置 (podcast):
输出方式:{inline / download / both}
语言偏好:{zh / en / 未设置}
默认模式:{quick / deep / debate / 未设置}
默认主播:{speakerName(s) / 使用内置默认}
続いて、次の質問を順に行い、保存してください。
-
outputMode:
shared/output-mode.md§ Setup Flow Question に従ってください。 -
Language(任意):「デフォルトの言語は何ですか?」
- 「中文 (zh)」
- 「English (en)」
- 「每次手动选择」→
nullのままにする
-
Mode(任意):「デフォルトのポッドキャストモードは何ですか?」
- 「Quick — 簡潔な概要」
- 「Deep — 詳細な分析」
- 「Debate — ディベート形式の対話」
- 「每次手动选择」→
nullのままにする
回答をすべて収集したら、すぐに保存してください。
NEW_CONFIG=$(echo "$CONFIG" | jq --arg m "$OUTPUT_MODE" '. + {"outputMode": $m}')
# Save language if user chose one (not "每次手动选择")
if [ "$LANGUAGE" != "null" ]; then
NEW_CONFIG=$(echo "$NEW_CONFIG" | jq --arg lang "$LANGUAGE" '. + {"language": $lang}')
fi
# Save mode if user chose one
if [ "$MODE" != "null" ]; then
NEW_CONFIG=$(echo "$NEW_CONFIG" | jq --arg mode "$MODE" '. + {"defaultMode": $mode}')
fi
echo "$NEW_CONFIG" > "$CONFIG_PATH"
CONFIG=$(cat "$CONFIG_PATH")
Interaction Flow
Step 1:トピックと参考資料
AskUserQuestion を使って、2 つの小問を含む単一の質問、または単一の自由入力プロンプトで、トピックと任意の参考資料をまとめて尋ねてください。
どのようなトピックをポッドキャストにしたいですか?参考資料(URL またはテキスト)があれば、ここに含めてください。
次の入力を受け付けます:トピックの説明、URL、貼り付けたテキスト、またはそれらの組み合わせ。
有効な入力例:
- 「2026 年の AI の動向」
- 「https://example.com/article — この記事について話し合ってください」
- 「リモートワークの長所と短所。参考資料:https://study.com/remote-work-2026」
ステップ 2:モード
デフォルト:「quick」 — 次の場合を除き、この質問は省略します。
config.defaultModeに別の値が設定されている → その値を黙って使用します- ユーザーがステップ 1 でモードを示すキーワード(例:「深掘り」「ディベート」「詳しく」)を明示している → 意図からモードを推測します
ユーザーの意図が曖昧で、デフォルトも設定されていない場合にのみ質問してください。ほとんどの場合、そのまま「quick」を使用します。
ステップ 3:言語
デフォルト:ユーザーのやり取りの言語に合わせます。 ステップ 1 でユーザーが使った言語から判定します。
- ユーザーが中国語で書いた場合 →
zh - ユーザーが英語で書いた場合 →
en config.languageが設定されている場合 → その値を使用します
この質問はしないでください。 常に黙って推測します。確認の概要に表示し、ユーザーが必要に応じて変更できるようにします。
ステップ 4:話者数
デフォルト:2 人の話者(対話形式) — 最も一般的で、親しみやすい形式です。
この質問は省略します。ディベートモードでは 2 人の話者が必要です。quick/deep でも、デフォルトで 2 人の話者を使用します。
ユーザーがモノローグまたはソロ形式を明示的に希望した場合にのみ、1 人の話者を使用します。
ステップ 5:話者の選択
shared/speaker-selection.md に従ってください。
config.defaultSpeakers.{language}が設定されている場合 → 保存済みの話者を黙って使用します- 設定されていない場合 →
shared/speaker-selection.mdの組み込みのデフォルトを使用します(質問しません) - 確認の概要に話者を表示し、ユーザーが必要に応じて変更できるようにします
- 音声の変更をユーザーが明示的に希望した場合にのみ、話者の全リストを表示します
2 人の話者モード(対話/ディベート)では、その言語の Primary + Secondary のデフォルトを使用します。
ステップ 5.5:生成速度
デフォルト:1.0x(元の速度)。この質問はしないでください。
ユーザーが「遅めに」「速めに」「1.25 倍速で」「もっと速く読んで」「速度を落として」のように明示的に希望した場合にのみ、速度を設定します。それ以外の場合は、リクエストの従来の動作を維持するため、--speed を完全に省略します。
- 範囲:
0.5から2.0までの任意の値、小数点以下最大 2 桁 — 固定された段階ではなく、連続した範囲です。 - 一般的な値:
0.5、0.75、1(デフォルト)、1.25、1.5、2。0.85や1.35など、その間の値も同様に有効です。 - 意味:生成された音声の話す速度であり、プレーヤーの再生速度ではありません。1 つのエピソード内の全話者に、同じタスク単位の速度が適用されます。
- 曖昧な表現は控えめに解釈します。「遅めに」→
0.85、「速めに」→1.25、「かなり遅く」→0.5、「かなり速く」→1.75。ユーザーが数値を指定した場合は、その数値を変更せずに渡します。
速度が 1 以外の場合にのみ、確認の概要に速度を表示します。
ステップ 6:確認と生成
すべての選択内容をまとめます。
Ready to generate podcast:
Topic: {topic}
Mode: {mode}
Language: {language}
Speakers: {speaker name(s)}
Speed: {speed}x # omit this line when speed is 1
References: {yes/no + brief description}
Proceed?
CLI コマンドを実行する前に、明示的な確認を待ちます。ユーザーは確認前に、ここで任意のパラメーターを変更できます。
ワークフロー
生成
-
送信(バックグラウンド):
run_in_background: true、timeout: 360000を指定して CLI コマンドを実行します。$CMD_PREFIX create \ --query "{topic}" \ --source-url "{url}" \ --source-text "{text}" \ --mode {quick|deep|debate} \ --lang {en|zh|ja} \ --speaker "{name}" \ --speaker "{name2}" \ --speed {0.5-2.0} \ --jsonフラグに関する注記:
--query— 議論するトピックまたは質問--source-url— URL 参照ごとに指定します。複数回指定できます--source-text— テキストブロックの参照ごとに指定します。複数回指定できます--mode—quick、deep、debateのいずれか--lang— 言語コード--speaker— 最大 2 人まで繰り返し指定できます。話者の表示名を使用します--speaker-id—--speakerの代替です。名前の代わりに話者 ID を使用します--speed— 生成速度の倍率。0.5~2.0(小数点以下 2 桁まで、既定値は1)。ユーザーが別の速度を指定していない限り、省略します- ユーザーが参照を指定していない場合は、
--source-url/--source-textを省略します
CLI はポーリングを内部で処理し、生成が完了すると最終結果を返します。
-
タスクを送信したことと、完了時に通知されることをユーザーに伝えます。
-
完了通知を受け取ったら、結果を提示します。
CLI の JSON 出力を解析し、
audioUrl、subtitlesUrl、audioDuration、creditsの各フィールドを抽出します。設定から
OUTPUT_MODEを読み込みます。動作についてはshared/output-mode.mdに従います。inlineまたはboth:クリック可能なリンクとしてaudioUrlを表示します。次を提示します。
播客已生成! 在线收听:{audioUrl} 字幕:{subtitlesUrl}(如有) 时长:{audioDuration / 1000}s 消耗积分:{credits}downloadまたはboth:ファイルもダウンロードします。shared/config-pattern.mdの § Artifact Naming に従ってトピックのスラッグを生成します。SLUG="{topic-slug}" # e.g. "ai-developments" NAME="${SLUG}-podcast.mp3" # Dedup: if file exists, append -2, -3, etc. BASE="${NAME%.*}"; EXT="${NAME##*.}"; i=2 while [ -e "$NAME" ]; do NAME="${BASE}-${i}.${EXT}"; i=$((i+1)); done curl -sS -o "$NAME" "{audioUrl}"次を提示します。
已保存到当前目录: {NAME} -
文字起こしの表示、またはリクエストに応じたダウンロード URL の提供を申し出ます。
生成成功後
このセッションで選択した内容で設定を更新します。
NEW_CONFIG=$(echo "$CONFIG" | jq \
--arg lang "{language}" \
--arg mode "{mode}" \
--argjson speakers '{"{language}": ["{speakerId}"]}' \
'. + {"language": $lang, "defaultMode": $mode, "defaultSpeakers": (.defaultSpeakers + $speakers)}')
echo "$NEW_CONFIG" > "$CONFIG_PATH"
API リファレンス
- 話者一覧:
shared/cli-speakers.md - 話者選択ガイド:
shared/speaker-selection.md - CLI パターン:
shared/cli-patterns.md - CLI 認証:
shared/cli-authentication.md - 設定パターン:
shared/config-pattern.md
合成可能性
- 呼び出し先:話者選択用の speakers API
- 呼び出し元:content-planner(フェーズ 3)
例
ユーザー:「最新の AI の動向についてポッドキャストを作成して」
エージェントのワークフロー:
- 検出:ポッドキャストのリクエスト、トピック = 「最新の AI の動向」、参照なし
- 推定:モード =
quick(既定値)、言語 =en(ユーザーが英語で記述)、話者 2 人(既定値) - 確認用の概要を表示 → ユーザーが確認
$CMD_PREFIX create \
--query "The latest AI developments" \
--mode deep \
--lang en \
--speaker "Mars" \
--speaker "Mia" \
--json
CLI が結果を返すまで待ち、その後タイトルと再生リンクを提示します。