Marketplace open-show

将 Markdown、Word (.docx)、PDF、Text (.txt)、本地 HTML 或任意网址转换为单个可全屏播放的 HTML 幻灯片。触发词:「幻灯片」「转幻灯片」「生成演示稿」「做 deck」「文档转 html 播放」。

install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/lumacoder/open-show" ~/.claude/skills/aiskillstore-marketplace-open-show && rm -rf "$T"
manifest: skills/lumacoder/open-show/SKILL.md
source content

OpenShow 技能

触发条件

用户提及以下任意关键词时激活:

  • 「幻灯片」「转幻灯片」「生成演示稿」「做 deck」
  • 「把这个文档转成可播放的 html」
  • 「把这篇文章做成 PPT 一样的网页」
  • 「这个网页能不能全屏播放」

支持的输入

类型识别方式处理方式依赖
Markdown
.md
/
.markdown
后缀
markdown
库解析
markdown
Word
.docx
后缀
python-docx
提取标题/段落
python-docx
本地 HTML
.html
/
.htm
后缀
BeautifulSoup
解析 DOM
beautifulsoup4
网址
http://
/
https://
前缀
requests
抓取 + 正文提取
requests
,
beautifulsoup4
PDF
.pdf
后缀
PyMuPDF
逐页转图片嵌入
pymupdf
Text
.txt
后缀
按空行/标题分块解析

执行流程(严格按顺序)

第一步:依赖检查

首次使用或不确定时,检查依赖:

python3 -c "import markdown, docx, requests, bs4, fitz; print('ok')"

若失败,安装:

python3 -m pip install markdown python-docx requests beautifulsoup4 pymupdf

第二步:判断输入并调用脚本

基础用法:

python3 ~/.hermes/skills/open-show/scripts/openshow.py -i "<输入>" -o ~/openshow_outputs

生成后自动用系统默认浏览器打开:

python3 ~/.hermes/skills/open-show/scripts/openshow.py -i "<输入>" -o ~/openshow_outputs --open

生成后用 openclaw browser 打开:

python3 ~/.hermes/skills/open-show/scripts/openshow.py -i "<输入>" -o ~/openshow_outputs --openclaw
  • 输入可以是文件绝对路径或 URL
  • 输出目录固定为
    ~/openshow_outputs
    (不存在则自动创建)
  • 生成文件命名规则:
    openshow_<标题>_<时间戳>.html

第三步:返回结果并告知交互方式

已生成可播放 HTML:

{path}

操作方式:

  • /
    翻页
  • 空格
    /
    PageDown
    下一页
  • F
    键切换全屏
  • T
    键显示/隐藏计时器
  • 手机支持左右滑动翻页
  • 点击屏幕右侧 2/3 下一页,左侧 1/3 上一页
  • 左上角计时器点击可暂停/继续

适配场景:手机、电脑、大屏幕投影全屏播放

核心机制(内部实现要点)

内容解析

  • 所有输入统一转换为
    Block
    列表(heading, paragraph, image, list, code, quote)
  • HTML/URL 输入会启发式提取正文容器(最大文本密度的
    article/main/div/section
  • 自动清理导航栏、广告、脚本、样式表
  • 本地/远程图片自动内联为
    data URI
    ,确保单文件离线可用

分页算法

  1. h1/h2/h3
    为天然章节边界分
    Section
  2. 单节内按容量拆页:文字 > 300 字、图片 > 3 张、块数 > 6 时自动拆分
  3. 超长段落(>300 字)先按句子拆分为多个 block,避免一页文字爆炸
  4. 自动避免标题独占一页:若某页只有 heading,从下一页借一个 block

布局模板

根据内容自动匹配:

  • cover
    :H1 大标题页,居中
  • text
    :纯文字内容页,左对齐
  • list
    :bullet points 页,字体放大
  • split
    :左图右文(1 张图)或上图下文(多张图)
  • image
    :单图全屏居中
  • closing
    :最后一页,居中总结风格

幻灯片引擎

  • 零外部 CDN,CSS + JS 全部内联
  • 每页
    100vw × 100vh
    绝对定位
  • 翻页动画:
    transform: translateX()
    +
    cubic-bezier(0.22, 1, 0.36, 1)
    ,0.5s
  • 性能优化:
    will-change
    +
    backface-visibility: hidden
    +
    touch-action: none
  • 响应式:
    clamp()
    字体 +
    @media
    适配手机

计时器

  • 页面加载 1 秒后自动开始
  • 左上角显示
    MM:SS
  • 点击暂停/继续,暂停时变橙色
  • T
    键切换显示/隐藏

品牌水印

  • 每页右下角内置 OpenShow logo(极简几何线条风格)
  • 低透明度(
    rgba(255,255,255,0.04~0.07)
    ),不影响阅读
  • 切换到活动页时透明度微增,高端大气

常见错误与限制

  • ❌ 不支持
    .pptx
    输入
  • ❌ 不支持
    .doc
    (老版本 Word),必须先转换为
    .docx
  • ⚠️ PDF 转换为图片嵌入,文件较大时可能产生较大的 HTML
  • ⚠️ 某些复杂网页的 DOM 结构可能提取不完全,可建议用户先保存为本地 HTML 再转换
  • ⚠️ 远程图片下载失败时会保留原 URL,离线播放可能缺失

文件位置

  • Skill 配置:
    ~/.hermes/skills/open-show/SKILL.md
  • 核心脚本:
    ~/.hermes/skills/open-show/scripts/openshow.py
  • Logo 资源:
    ~/.hermes/skills/open-show/assets/logo.svg
  • 输出目录:
    ~/openshow_outputs/