360 Secure SkillHub
360 安全技能中心

Text to PPT

该 Skill 采用两阶段流程:先读取输入文本并输出逐页 JSON 大纲,再依据设计系统逐页生成 HTML 幻灯片(可由子代理并行生成),最后插入外壳模板装配为单文件 HTML 演示文稿并保存。支持四种主题、Chart.js 图表、多种布局与 8–15 页规模。

rendylong
rendylong
热度 80.66
最近更新 2026-05-11 17:33:24
分类:创作依赖:内部调用大模型 / 读写文件 / 第三方 API应用场景:演示设计 / 摘要总结 / 模板 / 数据处理

安装技能

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

执行命令安装此 skill: npx secure-skills-cli add text-to-ppt
Metadata
name
text-to-ppt
description
Convert any text input (research reports, summaries, proposals, plans, etc.) into a beautiful HTML-based presentation. Use when the user asks to create a PPT, slides, presentation, deck, or convert text/documents into slides. Also triggers on phrases like "做成PPT", "生成幻灯片", "做个演示文稿", "转成slides", "create presentation", "make slides", "text to presentation". Supports data visualization with Chart.js, Font Awesome icons, and modern design themes.

Text-to-PPT — 文本转 HTML 演示文稿

Convert any text input into a visually stunning, single-file HTML presentation.

CRITICAL: Two-Phase Generation

ALWAYS use the two-phase approach. NEVER generate the full HTML in one shot.

Phase 1: Plan (fast, single call)

Read the input text, then produce a slide-by-slide outline in JSON format:

{
  "title": "Presentation Title",
  "language": "zh-CN",
  "density": "detailed",
  "theme": "dark",
  "slides": [
    {
      "number": 1,
      "type": "title",
      "heading": "Main Title",
      "content": "Subtitle or tagline",
      "layout": "centered",
      "notes": "Visual: large title with accent underline"
    },
    {
      "number": 2,
      "type": "content",
      "heading": "Section Title",
      "points": ["Point 1", "Point 2", "Point 3"],
      "layout": "bullets",
      "hasData": false,
      "notes": "Use numbered badges for each point"
    },
    {
      "number": 3,
      "type": "chart",
      "heading": "Key Metrics",
      "chartType": "bar",
      "chartData": {
        "labels": ["A", "B", "C"],
        "datasets": [{"label": "Sales", "data": [100, 200, 150]}]
      },
      "points": ["Insight 1", "Insight 2"],
      "layout": "split",
      "hasData": true,
      "notes": "Left: chart, Right: insights as stat cards"
    }
  ]
}

Rules for Phase 1:

  • Output ONLY the JSON plan. No HTML. No explanation.
  • Identify data points → mark hasData: true and provide chartType + chartData
  • Choose layout: centered, bullets, split, grid, timeline, cards, fullchart, quote
  • Target 8-15 slides. Never exceed 20.
  • This should take <10 seconds.

Phase 2: Generate (parallel, page-by-page)

Read references/design-system.md — this is where the full design spec lives.

Then generate HTML for each slide independently. Each slide is a self-contained <div class="slide"> block.

For each slide, the agent should:

  1. Take ONE slide from the plan (by number)
  2. Read only the design system reference if not already loaded
  3. Generate ONLY that one slide's HTML <div class="slide">...</div>
  4. No <html>, no <head>, no <body> — just the slide div

BATCHING: Generate slides in parallel using sub-agents. Spawn up to 5 sub-agents simultaneously, each generating 1-2 slides.

Phase 3: Assemble

After all slides are generated:

  1. Read the shell template from references/shell-template.html
  2. Insert all slide divs into the shell
  3. Ensure chart canvas IDs are unique across all slides
  4. Save to Obsidian vault: ~/Documents/longhai/Longhai/
  5. Tell user the file path

Execution Strategy

When running as the main agent:

  1. Phase 1 yourself (fast, just JSON)
  2. Write the plan to a temp file
  3. Spawn sub-agents for Phase 2 (parallel slide generation)
  4. Collect results and assemble in Phase 3

Sub-agent task format (for Phase 2):

Generate HTML for slide {N} of a presentation.

SLIDE PLAN:
{JSON for this specific slide}

DESIGN SYSTEM: Read references/design-system.md for theme colors, components, and rules.

OUTPUT: Return ONLY a single <div class="slide" style="background-color: #0f172a;">...</div> block.
No <html>, <head>, or <body> tags. Use inline styles. Include <script> for Chart.js if this slide has charts.
Use unique canvas ID: chart-slide{N}-{random}.

Input Sources

  • Directly pasted text
  • A file path — read it first with read
  • A URL — fetch it first with web_fetch
  • An Obsidian note path — read it first

Output

  • Single self-contained HTML file
  • File naming: {topic-slug}.presentation.html
  • Default save location: ~/Documents/longhai/Longhai/
  • Tell the user the file path

Theme Options

Theme Background Text Cards Accent
dark (default) slate-900 slate-50 slate-800 blue-500/amber-500
light slate-50 slate-900 white blue-600/amber-600
tech gray-950 emerald-50 gray-900 cyan-500/violet-500
warm stone-900 amber-50 stone-800 orange-500/rose-500

User can specify a theme. Default: dark.