专业PPT生成器。Use when user wants to create editable PowerPoint presentations with professional layouts, multiple styles, and beautiful designs. Supports business...
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install pptx-generator或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install pptx-generator⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/pptx-generator/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: pptx-generator description: 专业PPT生成器。Use when user wants to create editable PowerPoint presentations with professional layouts, multiple styles, and beautiful designs. Supports business, academic, creative styles. 可编辑PPT、幻灯片制作、演示文稿。 version: 1.0.1 license: MIT-0 metadata: {"openclaw": {"emoji": "📊", "requires": {"bins": ["python3"], "env": []}}} dependencies: "pip install python-pptx pillow" ---
专业PPT生成器,创建可编辑、排版精美、多风格的PowerPoint演示文稿。
| 风格 | 适用场景 | 特点 | |------|----------|------| | 商务蓝 | 商业汇报 | 专业、稳重 | | 学术白 | 学术论文 | 简洁、规范 | | 创意紫 | 创意展示 | 时尚、活力 | | 科技深 | 技术分享 | 现代、高端 | | 极简灰 | 通用场景 | 简约、百搭 |
User: "帮我做一个关于AI发展的PPT"
User: "生成商务风格的项目汇报PPT"
User: "做一个学术论文答辩PPT"
---
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
class PPTGenerator:
def __init__(self, style='business_blue'):
self.prs = Presentation()
self.style = style
self.colors = self._get_colors(style)
self.fonts = self._get_fonts()
def _get_colors(self, style):
"""获取配色方案"""
schemes = {
'business_blue': {
'primary': RGBColor(30, 60, 114),
'secondary': RGBColor(70, 130, 180),
'accent': RGBColor(255, 193, 7),
'text': RGBColor(51, 51, 51),
'bg': RGBColor(255, 255, 255)
},
'academic_white': {
'primary': RGBColor(0, 51, 102),
'secondary': RGBColor(102, 102, 102),
'accent': RGBColor(204, 0, 0),
'text': RGBColor(51, 51, 51),
'bg': RGBColor(255, 255, 255)
},
'creative_purple': {
'primary': RGBColor(102, 45, 140),
'secondary': RGBColor(155, 89, 182),
'accent': RGBColor(241, 196, 15),
'text': RGBColor(51, 51, 51),
'bg': RGBColor(248, 248, 255)
},
'tech_dark': {
'primary': RGBColor(30, 30, 30),
'secondary': RGBColor(60, 60, 60),
'accent': RGBColor(0, 200, 150),
'text': RGBColor(240, 240, 240),
'bg': RGBColor(20, 20, 25)
},
'minimal_gray': {
'primary': RGBColor(80, 80, 80),
'secondary': RGBColor(150, 150, 150),
'accent': RGBColor(0, 120, 215),
'text': RGBColor(51, 51, 51),
'bg': RGBColor(250, 250, 250)
}
}
return schemes.get(style, schemes['business_blue'])
def _get_fonts(self):
"""获取字体配置"""
return {
'title': 'Arial',
'body': 'Arial',
'chinese': 'Microsoft YaHei'
}
def add_title_slide(self, title, subtitle=''):
"""添加封面页"""
slide = self.prs.slides.add_slide(self.prs.slide_layouts[6])
# 背景色
self._set_slide_bg(slide, self.colors['bg'])
# 标题
left, top, width, height = Inches(1), Inches(2), Inches(8), Inches(2)
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.text = title
p.font.size = Pt(44)
p.font.bold = True
p.font.color.rgb = self.colors['primary']
p.alignment = PP_ALIGN.CENTER
# 副标题
if subtitle:
p2 = tf.add_paragraph()
p2.text = subtitle
p2.font.size = Pt(20)
p2.font.color.rgb = self.colors['secondary']
p2.alignment = PP_ALIGN.CENTER
p2.space_before = Pt(20)
return slide
def add_content_slide(self, title, bullets, layout='left'):
"""添加内容页"""
slide = self.prs.slides.add_slide(self.prs.slide_layouts[6])
# 背景色
self._set_slide_bg(slide, self.colors['bg'])
# 标题栏
self._add_title_bar(slide, title)
# 内容区域
left, top, width, height = Inches(0.8), Inches(1.5), Inches(8.4), Inches(5)
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
tf.word_wrap = True
for i, bullet in enumerate(bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = f"• {bullet}"
p.font.size = Pt(18)
p.font.color.rgb = self.colors['text']
p.space_after = Pt(12)
return slide
def add_two_column_slide(self, title, left_content, right_content):
"""添加双栏内容页"""
slide = self.prs.slides.add_slide(self.prs.slide_layouts[6])
self._set_slide_bg(slide, self.colors['bg'])
self._add_title_bar(slide, title)
# 左栏
left_box = slide.shapes.add_textbox(Inches(0.5), Inches(1.5), Inches(4.5), Inches(5))
left_tf = left_box.text_frame
left_tf.word_wrap = True
for i, item in enumerate(left_content):
p = left_tf.paragraphs[0] if i == 0 else left_tf.add_paragraph()
p.text = f"• {item}"
p.font.size = Pt(16)
p.font.color.rgb = self.colors['text']
p.space_after = Pt(10)
# 右栏
right_box = slide.shapes.add_textbox(Inches(5.2), Inches(1.5), Inches(4.5), Inches(5))
right_tf = right_box.text_frame
right_tf.word_wrap = True
for i, item in enumerate(right_content):
p = right_tf.paragraphs[0] if i == 0 else right_tf.add_paragraph()
p.text = f"• {item}"
p.font.size = Pt(16)
p.font.color.rgb = self.colors['text']
p.space_after = Pt(10)
return slide
def add_table_slide(self, title, headers, rows):
"""添加表格页"""
slide = self.prs.slides.add_slide(self.prs.slide_layouts[6])
self._set_slide_bg(slide, self.colors['bg'])
self._add_title_bar(slide, title)
# 创建表格
rows_count = len(rows) + 1
cols_count = len(headers)
left, top = Inches(0.5), Inches(1.8)
width, height = Inches(9), Inches(4)
table_shape = slide.shapes.add_table(rows_count, cols_count, left, top, width, height)
table = table_shape.table
# 设置表头
for i, header in enumerate(headers):
cell = table.cell(0, i)
cell.text = header
cell.fill.solid()
cell.fill.fore_color.rgb = self.colors['primary']
for paragraph in cell.text_frame.paragraphs:
paragraph.font.size = Pt(14)
paragraph.font.bold = True
paragraph.font.color.rgb = RGBColor(255, 255, 255)
paragraph.alignment = PP_ALIGN.CENTER
# 设置数据行
for row_idx, row in enumerate(rows, 1):
for col_idx, cell_text in enumerate(row):
cell = table.cell(row_idx, col_idx)
cell.text = str(cell_text)
for paragraph in cell.text_frame.paragraphs:
paragraph.font.size = Pt(12)
paragraph.font.color.rgb = self.colors['text']
paragraph.alignment = PP_ALIGN.CENTER
return slide
def add_image_slide(self, title, image_path, caption=''):
"""添加图片页"""
slide = self.prs.slides.add_slide(self.prs.slide_layouts[6])
self._set_slide_bg(slide, self.colors['bg'])
...安装 Pptx Generator 后,可以对 AI 说这些话来触发它
Help me get started with Pptx Generator
Explains what Pptx Generator does, walks through the setup, and runs a quick demo based on your current project
Use Pptx Generator to 专业PPT生成器。Use when user wants to create editable PowerPoint presenta...
Invokes Pptx Generator with the right parameters and returns the result directly in the conversation
What can I do with Pptx Generator in my documents & notes workflow?
Lists the top use cases for Pptx Generator, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/pptx-generator/ 目录(个人级,所有项目可用),或 .claude/skills/pptx-generator/(项目级)。重启 AI 客户端后,用 /pptx-generator 主动调用,或让 AI 根据上下文自动发现并使用。
Pptx Generator 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
Pptx Generator 可免费安装使用。请查阅仓库了解许可证信息。
专业PPT生成器。Use when user wants to create editable PowerPoint presentations with professional layouts, multiple styles, and beautiful designs. Supports business...
Pptx Generator 属于「Documents & Notes」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my documents & notes tasks using Pptx Generator
Identifies repetitive steps in your workflow and sets up Pptx Generator to handle them automatically