{"id":"9e36eebf-d397-42ec-bf00-2cec273c3f38","shortId":"w3MVSg","kind":"skill","title":"slides","tagline":"生成口播视频背景 PPT 幻灯片（16:9 横版 PNG 序列）。当用户需要做 PPT、生成幻灯片、做演示背景图时使用","description":"# PPT 幻灯片生成器\n\n你是一个演示文稿设计专家，支持两种模式：\n\n| 模式 | 用途 | 页数 | 复杂度 |\n|------|------|------|--------|\n| **口播模式**（默认） | 口播视频背景 | 20-40 页 | 极简（纯文字居中） |\n| **演示模式** | 独立 PPT 展示 | 5-8 页 | 复杂（卡片+装饰+图标） |\n\n**判断逻辑**：\n- 用户提到\"口播\"\"视频背景\"\"讲稿\"\"script\"\"视频 PPT\" → 口播模式\n- 用户提到\"演示\"\"presentation\"\"展示\"\"信息图\" → 演示模式\n- 不确定时 → 口播模式（更常用）\n\n---\n\n# 口播模式（Voiceover）\n\n一页一观点，颜色即层级，零装饰。配合口播视频使用。\n\n## 内容类型（决定封面和前 3 页策略）\n\n口播视频分 4 种类型，**类型不同，封面和开头页的视觉策略完全不同**：\n\n| 类型 | 判断依据 | 封面理性钩重点 | slide_01-02 策略 |\n|------|---------|--------------|-----------------|\n| **人物型** | 围绕某人的观点/经历/访谈 | 必须包含人物最知名身份 | 专门一页展示身份标签（大字） |\n| **教程型** | 教用户怎么做某件事 | 突出方法/配方 | 展示痛点场景 |\n| **新闻型** | 报道产品/事件更新 | 突出产品名+核心变化 | 展示核心数字/事实 |\n| **观点型** | 输出个人看法/总结 | 突出金句/观点 | 展示引发思考的问题 |\n\n### 人物型的「身份优先」规则（极其重要）\n\n人物型视频的核心卖点是**「谁说的」而非「说了什么」**。观众因为这个人的身份才点进来。\n\n**身份标签选择 —— 用目标受众最有辨识度的称呼：**\n\n| ❌ 正式但没人认识 | ✅ 圈内都知道的 |\n|------------------|---------------|\n| PSPDFKit 创始人 | 龙虾作者 |\n| Segment 联合创始人 | 32亿美金被收购那哥们 |\n| Anthropic Research | Claude 背后的团队 |\n| Peter Steinberger | 龙虾作者 Peter |\n\n**判断方法**：这个称呼发到目标受众的群里，大部分人能不能立刻知道是谁？如果不能，换一个更通俗的。\n\n**硬规则：**\n1. **封面理性钩**必须包含人物身份标签（最知名的那个）\n2. **slide_01 或 slide_02** 必须有专门一页展示身份（用 `vo-stat` 或 `vo-big` + `vo-tech` 高亮）\n3. 如果人物有多个身份，选**目标受众最熟悉**的那个，其他身份可以在后续页补充\n4. 讲稿里提到的人物别称/昵称**原样保留**到幻灯片，不要替换成正式名称\n\n## 设计系统\n\nCSS 文件：`/Users/lifcc/Desktop/code/work/life/xhh/design-system-voiceover.css`\n\n每页 HTML 只引用这一个 CSS：\n\n```html\n<link rel=\"stylesheet\" href=\"file:///Users/lifcc/Desktop/code/work/life/xhh/design-system-voiceover.css\">\n```\n\n### 背景主题（13 种，自动选择）\n\n**暗色渐变系（白字）：**\n\n| 主题 | body class | 视觉 | 适用 |\n|------|-----------|------|------|\n| warm（默认） | `vo-warm` | 暖黑渐变 | 大多数内容 |\n| cool | `vo-cool` | 冷蓝渐变 | 技术/理性内容 |\n| aurora | `vo-aurora` | 极光紫绿渐变 | AI/前沿内容 |\n\n**纯色浸染系（白字，适合系列化内容）：**\n\n| 主题 | body class | 视觉 | 适用 |\n|------|-----------|------|------|\n| indigo | `vo-indigo` | 深靛蓝 | 深度分析、蓝调 |\n| wine | `vo-wine` | 暗酒红 | 情感、争议话题 |\n| teal | `vo-teal` | 深松绿 | 效率、方法论 |\n| forest | `vo-forest` | 深森林 | 自然、成长话题 |\n\n**彩色渐变系（白字，高视觉能量）：**\n\n| 主题 | body class | 视觉 | 适用 |\n|------|-----------|------|------|\n| ocean | `vo-ocean` | 紫→蓝→青 | 产品发布、激励 |\n| sunset | `vo-sunset` | 暗红→深橙→棕 | 热点事件 |\n| violet | `vo-violet` | 蓝→紫→品红 | 创意、前沿 |\n\n**浅色系（黑字）：**\n\n| 主题 | body class | 视觉 | 适用 |\n|------|-----------|------|------|\n| paper | `vo-paper` | 米白底 + 顶部品牌色条 | 观点输出、生活、非技术 |\n\n**特殊效果系：**\n\n| 主题 | body class | 视觉 | 适用 |\n|------|-----------|------|------|\n| neon | `vo-neon` | 纯黑底，关键词霓虹发光 | 震撼数据、科技评测 |\n| glass | `vo-glass` | 暗底 + 模糊光斑 + 毛玻璃卡片 | 产品介绍、高级感内容 |\n\n**主题自动选择规则（不要每次都用 warm）：**\n1. 检查最近 3 套幻灯片用了什么主题（`ls voiceover/*/slide_01.html | tail -3` 然后读 body class）\n2. 不连续重复同一主题\n3. 暗色和浅色交替出现（连续 3 套暗色后必须用 paper 或 neon）\n4. 根据内容匹配：技术→cool/neon，AI→aurora/violet，观点→paper/wine，教程→teal/indigo\n\n### 布局（2 种）\n\n| 布局 | body class | 效果 | 适用 |\n|------|-----------|------|------|\n| 居中（默认） | 无需额外 class | 文字居中对齐 | 大多数内容 |\n| 左对齐叙事 | `vo-left`（叠加） | 文字左对齐 + 左侧竖线 | 故事讲述、案例分析 |\n\n布局与背景自由组合，如 `<body class=\"vo-paper vo-left\">`。\n\n### 文字层级\n\n| CSS 类 | 效果 | 用途 |\n|--------|------|------|\n| `vo-main` | 76px 白色粗体（paper 下为黑色） | 主文字（每页至少 1 行） |\n| `vo-sub` | 44px 灰色 | 次要文字/补充说明 |\n| `vo-big` | 96px（叠加在 vo-main 上） | 封面/转场大标题 |\n| `vo-small` | 34px（叠加在 vo-sub 上） | 备注小字 |\n| `vo-gap` | margin-top: 28px | 主文字→灰色文字切换时加，拉开层次 |\n| `vo-stat` | 220px 品牌色（Space Grotesk） | 大数字冲击（数据页用） |\n| `vo-stat-unit` | 72px 半透明 | 数字单位（配合 vo-stat） |\n\n### 6 种语义颜色（叠加在 vo-main 上，自动加粗）\n\n| CSS 类 | 颜色 | 用途 | 使用时机 |\n|--------|------|------|---------|\n| `vo-pain` | #FF6B8A 粉红 | 痛点/情感/负面 | 开头铺垫 |\n| `vo-solution` | #FFD666 黄色 | 方案/结论/惊叹 | 揭示方案时 |\n| `vo-tech` | #5CC8FF 青蓝 | 工具名/技术名/产品名 | 提到具体工具时 |\n| `vo-step` | #B088F9 紫色 | 步骤编号/分类标签 | \"第一步\"\"第二步\" |\n| `vo-positive` | #4AEABC 绿色 | 正面结论/成果 | 展示效果时 |\n| `vo-cta` | #E6613E 橙色 | 互动引导/号召行动 | 结尾互动 |\n\n注意：`vo-paper` 和 `vo-neon` 主题下语义色会自动调整（浅色主题用深色版本，霓虹主题加发光效果），无需手动处理。\n\n### HTML 模板\n\n每页 HTML 结构固定，只需替换 body class（主题+布局）和 vo-slide 内容：\n\n```html\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n  <meta charset=\"UTF-8\">\n  <link rel=\"stylesheet\" href=\"file:///Users/lifcc/Desktop/code/work/life/xhh/design-system-voiceover.css\">\n</head>\n<body class=\"vo-warm\">\n  <div class=\"vo-slide\">\n    <p class=\"vo-main\">主文字</p>\n    <p class=\"vo-main vo-pain\">彩色强调</p>\n    <p class=\"vo-sub vo-gap\">灰色补充</p>\n    <p class=\"vo-sub\">更多补充</p>\n  </div>\n</body>\n</html>\n```\n\n## 拆页规则（核心）\n\n| 规则 | 说明 |\n|------|------|\n| 每页最多 6 行 | 宁可多页也不要挤 |\n| 每行最多 18 个中文字 | 超长必须换行 |\n| 一个观点一页 | 不要把两个观点放一页 |\n| 每页彩色最多 2 种 | 白+一种彩色，或灰+一种彩色 |\n| 保持口语化 | 不要把讲稿书面化 |\n| 总页数 20-40 页 | 对应 3-8 分钟视频 |\n\n### 前 3 页策略（按内容类型）\n\n前 3 页决定观众是否继续看。不同内容类型的前 3 页结构不同：\n\n**人物型（必须在 slide_01-02 建立身份）：**\n\n```\nslide_01: 身份标签页（大字）\n  例：vo-main vo-tech \"龙虾作者\" + vo-sub \"Peter Steinberger\"\n  或：vo-stat \"20+\" vo-stat-unit \"年\" + vo-main vo-tech \"iOS 老兵\"\nslide_02: 核心行为/观点（引出正题）\n  例：vo-main \"去年把工具全换成了\" + vo-main vo-solution \"AI驱动\"\n```\n\n**教程型：**\n```\nslide_01: 痛点场景（引起共鸣）\nslide_02: 解决方案预告（制造期待）\n```\n\n**新闻型：**\n```\nslide_01: 核心事实/数字（冲击力）\nslide_02: 为什么重要（和观众的关系）\n```\n\n**观点型：**\n```\nslide_01: 引发思考的问题\nslide_02: 反直觉的答案\n```\n\n### 颜色节奏（整套幻灯片的颜色分布）\n\n```\n开头 2-3 页  → vo-pain（铺垫痛点，引起共鸣）\n引出方案     → vo-solution（转折，揭示答案）\n工具/技术    → vo-tech（提到具体工具时）\n步骤详解     → vo-step（\"第一步\"\"第二步\"）\n正面结论     → vo-positive（展示效果/成果）\n结尾互动     → vo-cta（\"你们学会了吗\"）\n其他补充     → vo-sub（灰色，不抢注意力）\n```\n\n## 封面系统（视频缩略图）\n\n封面是视频在小红书信息流中的缩略图，直接决定点击率。**封面 ≠ slide_01**，封面是专门设计的标题卡。\n\n### 封面三层结构（理性钩 → 感性钩 → 降门槛钩）\n\n| 层级 | CSS 类 | 字号 | 作用 | 示例 |\n|------|--------|------|------|------|\n| L1 理性钩 | `vo-cover-title` | 52px | 说清楚是什么 | \"用Claude Code实现一键生成PPT\" |\n| L2 感性钩 | `vo-cover-hook` | **160px** | 巨大情绪词，视觉焦点 | **\"懒人配方\"** |\n| L3 降门槛 | `vo-cover-sub` | 38px | 暗示人人可用 | \"普通人用CLAUDE CODE超神\" |\n\n**感性钩是封面的核心**，字号是理性钩的 3 倍，用渐变色。\n\n### 封面钩子颜色\n\n| 叠加类 | 渐变色 | 适用 |\n|--------|--------|------|\n| （默认，不加类） | 黄→橙→品牌色 | 方法论/配方/公式/万能 |\n| `vo-cover-hook-tech` | 青→蓝→紫 | 技术/工具/产品 |\n| `vo-cover-hook-positive` | 绿→青绿 | 效率/成果/正面 |\n| `vo-cover-hook-pain` | 粉→红→品红 | 情感/争议/FOMO/焦虑 |\n\n### 封面装饰\n\n| 元素 | CSS 类 | 效果 |\n|------|--------|------|\n| 右上角 L 括号 | `vo-cover-deco-tl` | 淡金色角线 |\n| 左下角 L 括号 | `vo-cover-deco-br` | 淡金色角线 |\n| 底部装饰线 | `vo-cover-line` | 品牌色渐隐线 |\n| 背景增强 | `vo-cover-bg-boost`（加在 body） | 中心微暖光晕 |\n\n### 封面 HTML 模板\n\n```html\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n  <meta charset=\"UTF-8\">\n  <link rel=\"stylesheet\" href=\"file:///Users/lifcc/Desktop/code/work/life/xhh/design-system-voiceover.css\">\n</head>\n<body class=\"vo-warm vo-cover-bg-boost\">\n  <div class=\"vo-slide vo-cover\">\n    <div class=\"vo-cover-deco-tl\"></div>\n    <div class=\"vo-cover-deco-br\"></div>\n    <p class=\"vo-cover-title\">用Claude Code实现一键生成PPT</p>\n    <p class=\"vo-cover-hook\">懒人配方</p>\n    <p class=\"vo-cover-sub\">普通人用CLAUDE CODE超神</p>\n    <div class=\"vo-cover-line\"></div>\n  </div>\n</body>\n</html>\n```\n\n### 感性钩的提取规则\n\n从讲稿中提取封面三层文字（**按内容类型区分**）：\n\n**通用规则：**\n\n| 层级 | 提取方法 | ❌ 错误 | ✅ 正确 |\n|------|---------|---------|--------|\n| 理性钩 | 视频核心做了什么（一句话） | \"Claude Code Skill教程\" | \"用Claude Code一键生成PPT\" |\n| 感性钩 | 2-4字情绪词（最好有比喻/夸张） | \"PPT生成器\" | \"懒人配方\" |\n| 降门槛 | 暗示普通人也行的一句话 | \"适合所有人\" | \"普通人用CLAUDE CODE超神\" |\n\n**人物型封面特殊规则：**\n\n理性钩**必须包含人物身份**，感性钩聚焦观点/行为的情绪点：\n\n| 层级 | ❌ 没有身份 = 没人点 | ✅ 身份前置 = 有点击 |\n|------|---------------------|---------------------|\n| L1 理性钩 | \"一个iOS开发者的AI工作流\" | \"**龙虾作者**20年iOS老兵的AI工作流\" |\n| L2 感性钩 | \"工作流分享\" | \"极简到离谱\" |\n| L3 降门槛 | \"适合所有开发者\" | \"只用两样工具\" |\n\n**自检**：遮住感性钩和降门槛，只看理性钩 —— 能不能知道视频在讲谁？如果只看到\"一个开发者\"\"某位大佬\"，就是不合格。\n\n**感性钩常用词库（2-4字）**：\n\n| 类型 | 词库 |\n|------|------|\n| 方法论 | 懒人配方、万能公式、一招搞定、降维打击 |\n| 效率 | 效率拉爆、直接起飞、省一整天、十倍速 |\n| 震撼 | 太猛了、真的炸、绝了、离谱 |\n| FOMO | 别错过、快上车、还不知道？、落后了 |\n| 情感 | 救命了、终于等到、爽到飞起、泪目 |\n\n## 工作流程\n\n### 第一步：确认输入 + 判断内容类型\n\n用户可能提供：\n1. **讲稿文件**（.md/.txt）→ 读取内容，直接拆页\n2. **主题关键词** → 先构思讲稿再拆页\n3. **素材文件**（文章/changelog）→ 提炼要点后拆页\n\n同时确认背景主题偏好（默认 warm）。\n\n**⚠️ 必须判断内容类型**（人物型/教程型/新闻型/观点型），参考上方「内容类型」章节。内容类型决定封面和前 3 页的视觉策略，**在拆页前就要确定**。\n\n判断方法：\n- 讲稿/素材围绕某个人 → 人物型（找出此人最知名的身份标签）\n- 讲稿教怎么做 → 教程型\n- 讲稿报道事件/产品更新 → 新闻型\n- 讲稿输出个人看法 → 观点型\n\n### 第二步：构思讲稿（有现成讲稿可跳过）\n\n如果用户只给了主题，先构思一份 3-8 分钟的口播讲稿：\n- 用 WebSearch 搜索相关信息\n- 口语化风格，像跟朋友聊天\n- 结构：痛点开场 → 引出方案 → 分步讲解 → 总结/互动\n\n**⚠️ 讲稿情感化规则（极其重要）：**\n\n讲稿决定视频质量的 80%。不是传递信息，是制造情绪共鸣。\n\n| 原则 | ❌ 信息传递（无人看） | ✅ 情感场景（有人看） |\n|------|---------------------|---------------------|\n| 开头 | \"今天介绍一个AI工具\" | \"明天就是汇报日，指针滑过凌晨两点\" |\n| 描述功能 | \"支持热更新预览\" | \"左边屏幕让AI改，右边立刻刷新，效率直接拉爆\" |\n| 引用数据 | \"效率提升10倍\" | \"3个工程师，0行手写代码，五个月做出百万行产品\" |\n| 总结 | \"综上所述，该工具值得使用\" | \"能写代码的AI到处都是，能决定写什么的人才稀缺\" |\n\n**文案公式：场景画面 → 情绪触发 → 观点输出**\n\n```\n✅ \"你瞪着发亮的屏幕，PPT还有一半没做完\"（场景）\n✅ \"想想都美啊\"（情绪）\n✅ \"人类掌舵，Agent执行\"（观点金句）\n\n❌ \"该工具能够自动生成PPT文件\"（功能说明书）\n❌ \"支持多种格式导出\"（参数罗列）\n```\n\n**每段讲稿自检**：闭上眼睛读这句话，脑子里能不能出现一个画面？如果只是一句抽象的话，重写。\n\n### 第三步：拆页 + 标注颜色\n\n将讲稿拆成 20-40 页，每页标注 CSS 类。这是核心步骤，严格遵守拆页规则。\n\n**拆页思路**：\n- 读一遍讲稿，标出每个\"观点切换点\"\n- 每个切换点 = 一次翻页\n- 强调词/工具名/步骤号 用对应语义色\n- 补充说明用灰色 vo-sub\n\n### 第三步半：生成封面（cover.html）\n\n拆页完成后，**先生成封面**。封面是独立于 slide_01~XX 的文件，用 `cover.html` 命名。\n\n**生成步骤**：\n1. 从讲稿提取三层文字（理性钩 + 感性钩 + 降门槛钩），参考上方「感性钩的提取规则」\n2. 选择钩子颜色（根据内容情绪，参考上方「封面钩子颜色」表）\n3. 背景主题用和内页相同的主题，加 `vo-cover-bg-boost` 增强\n4. 用 Write 工具写 `cover.html`\n5. 截图 → `cover.png`\n\n**封面和内页的关系**：\n- `cover.png` 是视频的第一帧（缩略图），在 ffmpeg 合成时排在最前面\n- `slide_01.html` 是视频正文第一页，封面之后立即出现\n- 封面固定 3 秒，和 slide_01 **共享第一段音频**。语音从视频开头（t=0）就开始播放，不要有静音延迟\n- 封面 3 秒 + slide_01 = 第一段音频时长。例如第一段音频 3.7 秒，则封面 3 秒 + slide_01 显示 0.7 秒\n\n### 第四步：创建输出目录 + 逐页写 HTML\n\n```bash\nmkdir -p /Users/lifcc/Desktop/code/work/life/xhh/voiceover/<slug>\n```\n\n先写 cover.html，然后用 Write 工具逐页生成 HTML 文件：`slide_01.html`, `slide_02.html`, ...\n\n**并行写多个文件提高效率**（每次可以同时写 3-5 个）。\n\n### 第五步：批量截图\n\n用 Chrome headless 逐页截图。\n\n**⚠️ 窗口尺寸必须用 1920,1200（不是 1920,1080）**，Chrome headless 有 87px 内部顶栏，直接用 1080 会导致底部白条。截图后用 Pillow 裁切到 1920×1080。\n\n```bash\ncd <输出目录>\n\n# 1. 截图（封面 + 所有幻灯片，窗口加高到 1200）\nfor f in cover.html slide_*.html; do\n  [ -f \"$f\" ] || continue\n  raw=\"/tmp/vo_raw_${f%.html}.png\"\n  \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\" \\\n    --headless=new --disable-gpu --no-sandbox --hide-scrollbars \\\n    --window-size=1920,1200 \\\n    --screenshot=\"$raw\" \\\n    \"file://$(pwd)/$f\" 2>/dev/null\ndone\n\n# 2. 裁切到 1920×1080\npython3 -c \"\nfrom PIL import Image\nimport glob, os\nfor html in sorted(glob.glob('cover.html')) + sorted(glob.glob('slide_*.html')):\n    name = html.replace('.html', '')\n    raw = f'/tmp/vo_raw_{name}.png'\n    if os.path.exists(raw):\n        Image.open(raw).crop((0, 0, 1920, 1080)).save(f'{name}.png')\nprint('裁切完成')\n\"\n```\n\n验证底部无白条：\n\n```bash\npython3 -c \"\nfrom PIL import Image; import numpy as np\narr = np.array(Image.open('slide_01.png'))\nbottom = arr[-5:,:,:].mean(axis=(0,1)).astype(int)\nprint(f'底部5px RGB={bottom}')\nassert not all(c > 250 for c in bottom), '底部有白条！'\nprint('✅ 无白条')\n\"\n```\n\n### 第六步：生成预览器 + 口播稿\n\n**preview.html** — 箭头键翻页预览所有 PNG：\n\n```html\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<title>口播幻灯片预览</title>\n<style>\n  * { margin: 0; padding: 0; box-sizing: border-box; }\n  body {\n    background: #111; display: flex; align-items: center; justify-content: center;\n    height: 100vh; font-family: -apple-system, sans-serif; color: #fff; overflow: hidden;\n  }\n  .viewer { width: 90vw; max-width: 1440px; aspect-ratio: 16/9; }\n  .viewer img { width: 100%; height: 100%; object-fit: contain; border-radius: 8px; box-shadow: 0 8px 32px rgba(0,0,0,0.5); }\n  .controls {\n    position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);\n    display: flex; align-items: center; gap: 16px;\n    background: rgba(255,255,255,0.1); backdrop-filter: blur(8px);\n    padding: 8px 20px; border-radius: 100px; font-size: 14px;\n  }\n  .controls button { background: none; border: 1px solid rgba(255,255,255,0.2); color: #fff; padding: 6px 16px; border-radius: 6px; cursor: pointer; }\n  .controls button:hover { background: rgba(255,255,255,0.1); }\n</style>\n</head>\n<body>\n<div class=\"viewer\"><img id=\"slide\" src=\"\"></div>\n<div class=\"controls\">\n  <button onclick=\"prev()\">&#8592;</button>\n  <span id=\"counter\"></span>\n  <button onclick=\"next()\">&#8594;</button>\n</div>\n<script>\nconst slides = [/* 替换为实际 PNG 文件名列表 */];\nlet cur = 0;\nconst img = document.getElementById('slide'), ctr = document.getElementById('counter');\nfunction show(i) { cur = Math.max(0, Math.min(i, slides.length-1)); img.src = slides[cur]; ctr.textContent = (cur+1)+'/'+slides.length; }\nfunction prev() { show(cur-1); } function next() { show(cur+1); }\ndocument.addEventListener('keydown', e => { if(e.key==='ArrowLeft') prev(); if(e.key==='ArrowRight') next(); });\nshow(0);\n</script>\n</body>\n</html>\n```\n\n**script_notes.md** — 每页对应的口播要点。\n\n**voiceover_text.txt** — TTS 用的纯文本口播稿。每段用空行分隔，段数 = 页数（一段对应一页幻灯片）。\n\n### 第七步：生成字幕（Pillow 烧入法）\n\n**字幕对小红书视频极其重要** — 很多用户不开声音浏览。\n\n**⚠️ 不要用 ffmpeg 的 `subtitles` 滤镜**，它依赖 libass，macOS homebrew 的 ffmpeg 默认不含此库。改用 Pillow 把字幕直接烧进幻灯片图片，再用 ffmpeg 拼接。\n\n**原理**：每段口播按标点拆成短句，每句生成一张「原始幻灯片 + 底部字幕」的 PNG，按时长拼接成视频。\n\n#### 7.1 生成 segments.json\n\nTTS 音频生成后，记录每段音频的字节大小（同比特率下字节 ∝ 时长）：\n\n```python\nimport json, os, glob\naudio_files = sorted(glob.glob('audio/slide_*.mp3'))\nsegments = [os.path.getsize(f) for f in audio_files]\nwith open('segments.json', 'w') as f:\n    json.dump(segments, f)\n```\n\n#### 7.2 生成字幕帧图片\n\n```python\nimport json, subprocess, re, os\nfrom PIL import Image, ImageDraw, ImageFont\n\ntext = open('voiceover_text.txt').read().strip()\nparagraphs = [p.strip() for p in text.split('\\n\\n') if p.strip()]\nsegments = json.loads(open('segments.json').read())\ntotal_bytes = sum(segments)\nr = subprocess.run(['ffprobe','-v','quiet','-show_entries','format=duration',\n    '-of','csv=p=0','voiceover_volcano.mp3'], capture_output=True, text=True)\naudio_duration = float(r.stdout.strip())\nseg_durations = [s / total_bytes * audio_duration for s in segments]\n\n# macOS 中文字体（按优先级尝试）\nfor fp in ['/Library/Fonts/Arial Unicode.ttf',\n           '/System/Library/Fonts/STHeiti Medium.ttc']:\n    if os.path.exists(fp):\n        font = ImageFont.truetype(fp, 42)\n        break\n\n# 时间分配（封面 3s + slide_01 共享第一段音频）\ncover_dur = 3.0\ns01 = max(seg_durations[0] - cover_dur, 0.5)\ndurations = [cover_dur, s01] + seg_durations[1:]\nslide_files = ['cover.png', 'slide_01.png'] + \\\n    [f'slide_{i+1:02d}.png' for i in range(1, len(segments))]\npara_for_slide = [paragraphs[0], paragraphs[0]] + paragraphs[1:]\n\nsub_dir = 'sub_slides'\nos.makedirs(sub_dir, exist_ok=True)\nconcat_lines = []\nimg_idx = 0\n\nfor slide_i, (slide_file, dur) in enumerate(zip(slide_files, durations)):\n    img = Image.open(slide_file)\n    para = para_for_slide[slide_i]\n    sentences = re.split(r'[，。！？、；\\n]', para)\n    sentences = [s.strip() for s in sentences if s.strip()] or ['']\n    sent_dur = dur / len(sentences)\n\n    for sent in sentences:\n        frame = img.copy()\n        if sent:\n            draw = ImageDraw.Draw(frame)\n            w, h = frame.size\n            bbox = draw.textbbox((0, 0), sent, font=font)\n            tw = bbox[2] - bbox[0]\n            x, y = (w - tw) // 2, h - 100\n            # 黑色描边（8 方向偏移 3px）\n            for dx in [-3, 0, 3]:\n                for dy in [-3, 0, 3]:\n                    if dx or dy:\n                        draw.text((x+dx, y+dy), sent, font=font, fill=(0,0,0))\n            draw.text((x, y), sent, font=font, fill=(255,255,255))\n\n        out_name = f'sub_{img_idx:04d}.png'\n        frame.save(f'{sub_dir}/{out_name}')\n        concat_lines.append(f\"file '{sub_dir}/{out_name}'\")\n        concat_lines.append(f\"duration {sent_dur:.3f}\")\n        img_idx += 1\n\n# ffmpeg concat 需要最后一帧重复\nconcat_lines.append(f\"file '{sub_dir}/sub_{img_idx-1:04d}.png'\")\nwith open('concat_sub.txt', 'w') as f:\n    f.write('\\n'.join(concat_lines))\n```\n\n### 第八步：合成视频（带字幕）\n\n**⚠️ 时长分配必须用音频段字节比例，不要用字数比例！** 字数和实际语速不成正比，按字数分配会导致后半段音画不同步。\n\n```bash\ncd <输出目录>\n\n# 1. 用字幕帧图片生成静音视频\nffmpeg -y -f concat -safe 0 -i concat_sub.txt \\\n  -vf \"scale=1920:1080,format=yuv420p\" \\\n  -c:v libx264 -preset medium -crf 20 -r 30 -an silent.mp4\n\n# 2. 合并音频（-c:v copy 不重新编码，速度快）\nffmpeg -y -i silent.mp4 -i voiceover_volcano.mp3 \\\n  -c:v copy -c:a aac -b:a 192k -shortest -movflags +faststart \\\n  output_sub.mp4\n\nrm -f silent.mp4 concat_sub.txt\n```\n\n**字幕样式**：\n- 字体：Arial Unicode MS 42px（白色，黑色描边 3px）\n- 位置：底部居中，距底边 100px\n- 暗底亮底都清晰\n\n**两个输出文件**：\n- `output.mp4` — 无字幕版（build_video.py 生成）\n- `output_sub.mp4` — 带字幕版（本步骤生成）\n\n### 第九步：展示结果\n\n1. 读取几张关键 PNG（第 1 页、中间页、最后页）让用户预览效果\n2. 告知输出目录路径\n3. 提示 `open preview.html` 可在浏览器翻页预览\n4. 视频已含字幕，可直接发布\n\n## 文件组织\n\n```\n<工作目录>/voiceover/\n└── <slug>/\n    ├── cover.html + cover.png        # 封面（视频缩略图/第一帧）\n    ├── slide_01.html ~ slide_XX.html\n    ├── slide_01.png ~ slide_XX.png\n    ├── script_notes.md\n    └── preview.html\n```\n\n## 常见问题\n\n### 字体加载\nCSS 通过 Google Fonts CDN 加载 Noto Sans SC + Space Grotesk。Chrome headless 截图需要网络连接。如果字体没加载成功，截图会用默认字体（效果差）。\n\n### 内容超出画布\n每页最多 6 行 × 18 字。如果内容塞不下，拆成两页，不要缩字号。\n\n### 主题切换\n整套幻灯片通常用同一个主题。如果想在某几页切换主题，改那几页 HTML 的 body class 即可。\n\n---\n\n# 演示模式（Presentation）\n\n信息密度高，带卡片、装饰层、品牌标记的正式 PPT。5-8 页。\n\n## 设计系统\n\n每页 HTML 引用两个 CSS 文件：\n\n```html\n<link rel=\"stylesheet\" href=\"file:///Users/lifcc/Desktop/code/work/life/xhh/design-system.css\">\n<link rel=\"stylesheet\" href=\"file:///Users/lifcc/Desktop/code/work/life/xhh/design-system-slides.css\">\n```\n\n## 文件组织\n\n```\n<工作目录>/slides/\n└── YYYYMMDD-<slug>/\n    ├── slide_01.html ~ slide_XX.html\n    ├── slide_01.png ~ slide_XX.png\n    ├── script_notes.md\n    └── preview.html\n```\n\n## 6 种主题色\n\n| 主题 | CSS 类 | 适用内容 |\n|------|--------|---------|\n| Obsidian (暗色) | `.theme-obsidian` | 技术深度、产品发布 |\n| Paper (浅色) | `.theme-paper` | 清单、总结、轻松内容 |\n| Signal (强调色) | `.theme-signal` | 重大新闻、里程碑 |\n| Aurora (极光) | `.theme-aurora` | AI 前沿、大模型 |\n| Mist (薄雾) | `.theme-mist` | 工具推荐、科普 |\n| Glacier (冰川) | `.theme-glacier` | 产品评测、App 推荐 |\n\n## 4 种幻灯片类型\n\n| 类型 | 布局 | CSS 类 | 参考模板 |\n|------|------|--------|---------|\n| title | 居中大标题+副标题+标签 | `.slide-title` | `templates/slides/title.html` |\n| content | 左标题+右侧要点卡片 | `.slide-content` | `templates/slides/content.html` |\n| data | 顶部标题+数据卡片网格 | `.slide-data` | `templates/slides/data.html` |\n| ending | 居中总结+CTA+品牌 | `.slide-ending` | `templates/slides/ending.html` |\n\n模板文件路径前缀：`/Users/lifcc/Desktop/code/work/life/xhh/`\n\n## 结构规则\n\n- 第 1 页必须是 title，最后一页必须是 ending\n- 中间自由组合 content 和 data\n- 每页必须有品牌标记 `lif.` 和装饰层\n\n## 视觉四层结构（每页必须满足）\n\n| 层级 | 作用 | 实现 |\n|------|------|------|\n| L1 背景底色 | 定调 | `.theme-*` class |\n| L2 装饰层 | 视觉丰富度 | `.deco-noise` + 主题装饰 |\n| L3 内容容器 | 承载信息 | `.card-*` 卡片组件 |\n| L4 文字/图标 | 信息传达 | 主题文字色 + SVG 图标 |\n\n各主题装饰层：\n\n| 主题 | L2 装饰层 |\n|------|----------|\n| Obsidian | `deco-noise` + `deco-dots` + `deco-bracket-tl/br` |\n| Paper | `deco-noise` + `deco-hlines` + `deco-top-stripe` |\n| Signal | `deco-noise` + `deco-stripes` + `deco-gradient-bottom` |\n| Aurora | `deco-grain` + `deco-aurora` |\n| Mist | `deco-noise` + `deco-mist-glow` + `deco-soft-dots` |\n| Glacier | `deco-noise` + `deco-shimmer` + `deco-refraction` |\n\n## 演示模式工作流程\n\n1. **了解需求** — 主题、素材、主题色偏好、页数\n2. **主题调研**（无素材时）— WebSearch 搜索整理事实清单\n3. **规划结构** — 确定每页类型和核心信息\n4. **逐页生成 HTML + 截图** — 读参考模板 → 替换内容 → Write 保存 → Chrome 截图\n5. **生成口播稿** — `script_notes.md`\n6. **生成预览器** — `preview.html`（同口播模式的预览器模板）\n7. **展示结果** — 读 PNG 预览 + 告知路径\n\n截图命令同口播模式（`--window-size=1920,1200` + 裁切到 1920×1080），见口播模式的第五步。\n\n## SVG 图标库（演示模式用）\n\n```html\n<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:none\">\n  <symbol id=\"icon-bolt\" viewBox=\"0 0 24 24\"><path d=\"M13 2L3 14h9l-1 8 10-12h-9l1-8z\"/></symbol>\n  <symbol id=\"icon-code\" viewBox=\"0 0 24 24\"><polyline points=\"16 18 22 12 16 6\"/><polyline points=\"8 6 2 12 8 18\"/></symbol>\n  <symbol id=\"icon-chart\" viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"/><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"/><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"/></symbol>\n  <symbol id=\"icon-rocket\" viewBox=\"0 0 24 24\"><path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\"/><path d=\"M12 15l-3-3 7.5-7.5A12.71 12.71 0 0 1 22 2c0 2.35-1.1 6.58-4.5 10L15 12\"/></symbol>\n  <symbol id=\"icon-shield\" viewBox=\"0 0 24 24\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/></symbol>\n  <symbol id=\"icon-terminal\" viewBox=\"0 0 24 24\"><polyline points=\"4 17 10 11 4 5\"/><line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"/></symbol>\n  <symbol id=\"icon-brain\" viewBox=\"0 0 24 24\"><path d=\"M12 2a6 6 0 0 0-6 6c0 2.2 1.2 4.1 3 5.2V20h6v-6.8c1.8-1.1 3-3 3-5.2a6 6 0 0 0-6-6z\"/><line x1=\"9\" y1=\"14\" x2=\"9\" y2=\"20\"/><line x1=\"15\" y1=\"14\" x2=\"15\" y2=\"20\"/></symbol>\n  <symbol id=\"icon-users\" viewBox=\"0 0 24 24\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/></symbol>\n  <symbol id=\"icon-fire\" viewBox=\"0 0 24 24\"><path d=\"M12 23c-4.97 0-9-2.69-9-6 0-4 4-8 4-8s.5 2 2 3c.47-.8 1.5-3 1-6 3.5 2.5 6 6 6 10 1.5-1 2-3.5 2-5 2.5 2.5 3 4.5 3 6 0 3.31-4.03 6-9 6z\"/></symbol>\n  <symbol id=\"icon-star\" viewBox=\"0 0 24 24\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></symbol>\n  <symbol id=\"icon-lightbulb\" viewBox=\"0 0 24 24\"><path d=\"M9 21h6m-6-3h6m-3-18a7 7 0 0 0-4 12.7V17h8v-4.3A7 7 0 0 0 12 0z\"/></symbol>\n  <symbol id=\"icon-search\" viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/></symbol>\n  <symbol id=\"icon-download\" viewBox=\"0 0 24 24\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"/></symbol>\n  <symbol id=\"icon-clock\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><polyline points=\"12 6 12 12 16 14\"/></symbol>\n  <symbol id=\"icon-link\" viewBox=\"0 0 24 24\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/></symbol>\n</svg>\n```\n\n使用：`<svg class=\"icon icon-sm\"><use href=\"#icon-bolt\"/></svg>`","tags":["slides","claude","arsenal","majiayu000","agent-skills","ai-agents","ai-coding-assistant","automation","claude-code","code-review","developer-tools","devops"],"capabilities":["skill","source-majiayu000","skill-slides","topic-agent-skills","topic-ai-agents","topic-ai-coding-assistant","topic-automation","topic-claude","topic-claude-code","topic-code-review","topic-developer-tools","topic-devops","topic-productivity","topic-prompt-engineering","topic-python"],"categories":["claude-arsenal"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/majiayu000/claude-arsenal/slides","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add majiayu000/claude-arsenal","source_repo":"https://github.com/majiayu000/claude-arsenal","install_from":"skills.sh"}},"qualityScore":"0.464","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 29 github stars · SKILL.md body (21,382 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T07:01:16.739Z","embedding":null,"createdAt":"2026-04-18T22:24:29.630Z","updatedAt":"2026-05-01T07:01:16.739Z","lastSeenAt":"2026-05-01T07:01:16.739Z","tsv":"'+1':1582 '-02':79,600 '-1':1773 '-3':335,684,1697,1703 '-4':890,934 '-40':26,580,1083 '-5':1207,1351 '-8':35,584,1014,1959 '/applications/google':1258 '/br':2126 '/changelog':979 '/contents/macos/google':1261 '/dev/null':1284 '/fomo':823 '/library/fonts/arial':1539 '/slide_01.html':333 '/slides':1970 '/sub_':1770 '/system/library/fonts/stheiti':1541 '/tmp/vo_raw_':1254,1314 '/users/lifcc/desktop/code/work/life/xhh':2067 '/users/lifcc/desktop/code/work/life/xhh/design-system-voiceover.css':177 '/users/lifcc/desktop/code/work/life/xhh/voiceover':1194 '/voiceover':1902 '0':1167,1323,1324,1354,1510,1564,1596,1598,1615,1673,1674,1682,1698,1704,1719,1720,1721,1804 '0.5':1567 '0.7':1185 '01':78,145,599,603,656,665,675,732,1111,1163,1174,1183,1555 '02':148,638,660,670,678 '02d':1583 '04d':1738,1774 '0行手写代码':1050 '1':139,327,398,968,1118,1237,1355,1574,1589,1600,1761,1797,1881,1885,2070,2179 '100':1689 '100px':1868 '1080':1220,1227,1233,1289,1326,1810,2224 '1200':1217,1242,1278,2221 '13':184 '16':5 '160px':760 '18':564,1937 '1920':1216,1219,1232,1277,1288,1325,1809,2220,2223 '192k':1846 '2':143,339,360,570,683,889,933,973,1125,1283,1286,1680,1687,1824,1890,2185 '20':25,579,623,1082,1819 '20年ios老兵的ai工作流':915 '220px':441 '250':1367 '255':1729,1730,1731 '28px':434 '3':67,162,329,341,344,583,587,591,594,776,976,993,1013,1131,1159,1171,1180,1206,1699,1705,1892,2190 '3.0':1559 '3.7':1177 '30':1821 '32亿美金被收购那哥们':124 '34px':421 '38px':770 '3f':1758 '3px':1693,1864 '3s':1553 '3个工程师':1049 '4':70,168,349,1140,1897,2029,2193 '42':1549 '42px':1861 '44px':403 '4aeabc':510 '5':34,1145,1958,2203 '52px':750 '5cc8ff':492 '6':458,560,1935,1978,2206 '7':2210 '7.1':1424 '7.2':1460 '72px':451 '76px':392 '8':1691 '80':1030 '87px':1224 '9':6 '96px':410 'aac':1843 'agent执行':1067 'ai':213,353,2011 'ai驱动':653 'anthrop':125 'app':2027 'arial':1858 'arr':1345,1350 'assert':1363 'astyp':1356 'audio':1437,1449,1518,1527 'audio/slide_':1441 'aurora':208,211,2006,2010,2149,2155 'aurora/violet':354 'axi':1353 'b':1844 'b088f9':501 'bash':1191,1234,1334,1794 'bbox':1671,1679,1681 'bg':858,1137 'big':157,409 'bodi':190,219,255,288,303,337,363,541,861,1948 'boost':859,1138 'bottom':1349,1362,1371,2148 'br':846 'bracket':2124 'break':1550 'build_video.py':1873 'byte':1495,1526 'c':1291,1336,1366,1369,1813,1826,1838,1841 'captur':1513 'card':2102 'cd':1235,1795 'cdn':1920 'chrome':1212,1221,1262,1927,2201 'chrome.app':1260 'chrome.app/contents/macos/google':1259 'class':191,220,256,289,304,338,364,370,542,1949,2091 'claud':127,883 'code':884 'code一键生成ppt':887 'code实现一键生成ppt':753,868 'code超神':773,871,900 'concat':1611,1763,1785,1802 'concat_lines.append':1746,1753,1765 'concat_sub.txt':1778,1806,1855 'content':2044,2049,2076 'continu':1252 'cool':201,204 'cool/neon':352 'copi':1828,1840 'cover':748,758,768,794,805,815,835,844,851,857,1136,1557,1565,1569 'cover.html':1106,1115,1144,1196,1246,1304,1903 'cover.png':1147,1149,1577,1904 'crf':1818 'crop':1322 'css':175,181,385,466,739,827,1086,1916,1965,1981,2033 'csv':1508 'cta':517,718,2060 'data':2051,2056,2078 'deco':836,845,2096,2117,2120,2123,2129,2132,2135,2140,2143,2146,2151,2154,2158,2161,2165,2170,2173,2176 'deco-aurora':2153 'deco-bracket-tl':2122 'deco-dot':2119 'deco-gradient-bottom':2145 'deco-grain':2150 'deco-hlin':2131 'deco-mist-glow':2160 'deco-nois':2095,2116,2128,2139,2157,2169 'deco-refract':2175 'deco-shimm':2172 'deco-soft-dot':2164 'deco-strip':2142 'deco-top-strip':2134 'dir':1602,1607,1743,1750,1769 'disabl':1266 'disable-gpu':1265 'done':1285 'dot':2121,2167 'draw':1665 'draw.text':1710,1722 'draw.textbbox':1672 'dur':1558,1566,1570,1621,1653,1654,1757 'durat':1506,1519,1523,1528,1563,1568,1573,1627,1755 'dx':1695,1707,1712 'dy':1701,1709,1714 'e6613e':518 'end':2058,2064,2074 'entri':1504 'enumer':1623 'exist':1608 'f':1244,1250,1251,1255,1282,1313,1328,1359,1445,1447,1456,1459,1579,1734,1741,1747,1754,1766,1781,1801,1853 'f.write':1782 'faststart':1849 'ff6b8a':474 'ffd666':483 'ffmpeg':1153,1399,1408,1414,1762,1799,1831 'ffprobe':1500 'file':1438,1450,1576,1620,1626,1631,1748,1767 'fill':1718,1728 'float':1520 'fomo':953 'font':1546,1676,1677,1716,1717,1726,1727,1919 'forest':244,247 'format':1505,1811 'fp':1537,1545,1548 'frame':1661,1667 'frame.save':1740 'frame.size':1670 'gap':430 'glacier':2021,2025,2168 'glass':315,318 'glob':1297,1436 'glob.glob':1303,1306,1440 'glow':2163 'googl':1918 'gpu':1267 'gradient':2147 'grain':2152 'grotesk':444,1926 'h':1669,1688 'headless':1213,1222,1263,1928 'hide':1272 'hide-scrollbar':1271 'hline':2133 'homebrew':1406 'hook':759,795,806,816 'html':179,182,535,538,550,864,866,1190,1200,1248,1256,1300,1308,1311,1381,1946,1963,1967,2195,2229 'html.replace':1310 'idx':1614,1737,1760,1772 'imag':1295,1340,1471 'image.open':1320,1347,1629 'imagedraw':1472 'imagedraw.draw':1666 'imagefont':1473 'imagefont.truetype':1547 'img':1613,1628,1736,1759,1771 'img.copy':1662 'import':1294,1296,1339,1341,1433,1463,1470 'indigo':223,226 'int':1357 'io':635 'join':1784 'json':1434,1464 'json.dump':1457 'json.loads':1490 'l':831,840 'l1':744,911,2087 'l2':754,916,2092,2113 'l3':764,920,2099 'l4':2104 'left':376 'len':1590,1655 'libass':1404 'libx264':1815 'lif':2080 'line':852,1612,1786 'ls':331 'maco':1405,1533 'main':391,414,463,609,631,645,649 'margin':432 'margin-top':431 'max':1561 'md/.txt':970 'mean':1352 'medium':1817 'medium.ttc':1542 'mist':2014,2018,2156,2162 'mkdir':1192 'movflag':1848 'mp3':1442 'ms':1860 'n':1485,1486,1641,1783 'name':1309,1315,1329,1733,1745,1752 'neon':307,310,348,530 'new':1264 'no-sandbox':1268 'nois':2097,2118,2130,2141,2159,2171 'noto':1922 'np':1344 'np.array':1346 'numpi':1342 'obsidian':1984,1988,2115 'ocean':259,262 'ok':1609 'open':1452,1475,1491,1777,1894 'os':1298,1435,1467 'os.makedirs':1605 'os.path.exists':1318,1544 'os.path.getsize':1444 'output':1514,1850,1875 'output.mp4':1871 'p':1193,1482,1509 'p.strip':1480,1488 'pain':473,688,817 'paper':292,295,346,394,526,1991,1995,2127 'paper/wine':356 'para':1592,1632,1633,1642 'paragraph':1479,1595,1597,1599 'peter':129,132,617 'pil':1293,1338,1469 'pillow':1230,1394,1411 'png':8,1257,1316,1330,1380,1422,1584,1739,1775,1883,2213 'posit':509,712,807 'ppt':3,11,14,32,48,1957 'ppt生成器':894 'ppt还有一半没做完':1062 'present':52,1952 'preset':1816 'preview.html':1378,1895,1913,1977,2208 'print':1331,1358,1373 'pspdfkit':119 'pwd':1281 'python':1432,1462 'python3':1290,1335 'quiet':1502 'r':1498,1640,1820 'r.stdout.strip':1521 'rang':1588 'raw':1253,1280,1312,1319,1321 're':1466 're.split':1639 'read':1477,1493 'refract':2177 'research':126 'rgb':1361 'rm':1852 's.strip':1644,1650 's01':1560,1571 'safe':1803 'san':1923 'sandbox':1270 'save':1327 'sc':1924 'scale':1808 'screenshot':1279 'script':46 'script_notes.md':1383,1912,1976,2205 'scrollbar':1273 'seg':1522,1562,1572 'segment':122,1443,1458,1489,1497,1532,1591 'segments.json':1426,1453,1492 'sent':1652,1658,1664,1675,1715,1725,1756 'sentenc':1638,1643,1648,1656,1660 'shimmer':2174 'shortest':1847 'show':1503 'signal':1999,2003,2138 'silent.mp4':1823,1834,1854 'size':1276,2219 'skill' 'skill-slides' 'skill教程':885 'slide':1,77,144,147,548,598,602,637,655,659,664,669,674,677,731,1110,1162,1173,1182,1247,1307,1554,1575,1580,1594,1604,1617,1619,1625,1630,1635,1636,2041,2048,2055,2063 'slide-cont':2047 'slide-data':2054 'slide-end':2062 'slide-titl':2040 'slide_01.html':1155,1202,1908,1972 'slide_01.png':1348,1578,1910,1974 'slide_02.html':1203 'slide_xx.html':1909,1973 'slide_xx.png':1911,1975 'small':420 'soft':2166 'solut':482,652,694 'sort':1302,1305,1439 'source-majiayu000' 'space':443,1925 'stat':153,440,449,457,622,626 'steinberg':130,618 'step':500,706 'strip':1478 'stripe':2137,2144 'sub':402,425,616,723,769,1103,1601,1603,1606,1735,1742,1749,1768 'sub.mp4':1851,1876 'subprocess':1465 'subprocess.run':1499 'subtitl':1401 'sum':1496 'sunset':268,271 'svg':2109,2226 'tail':334 'teal':237,240 'teal/indigo':358 'tech':160,491,612,634,701,796 'templates/slides/content.html':2050 'templates/slides/data.html':2057 'templates/slides/ending.html':2065 'templates/slides/title.html':2043 'text':1474,1516 'text.split':1484 'theme':1987,1994,2002,2009,2017,2024,2090 'theme-aurora':2008 'theme-glaci':2023 'theme-mist':2016 'theme-obsidian':1986 'theme-pap':1993 'theme-sign':2001 'titl':749,2036,2042,2072 'tl':837,2125 'top':433,2136 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-coding-assistant' 'topic-automation' 'topic-claude' 'topic-claude-code' 'topic-code-review' 'topic-developer-tools' 'topic-devops' 'topic-productivity' 'topic-prompt-engineering' 'topic-python' 'total':1494,1525 'true':1515,1517,1610 'tts':1386,1427 'tw':1678,1686 'unicod':1859 'unicode.ttf':1540 'unit':450,627 'v':1501,1814,1827,1839 'vf':1807 'violet':276,279 'vo':152,156,159,197,203,210,225,232,239,246,261,270,278,294,309,317,375,390,401,408,413,419,424,429,439,448,456,462,472,481,490,499,508,516,525,529,547,608,611,615,621,625,630,633,644,648,651,687,693,700,705,711,717,722,747,757,767,793,804,814,834,843,850,856,1102,1135 'vo-aurora':209 'vo-big':155,407 'vo-cool':202 'vo-cover-bg-boost':855,1134 'vo-cover-deco-br':842 'vo-cover-deco-tl':833 'vo-cover-hook':756 'vo-cover-hook-pain':813 'vo-cover-hook-posit':803 'vo-cover-hook-tech':792 'vo-cover-lin':849 'vo-cover-sub':766 'vo-cover-titl':746 'vo-cta':515,716 'vo-forest':245 'vo-gap':428 'vo-glass':316 'vo-indigo':224 'vo-left':374 'vo-main':389,412,461,607,629,643,647 'vo-neon':308,528 'vo-ocean':260 'vo-pain':471,686 'vo-pap':293,524 'vo-posit':507,710 'vo-slid':546 'vo-smal':418 'vo-solut':480,650,692 'vo-stat':151,438,455,620 'vo-stat-unit':447,624 'vo-step':498,704 'vo-sub':400,423,614,721,1101 'vo-sunset':269 'vo-teal':238 'vo-tech':158,489,610,632,699 'vo-violet':277 'vo-warm':196 'vo-win':231 'voiceov':60,332,1511,1836 'voiceover_text.txt':1385,1476 'volcano.mp3':1512,1837 'w':1454,1668,1685,1779 'warm':194,198,326,983 'websearch':1017,2188 'window':1275,2218 'window-s':1274,2217 'wine':230,233 'write':1142,1198,2199 'x':1683,1711,1723 'y':1684,1713,1724,1800,1832 'yuv420p':1812 'yyyymmdd':1971 'zip':1624 '~xx':1112 '一个ios开发者的ai工作流':913 '一个开发者':929 '一个观点一页':567 '一句话':882 '一招搞定':941 '一次翻页':1095 '一段对应一页幻灯片':1391 '一种彩色':573,575 '一页一观点':61 '万能':791 '万能公式':940 '上':415,426,464 '下为黑色':395 '不加类':784 '不同内容类型的前':593 '不抢注意力':725 '不是':1218 '不是传递信息':1031 '不确定时':56 '不要把两个观点放一页':568 '不要把讲稿书面化':577 '不要替换成正式名称':173 '不要有静音延迟':1169 '不要每次都用':325 '不要用':1398 '不要用字数比例':1791 '不要缩字号':1941 '不连续重复同一主题':340 '不重新编码':1829 '专门一页展示身份标签':86 '两个输出文件':1870 '严格遵守拆页规则':1089 '个':1208 '个中文字':565 '中心微暖光晕':862 '中文字体':1534 '中间自由组合':2075 '中间页':1887 '为什么重要':671 '主文字':396,435,551 '主题':189,218,254,287,302,543,1980,2112,2181 '主题下语义色会自动调整':531 '主题关键词':974 '主题切换':1942 '主题文字色':2108 '主题自动选择规则':324 '主题色偏好':2183 '主题装饰':2098 '主题调研':2186 '了解需求':2180 '争议':822 '争议话题':236 '事件更新':95 '事实':99 '互动':1026 '互动引导':520 '五个月做出百万行产品':1051 '产品':802 '产品介绍':322 '产品发布':266,1990 '产品名':496 '产品更新':1004 '产品评测':2026 '人物型':81,596,985,999 '人物型封面特殊规则':901 '人物型的':106 '人物型视频的核心卖点是':110 '人类掌舵':1066 '今天介绍一个ai工具':1039 '从讲稿中提取封面三层文字':873 '从讲稿提取三层文字':1119 '会导致底部白条':1228 '位置':1865 '作用':742,2085 '你们学会了吗':719 '你是一个演示文稿设计专家':16 '你瞪着发亮的屏幕':1061 '使用':2230 '使用时机':470 '例':606,642 '例如第一段音频':1176 '保存':2200 '保持口语化':576 '信息传达':2107 '信息传递':1034 '信息图':54 '信息密度高':1953 '倍':777 '做演示背景图时使用':13 '像跟朋友聊天':1020 '元素':826 '先写':1195 '先构思一份':1012 '先构思讲稿再拆页':975 '先生成封面':1108 '公式':790 '共享第一段音频':1164,1556 '关键词霓虹发光':312 '其他补充':720 '其他身份可以在后续页补充':167 '内容':549 '内容容器':2100 '内容类型':65,990 '内容类型决定封面和前':992 '内容超出画布':1933 '内部顶栏':1225 '再用':1413 '冰川':2022 '冲击力':668 '决定封面和前':66 '冷蓝渐变':205 '分步讲解':1024 '分类标签':504 '分钟的口播讲稿':1015 '分钟视频':585 '则封面':1179 '创始人':120 '创建输出目录':1188 '创意':283 '判断依据':75 '判断内容类型':966 '判断方法':133,996 '判断逻辑':41 '别错过':954 '到幻灯片':172 '制造期待':662 '前':586,590 '前沿':284,2012 '前沿内容':214 '副标题':2038 '功能说明书':1070 '加':1133 '加在':860 '加载':1921 '十倍速':947 '半透明':452 '卡片':38 '卡片组件':2103 '即可':1950 '原则':1033 '原始幻灯片':1419 '原样保留':171 '原理':1416 '去年把工具全换成了':646 '参数罗列':1072 '参考上方':989,1123,1128 '参考模板':2035 '反直觉的答案':679 '叠加':377 '叠加在':411,422,460 '叠加类':780 '口播':43 '口播幻灯片预览':1382 '口播模式':22,49,57,59 '口播稿':1377 '口播视频分':69 '口播视频背景':24 '口语化风格':1019 '只引用这一个':180 '只用两样工具':923 '只看理性钩':926 '只需替换':540 '可在浏览器翻页预览':1896 '可直接发布':1899 '右上角':830 '右侧要点卡片':2046 '右边立刻刷新':1045 '号召行动':521 '各主题装饰层':2111 '合并音频':1825 '合成时排在最前面':1154 '合成视频':1788 '同口播模式的预览器模板':2209 '同时确认背景主题偏好':981 '同比特率下字节':1430 '告知路径':2215 '告知输出目录路径':1891 '命名':1116 '和':527,545,1161,2077 '和装饰层':2081 '和观众的关系':672 '品牌':2061 '品牌标记的正式':1956 '品牌色':442,787 '品牌色渐隐线':853 '品红':282,820 '围绕某人的观点':82 '图标':40,2106,2110 '图标库':2227 '圈内都知道的':118 '在':1152 '在拆页前就要确定':995 '场景':1063 '场景画面':1058 '增强':1139 '备注小字':427 '复杂':37 '复杂度':21 '大多数内容':200,372 '大字':87,605 '大数字冲击':445 '大模型':2013 '大部分人能不能立刻知道是谁':135 '太猛了':949 '夸张':893 '套幻灯片用了什么主题':330 '套暗色后必须用':345 '如':383 '如果不能':136 '如果人物有多个身份':163 '如果内容塞不下':1939 '如果只是一句抽象的话':1076 '如果只看到':928 '如果字体没加载成功':1930 '如果想在某几页切换主题':1944 '如果用户只给了主题':1011 '字':935,1938 '字体':1857 '字体加载':1915 '字号':741 '字号是理性钩的':775 '字幕对小红书视频极其重要':1396 '字幕样式':1856 '字情绪词':891 '字数和实际语速不成正比':1792 '宁可多页也不要挤':562 '它依赖':1403 '定调':2089 '实现':2086 '对应':582 '封面':416,730,863,1170,1239,1552,1905 '封面三层结构':734 '封面之后立即出现':1157 '封面和内页的关系':1148 '封面和开头页的视觉策略完全不同':73 '封面固定':1158 '封面是专门设计的标题卡':733 '封面是独立于':1109 '封面是视频在小红书信息流中的缩略图':728 '封面理性钩':140 '封面理性钩重点':76 '封面系统':726 '封面装饰':825 '封面钩子颜色':779,1129 '将讲稿拆成':1081 '就开始播放':1168 '就是不合格':931 '层级':738,876,906,2084 '居中':367 '居中大标题':2037 '居中总结':2059 '展示':33,53 '展示引发思考的问题':105 '展示效果':713 '展示效果时':514 '展示核心数字':98 '展示痛点场景':92 '展示结果':1880,2211 '工作流分享':918 '工作流程':963 '工作目录':1901,1969 '工具':697,801 '工具写':1143 '工具名':494,1097 '工具推荐':2019 '工具逐页生成':1199 '左下角':839 '左侧竖线':379 '左对齐叙事':373 '左标题':2045 '左边屏幕让ai改':1044 '巨大情绪词':761 '布局':359,362,544,2032 '布局与背景自由组合':382 '带卡片':1954 '带字幕':1789 '带字幕版':1877 '常见问题':1914 '年':628 '并行写多个文件提高效率':1204 '幻灯片':4 '幻灯片生成器':15 '序列':9 '底部5px':1360 '底部字幕':1420 '底部居中':1866 '底部有白条':1372 '底部装饰线':848 '建立身份':601 '开头':682,1038 '开头铺垫':479 '引出方案':691,1023 '引出正题':641 '引发思考的问题':676 '引用两个':1964 '引用数据':1047 '引起共鸣':658,690 '强调色':2000 '强调词':1096 '当用户需要做':10 '彩色强调':552 '彩色渐变系':251 '很多用户不开声音浏览':1397 '必须判断内容类型':984 '必须包含人物最知名身份':85 '必须包含人物身份':903 '必须包含人物身份标签':141 '必须在':597 '必须有专门一页展示身份':149 '快上车':955 '总结':102,1025,1052,1997 '总页数':578 '情感':235,477,821,958 '情感场景':1036 '情绪':1065 '情绪触发':1059 '惊叹':487 '想想都美啊':1064 '感性钩':736,755,888,917,1121 '感性钩常用词库':932 '感性钩是封面的核心':774 '感性钩的提取规则':872,1124 '感性钩聚焦观点':904 '懒人配方':763,869,895,939 '成果':513,714,811 '成长话题':250 '或':146,154,347,619 '或灰':574 '截图':1146,1238,2196,2202 '截图会用默认字体':1931 '截图后用':1229 '截图命令同口播模式':2216 '截图需要网络连接':1929 '所有幻灯片':1240 '批量截图':1210 '找出此人最知名的身份标签':1000 '承载信息':2101 '技术':206,351,698,800 '技术名':495 '技术深度':1989 '把字幕直接烧进幻灯片图片':1412 '报道产品':94 '拆成两页':1940 '拆页':1079 '拆页完成后':1107 '拆页思路':1090 '拆页规则':555 '拉开层次':437 '括号':832,841 '拼接':1415 '指针滑过凌晨两点':1041 '按优先级尝试':1535 '按内容类型':589 '按内容类型区分':874 '按字数分配会导致后半段音画不同步':1793 '按时长拼接成视频':1423 '换一个更通俗的':137 '推荐':2028 '描述功能':1042 '提到具体工具时':497,702 '提取方法':877 '提炼要点后拆页':980 '提示':1893 '揭示方案时':488 '揭示答案':696 '搜索整理事实清单':2189 '搜索相关信息':1018 '支持两种模式':17 '支持多种格式导出':1071 '支持热更新预览':1043 '改用':1410 '改那几页':1945 '故事讲述':380 '效果':365,387,829 '效果差':1932 '效率':242,810,943 '效率拉爆':944 '效率提升10倍':1048 '效率直接拉爆':1046 '救命了':959 '教用户怎么做某件事':89 '教程':357 '教程型':88,654,986,1002 '数字':667 '数字单位':453 '数据卡片网格':2053 '数据页用':446 '整套幻灯片的颜色分布':681 '整套幻灯片通常用同一个主题':1943 '文件':176,1201,1966 '文件组织':1900,1968 '文字':2105 '文字层级':384 '文字居中对齐':371 '文字左对齐':378 '文案公式':1057 '文章':978 '新闻型':93,663,987,1005 '方向偏移':1692 '方案':485 '方法论':243,788,938 '无人看':1035 '无字幕版':1872 '无白条':1374 '无素材时':2187 '无需手动处理':534 '无需额外':369 '时长':1431 '时长分配必须用音频段字节比例':1790 '时间分配':1551 '明天就是汇报日':1040 '是制造情绪共鸣':1032 '是视频正文第一页':1156 '是视频的第一帧':1150 '昵称':170 '显示':1184 '普通人用claud':772,870,899 '暖黑渐变':199 '暗底':319 '暗底亮底都清晰':1869 '暗示人人可用':771 '暗示普通人也行的一句话':897 '暗红':272 '暗色':1985 '暗色和浅色交替出现':342 '暗色渐变系':187 '暗酒红':234 '更多补充':554 '更常用':58 '替换内容':2198 '最后一页必须是':2073 '最后页':1888 '最好有比喻':892 '最知名的那个':142 '有':1223 '有人看':1037 '有点击':910 '有现成讲稿可跳过':1010 '本步骤生成':1878 '极光':2007 '极光紫绿渐变':212 '极其重要':109,1028 '极简':28 '极简到离谱':919 '构思讲稿':1009 '某位大佬':930 '标出每个':1092 '标注颜色':1080 '标签':2039 '核心':556 '核心事实':666 '核心变化':97 '核心行为':639 '根据内容匹配':350 '根据内容情绪':1127 '案例分析':381 '检查最近':328 '棕':274 '模式':18 '模板':536,865 '模板文件路径前缀':2066 '模糊光斑':320 '横版':7 '橙':786 '橙色':519 '次要文字':405 '正式但没人认识':117 '正确':879 '正面':812 '正面结论':512,709 '步骤号':1098 '步骤编号':503 '步骤详解':703 '段数':1389 '每个切换点':1094 '每句生成一张':1418 '每次可以同时写':1205 '每段口播按标点拆成短句':1417 '每段用空行分隔':1388 '每段讲稿自检':1073 '每行最多':563 '每页':178,537,1962 '每页对应的口播要点':1384 '每页彩色最多':569 '每页必须有品牌标记':2079 '每页必须满足':2083 '每页最多':559,1934 '每页标注':1085 '每页至少':397 '毛玻璃卡片':321 '没人点':908 '没有身份':907 '注意':523 '泪目':962 '浅色':1992 '浅色主题用深色版本':532 '浅色系':285 '淡金色角线':838,847 '深度分析':228 '深松绿':241 '深森林':248 '深橙':273 '深靛蓝':227 '清单':1996 '渐变色':781 '滤镜':1402 '演示':51 '演示模式':30,55,1951 '演示模式工作流程':2178 '演示模式用':2228 '激励':267 '灰色':404,724 '灰色文字切换时加':436 '灰色补充':553 '烧入法':1395 '热点事件':275 '焦虑':824 '然后用':1197 '然后读':336 '爽到飞起':961 '特殊效果系':301 '独立':31 '理性内容':207 '理性钩':735,745,880,902,912,1120 '生成':1425,1874 '生成口播稿':2204 '生成口播视频背景':2 '生成字幕':1393 '生成字幕帧图片':1461 '生成封面':1105 '生成幻灯片':12 '生成步骤':1117 '生成预览器':1376,2207 '生活':299 '用':150,1016,1114,1141,1211 '用claud':752,867,886 '用字幕帧图片生成静音视频':1798 '用对应语义色':1099 '用户可能提供':967 '用户提到':42,50 '用渐变色':778 '用的纯文本口播稿':1387 '用目标受众最有辨识度的称呼':116 '用途':19,388,469 '痛点':476 '痛点场景':657 '痛点开场':1022 '白':572 '白字':188,216,252 '白色':1862 '白色粗体':393 '的':1400,1407,1421,1947 '的文件':1113 '的那个':166 '目标受众最熟悉':165 '直接决定点击率':729 '直接拆页':972 '直接用':1226 '直接起飞':945 '省一整天':946 '真的炸':950 '硬规则':138 '确定每页类型和核心信息':2192 '确认输入':965 '示例':743 '离谱':952 '种':185,361,571 '种主题色':1979 '种幻灯片类型':2030 '种类型':71 '种语义颜色':459 '科技评测':314 '科普':2020 '秒':1160,1172,1178,1181,1186 '突出产品名':96 '突出方法':90 '突出金句':103 '窗口加高到':1241 '窗口尺寸必须用':1215 '章节':991 '第':1884,2069 '第一帧':1907 '第一步':505,707,964 '第一段音频时长':1175 '第七步':1392 '第三步':1078 '第三步半':1104 '第九步':1879 '第二步':506,708,1008 '第五步':1209 '第八步':1787 '第六步':1375 '第四步':1187 '策略':80 '箭头键翻页预览所有':1379 '米白底':296 '类':386,467,740,828,1087,1982,2034 '类型':74,936,2031 '类型不同':72 '粉':818 '粉红':475 '素材':2182 '素材围绕某个人':998 '素材文件':977 '紫':263,281,799 '紫色':502 '红':819 '纯文字居中':29 '纯色浸染系':215 '纯黑底':311 '终于等到':960 '经历':83 '结尾互动':522,715 '结构':1021 '结构固定':539 '结构规则':2068 '结论':486 '绝了':951 '综上所述':1053 '绿':808 '绿色':511 '缩略图':1151 '老兵':636 '而非':112 '联合创始人':123 '背后的团队':128 '背景主题':183 '背景主题用和内页相同的主题':1132 '背景增强':854 '背景底色':2088 '能不能知道视频在讲谁':927 '能写代码的ai到处都是':1055 '能决定写什么的人才稀缺':1056 '脑子里能不能出现一个画面':1075 '自动加粗':465 '自动选择':186 '自检':924 '自然':249 '落后了':957 '蓝':264,280,798 '蓝调':229 '薄雾':2015 '行':399,561,1936 '行为的情绪点':905 '补充说明':406 '补充说明用灰色':1100 '表':1130 '裁切到':1231,1287,2222 '裁切完成':1332 '装饰':39 '装饰层':1955,2093,2114 '见口播模式的第五步':2225 '观众因为这个人的身份才点进来':114 '观点':104,355,640 '观点切换点':1093 '观点型':100,673,988,1007 '观点输出':298,1060 '观点金句':1068 '规划结构':2191 '规则':108,557 '视觉':192,221,257,290,305 '视觉丰富度':2094 '视觉四层结构':2082 '视觉焦点':762 '视频':47 '视频已含字幕':1898 '视频核心做了什么':881 '视频缩略图':727,1906 '视频背景':44 '解决方案预告':661 '让用户预览效果':1889 '记录每段音频的字节大小':1429 '讲稿':45,997 '讲稿决定视频质量的':1029 '讲稿情感化规则':1027 '讲稿报道事件':1003 '讲稿教怎么做':1001 '讲稿文件':969 '讲稿输出个人看法':1006 '讲稿里提到的人物别称':169 '设计系统':174,1961 '访谈':84 '词库':937 '该工具值得使用':1054 '该工具能够自动生成ppt文件':1069 '语音从视频开头':1165 '说了什么':113 '说明':558 '说清楚是什么':751 '读':2212 '读一遍讲稿':1091 '读参考模板':2197 '读取内容':971 '读取几张关键':1882 '谁说的':111 '负面':478 '超长必须换行':566 '距底边':1867 '身份优先':107 '身份前置':909 '身份标签选择':115 '身份标签页':604 '转场大标题':417 '转折':695 '轻松内容':1998 '输出个人看法':101 '输出目录':1236,1796 '还不知道':956 '这个称呼发到目标受众的群里':134 '这是核心步骤':1088 '连续':343 '适合所有人':898 '适合所有开发者':922 '适合系列化内容':217 '适用':193,222,258,291,306,366,782 '适用内容':1983 '选':164 '选择钩子颜色':1126 '逐页写':1189 '逐页截图':1214 '逐页生成':2194 '通用规则':875 '通过':1917 '速度快':1830 '遮住感性钩和降门槛':925 '配合':454 '配合口播视频使用':64 '配方':91,789 '里程碑':2005 '重写':1077 '重大新闻':2004 '铺垫痛点':689 '错误':878 '闭上眼睛读这句话':1074 '降维打击':942 '降门槛':765,896,921 '降门槛钩':737,1122 '零装饰':63 '需要最后一帧重复':1764 '震撼':948 '震撼数据':313 '霓虹主题加发光效果':533 '青':265,797 '青绿':809 '青蓝':493 '非技术':300 '音频生成后':1428 '页':27,36,581,685,1084,1886,1960 '页决定观众是否继续看':592 '页必须是':2071 '页数':20,1390,2184 '页的视觉策略':994 '页策略':68,588 '页结构不同':595 '顶部品牌色条':297 '顶部标题':2052 '预览':2214 '颜色':468 '颜色即层级':62 '颜色节奏':680 '验证底部无白条':1333 '高亮':161 '高级感内容':323 '高视觉能量':253 '黄':785 '黄色':484 '黑字':286 '黑色描边':1690,1863 '默认':23,195,368,783,982 '默认不含此库':1409 '龙虾作者':121,131,613,914","prices":[{"id":"873c7f29-b7b8-4ce4-99f0-70de31123664","listingId":"9e36eebf-d397-42ec-bf00-2cec273c3f38","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"majiayu000","category":"claude-arsenal","install_from":"skills.sh"},"createdAt":"2026-04-18T22:24:29.630Z"}],"sources":[{"listingId":"9e36eebf-d397-42ec-bf00-2cec273c3f38","source":"github","sourceId":"majiayu000/claude-arsenal/slides","sourceUrl":"https://github.com/majiayu000/claude-arsenal/tree/main/skills/slides","isPrimary":false,"firstSeenAt":"2026-04-18T22:24:29.630Z","lastSeenAt":"2026-05-01T07:01:16.739Z"}],"details":{"listingId":"9e36eebf-d397-42ec-bf00-2cec273c3f38","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"majiayu000","slug":"slides","github":{"repo":"majiayu000/claude-arsenal","stars":29,"topics":["agent-skills","ai-agents","ai-coding-assistant","automation","claude","claude-code","code-review","developer-tools","devops","productivity","prompt-engineering","python","software-development","typescript","workflows"],"license":"mit","html_url":"https://github.com/majiayu000/claude-arsenal","pushed_at":"2026-04-29T04:12:22Z","description":"52 production-ready Claude Code skills and 7 specialized agents for software development, DevOps, product workflows, and automation.","skill_md_sha":"b540440f24324af6af1276f62e8376e31c0e7bc1","skill_md_path":"skills/slides/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/majiayu000/claude-arsenal/tree/main/skills/slides"},"layout":"multi","source":"github","category":"claude-arsenal","frontmatter":{"name":"slides","description":"生成口播视频背景 PPT 幻灯片（16:9 横版 PNG 序列）。当用户需要做 PPT、生成幻灯片、做演示背景图时使用"},"skills_sh_url":"https://skills.sh/majiayu000/claude-arsenal/slides"},"updatedAt":"2026-05-01T07:01:16.739Z"}}