Claude
Skill
pptx
Extract text from Microsoft PowerPoint presentations
Virus-scanned
Reviewed automatically before listing.
Download
axoviq-ai-synthadoc-synthadoc_skills_pptx-8dee0ee.zip · 1 KB
Install
skills CLI
npx skills add https://github.com/axoviq-ai/synthadoc/tree/main/synthadoc/skills/pptx
Claude Code
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install axoviq-ai-synthadoc@llmmart
Git
git clone https://github.com/axoviq-ai/synthadoc.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole axoviq-ai/synthadoc collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
PPTX Skill
Extracts text from .pptx files using python-pptx. Each slide is rendered
as a titled section; speaker notes are appended when present.
Setup
pip install python-pptx
Standalone usage
import asyncio
from synthadoc.skills.pptx.scripts.main import PptxSkill
skill = PptxSkill()
async def main():
result = await skill.extract("/path/to/slides.pptx")
print(result.text) # slide titles + body text + speaker notes
print(result.metadata) # {"slides": N}
asyncio.run(main())
When this skill is used
- Source path ends with
.pptx - User intent contains:
powerpoint,presentation,pptx
Files (synthadoc)
-
scripts
-
main.py 1.9 KB
# SPDX-License-Identifier: AGPL-3.0-or-later # Copyright (C) 2026 Paul Chen / axoviq.com from pptx import Presentation from synthadoc.skills.base import BaseSkill, ExtractedContent, SkillMeta class PptxSkill(BaseSkill): meta = SkillMeta(name="pptx", description="Extract text from PowerPoint presentations", extensions=[".pptx"]) async def extract(self, source: str) -> ExtractedContent: try: prs = Presentation(source) except Exception as exc: raise ValueError( f"Cannot read '{source}' as a PowerPoint file: {exc}. " "Ensure the file is a valid .pptx (Office Open XML) document." ) from exc sections: list[str] = [] for i, slide in enumerate(prs.slides, start=1): lines: list[str] = [] title = "" for shape in slide.shapes: if not shape.has_text_frame: continue text = shape.text_frame.text.strip() if not text: continue if shape.shape_type == 13: # picture — skip continue if not title and shape.name.lower().startswith("title"): title = text else: lines.append(text) notes = "" if slide.has_notes_slide: notes_text = slide.notes_slide.notes_text_frame.text.strip() if notes_text: notes = f"\n_Notes: {notes_text}_" heading = f"## Slide {i}" + (f": {title}" if title else "") body = "\n".join(lines) sections.append(f"{heading}\n{body}{notes}" if body or notes else heading) text = "\n\n".join(sections) return ExtractedContent( text=text, source_path=source, metadata={"slides": len(prs.slides)}, ) -
__init__.py 0 B
-
-
requirements.txt 12 B
python-pptx -
SKILL.md 990 B
--- name: pptx version: "1.0" description: Extract text from Microsoft PowerPoint presentations entry: script: scripts/main.py class: PptxSkill triggers: extensions: - ".pptx" intents: - "powerpoint" - "presentation" - "pptx" requires: - python-pptx author: axoviq.com license: AGPL-3.0-or-later --- # PPTX Skill Extracts text from `.pptx` files using `python-pptx`. Each slide is rendered as a titled section; speaker notes are appended when present. ## Setup ```bash pip install python-pptx ``` ## Standalone usage ```python import asyncio from synthadoc.skills.pptx.scripts.main import PptxSkill skill = PptxSkill() async def main(): result = await skill.extract("/path/to/slides.pptx") print(result.text) # slide titles + body text + speaker notes print(result.metadata) # {"slides": N} asyncio.run(main()) ``` ## When this skill is used - Source path ends with `.pptx` - User intent contains: `powerpoint`, `presentation`, `pptx`
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.