OpenParable
Skip to content
← Back to skills

Open Show

Documents
open-show

Open Show is an Agent Skill for documents published in the aiskillstore/marketplace repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

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

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/aiskillstore/marketplace/blob/HEAD/skills/lumacoder/open-show/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/open-show, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

OpenShow 技能

触发条件

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

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

支持的输入

类型识别方式处理方式依赖
Markdown.md / .markdown 后缀markdown 库解析markdown
Word.docx 后缀python-docx 提取标题/段落python-docx
本地 HTML.html / .htm 后缀BeautifulSoup 解析 DOMbeautifulsoup4
网址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/