mcpField
S
slides

slides

github.com/marswaveaiドキュメント81570 回インストール5 週間前に更新
リポジトリ

slides について

slides は、トピック、URL、テキストからスライドを生成する ListenHub スキルです。音声ナレーションも任意で追加でき、プレゼンテーションや要約、ビジュアルストーリーテリングに利用できます。

主な機能

  1. 01トピック、URL、テキストからスライドを作成
  2. 02AI ビジュアルを生成
  3. 03音声ナレーションを任意で追加
  4. 04中国語、英語、日本語に対応
  5. 05オンライン表示とファイル保存に対応

活用シーン

  1. 01トピックをプレゼンテーションにまとめる
  2. 02URL の内容をスライドに変換
  3. 03ナレーション付きのスライド解説を作成
  4. 04ビジュアル要約やストーリーを制作

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/marswaveai/skills --skill slides

インストール後、Claude Code で/slidesを入力して読み込まれたか確認します。

詳細

使用する場面

  • ユーザーがスライドデッキやプレゼンテーションを作成したい場合
  • ユーザーが「slides」、「幻灯片」、「PPT」、または「presentation」と尋ねた場合
  • ユーザーがトピックや URL をもとに、ビジュアルコンテンツをスライドにまとめたい場合

使用しない場面

  • ユーザーがスライドのないナレーション付き動画を作成したい場合(/explainer を使用)
  • ユーザーが音声のみのコンテンツを作成したい場合(/speech または /podcast を使用)
  • ユーザーがポッドキャスト形式のディスカッションを作成したい場合(/podcast を使用)
  • ユーザーが単体の画像を生成したい場合(/image-gen を使用)

目的

トピック、URL、またはテキストから、AI 生成ビジュアルを使ったスライドデッキを作成します。デフォルトでは、音声ナレーションなしでスライドを生成します。ナレーションは任意で有効にできます。プレゼンテーション、要約、ビジュアルストーリーテリングに最適です。

厳守事項

  • 対話を始める前に、必ず shared/config-pattern.md に従って設定を読み込んでください
  • 実行モード、エラー処理、対話パターンについては shared/cli-patterns.md に従ってください
  • 認証チェックについては、必ず shared/cli-authentication.md に従ってください
  • ナレーションが有効な場合は、shared/speaker-selection.md に従ってください
  • 話者 ID をハードコードしないでください。ユーザーが音声の変更を希望した場合は、必ず speakers CLI から取得してください
  • ~/Downloads/ または .listenhub/ にファイルを保存しないでください。成果物は、わかりやすいトピックベースの名前を付けて現在の作業ディレクトリに保存してください(shared/config-pattern.md § Artifact Naming を参照)
  • モードは常に slides にしてください。info や story は使用しないでください(これらは /explainer 用です)
  • スライドのナレーションでサポートされる話者は 1 人のみです
  • デフォルトの動作では、音声を省略します(ナレーションなし)。ユーザーが --no-skip-audio で明示的に要求した場合にのみ、ナレーションを追加してください
複数選択の各手順では、必ず AskUserQuestion ツールを使用してください。選択肢をプレーンテキストで表示してはいけません。一度に質問は 1 つだけにしてください。次の手順に進む前に、ユーザーの回答を待ってください。すべてのパラメーターを収集したら、選択内容を要約してユーザーに確認してください。ユーザーが明示的に確認するまでは、CLI コマンドを実行してはいけません。

Step -1: CLI 認証チェック

shared/cli-authentication.md に従ってください。CLI がインストールされていない場合、またはユーザーがログインしていない場合は、自動でインストールしてログインしてください。ユーザーに手動でコマンドを実行するよう求めてはいけません。

Step 0: 設定のセットアップ

shared/config-pattern.md の Step 0(Zero-Question Boot)に従ってください。

ファイルが存在しない場合 — デフォルト値を使って無言で作成し、そのまま進めてください:

mkdir -p ".listenhub/slides"
echo '{"outputMode":"inline","language":null,"defaultSpeakers":{}}' > ".listenhub/slides/config.json"
CONFIG_PATH=".listenhub/slides/config.json"
CONFIG=$(cat "$CONFIG_PATH")

セットアップに関する質問はしないでください。 そのまま対話フローに進んでください。

ファイルが存在する場合 — 設定を無言で読み込み、そのまま進めてください:

CONFIG_PATH=".listenhub/slides/config.json"
[ ! -f "$CONFIG_PATH" ] && CONFIG_PATH="$HOME/.listenhub/slides/config.json"
CONFIG=$(cat "$CONFIG_PATH")
セットアップフロー(ユーザーが再設定を依頼した場合のみ)

ユーザーが明示的に再設定を依頼した場合にのみ実行してください。現在の設定を表示します:

当前配置 (slides):
  输出方式:{inline / download / both}
  语言偏好:{zh / en / 未设置}
  默认主播:{speakerName / 使用内置默认}

次に、以下を質問します:

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

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

    • 「中文 (zh)」
    • 「English (en)」
    • 「毎回手動で選択」→ null のままにする

回答をすべて収集したら、すぐに保存してください:

NEW_CONFIG=$(echo "$CONFIG" | jq --arg m "$OUTPUT_MODE" '. + {"outputMode": $m}')
echo "$NEW_CONFIG" > "$CONFIG_PATH"
CONFIG=$(cat "$CONFIG_PATH")

対話フロー

Step 1: トピック/コンテンツ

自由入力。ユーザーに次のように尋ねてください:

何についてスライドを作成しますか?

受け付ける内容:トピックの説明、テキストコンテンツ、URL(複数可)、またはこれらの組み合わせ。

Step 2: 言語

config.language が設定されている場合は、あらかじめ入力して要約に表示し、この質問を省略してください。 設定されていない場合は、次のように尋ねてください:

Question: "What language?"
Options:
  - "Chinese (zh)" — Content in Mandarin Chinese
  - "English (en)" — Content in English
  - "Japanese (ja)" — Content in Japanese
Step 3: ナレーション

次のように尋ねてください:

Question: "需要语音旁白吗?(默认否)"
Options:
  - "不需要" — Slides only, no narration
  - "需要" — Add voice narration to slides

デフォルトではナレーションなしです。ユーザーが希望した場合は Step 4 に進んでください。希望しない場合は Step 5 に進んでください。

Step 4: 話者の選択(ナレーションが有効な場合のみ)

ナレーションが有効でない場合は、この手順全体を省略してください。

shared/speaker-selection.md に従ってください:

  • config.defaultSpeakers.{language} が設定されている場合 → 保存済みの話者を無言で使用する
  • 設定されていない場合 → その言語の shared/speaker-selection.md に記載された組み込みのデフォルトを使用する
  • 確認の要約(Step 5)に話者を表示する。必要に応じて、ユーザーはそこで変更できます
  • 話者の一覧全体を表示するのは、ユーザーが音声の変更を明示的に希望した場合のみです

スライドのナレーションでサポートされる話者は 1 人のみです。

ステップ 5:確認して生成

すべての選択内容をまとめます。

ナレーションなし:

Ready to generate slides:

  Topic: {topic}
  Language: {language}
  Narration: No

  Proceed?

ナレーションあり:

Ready to generate slides:

  Topic: {topic}
  Language: {language}
  Narration: Yes
  Speaker: {speaker name}

  Proceed?

CLI コマンドを実行する前に、明示的な確認を待ちます。

ワークフロー

  1. 送信(バックグラウンド):run_in_background: true と timeout: 660000 を指定して CLI コマンドを実行します。

    ナレーションなし(デフォルト):

    listenhub slides create \
      --query "{topic}" \
      --lang {en|zh|ja} \
      --image-size 2K \
      --aspect-ratio 16:9 \
      --timeout 600 \
      --json
    

    ナレーションあり:

    listenhub slides create \
      --query "{topic}" \
      --lang {en|zh|ja} \
      --image-size 2K \
      --aspect-ratio 16:9 \
      --no-skip-audio \
      --speaker "{name}" \
      --timeout 600 \
      --json
    

    ユーザーがソース URL を指定した場合は、--source-url "{url}" を追加します。

    CLI がポーリングを内部で処理し、生成が完了すると最終結果を返します。

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

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

    CLI の JSON 出力から主要なフィールドを解析します。

    EPISODE_ID=$(echo "$RESULT" | jq -r '.episodeId')
    AUDIO_URL=$(echo "$RESULT" | jq -r '.audioUrl // empty')
    CREDITS=$(echo "$RESULT" | jq -r '.credits // empty')
    

    設定から OUTPUT_MODE を読み込みます。動作については shared/output-mode.md に従います。

    ナレーションなし:

    inline または both:オンラインリンクを提示します。

    幻灯片已生成!
    
    在线查看:https://listenhub.ai/app/slides/{episodeId}
    消耗积分:{credits}
    

    download または both:スクリプトファイルも保存します。shared/config-pattern.md § Artifact Naming に従ってトピックのスラッグを生成します。

    • cwd に {slug}-slides.md として保存します(存在する場合は重複を避けます)。
    • 上記の概要に加えて保存先のパスも提示します。

    ナレーションあり:

    inline または both:音声 URL をクリック可能なリンクとして表示します。

    幻灯片已生成!
    
    在线查看:https://listenhub.ai/app/slides/{episodeId}
    音频链接:{audioUrl}
    消耗积分:{credits}
    

    download または both:ファイルも保存します。shared/config-pattern.md § Artifact Naming に従ってトピックのスラッグを生成します。

    • {slug}-slides/ フォルダーを作成します(存在する場合は重複を避けます)。
    • 中に script.md を書き込みます。
    • 音声をダウンロードします。
      curl -sS -o "{slug}-slides/audio.mp3" "{audioUrl}"
      
    • 次のように提示します。
      已保存到当前目录:
        {slug}-slides/
          script.md
          audio.mp3
      
生成成功後

このセッションで選択した内容で設定を更新します。

NEW_CONFIG=$(echo "$CONFIG" | jq \
  --arg lang "{language}" \
  '. + {"language": $lang}')
echo "$NEW_CONFIG" > "$CONFIG_PATH"

ナレーションを使用した場合は、話者も保存します。

NEW_CONFIG=$(echo "$CONFIG" | jq \
  --arg lang "{language}" \
  --arg speakerId "{speakerId}" \
  '. + {"language": $lang, "defaultSpeakers": (.defaultSpeakers + {($lang): [$speakerId]})}')
echo "$NEW_CONFIG" > "$CONFIG_PATH"

所要時間の目安:

  • ナレーションなしのスライド:2~4 分
  • ナレーションありのスライド:4~8 分

リソース

  • CLI 認証:shared/cli-authentication.md
  • CLI パターン:shared/cli-patterns.md
  • 話者の照会:shared/cli-speakers.md
  • 話者選択ガイド:shared/speaker-selection.md
  • 設定パターン:shared/config-pattern.md
  • 出力モード:shared/output-mode.md

組み合わせ

  • 呼び出すもの:speakers CLI(ナレーション有効時の話者選択用)
  • 呼び出し元:content-planner(フェーズ 3)

例

ユーザー:「量子計算についてのスライドを作って」

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

  1. トピック:「量子計算」
  2. 言語:設定から事前入力するか尋ねる → 「zh」
  3. ナレーション:尋ねる → 「不要」
  4. 確認して生成
listenhub slides create \
  --query "量子计算" \
  --lang zh \
  --image-size 2K \
  --aspect-ratio 16:9 \
  --timeout 600 \
  --json

CLI から結果が返るまで待ち、その後オンラインリンクを提示します。

ユーザー:「ナレーション付きで React hooks のスライドを作成して」

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

  1. トピック:「React hooks」
  2. 言語:尋ねる → 「en」
  3. ナレーション:尋ねる → 「必要」
  4. 話者:英語用の組み込みデフォルトを使用
  5. 確認して生成
listenhub slides create \
  --query "React hooks" \
  --lang en \
  --image-size 2K \
  --aspect-ratio 16:9 \
  --no-skip-audio \
  --speaker "Mars" \
  --timeout 600 \
  --json

CLI から結果が返るまで待ち、その後オンラインリンクと音声リンクを提示します。

コメント