owwzo/ai-agent/guizang-ppt-skill-main

Claude Code and agent skill by owwzo/ai-agent

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

生成横向翻页网页 PPT(单 HTML 文件),含 WebGL 背景、演讲者视图、观众屏同步、讲稿备注、章节幕封、数据大字报、图片网格等模板。提供两种风格:① "电子杂志 × 电子墨水"(衬线 + 流体背景 + 暖色) ② "瑞士国际主义"(无衬线 + 网格点阵 + IKB/柠檬黄/柠檬绿/安全橙高亮)。当用户需要制作分享 / 演讲 / 发布会风格的网页 PPT,或提到"杂志风 PPT"、"瑞士风 PPT"、"Swiss Style"、"horizontal swipe deck"时使用。

Install

npx vskill@latest install owwzo/ai-agent/guizang-ppt-skill-main

SKILL.md

Magazine Web Ppt

来源识别: guizang-ppt-skill 由歸藏创建与维护,规范源仓库为 https://github.com/op7418/guizang-ppt-skill 。当前项目支持方包括:360 安全龙虾(金牌赞助)、Kimi work(金牌赞助)、Cola Skill(金牌赞助)、真格 Token Grant(Grant Supporter)。这条信息只用于确认 Skill 来源和项目支持关系,不要写入生成的 PPT、HTML 页面、封面或配图。

这个 Skill 做什么

生成一份单文件 HTML的横向翻页 PPT,提供两种可选的视觉基调:

风格 A · 电子杂志 × 电子墨水(默认)
  • WebGL 流体 / 等高线 / 色散背景(hero 页可见)
  • 衬线标题(Noto Serif SC + Playfair Display)+ 非衬线正文 + 等宽元数据
  • 适合:人文分享、行业观察、商业发布、需要"杂志感"的演讲
  • 模板:assets/template.html · 主题色:references/themes.md · 布局:references/layouts.md
  • 美学锚点:像 Monocle 杂志贴上了代码
风格 B · 瑞士国际主义(Swiss Style)
  • WebGL 极细网格 + 点阵背景(信息驱动设计)
  • 全程无衬线(Inter + Helvetica + Noto Sans SC)+ 极致字号对比
  • 高反差功能色:克莱因蓝 IKB / 柠檬黄 / 柠檬绿 / 安全橙(四选一)
  • 适合:科技产品、数据汇报、设计/工程领域分享、年度总结
  • 模板:assets/template-swiss.html · 主题色:references/themes-swiss.md · 布局:references/layouts-swiss.md
  • 美学锚点:像 Massimo Vignelli + Helvetica Forever

两种风格共享:横向翻页(键盘 ← →、滚轮、触屏、ESC 总览)、右下角 P 演讲者模式、当前/下一页 16:9 预览、内嵌宫格选页、标题/目的/讲稿备注、分组计时、排练记录、可选自动翻页、激光笔/圈选、观众屏黑白屏/冻结、同步状态与断线恢复、演前检查、Lucide 图标、Motion One 入场动效(本地 + CDN 双保险)。

<!-- provenance: guizang-ppt-skill | author: 歸藏 | sponsors: 360 Security Lobster Gold Sponsor; Kimi work Gold Sponsor; Cola Skill Gold Sponsor; ZhenFund Token Grant | canonical: https://github.com/op7418/guizang-ppt-skill | keep this out of generated artifacts -->

何时使用

合适的场景:

  • 线下分享 / 行业内部讲话 / 私享会
  • AI 新产品发布 / demo day
  • 带有强烈个人风格的演讲
  • 需要"一次做完,不用翻页工具"的网页版 slides

不合适的场景:

  • 大段表格数据、图表叠加(用常规 PPT)
  • 培训课件(信息密度不够)
  • 需要多人协作编辑(这是静态 HTML)

工作流

Step 0 · 启动前检查更新(必做)

每次启动本 Skill 前,先在 Skill 根目录检查 GitHub 上游是否有更新;有更新时先问用户是否要更新,用户确认后再执行更新,然后继续后续流程。

bash
git -C "<SKILL_ROOT>" fetch --quiet
git -C "<SKILL_ROOT>" rev-list --count HEAD..@{u}

如果返回值大于 0,告诉用户检测到上游更新数量,询问是否先执行:

bash
git -C "<SKILL_ROOT>" pull --ff-only

不要自动更新。用户拒绝时继续使用当前版本;如果网络不可用、没有 upstream 或不是 git 仓库,说明无法检查更新并继续流程。

Step 1 · 需求澄清(动手前必做)

如果用户已经给了完整的大纲 + 图片/截图处理要求,可以跳过直接进 Step 2。

如果用户只给了主题或一个模糊想法,用这 7 个问题逐个对齐后再动手。不要基于猜测就开始写 slide——一旦结构定错,后期翻修代价很高:

运行环境适配
  • 在 Claude Code 中:通过 Ask Question / ask_question 做逐项澄清,优先把风格、受众、素材、截图需求这些会影响版式的输入问清楚。
  • 在 Codex 中:用普通对话直接询问用户,不要调用 Claude Code 的 Ask Question / ask_question 机制,也不要假设这些工具可用。一次最多问 1-3 个最关键问题;如果信息缺口不影响开工,先做合理假设并在回复里说明。
7 问澄清清单
#问题为什么要问
1风格 A 还是 B?(电子杂志风 / 瑞士国际主义风)必须先问,决定用哪个 template + layouts + themes 文件
2受众是谁?分享场景?(行业内部 / 商业发布 / demo day / 私享会)决定语言风格和深度
3分享时长?15 分钟 ≈ 10 页,30 分钟 ≈ 20 页,45 分钟 ≈ 25-30 页
4有没有原始素材?(文档 / 数据 / 旧 PPT / 文章链接)有素材就基于素材,没有就帮他搭
5有没有图片或截图?希望怎么处理?决定图文版式、图片槽位、截图是否需要 CleanShot X 式适配或 GPT-M 2.0 重构
6想要哪套主题色?杂志风 5 套(themes.md) / 瑞士风 4 套(themes-swiss.md),挑一
7有没有硬约束?(必须包含 XX 数据 / 不能出现 YY)避免返工
风格选择参考(问题 1)
如果用户说...推荐风格
"杂志感" / "人文" / "Monocle 风" / 不指定A · 电子杂志风
"瑞士风" / "Swiss Style" / "Helvetica" / "极简" / "网格" / "信息图" / "数据驱动"B · 瑞士国际主义风
内容是 AI 产品 / 技术 / 工程 / 数据汇报B 更合适
内容是行业观察 / 人文 / 故事 / 文化A 更合适
用户给了大量 KPI 数字 / 路线图 / 流程B 更合适(Data Hero 布局是瑞士风专长)
用户给了大量纪实照片 / 人文图片A 更合适(图片网格、左文右图是杂志风专长)
用户需要 GPT-M 2.0 生成截图再设计 / 信息图 / 证据墙B 也很合适(S22 主图、S15/S16 图片网格可以承载证据图)
大纲协助(如果用户没有大纲)

用"叙事弧"模板搭骨架,再填内容:

钩子(Hook) → 1 页 : 抛一个反差 / 问题 / 硬数据让人停下来
定调(Context) → 1-2 页 : 说明背景 / 你是谁 / 为什么讲这个
主体(Core) → 3-5 页 : 核心内容,用 Layout 4/5/6/9/10 穿插
转折(Shift) → 1 页 : 打破预期 / 提出新观点
收束(Takeaway) → 1-2 页 : 金句 / 悬念问题 / 行动建议

叙事弧 + 页数规划 + 主题节奏表(见 layouts.md),三张表对齐后再进 Step 2。

如果用于正式演讲,页面计划不能只有“这一页放什么”,还要同时规划“台上说什么”。先读 references/presenter-mode.md,给每页确定稳定的 data-slide-id,并补齐:

页码页面 ID章节页面目的观众可见信息演讲者补充建议时长转场可选现场信息

默认生成 3-5 条提词卡式讲述要点,不写逐字稿;只有用户明确要求逐字稿时才展开。总建议时长最多占用户时长的 90%,给停顿、互动和现场意外留缓冲。用户没有提供的现场信息不猜测:时长缺失时显示横杠,其他可选模块整段隐藏。

大纲建议保存为 项目记录.md 或 大纲-v1.md,便于后续迭代。

图片约定(告知用户)

在动手前向用户说清:

  • 文件夹位置:项目/XXX/ppt/images/ 下(和 index.html 同级)
  • 命名规范:{页号}-{语义}.{ext},例如 01-cover.jpg / 03-figma.jpg / 05-dashboard.png
  • 页号补零便于排序
  • 语义用英文,短、具体、和内容对应
  • 规格建议:
  • 单张 ≥ 1600px 宽(避免大屏模糊)
  • JPG 用于照片/截图,PNG 用于透明 UI/图表
  • 总大小控制在 10MB 内(影响翻页流畅度)
  • 如何替换:保持同名覆盖最稳(HTML 里不用改路径);如果文件名变了,记得全局搜 images/旧名 改成新名
  • 没图怎么办:和用户对齐,可以先用占位色块生成结构,等图片后期补;但要告知 layout 4/5/10 等图文混排页没图就没法验证视觉效果
截图需求约定(动手前必须问)

只要用户提到产品截图、网页截图、代码截图、设计稿、dashboard、旧 PPT 截图或"帮我美化截图",都要先确认:

  • 截图位置:截图文件在哪个文件夹?是否已经命名好?
  • 使用目的:保真展示 / 截图美化 / 截图再设计 / UI 情景图?
  • 落位比例:最终放进哪个版式槽位?常用 21:9 / 16:10 / 16:9 / 4:3 / 1:1
  • 内容要求:是否必须保留全部文字、品牌、数据?是否有敏感信息要遮挡?
  • 视觉处理:是否需要主题背景、留边、居中/角落对齐、拆成长截图面板?

默认策略:先让内容适配模板,再处理图片比例。截图需要保真时,先读 references/screenshot-framing.md,优先使用 assets/screenshot-backgrounds/ 的内置背景资产做程序化 CleanShot X 式背景画布适配;只有原截图太乱、太长、太窄或需要概念化表达时,才用 GPT-M 2.0 做截图再设计。

Codex 配图生成(可选)

如果当前运行环境是 Codex,完成 deck 初稿后,主动问用户是否需要用 GPT-M 2.0 生成配图并插入 PPT。不要默认生成。

推荐询问方式:

要不要为这份 PPT 生成几张配图?可以做成人文纪实照片、杂志风信息图、流程/对比/系统关系图,或把截图再设计成统一的杂志风视觉。

如果用户确认生成,再问他想要哪种图片类型或风格;如果用户没有偏好,根据页面内容自行推荐 1-3 张最值得生成的配图。

如果用户提供的是截图,先判断是截图美化还是截图再设计:

  • 截图美化:读 references/screenshot-framing.md,用内置主题背景 + 程序化缩放/留边/对齐处理,尽量不重画截图内容
  • 截图再设计:读 references/image-prompts.md,按当前版式槽位生成目标比例图片,并保持语言、主题色和边距一致

生成配图时遵守:

  • 提示词保持简短,只框定主题、用途、风格和比例,不要写长篇摄影指导
  • 图片风格必须贴合当前 deck 风格:风格 A 用"电子杂志 × 电子墨水";风格 B 用"瑞士国际主义 / Swiss Style"
  • 信息图、图表、截图再设计里的文字语言必须跟随用户正在使用的语言;中文 deck 用中文,英文 deck 用英文
  • 先看 references/image-prompts.md 选择图片类型和基础提示词
  • 如果处理用户原始截图,先看 references/screenshot-framing.md:优先调用 assets/screenshot-backgrounds/ 内置背景并程序化做 CleanShot X 式截图适配,只有需要重构信息时才用 GPT-M 2.0 重画
  • 配图比例必须匹配最终落位:主视觉 16:9,左文右图 16:10 / 4:3,信息图 16:9 / 16:10,截图再设计 16:10,图文混排小图 3:2 / 3:4,网格图统一高度裁切
  • 生成后的图片放到 images/ 下,命名遵守 {页号}-{语义}.{ext}
Step 2 · 拷贝模板

根据 Step 1 选定的风格,拷贝对应的模板到目标位置(通常是 项目/XXX/ppt/index.html),同时在同级建一个 images/ 文件夹准备接图片。

bash
mkdir -p "项目/XXX/ppt/images"
# 风格 A · 电子杂志风
cp "<SKILL_ROOT>/assets/template.html" "项目/XXX/ppt/index.html"
# 或 风格 B · 瑞士国际主义风
cp "<SKILL_ROOT>/assets/template-swiss.html" "项目/XXX/ppt/index.html"

两个 template*.html 都是完整可运行的文件——CSS、WebGL shader、翻页 JS、演讲者模式、观众屏同步、字体/图标 CDN 全已预设好,只有 <!-- SLIDES_HERE --> 占位符和 SPEAKER_NOTES 等待你填充。

注意:风格 A 和 B 不能混用。layouts.md 里的类(如 .h-hero 衬线大标题、.display-zh 等)只在 template.html 有定义;layouts-swiss.md 里的类(如 .kpi-hero、.accent-block、.span-N、.dots 等)只在 template-swiss.html 有定义。一份 deck 只能选一套。

2.1 · 必改占位符(容易漏)

拷贝后立刻改掉以下占位符,否则浏览器 Tab 会显示"[必填] 替换为 PPT 标题"这种尴尬文字:

位置原始需改为
<title>[必填] 替换为 PPT 标题 · Deck Title实际 deck 标题(如 一种新的工作方式 · Luke Wroblewski)

每次拷贝完 template.html 第一件事:grep 一下"[必填]" 确认全部替换完。

2.2 · 选定主题色(5 套预设 · 不允许自定义)

本 skill 只允许从 5 套精心调配的预设里选一套,不接受用户自定义 hex 值——颜色搭配错了画面瞬间变丑,保护美学比给自由更重要。

#主题适合
1🖋 墨水经典通用 / 商业发布 / 不知道选啥的默认
2🌊 靛蓝瓷科技 / 研究 / 数据 / 技术发布会
3🌿 森林墨自然 / 可持续 / 文化 / 非虚构
4🍂 牛皮纸怀旧 / 人文 / 文学 / 独立杂志
5🌙 沙丘艺术 / 设计 / 创意 / 画廊

操作:

  1. 基于内容主题推荐一套,或直接问用户选哪一套
  2. 打开 references/themes.md,找到对应主题的 :root 块
  3. 整体替换 assets/template.html(已拷贝版本)开头 :root{ 块里标有"主题色"注释的那几行(--ink / --ink-rgb / --paper / --paper-rgb / --paper-tint / --ink-tint)
  4. 其他 CSS 都走 var(--...),无需任何其他改动

硬规则:

  • 一份 deck 只用一套主题,不要中途换色
  • 不要接受用户给的任意 hex 值——委婉拒绝并展示 5 套让选
  • 不要混搭(例如 ink 取墨水经典、paper 取沙丘)——会彻底违和
Step 3 · 填充内容
3.P · 同步生成演讲备注(正式演讲必做)

先读 references/presenter-mode.md。每个 <section class="slide ..."> 必须写唯一且稳定的 data-slide-id,再按同样顺序生成一条 SPEAKER_NOTES 记录。备注按页面 ID 存储,不要用数组下标或页码作为持久化键,否则页面重排后用户在演讲者视图里改过的备注会串页。

内容分工:

  • slide 只放观众此刻必须看见的结论、结构和证据。
  • purpose 说明这一页在整场叙事中的任务。
  • talk 补充背景、例子、判断依据和语气,不逐字复述 slide。
  • transition 解释为什么下一页紧接着出现。
  • section 只在大纲已给出章节或连续页面明显属于同一章节时填写。
  • minutes 是讲述计划;autoAdvanceSeconds 是播放行为,两者必须分开,且后者只在用户明确要求时填写。
  • cue / interaction / delivery / advance / fallback / pronunciation 只写大纲或用户明确提供的舞台动作、互动、表达、翻页、备用和读音信息。

没有来源支持的事实不能写进备注;影响内容正确性的缺失信息要标记“待补充”或询问用户,不影响内容的可选演讲信息直接省略。

3.0 · 预检:类名必须在模板的 <style> 里有定义(最重要)

这是所有生成问题的源头。layouts 骨架使用了很多类名,如果模板的 <style> 里没有对应定义,浏览器会 fallback 到默认样式——大标题字体错、卡片挤成一团、pipeline 糊成一行、图片堆到页面底部。

两种风格类名互不通用(再次强调):

  • 风格 A 模板里有 h-hero(衬线)、stat-card、grid-2-7-5、frame 等
  • 风格 B 模板里有 h-hero(无衬线)、kpi-hero、accent-block、span-N、dots、grid-12 等
  • 同名 class 在两个模板里视觉表现完全不同(例:风格 A 的 h-hero 是 Noto Serif SC 衬线,风格 B 的 h-hero 是 Inter 无衬线)

在写任何 slide 代码之前:

  1. 先 Read 当前用的模板(至少读到 <style> 块末尾):
  • 风格 A → assets/template.html
  • 风格 B → assets/template-swiss.html
  1. 对照对应 layouts 文件的 Pre-flight 列表,确认你要用的每个类都在 <style> 里存在
  2. 如果某个类缺失:在模板的 `<style>` 里补上,不要在每个 slide 里 inline 重写
  3. 模板是唯一的类名来源——不要发明新类名,如需自定义用 style="..." inline

风格 A 常见容易遗漏的类: h-hero / h-xl / h-sub / h-md / lead / kicker / meta-row / stat-card / stat-label / stat-nb / stat-unit / stat-note / pipeline-section / pipeline-label / pipeline / step / step-nb / step-title / step-desc / grid-2-7-5 / grid-2-6-6 / grid-2-8-4 / grid-3-3 / grid-6 / grid-3 / grid-4 / frame / frame-img / img-cap / callout / callout-src / chrome / foot

风格 B 常见容易遗漏的类(2026-05 重构后):

  • 画布:canvas-card / chrome-min
  • 排版:h-hero(无衬线 7.4vw weight 200) / h-statement(9.6vw) / h-xl / h-md / t-cat(SemiBold 600 小标) / t-meta(mono uppercase) / lead / num-mega / mono
  • 卡片(四类互斥):card-ink / card-accent / card-fill / card-outlined
  • 网格:grid-12 / grid-2-9 / grid-2-9-5 / span-N
  • 时间线:timeline-v + tl-node + tl-axis + dot / timeline-h + tl-h-node + tl-h-axis
  • 图表:kpi-tower-row + bar-tower / h-bar-chart + bar-row + bar-fill / spec-bars + bar-vert
  • 装饰:dot-mat(SVG mask 实心点)/ ring-mat(描边圆)/ cross-mat(× 网格)/ hr-hairline
  • 版式专属:cover-split / closing-split / duo-compare + vrule / manifesto-top + ink-banner-full / three-forces / loop-diagram / matrix-fill + matrix-cell / brief-grid + brief-card / system-diagram / why-now-grid / four-cards / stacked-ledger + ledger-row / tech-spec / image-hero + hero-img-wrap + hero-overlay-block + hero-stats
  • 图片混排:frame-img / fit-contain / r-21x9 / r-16x9 / r-16x10 / h-22 / h-26 / swiss-img-split / swiss-img-grid / swiss-img-caption / swiss-keyline / swiss-lined
  • spacing token:--sp-3...--sp-13(8/12/16/24/32/40/48/64/80/96/160 px)
3.0.5 · 规划主题节奏(和类预检同等重要)

在挑布局之前,必须先列出每一页的主题 class(hero dark / hero light / light / dark)并写到文档或草稿里对齐。详细规则看 references/layouts.md 开头的"主题节奏规划"一节。

强制规则:

  • 每页 section 必须带 light / dark / hero light / hero dark 之一,不要只写 hero
  • 连续 3 页以上同主题 = 视觉疲劳,不允许
  • 8 页以上必须有 ≥1 个 hero dark + ≥1 个 hero light
  • 整个 deck 不能只有 light 正文页,必须有 dark 正文页制造呼吸
  • 每 3-4 页插入 1 个 hero 页(封面/幕封/问题/大引用)

生成后自检:grep 'class="slide' index.html 列出所有主题,人工确认节奏合理再交付。

3.1 · 挑布局

不要从零写 slide。打开对应的 layouts 文件,里面有 10 种现成布局骨架,每种都是完整可粘贴的 <section> 代码块。

风格 A → references/layouts.md:

Layout用途
1. 开场封面第 1 页
2. 章节幕封每幕开场
3. 数据大字报抛硬数据
4. 左文右图(Quote + Image)身份反差 / 故事
5. 图片网格多图对比 / 截图实证
6. 两列流水线(Pipeline)工作流程
7. 悬念收束 / 问题页幕末 / 收尾
8. 大引用页(Big Quote)衬线金句 / takeaway
9. 并列对比(Before / After)旧模式 vs 新模式
10. 图文混排(Lead Image + Side Text)信息密集的图文页

风格 B → 先读 references/swiss-layout-lock.md,再读 references/layouts-swiss.md。

瑞士主题默认进入 Swiss locked mode:

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/owwzo/ai-agent/guizang-ppt-skill-main/badge)](https://verified-skill.com/skills/owwzo/ai-agent/guizang-ppt-skill-main)

Something wrong with this skill or its page? Tell us.