Help us improve
Share bugs, ideas, or general feedback.
From feishu-deck-h5
Converts Apple Keynote (.key) presentations to HTML decks with editable text, images, and video. Supports .pptx via Keynote conversion. Works with feishu-deck-h5 for presentation chrome.
npx claudepluginhub fuqiang/feishu-deck-h5 --plugin feishu-deck-h5How this skill is triggered — by the user, by Claude, or both
Slash command
/feishu-deck-h5:keynote-to-htmlThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
你给它一个 `.key` 文件。它会用 Keynote 只读打开,通过 AppleScript 遍历每一
Converts .pptx files into a self-contained HTML deck with 100% fidelity (rasterized slides) and editable text overlay. Press E to toggle edit mode, with per-frame text editing, CJK font subsetting, optional FaaS persistence, and browser translation support.
Converts PDF or PPTX decks into interactive HTML decks with pixel-faithful page-image mode. Preserves slide count, palette, and typography without redesign.
Generates zero-dependency HTML slide presentations with inline CSS/JS and animations. Use for new decks from scratch, PPT/PPTX conversions, or enhancing existing HTML presentations.
Share bugs, ideas, or general feedback.
你给它一个 .key 文件。它会用 Keynote 只读打开,通过 AppleScript 遍历每一
页上的每个 iWork 元素,把引用的图片 / 视频从 .key bundle 里拷出来,并产出
一份 deck.json(每页一条 layout: "raw" 记录)。然后调用 feishu-deck-h5
的渲染器把 deck 包装成自包含的 HTML 页面。
PowerPoint(.pptx)也支持 —— 用 Keynote 打开 .pptx,选「文件 → 存
储为...」,格式选 .key,把生成的 .key 交给本 skill 即可。Keynote 自带
.pptx 导入,转出来的 .key 跟原生 Keynote 文件读起来一样。
当用户手上有 .key 文件(或可以用 Keynote 转存的 .pptx),并希望产出一份:
feishu-deck-h5 演示模式 chrome(← →、F 全屏、底部控制条、进度条)不要在以下场景调用:
.key 拥有 PDF 丢失的结构化数据)feishu-deck-h5 skill).key 文件存在。如果用户只给了名字(没有路径),用
mdfind "<名字>.key" 搜一下。pip install PyMuPDF Pillow keynote-parser —— 用于 PDF→PNG 转换(光
栅兜底)、图片尺寸探测、基于 IWA 的确定性资产 / 对齐解析。已装的话跳过。com.apple.Keynote,v15+;旧版
com.apple.iWork.Keynote v14 也能用,需修改 extract.applescript
顶部的 bundle id)。feishu-deck-h5 skill 可达。默认查找 ../feishu-deck-h5/(同级
skill);用 --renderer <路径> 覆盖。bash skills/keynote-to-html/assets/run.sh \
"<path-to-.key>" \
"<output-dir>" \
[--limit N] # 只转前 N 个非跳过的 slide
[--renderer PATH] # 渲染器 skill 路径(默认: ../feishu-deck-h5/)
[--rasters-dir DIR] # 兜底裁剪用的每页 PNG 目录(slide-NN.png)
[--pdf PATH] # 源 PDF,按需做兜底光栅化
本 skill 会用 Keynote 打开 .key,跑 AppleScript 把每页元素数据写到
<output-dir>/extract.tsv,把匹配到的资源拷 / 转到
<output-dir>/assets/slide-NN/,构造 DeckJSON 的 deck.json,再调用渲
染器的 render-deck.py 产出 index.html。
.key 文件本身不会被改动,Keynote 也是只读打开。
--rasters-dir DIR / --pdf PATH二选一(或都不给)来启用光栅兜底。启用后,所有无法结构化重建的元素类型
(线条、图表、表格、矢量蒙版、无法提取填充的形状)会从该页的 PNG 上裁出
来,作为 <img> 嵌入 —— 这样即使结构化提取失败,视觉也能落地。
| 文件 | 作用 |
|---|---|
assets/extract.applescript | 驱动 Keynote,输出每页一行 (slide, element) 的 TSV |
assets/iwa_resolver.py | 读 .key bundle 的 IWA 归档(通过 keynote-parser),恢复 AppleScript 不提供的资产 stem、真实 bbox、对齐元数据 |
assets/build.py | 解析 TSV → 匹配图片 → 组合定位 HTML → 写 deck.json → 调用渲染器 |
assets/run.sh | Bash 入口 |
每次跑完手动检查这几项:
<output-dir>/index.htmlcrop bounds):Keynote 14.5+ 关闭了 crop bounds /
image scale / image offset 给 AppleScript 自动化。本 skill 用
object-fit: cover 把整张原图塞进 bbox。对于 Keynote 里被裁出子区
域的图片,视觉会与原图有差(通常会变亮)。本 skill 设计上随真实 deck 暴露出的边缘情况持续打补丁。欢迎 PR。