360 Secure SkillHub
360 安全技能中心

open-show

核心功能:支持Markdown、docx、PDF、txt、本地HTML及网址转换为单文件全屏HTML幻灯片,自动解析内容、智能分页、匹配布局模板,内置计时器、多端交互。典型场景:演讲展示、投影演示、移动端浏览。输入为文件路径或网址,输出到默认目录,支持自动打开,可通过键盘、鼠标、触屏操作翻页、切换全屏等。

lumacoder
lumacoder
热度 46.98
最近更新 2026-05-11 17:43:33
分类:效率依赖:代码执行 / 读写文件应用场景:文件转换 / 演示设计

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add open-show
Metadata
name
open-show
description
将 Markdown、Word (.docx)、PDF、Text (.txt)、本地 HTML 或任意网址转换为单个可全屏播放的 HTML 幻灯片。触发词:「幻灯片」「转幻灯片」「生成演示稿」「做 deck」「文档转 html 播放」。
version
0.1.1

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/