mcpField
P
podcast

podcast

github.com/marswaveaiクリエイティブ・メディア811.2k 回インストール5 週間前に更新
リポジトリ

podcast について

podcast は、トピック、URL、または入力テキストをもとに、1~2 人の AI 話者による音声番組を作るスキルです。概要、深掘り、討論形式に対応し、音声と文字起こしを出力します。

主な機能

  1. 01トピック・URL・テキスト入力
  2. 021人または2人の番組生成
  3. 03概要・深掘り・討論モード
  4. 04入力に応じた言語判定
  5. 05音声と文字起こしの出力

活用シーン

  1. 01記事を対話形式にする
  2. 02トピックの概要ポッドキャスト制作
  3. 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 を参照)
複数選択式の質問をするすべてのステップで AskUserQuestion ツールを使用してください。選択肢を通常のテキストとして表示してはいけません。一度に質問するのは 1 つだけです。次のステップに進む前に、ユーザーの回答を待ってください。すべてのパラメーターを収集したら、選択内容を要約して、ユーザーに確認を求めてください。ユーザーが明示的に確認するまで、生成 API を呼び出してはいけません。

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) / 使用内置默认}

続いて、次の質問を順に行い、保存してください。

  1. outputMode:shared/output-mode.md § Setup Flow Question に従ってください。

  2. Language(任意):「デフォルトの言語は何ですか?」

    • 「中文 (zh)」
    • 「English (en)」
    • 「每次手动选择」→ null のままにする
  3. 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、貼り付けたテキスト、またはそれらの組み合わせ。

有効な入力例:

ステップ 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 コマンドを実行する前に、明示的な確認を待ちます。ユーザーは確認前に、ここで任意のパラメーターを変更できます。

ワークフロー

生成
  1. 送信(バックグラウンド):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 はポーリングを内部で処理し、生成が完了すると最終結果を返します。

  2. タスクを送信したことと、完了時に通知されることをユーザーに伝えます。

  3. 完了通知を受け取ったら、結果を提示します。

    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}
    
  4. 文字起こしの表示、またはリクエストに応じたダウンロード 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 の動向についてポッドキャストを作成して」

エージェントのワークフロー:

  1. 検出:ポッドキャストのリクエスト、トピック = 「最新の AI の動向」、参照なし
  2. 推定:モード = quick(既定値)、言語 = en(ユーザーが英語で記述)、話者 2 人(既定値)
  3. 確認用の概要を表示 → ユーザーが確認
$CMD_PREFIX create \
  --query "The latest AI developments" \
  --mode deep \
  --lang en \
  --speaker "Mars" \
  --speaker "Mia" \
  --json

CLI が結果を返すまで待ち、その後タイトルと再生リンクを提示します。

コメント