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

deck-presenter-mode

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

风险提醒:绿色 · 放心使用AI 侦查报告
作者 nexu-ioGitHub nexu-io/html-anything ↗Stars 8827许可 Apache-2.0(工作副本根目录 LICENSE 文件 = Apache License Version 2.0;GitHub API spdx_id=Apache-2.0。注意:skill 目录本身不含独立 LICENSE,许可来自仓库根;第三方来源模板在 README 另有署名说明)commit 553ed98c28
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 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外部依赖

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

4风险提醒 风险提醒:绿色 · 放心使用

风险提醒:绿色 · 放心使用
  • 交互与主题细节靠模型自行实现,规格未给样式细节 — 正文只写「T 切主题」「S 打开 popup」等行为,未规定实现方式,不同模型产出差异可能较大。
  • 逐字稿会大段原样进入产物(内容面) — 每页 150-300 字稿件由用户内容展开,若用户材料含敏感内部信息,会随 HTML 一并落到预览/导出物里。
  • notes 文本进入宿主备注面板的渲染面 — deck.ts 用 stripTags + 实体解码把 aside 内容转纯文本后展示,宿主实现决定了这段用户文本的渲染安全边界(宿主侧,不判级)。
  • 预览 iframe 的 sandbox 组合偏宽(宿主侧) — template-picker.tsx:544 / preview-pane.tsx:297 均为 sandbox="allow-scripts allow-same-origin"。
风险提醒:绿色,放心使用。判级对象=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 套主题偏编辑器风,非品牌化);不适合需要确定性设计的交付(交互细节留给模型发挥)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 deck-presenter-mode.tar.gz
    sha256: 1b8a4ed4e3c3279c…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 553ed98c28;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库nexu-io / nexu-io/html-anything
    Stars8827
    最近推送2026-09-15
    本 skill commit553ed98c28
    许可Apache-2.0(工作副本根目录 LICENSE 文件 = Apache License Version 2.0;GitHub API spdx_id=Apache-2.0。注意:skill 目录本身不含独立 LICENSE,许可来自仓库根;第三方来源模板在 README 另有署名说明)
    本站信息
    收录日期2026-09-06
    分类设计
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近