Skip to main content

slide-vision

Enrich markdown slide decks with images — from local folders, DALL-E 3, Pexels, or Unsplash.

Install

pip install slide-vision
# With DALL-E support:
pip install slide-vision[openai]

Quick start

# Create config
slide-vision init

# Enrich a slide deck (uses configured providers)
slide-vision enrich presentation.md

# Skip all APIs — just produce image prompts
slide-vision enrich presentation.md --source none

# Use local images + Pexels fallback
slide-vision enrich presentation.md --source local,pexels --local-dir ./images/

# Also produce a .zip
slide-vision enrich presentation.md --zip

Pre-process local images

Use scan to AI-rename your local images for better keyword matching:

slide-vision scan ./my-images/ --provider openai --dry-run
slide-vision scan ./my-images/ --provider openai

Output structure

presentation-enriched/
├── presentation.md    # enriched markdown with image tags
├── images/            # all sourced images
└── prompts.md         # AI prompts for slides without images (if any)

API keys

Provider Environment variable
DALL-E 3 OPENAI_API_KEY
Pexels PEXELS_API_KEY
Unsplash UNSPLASH_ACCESS_KEY

Check status: slide-vision providers

Custom providers

Bring your own image source or vision model — no fork required.

Quickest: a module:Attribute import spec. Point --source (or scan --provider) at any importable object. An image provider just needs a get_image(slide, output_dir) method; a vision provider is any callable(path) -> str.

# Your own image provider class
slide-vision enrich deck.md --source mypkg.providers:MyProvider

# Mix it with builtins — first hit wins
slide-vision enrich deck.md --source local,mypkg.providers:MyProvider --local-dir ./img

# Your own vision model for scan
slide-vision scan ./img/ --provider mypkg.vision:describe

Image provider contract (implements the ImageProvider protocol):

from slide_vision.providers.base import ImageResult

class MyProvider:
    name = "mine"
    def is_available(self) -> bool: ...
    def get_image(self, slide, output_dir) -> ImageResult | None: ...

Publishable plugins (entry points). Ship a package that registers under slide_vision.providers (images) or slide_vision.vision_providers (scan); once installed it's usable by name and shows up in slide-vision providers:

[project.entry-points."slide_vision.providers"]
gemini = "slide_vision_gemini:GeminiProvider"

[project.entry-points."slide_vision.vision_providers"]
claude = "slide_vision_claude:describe"

Programmatic registration (in your own scripts):

from slide_vision.providers.factory import register_provider
from slide_vision.scanner import register_vision_provider

register_provider("mine", lambda ctx: MyProvider())
register_vision_provider("mine", lambda path: "a caption")

Metadata

Release files for slide-vision 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slide-vision 0.2.0
File Size Uploaded
slide_vision-0.2.0.tar.gz 87.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for slide-vision 0.2.0
File Interpreter ABI Platform
slide_vision-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 105.1 kB

Release files / slide_vision-0.2.0.tar.gz

Download URL slide_vision-0.2.0.tar.gz
Size 87.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6a7c27ab71a79ea91963328856228a29d5ead26bf06651936545c9d53cc4b6c9
BLAKE2b-256 checksum
How to use checksums
1f82db92261d399bd3d5b31e1d95a639e28553bffc37df6e5295f69cf554aac5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / slide_vision-0.2.0-py3-none-any.whl

Download URL slide_vision-0.2.0-py3-none-any.whl
Size 17.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
146e1d127653b3df3ad8b2663ab758f3befd32ed3645c2de3735b1554ae833f0
BLAKE2b-256 checksum
How to use checksums
c2f7464a9bf045588c335820fd54ede8caadbc8bafe3eb39128f71fc93e8a04e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page