关于 markdown-slides
markdown-slides 可将文档、提纲等内容整理为适用于 Deckset 或 Marp 的演示文稿 Markdown。它会处理分页结构、图片引用和演讲者备注格式。
主要功能
- 01将内容整理为幻灯片结构
- 02支持 Deckset 和 Marp 格式
- 03解析并格式化图片路径
- 04生成演讲者备注
- 05添加页码和标题表情符号
适用场景
- 01将文档或提纲转换为幻灯片
- 02为 Deckset 或 Marp 准备 Markdown
- 03将说明文字整理为演讲者备注
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jykim/ claude-obsidian-skills --skill markdown-slides安装后在 Claude Code 中输入/markdown-slides确认已加载。
详细介绍
Markdown 幻灯片技能
将内容转换为 Markdown 格式的演示文稿幻灯片,兼容 Deckset 和 Marp 演示工具。
何时使用此技能
在用户执行以下操作时启用此技能:
- 要求创建幻灯片或演示文稿
- 请求将文档转换为幻灯片格式
- 提到 Deckset 或 Marp
- 想要生成演讲者备注
- 需要为演示文稿设置图片格式
输入要求
- 源内容:Markdown 文件、大纲或结构化内容
- 图片:
_files_/目录中的文件或需要解析的路径 - 目标平台:Deckset(默认)或 Marp
- 选项:
- 演讲者备注(默认启用)
- 幻灯片编号(可选的 frontmatter)
- Emoji 增强(默认启用)
输出规范
- 文件位置:与源文件位于同一文件夹
- 文件命名:原文件名加上
- slides后缀- 示例:
document.md→document - slides.md
- 示例:
- 格式:兼容 Deckset 的 Markdown
- 结构:包含恰当的幻灯片分隔符、图片标签和演讲者备注
- 增强:添加 Emoji,使视觉效果更佳
主要流程
步骤 1:设置幻灯片结构
目标:创建逻辑清晰、层次恰当的幻灯片划分
操作:
- 阅读并分析源内容结构
- 在逻辑分界处插入幻灯片分隔符(
---):- 在主要章节之间
- 在不同主题之间
- 在章节介绍幻灯片之后
- 在主要示意图之前或之后
- 保持内容层次结构:
- H1(
#)用于章节标题 - H2(
##)用于主要幻灯片标题 - H3(
###)用于子主题
- H1(
- 保留原有组织结构和行文顺序
- 添加可选的 frontmatter:
slidenumbers: true
示例:
slidenumbers: true
# 1. Section Title 🎯

^ Introduction to this section.
---
## Main Topic 📊
Content here...
---
### Detailed Subtopic
More details...
步骤 2:转换图片格式
目标:将图片转换为 Deckset 格式,并正确设置位置
关键要求: ⚠️ 必须逐张解析相对路径 ⚠️ 必须对空格进行 URL 编码,并转义特殊字符 ⚠️ 必须确认图片文件存在
图片位置格式:
| 格式 | 用途 | 示例 |
|---|---|---|
![]() | 章节介绍背景 |  |
![inline]() | 文本流中的示意图 |  |
![right fit]() | 主要用途:内容幻灯片 |  |
![right 80%]() | 需要特定尺寸时 |  |
![inline fill]() | 全宽行内图片 |  |
操作:
- 找出源文件中的所有图片引用
- 对每张图片:
a. Determine appropriate position format b. Resolve relative path from slide file location c. URL-encode spaces: " " → "%20" d. Escape parentheses: "(" → "%28", ")" → "%29" e. Verify file exists at resolved path f. Use original images when available g. Copy missing images to _files_/ directory - 根据上下文设置位置:
- 章节介绍:使用
![]()设置全屏背景 - 文本中的示意图:使用
![inline]() - 内容幻灯片的默认设置:使用
![right fit]()⭐ - 自定义尺寸:需要时使用
![right XX%]() - 全宽行内图片:宽幅图片使用
![inline fill]()
- 章节介绍:使用
示例:
# Section Title

---
## Content Slide
Key points here:
- Point 1
- Point 2

---
## Inline Diagram
Text before diagram.

Text after diagram.
步骤 3:转换演讲者备注
目标:将适当的内容转换为演讲者备注
格式:以 ^ (插入符号 + 空格)开头的行
位置:每张幻灯片的末尾
转换为演讲者备注: ✅ 多句段落 ✅ 说明性文字 ✅ 补充背景信息 ✅ 演讲要点
不要转换:
❌ 单句段落
❌ 列表(项目符号或编号)
❌ 引用块
❌ 以冒号(:)结尾的句子
❌ 标题(H1、H2、H3)
❌ 表格内容
对于 Marp 平台:改用 HTML 注释
示例:
## Slide Title
Main content visible to audience.
^ This paragraph becomes a speaker note because it's multi-sentence explanatory text. It provides context that the speaker needs but the audience doesn't need to read on the slide.
---
## Another Slide
- Bullet points stay visible
- Not converted to notes
^ Additional speaking points go here.
第 4 步:内容优化
目标:润色呈现效果,发挥最大影响力
操作:
-
为标题添加表情符号,包括章节标题和幻灯片标题:
- 使用能增强含义的相关表情符号
- 不要过度使用,保持专业
- 示例:🎯📊🤖💡🚀📚🔧⚡
-
清理注释:
- 删除不用于幻灯片的 Markdown 注释
- 删除 TODO 项
- 删除内部备注
-
确保格式整洁:
- 间距一致
- 标题层级规范
- 幻灯片分隔清晰
-
添加 frontmatter(如有要求):
slidenumbers: true -
最终检查:
- 每张幻灯片都有明确重点
- 图片位置正确
- 演讲者备注置于末尾
- 没有悬置内容
关键指南
图片处理
⚠️ 关键规则:
- 绝不虚构图片——仅引用源文档或
_files_/文件夹中已有的图片。不要为不存在的图片创建诸如background-xxx.png的占位引用。 - 有原图时使用原图
- 将缺失的图片复制到
_files_/目录,而不是替换图片 - 逐张解析路径——不要假定所有图片都在同一目录
- 对空格进行 URL 编码:
my file.png→my%20file.png - 转义特殊字符:
- 圆括号:
(→%28,)→%29 - 其他特殊字符也需按需转义
- 圆括号:
- 引用前确认图片存在——运行
ls或 glob 命令确认文件存在 - 保持语义相关——图片应与幻灯片内容相符
- 章节引言可以不配图片——如果章节引言幻灯片没有背景图片,只需使用标题和演讲者备注,不要添加图片引用
图片位置标准
图片位置决策树:
Is it a section intro slide with just title?
→ Does a background image exist?
→ YES: Use ![]() for full background
→ NO: Skip image, use title + speaker notes only
Is it a diagram embedded in flowing text?
→ YES: Use ![inline]() or ![inline fill]()
Is it the main visual for the slide with bullet points?
→ YES: Use ![right fit]() ⭐ PRIMARY FORMAT
Does it need specific sizing?
→ YES: Use ![right 80%]() or other percentage
演讲者备注规则
应转换为演讲者备注的内容:
- 多句解释性段落
- 幻灯片上不需要的背景信息
- 演讲者的要点
- 用于口头讲解的补充细节
不应转换的内容:
- 单句段落(可能属于幻灯片内容)
- 项目符号列表或编号列表(通常属于幻灯片内容)
- 引用块(通常是重点内容)
- 以
:结尾的句子(通常用于引出列表) - 任何级别的标题
- 表格内容
格式:
Slide content here.
^ Speaker note paragraph one. Can be multiple sentences providing context.
^ Speaker note paragraph two. Each note paragraph gets its own ^ prefix.
内容规范
-
文件命名:
- 始终使用
- slides后缀 - 其他部分保留原文件名
- 示例:
AI for PKM.md→AI for PKM - slides.md
- 始终使用
-
表情符号用法:
- 为 H1 和 H2 标题添加表情符号
- 选择相关且专业的表情符号
- 不要过度使用——重质量而非数量
- 示例:
- 🎯 目标/目的
- 📊 数据/图表
- 🤖 AI/技术
- 💡 想法/见解
- 🚀 未来/发布
- 📚 学习/知识
-
层级:
- H1 用于主要章节(通常带编号)
- H2 用于主要幻灯片标题
- H3 用于幻灯片内的子主题
- 编号方案保持一致
-
幻灯片分隔:
- 独占一行使用
---(三个连字符) - 建议在前后留空行
- 在主题之间合理分隔
- 独占一行使用
平台专用说明
Deckset(默认)
格式:
- 演讲者备注:每行使用
^前缀 - 图片位置:全面支持所有格式
- Frontmatter:简单的键值对
功能:
- 使用
slidenumbers: true自动为幻灯片编号 - 完全控制图片位置
- 支持丰富的演讲者备注
Frontmatter 示例:
slidenumbers: true
autoscale: true
theme: Plain Jane, 3
Marp(可选)
格式:
- 演讲者备注:HTML 注释 ``
- 图片位置:可能使用不同语法
- Frontmatter:包含
marp: true的 YAML
转换为 Marp:
---
marp: true
paginate: true
---
差异:
- 使用 HTML 注释,而不是
^前缀 - Frontmatter 结构不同
- 可能需要使用
![bg]()作为背景,而不是![]()
质量检查清单
标记任务完成前,请确认:
- 不添加虚构图片 —— 每个图片引用都指向真实文件
- 所有图片都使用有效的 URL 编码路径
- 图片文件位于指定位置(运行
ls确认) - 路径中的空格已转换为
%20 - 特殊字符已正确转义
- 演讲者备注使用
^前缀(或在 Marp 中使用 HTML) - 演讲者备注位于每张幻灯片的末尾
- 幻灯片分隔符(
---)位于合理的分隔处 - 标题层级一致(H1 → H2 → H3)
- 为标题适当添加表情符号
- 文件已使用
- slides后缀保存 - 保持源内容的层级结构
- 没有孤立内容或不完整的部分
- 已移除内部注释
- 如果有要求,已添加 Frontmatter
错误处理
图片缺失
问题:源文件引用了不存在的图片
解决方案:
- 检查源文件的
_files_/目录 - 检查上级目录中的
_files_/目录 - 在项目中按名称搜索图片
- 如果找到:复制到演示文稿的
_files_/目录 - 如果未找到:在演讲者备注中注明并跳过该图片
相对路径失效
问题:路径无法正确解析
解决方案:
- 确定幻灯片文件的位置
- 计算幻灯片到图片的相对路径
- 测试路径是否可解析
- 对可用路径进行 URL 编码
路径中的无效字符
问题:特殊字符导致图片链接失效
解决方案:
- 空格:转换为
%20 - 圆括号:
(→%28,)→%29 - 方括号:
[→%5B,]→%5D - 其他特殊字符:使用 URL 编码
最佳实践提示
- 从大纲开始:先创建清晰的章节和幻灯片结构
- 每张幻灯片只讲一个要点:每张幻灯片都应传达一个明确的信息
- 视觉层级:章节使用 H1,幻灯片使用 H2,子要点使用 H3
- 图片位置:内容幻灯片默认使用
![right fit]() - 演讲者备注:添加有助于演讲者、但会让幻灯片显得杂乱的背景信息
- 统一表情符号:为相似概念使用相似的表情符号
- 在 Deckset 中测试:预览幻灯片以检查格式
- 反复调整:第一轮确定结构,第二轮润色