mcpField
S
slides

slides

github.com/marswaveai文档处理81572 次安装5 周前更新
代码仓库

关于 slides

slides 是用于从主题、URL 或文本生成幻灯片的 ListenHub 技能,可选择添加语音旁白。适用于演示、内容摘要和视觉叙事,并通过 CLI 提交生成任务。

主要功能

  1. 01从主题、URL 或文本生成幻灯片
  2. 02生成 AI 视觉内容
  3. 03可选语音旁白
  4. 04支持中文、英文和日文内容
  5. 05提供在线结果与文件保存流程

适用场景

  1. 01将主题整理成演示文稿
  2. 02把 URL 内容转为幻灯片
  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 工具——不得以纯文本形式列出选项。每次只问一个问题。等待用户回答后,再进行下一步。收集完所有参数后,总结用户的选择并请其确认。在用户明确确认之前,不得调用任何 CLI 命令。

步骤 -1:CLI 身份验证检查

遵循 shared/cli-authentication.md。如果未安装 CLI 或用户尚未登录,请自动安装并自动登录——切勿要求用户手动运行命令。

步骤 0:配置设置

遵循 shared/config-pattern.md 的步骤 0(零问题启动)。

如果文件不存在——静默使用默认值创建文件并继续:

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. 语言(可选):“默认语言?”

    • “中文 (zh)”
    • “English (en)”
    • “每次手动选择” → 保持为 null

收集完答案后,立即保存:

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

交互流程

步骤 1:主题 / 内容

自由文本输入。询问用户:

你想创建什么主题的幻灯片?

接受:主题描述、文本内容、URL(一个或多个),或以上内容的任意组合。

步骤 2:语言

如果已设置 config.language,则预先填入并在摘要中显示——跳过此问题。 否则询问:

Question: "What language?"
Options:
  - "Chinese (zh)" — Content in Mandarin Chinese
  - "English (en)" — Content in English
  - "Japanese (ja)" — Content in Japanese
步骤 3:配音

询问:

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

默认不配音。如果用户回答是,则继续步骤 4;否则跳至步骤 5。

步骤 4:说话人选择(仅在启用配音时)

如果未启用配音,则完全跳过此步骤。

遵循 shared/speaker-selection.md:

  • 如果已设置 config.defaultSpeakers.{language} → 静默使用已保存的说话人
  • 如果未设置 → 使用 shared/speaker-selection.md 中该语言的内置默认值
  • 在确认摘要(步骤 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. 提交(后台):运行 CLI 命令,并设置 run_in_background: true 和 timeout: 660000:

    不含旁白(默认):

    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 生成主题 slug。

    • 在当前工作目录中保存为 {slug}-slides.md(如果已存在则使用不重复的名称)
    • 除上述摘要外,还要呈现保存路径。

    含旁白:

    inline 或 both:将音频 URL 显示为可点击链接。

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

    download 或 both:同时保存文件。按照 shared/config-pattern.md § Artifact Naming 生成主题 slug。

    • 创建 {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 阶段)

示例

用户:「帮我做一个关于量子计算的幻灯片」

Agent 工作流:

  1. 主题:「量子计算」
  2. 语言:从配置预填,或询问 → 「zh」
  3. 旁白:询问 → 「不需要」
  4. 确认并生成
listenhub slides create \
  --query "量子计算" \
  --lang zh \
  --image-size 2K \
  --aspect-ratio 16:9 \
  --timeout 600 \
  --json

等待 CLI 返回结果,然后呈现在线链接。

用户:「Create slides about React hooks with narration」

Agent 工作流:

  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 返回结果,然后呈现在线链接和音频链接。

评论

支持 Markdown