wps-ppt-speaker-notes — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited wps-ppt-speaker-notes (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
PPT内容 → 逐页演讲稿 → 写入备注区 → 自信开讲。
PPT做好了,但不知道怎么讲?交给我。
wps-ppt-genwps-ppt-outline每页备注包含:
┌─────────────────────────────┐
│ 【开场/过渡】 │
│ "接下来我们看一下..." │
│ │
│ 【核心要点】 │
│ · 要点1 — 展开说明 │
│ · 要点2 — 数据支撑 │
│ · 要点3 — 案例/故事 │
│ │
│ 【过渡到下一页】 │
│ "那么基于这个情况..." │
│ │
│ ⏱ 建议时长:1.5分钟 │
└─────────────────────────────┘from pptx import Presentation
from pptx.util import Inches, Pt
import os
def read_ppt_content(ppt_path):
"""读取PPT每页内容"""
prs = Presentation(ppt_path)
slides_content = []
for i, slide in enumerate(prs.slides, 1):
content = {'page': i, 'title': '', 'texts': [], 'has_chart': False,
'has_table': False, 'has_image': False}
for shape in slide.shapes:
if shape.has_text_frame:
for para in shape.text_frame.paragraphs:
text = para.text.strip()
if text:
if shape == slide.shapes.title:
content['title'] = text
else:
content['texts'].append(text)
if shape.has_chart:
content['has_chart'] = True
if shape.has_table:
content['has_table'] = True
if shape.shape_type == 13:
content['has_image'] = True
slides_content.append(content)
return slides_content
def write_speaker_notes(ppt_path, notes_list, output_path=None):
"""将演讲备注写入PPT"""
prs = Presentation(ppt_path)
for i, slide in enumerate(prs.slides):
if i < len(notes_list):
notes_slide = slide.notes_slide
notes_slide.notes_text_frame.text = notes_list[i]
if not output_path:
base, ext = os.path.splitext(ppt_path)
output_path = f'{base}_with_notes{ext}'
prs.save(output_path)
return os.path.abspath(output_path)根据每页内容生成结构化演讲稿:
演讲备注生成原则:
1. 开场白 — 不要直接念标题,用过渡语引入
2. 展开 — 每个要点用1-2句话解释
3. 数据/图表 — 描述趋势和关键数字,不要逐行念
4. 故事/案例 — 在关键页面穿插真实案例
5. 过渡 — 每页结尾自然过渡到下一页
6. 时间 — 标注建议时长,确保总时长合理封面页:自我介绍 + 今天讲什么 + 为什么重要(30秒)
数据页:先说结论 → 再指数据 → 解释含义(勿逐行念数字)
对比页:先说差异 → 再说原因 → 引出建议
总结页:回顾3个核心要点 → 明确下一步 → 感谢+Q&A# 生成备注
/wps-ppt-speaker-notes 帮我给report.pptx每页写演讲备注
# 指定时长
/wps-ppt-speaker-notes 20分钟的演讲,帮我分配每页时间并写讲稿
# 输出文本
/wps-ppt-speaker-notes 把演讲稿导出为文本方便打印~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.