Metadata-Version: 2.3
Name: slidesmd
Version: 0.3.0
Summary: Auto-index PowerPoint presentations into a central agents.md — queryable by any AI
Author: Chanukya Pekala
Author-email: chanukya.pekala@gmail.com
Requires-Python: >=3.10
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: fastmcp (>=2.0.0)
Requires-Dist: pytesseract (>=0.3.13,<0.4.0)
Requires-Dist: python-pptx (>=1.0.0)
Requires-Dist: rich (>=13.0.0)
Requires-Dist: typer (>=0.12.0)
Requires-Dist: watchdog (>=4.0.0)
Description-Content-Type: text/markdown

# slidesmd

[![PyPI version](https://img.shields.io/pypi/v/slidesmd)](https://pypi.org/project/slidesmd/)

> Auto-index your PowerPoint presentations into a central `agents.md` — queryable by any AI.

Save a `.pptx` to your folder — `agents.md` updates automatically. Ask Claude, Copilot, or a local Ollama model anything across all your decks.

---

## How it works

1. Point `slidesmd` at a folder containing `.pptx` files
2. It extracts metadata — title, slide topics, full slide content, to-dos
3. It generates `agents.md` — a single Markdown index any AI can read
4. Ask your AI: _"What was that presentation I did about data pipelines?"_

---

## Installation

Requires Python 3.10+.

```bash
pip install slidesmd
```

Or with Poetry:

```bash
git clone https://github.com/chanukyapekala/slidesmd
cd slidesmd
poetry install
```

---

## Usage

### Watch mode (recommended)

Set it once, forget it. Auto-updates `agents.md` whenever you add or remove presentations.

```bash
slidesmd watch ~/Documents/Presentations
```

### Manual index

Manually scan and regenerate the index.

```bash
slidesmd index ~/Documents/Presentations
```

### Search from CLI

Search across all presentations without opening an AI.

```bash
slidesmd search ~/Documents/Presentations "data pipelines"
```

---

## Querying with an AI

`agents.md` is plain Markdown — any AI can read it. Point your AI at the folder, or feed it directly from the terminal.

### Ollama (local, offline)

First generate the index:

```bash
slidesmd index ~/Documents/Presentations
```

Then query it:

```bash
ollama run llama3 "$(cat ~/Documents/Presentations/agents.md)"
```

Then ask anything:

```
>>> What presentations have I done about data pipelines?
>>> Summarise my Iceberg talk in 3 bullet points.
```

### Claude / ChatGPT / Copilot

```bash
# macOS — copy to clipboard
pbcopy < ~/Documents/Presentations/agents.md

# Linux
xclip -selection clipboard < ~/Documents/Presentations/agents.md
```

Paste into any chat window and start asking questions.

---

## Output — agents.md

```markdown
# Presentations Index

_Auto-generated by slidesmd on 2025-04-04 09:00_

---

## Q3 Sales Review

- **File:** `/Users/you/Documents/Presentations/Q3-Sales-Review.pptx`
- **Slides:** 18
- **Topics:** Introduction, Market Overview, Pipeline, Forecast, Next Steps
- **To-dos:**
  - TODO: Follow up with Nordic accounts by end of month
  - Action item: Update forecast numbers with finance team

**Slide content:**

- **Introduction**: What we covered last quarter and what changed
- **Market Overview**: EMEA growth 12% YoY · Pipeline up 18%
- **Next Steps**: Submit revised forecast by Friday
```

---

## Configuration

Works with any local folder, including cloud-synced ones. Recurses into subfolders automatically.

```bash
slidesmd watch ~/Documents/Presentations          # macOS/Linux
slidesmd watch "C:\Users\you\Documents\Slides"    # Windows
```

---

## MCP Server

SlidesMD ships an MCP server so Claude Desktop, Cursor, and any other MCP client can query your presentations natively — no scripting required.

### Start the server

```bash
slidesmd mcp          # via the CLI
# or
slidesmd-mcp          # direct entry point
```

### Claude Desktop config

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "slidesmd": {
      "command": "slidesmd-mcp"
    }
  }
}
```

### Available tools

| Tool | What it does |
|------|-------------|
| `index_folder` | Index all `.pptx` in a folder and write `agents.md` |
| `search_presentations` | Keyword search across titles, topics, todos, and slide content |
| `get_presentation` | Get metadata for a single `.pptx` file |
| `query_content` | Ask a question against a file or folder using a local Ollama model |

All tools return **compact, factual responses by default**. Pass `detailed=true` to get full slide-level content — useful when the AI needs to drill deeper after an initial answer.

### Example interaction

```
You: What are the key features of Apache Iceberg?
AI: [calls get_presentation, compact]
    Apache Iceberg · 31 slides · Topics: Introduction, Agenda, Iceberg Layout...

You: Give me the full slide content on the layout
AI: [calls get_presentation, detailed=true]
    [metadata.json]: Snapshot details · Partition details · Schema details...
```

---

## Stack

- [`watchdog`](https://pypi.org/project/watchdog/) — file system monitoring
- [`python-pptx`](https://pypi.org/project/python-pptx/) — PowerPoint extraction
- [`typer`](https://typer.tiangolo.com/) — CLI framework
- [`rich`](https://rich.readthedocs.io/) — terminal output
- [`fastmcp`](https://github.com/jlowin/fastmcp) — MCP server framework

---

## License

MIT
