Install
openclaw skills install @fulei223344-lang/ppt-speech-fusion支持图片、PDF 作为配套材料
openclaw skills install @fulei223344-lang/ppt-speech-fusion以下任一触发词,skill 激活后 第一句话就是问材料,禁止先去桌面搜索、禁止自行推断路径:
| 触发词 |
|---|
| 整理会议录音 / 会议录音整理 |
| 录音转文字 / 录音转演讲稿 / 语音转文字 / 音频转文字 |
| 语音识别 / 转写录音 / 转写音频 |
| PPT演讲稿 / 演讲复原稿 / 汇报稿 / PPT配音 |
| 会议纪要 / 逐字稿 / 文字稿 / 对话转写 |
| 录音转PPT / 音频PPT融合 / 图片转讲稿 |
| 帮我整理录音 / Whisper转写 |
收到材料文件后,按扩展名自动识别类型:
| 类型 | 扩展名 | 页面提取方式 |
|---|---|---|
| PPT | .pptx | python-pptx 提取文字 + LibreOffice/PyMuPDF 截图 |
| PyMuPDF 逐页截图 + 文字提取 | ||
| 图片 | .png/.jpg/.jpeg/.gif/.bmp/.webp/.tiff | Pillow 直接读取,每张图 = 一页 |
多图片按文件名自然排序(01/02/03…)作为页码顺序。
触发后立即询问,不干别的:
有没有配套材料(PPT / 图片 / PDF)?没有的话我直接转写整理,有的话请上传到对话框。
无材料:直接对录音做完整中文转写(Whisper medium),梳理对话脉络、提炼要点。
有材料:用户上传后,自动识别类型(PPT/图片/PDF),转写录音 + 提取材料页面文字和截图。
转写完成后:
无材料:
转写完成。要输出什么格式? A. 结构化会议纪要 Word(议题/结论/待办) B. 纯转写文本 txt 默认选 A。
有材料:
转写完成。要输出什么格式? A. 演讲复原稿 PDF(上半页叙述,下半页材料页面) B. 纯文字会议纪要 Word C. 纯转写文本 txt 默认选 A。
| 阶段 | 提示语 |
|---|---|
| 触发后 | 「有没有配套材料(PPT/图片/PDF)?没有我直接转写,有的话传上来。」 |
| 转写中 | 「正在转写,预计 X 分钟...」 |
| 转写完 | 「转写完成,选格式:A/B/C」 |
| 生成完 | 自检结果 + 文件路径 |
| 情况 | 处理 |
|---|---|
| 音频格式不支持 | 提示转为 m4a/mp3/wav |
| 转写质量差 | 告知用户,建议更清晰录音 |
| 材料超 50 页 | 提醒耗时,确认后继续 |
| 只有材料没录音 | 提示需要录音 |
| 不支持的图片格式 | 提示转为 png/jpg |
第一步:检查依赖,缺啥装啥。
# 逐个检查,只装缺失的
for pkg in openai-whisper python-pptx Pillow reportlab PyMuPDF python-docx; do
pip show "$pkg" > /dev/null 2>&1 || pip install "$pkg" 2>&1
done
第二步:检查 ffmpeg(音频预处理用,非必需但有最好)。
which ffmpeg > /dev/null 2>&1 && echo "ffmpeg: OK" || echo "ffmpeg: 未安装,大文件转写可能较慢"
第三步:检查 LibreOffice(PPT 截图优先方案,非必需)。
which soffice > /dev/null 2>&1 && echo "LibreOffice: OK(优先截图方案)" || echo "LibreOffice: 未安装,将使用 python-pptx 降级方案"
检查完成后汇报结果再进入工作流。不重复安装已有的包。
import whisper
model = whisper.load_model("medium")
result = model.transcribe("录音文件", language="zh")
大文件预处理:ffmpeg -i 录音.m4a -ac 1 -ar 16000 录音_16k.wav
按文件类型自动选择方案:
PPT (.pptx):优先 LibreOffice — soffice --headless --convert-to pdf 文件.pptx → PyMuPDF 逐页截图;备选 python-pptx + Pillow 手工渲染。
PDF (.pdf):PyMuPDF 逐页截图 + 文字提取。
图片 (.png/.jpg/...):Pillow 直接读取,按文件名自然排序作为页码顺序。多张图片直接作为多页材料使用。
ReportLab / fpdf2,A4,叙述在上,材料页面在下
python-docx,标题分级 + 表格待办
对话中说「整理会议录音」「录音转文字」「AI演讲稿融合」即可自动触发。
首次安装:在 WorkBuddy 技能管理 → 通过 URL 导入,填入 https://github.com/fulei223344-lang/ppt-speech-fusion;或直接搜「AI演讲稿融合」「会议录音转写」即可找到并一键安装。
复制本 SKILL.md 全文到项目根目录对应配置文件(.codex.md / .cursor/rules/ / CLAUDE.md / .github/copilot-instructions.md / .clinerules / .windsurfrules)。
以ä¸ä»»ä¸è§¦åè¯ï¼skill æ¿æ´»å 第ä¸å¥è¯å°±æ¯é® PPTï¼ç¦æ¢å 廿¡é¢æç´¢ãç¦æ¢èªè¡æ¨æè·¯å¾ï¼
| 触åè¯ |
|---|
| æ´çä¼è®®å½é³ / ä¼è®®å½é³æ´ç |
| å½é³è½¬æå / å½é³è½¬æ¼è®²ç¨¿ / è¯é³è½¬æå / é³é¢è½¬æå |
| è¯é³è¯å« / 转åå½é³ / 转åé³é¢ |
| PPTæ¼è®²ç¨¿ / æ¼è®²å¤å稿 / æ±æ¥ç¨¿ / PPTé é³ |
| ä¼è®®çºªè¦ / éå稿 / æå稿 / 对è¯è½¬å |
| å½é³è½¬PPT / é³é¢PPTèå |
| å¸®ææ´çå½é³ / Whisper转å |
触ååç«å³è¯¢é®ï¼ä¸å¹²å«çï¼
ææ²¡æé å¥ PPTï¼æ²¡æçè¯æç´æ¥è½¬åæ´çï¼æçè¯è¯·ä¸ä¼ å°å¯¹è¯æ¡ã
æ PPTï¼ç´æ¥å¯¹å½é³å宿´ä¸æè½¬åï¼Whisper mediumï¼ï¼æ¢³ç对è¯èç»ãæç¼è¦ç¹ã
æ PPTï¼ç¨æ·ä¸ä¼ PPT åï¼è½¬åå½é³ + æå PPT 页颿ååå¹»ç¯çæªå¾ã
转å宿åï¼
æ PPTï¼
转å宿ãè¦è¾åºä»ä¹æ ¼å¼ï¼ A. ç»æåä¼è®®çºªè¦ Wordï¼è®®é¢/ç»è®º/å¾ åï¼ B. çº¯è½¬åææ¬ txt é»è®¤é Aã
æ PPTï¼
转å宿ãè¦è¾åºä»ä¹æ ¼å¼ï¼ A. æ¼è®²å¤å稿 PDFï¼ä¸å页åè¿°ï¼ä¸å页幻ç¯çï¼ B. 纯æåä¼è®®çºªè¦ Word C. çº¯è½¬åææ¬ txt é»è®¤é Aã
| é¶æ®µ | æç¤ºè¯ |
|---|---|
| 触åå | ãææ²¡æé å¥ PPTï¼æ²¡ææç´æ¥è½¬åï¼æçè¯ä¼ 䏿¥ãã |
| 转åä¸ | ãæ£å¨è½¬åï¼é¢è®¡ X åé...ã |
| 转åå® | ã转å宿ï¼éæ ¼å¼ï¼A/B/Cã |
| çæå® | èªæ£ç»æ + æä»¶è·¯å¾ |
| æ åµ | å¤ç |
|---|---|
| é³é¢æ ¼å¼ä¸æ¯æ | æç¤ºè½¬ä¸º m4a/mp3/wav |
| 转åè´¨éå·® | åç¥ç¨æ·ï¼å»ºè®®æ´æ¸ æ°å½é³ |
| PPT è¶ 50 页 | æéèæ¶ï¼ç¡®è®¤åç»§ç» |
| åªæ PPT 没å½é³ | æç¤ºéè¦å½é³ |
ç¬¬ä¸æ¥ï¼æ£æ¥ä¾èµï¼ç¼ºå¥è£ å¥ã
# éä¸ªæ£æ¥ï¼åªè£
缺失ç
for pkg in openai-whisper python-pptx Pillow reportlab PyMuPDF python-docx; do
pip show "$pkg" > /dev/null 2>&1 || pip install "$pkg" 2>&1
done
ç¬¬äºæ¥ï¼æ£æ¥ ffmpegï¼é³é¢é¢å¤çç¨ï¼éå¿ é使æå¥½ï¼ã
which ffmpeg > /dev/null 2>&1 && echo "ffmpeg: OK" || echo "ffmpeg: æªå®è£
ï¼å¤§æä»¶è½¬åå¯è½è¾æ
¢"
ç¬¬ä¸æ¥ï¼æ£æ¥ LibreOfficeï¼PPT æªå¾ä¼å æ¹æ¡ï¼éå¿ éï¼ã
which soffice > /dev/null 2>&1 && echo "LibreOffice: OKï¼ä¼å
æªå¾æ¹æ¡ï¼" || echo "LibreOffice: æªå®è£
ï¼å°ä½¿ç¨ python-pptx éçº§æ¹æ¡"
æ£æ¥å®æåæ±æ¥ç»æåè¿å ¥å·¥ä½æµãä¸éå¤å®è£ å·²æçå ã
import whisper
model = whisper.load_model("medium")
result = model.transcribe("å½é³æä»¶", language="zh")
大æä»¶é¢å¤çï¼ffmpeg -i å½é³.m4a -ac 1 -ar 16000 å½é³_16k.wav
ä¼å
LibreOfficeï¼soffice --headless --convert-to pdf æä»¶.pptx â PyMuPDF é页æªå¾
å¤é python-pptx + Pillow æå·¥æ¸²æ
ReportLab / fpdf2ï¼A4ï¼åè¿°å¨ä¸ï¼æªå¾å¨ä¸
python-docxï¼æ é¢å级 + è¡¨æ ¼å¾ å
对è¯ä¸è¯´ãæ´çä¼è®®å½é³ããå½é³è½¬æåããPPTæ¼è®²ç¨¿ãå³å¯èªå¨è§¦åã
馿¬¡å®è£
ï¼å¨ WorkBuddy æè½ç®¡ç â éè¿ URL 导å
¥ï¼å¡«å
¥ https://github.com/fulei223344-lang/ppt-speech-fusionï¼æç´æ¥æãPPTæ¼è®²ç¨¿ããä¼è®®å½é³è½¬åãå³å¯æ¾å°å¹¶ä¸é®å®è£
ã
å¤å¶æ¬ SKILL.md å
¨æå°é¡¹ç®æ ¹ç®å½å¯¹åºé
ç½®æä»¶ï¼.codex.md / .cursor/rules/ / CLAUDE.md / .github/copilot-instructions.md / .clinerules / .windsurfrulesï¼ã
GitHub: github.com/fulei223344-lang/ppt-speech-fusion SkillHub: skillId=137251