关于 slides
slides 是用于从主题、URL 或文本生成幻灯片的 ListenHub 技能,可选择添加语音旁白。适用于演示、内容摘要和视觉叙事,并通过 CLI 提交生成任务。
主要功能
- 01从主题、URL 或文本生成幻灯片
- 02生成 AI 视觉内容
- 03可选语音旁白
- 04支持中文、英文和日文内容
- 05提供在线结果与文件保存流程
适用场景
- 01将主题整理成演示文稿
- 02把 URL 内容转为幻灯片
- 03制作带旁白的幻灯片讲解
- 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明确要求时,才添加配音
步骤 -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 / 使用内置默认}
然后询问:
-
outputMode:遵循
shared/output-mode.md§ Setup Flow Question。 -
语言(可选):“默认语言?”
- “中文 (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 命令前,都要等待用户明确确认。
工作流
-
提交(后台):运行 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 会在内部处理轮询,并在生成完成后返回最终结果。
-
告知用户任务已提交,并会在完成时收到通知。
-
收到完成通知后,解析并呈现结果:
解析 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 工作流:
- 主题:「量子计算」
- 语言:从配置预填,或询问 → 「zh」
- 旁白:询问 → 「不需要」
- 确认并生成
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 工作流:
- 主题:「React hooks」
- 语言:询问 → 「en」
- 旁白:询问 → 「需要」
- 说话人:使用英语内置默认值
- 确认并生成
listenhub slides create \
--query "React hooks" \
--lang en \
--image-size 2K \
--aspect-ratio 16:9 \
--no-skip-audio \
--speaker "Mars" \
--timeout 600 \
--json
等待 CLI 返回结果,然后呈现在线链接和音频链接。