首页 / 全部技能 / 设计 / deck-presenter-mode
设计 · nexu-io/html-anything

deck-presenter-mode

tokyo-night 默认主题, T 切换 5 主题, S 打开提词器 popup

L3 联网 · 声明域名与密钥范围V1 已固定联网Dual-pass Audit
Author nexu-ioGitHub nexu-io/html-anything ↗Stars 8827License Apache-2.0(工作副本根目录 LICENSE 文件 = Apache License Version 2.0;GitHub API spdx_id=Apache-2.0。注意:skill 目录本身不含独立 LICENSE,许可来自仓库根;第三方来源模板在 README 另有署名说明)Commit 553ed98c28
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

该 skill 是 html-anything 的「模板包」:frontmatter 供选择器取元数据,SKILL.md 正文(frontmatter 之后的 body)被 loader 原样读出后作为模型指令。

next/src/lib/templates/loader.ts
const { fm, body } = parseFrontmatter(raw);
本模板正文 21 行 / 687 字节(篇幅集中在讲者侧交互);frontmatter 走 parseFrontmatter 拆成 fm/body 两份,目录内没有任何脚本参与。

真正送进模型的 prompt = 共享设计指令 + 本模板正文 + 【输入格式】+【用户内容】;共享指令还带一条覆盖规则,声明模板里的页数/版面数字不是上限。

next/src/lib/templates/shared.ts
return `${SHARED_DESIGN_DIRECTIVES} ${opts.body.trim()}
同文件里紧随的覆盖规则逐字写着:模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。

产出纪律由共享指令硬性约束:禁止 agent 使用任何文件系统工具,HTML 必须以 stdout 文本流式输出、由前端落盘。

next/src/lib/templates/shared.ts
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何
本模板自身不声明落盘方式,完全依赖这条共享约束。

演讲者支持靠「每页 aside.notes」实现:正文要求每页附 150-300 字逐字稿,应用侧 deck.ts 会把 aside.notes 抽出来放进备注面板并从幻灯片本体删除。

next/src/lib/deck.ts
notes = stripTags(inner);
即:稿件对观众不可见、对讲者可见——这是「含逐字稿」能落地的机制,属应用侧解析约定。

提词器 popup 用键盘快捷键驱动:T 切主题、S 开 popup,popup 内含 CURRENT / NEXT / SCRIPT / TIMER 四张卡。

next/src/lib/templates/skills/deck-presenter-mode/SKILL.md
- 右下小 toolbar: T 切主题 / S 打开 popup
同段另一行:「- Popup: CURRENT / NEXT / SCRIPT / TIMER 四张磁吸卡」——把提词器拆成当前页/下一页/脚本/计时四块。

主题机制为「1 默认 + 5 套可切」:默认 tokyo-night,T 键循环切换(含一套 light)。

next/src/lib/templates/skills/deck-presenter-mode/SKILL.md
- 默认 tokyo-night; 共 5 套主题 (含 light)
与 deck-replit 的「选 1 套不混用」相反:这里运行时切换是功能本身。

页容器符合全仓 deck 约定:example.html 的 section 带 class 含 slide,且带 8 处 aside.notes,可被 deck.ts 逐页解析并抽稿件。

next/src/lib/deck.ts
const SLIDE_RE =
应用侧另有 PNG zip 与多页 PPTX 导出(宿主能力)。

2核心能力

01每页内嵌 150-300 字逐字稿(<aside class="notes">),供备注面板与提词器使用
02右下小 toolbar 快捷键交互:T 切主题 / S 开 popup
03提词器 popup 四张磁吸卡:CURRENT / NEXT / SCRIPT / TIMER
045 套主题(默认 tokyo-night,含一套浅色)运行时切换
05站点侧归类为工程场景(scenario: engineering)、16:9 横版
06CLI 关键词路由:presenter / 演讲者 / 演讲模式 → deck-presenter-mode
07应用侧配套:aside.notes 抽取(deck.ts)→ 备注面板 + 逐页 PNG/PPTX 导出

3外部依赖

KindDependency / Endpoint
cli宿主本机 agent CLI(由应用侧 spawn;非本 skill 指令)
networkGoogle Fonts(产物示例引用,非 skill 正文要求)
network产物样例正文里的第三方出处文本(非调用)

4管控建议与判定依据

建议配套管控措施
面向 Agent
声明可访问域名与密钥范围
面向管理者
密钥最小权限,保留请求日志
判定依据(文件路径与关键语句摘要)
  • 网络端点: 声明外部网络访问: example.html 有 Google Fonts @import(fonts.googleapis.com)多条;产物渲染时由浏览器拉取。
审计说明: 。判级对象=skill 目录(SKILL.md + example.html):无脚本、无凭证读取、无写盘指令;SKILL.md 正文零 URL、零 CDN/接口要求,全部内容是布局与交互(T 切主题 / S 开 popup / aside.notes 逐字稿)的文字规格。目录内出现的端点只有 example.html 的 Google Fonts @import 与一条 github 链接文本(产物样例)。本仓 html-anything 模板按批4口径统一 🟢 绿档:判级对象=skill 自身目录;宿主壳(loader.ts/assemblePrompt/本地 agent CLI/预览 iframe)与 example.html 里的字体、CDN 引用属产物期行为(由浏览器拉取、skill 执行时不外发),只写进 reason/risks,不判档。

5第二遍独立确认

  • [ok] 文件清单(2 个文件,无脚本) — SKILL.md(687B) + example.html(37604B)。
  • [ok] 正文零端点复核 — SKILL.md 内 http/CDN/fetch/script 零命中。
  • [ok] 目录内端点自证 — example.html: 多条 fonts.googleapis.com @import + 一处 github.com/lewislulu/html-ppt-skill 文本;无远程 script、无 fetch/XHR。
  • [ok] 无凭证读取 — key/secret/token/.env 零命中。
  • [ok] 无写盘指令 — SKILL.md 无 write/save 类指令;shared.ts 明令禁文件工具。
  • [ok] 交互约定逐字可复核 — T 切主题 / S 打开 popup / CURRENT·NEXT·SCRIPT·TIMER 四卡 / 默认 tokyo-night 5 套主题均在正文。
  • [ok] aside.notes 机制在宿主侧有真实实现 — deck.ts 的 `notes = stripTags(inner);` 与 class 含 notes 的 aside 匹配正则,说明「含逐字稿」不是空头承诺。
  • [ok] 样例产物与机制一致 — example.html: 6 个 <section>、8 处 class 含 slide、8 处 aside.notes → 稿件可被逐页抽出。

6结论

  • 瞄准被忽视的讲者侧需求:逐字稿 + 提词器 + 计时,而不是再做一套好看的版式。
  • 稿件与幻灯片分离有宿主侧真实实现:aside.notes 被抽出后从观众视图移除。
  • 主题切换写进交互(T 键 5 套),现场可按场地亮度切浅色。
  • 规格精炼、上下文成本低(687 字节),适合与长讲稿一起塞进同一次生成。
  • 适合: 适合现场演讲、课堂、内部 talk 等「怕忘词」的场景:需要 deck 的同时还要逐字稿与提词器。也适合把讲稿与幻灯片一次性生成的流水线(讲稿直接进 aside.notes)。
    不适合: 不适合不发一言的阅读型材料(逐字稿是给讲者的,读者看不到);不适合要求严格企业品牌模板的场合(5 套主题偏编辑器风,非品牌化);不适合需要确定性设计的交付(交互细节留给模型发挥)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload deck-presenter-mode.tar.gz
    sha256: 1b8a4ed4e3c3279c…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 553ed98c28.