Guide for using Microsoft MarkItDown - a Python utility for converting files to Markdown. Use when converting PDF, Word, PowerPoint, Excel, images, audio, HTML, CSV, JSON, XML, ZIP, YouTube URLs, EPubs, Jupyter notebooks, RSS feeds, or Wikipedia pages to Markdown format. Also use for document processing pipelines, LLM preprocessing, or text extraction tasks.
markitdown is a usage guide for Microsoft's MarkItDown, a Python utility that converts a wide range of file formats to Markdown optimized for LLM and text-analysis pipelines. It addresses the common preprocessing problem of getting heterogeneous documents into clean, structure-preserving Markdown that language models can consume, keeping headings, lists, tables, and links intact rather than producing purely human-readable output.
The skill documents the supported formats (PDF, Word, PowerPoint, Excel, images with EXIF and OCR, audio transcription, HTML, YouTube URLs, Wikipedia, RSS/Atom, CSV, JSON, XML, Jupyter notebooks, ZIP archives, EPub, and Outlook MSG) and covers installation with optional dependency extras, command-line usage, and the Python API. It shows practical patterns such as piping input, batch-converting a directory, preparing documents as LLM context, and optional enrichment via an OpenAI LLM client for image descriptions or Azure Document Intelligence for complex PDFs, including the relevant environment variables like OPENAI_API_KEY and AZURE_DOCUMENT_INTELLIGENCE_KEY.
It targets developers and data engineers building document-processing or LLM-preprocessing pipelines, and anyone who needs to extract text from mixed document types into Markdown. All shell examples are read-only conversions (including a curl that downloads a document and pipes it through the converter), and API keys are documented as standard environment variables, so the skill is a benign tooling reference.
Documents (PDF, Word, PowerPoint, Excel), media (images with EXIF and OCR, WAV/MP3 audio transcription), web content (HTML, YouTube URLs, Wikipedia, RSS/Atom), data (CSV, JSON, XML, Jupyter notebooks), archives (ZIP, EPub), and Outlook MSG email.
Via pip with extras, e.g. pip install 'markitdown[all]' for everything, or a subset like 'markitdown[pdf,docx,pptx]'. It also works with uv.
Yes. You can pass an LLM client (for example an OpenAI client with a model and prompt) to describe images, or supply an Azure Document Intelligence endpoint for complex documents.
Optional ones documented as environment variables: OPENAI_API_KEY for LLM image descriptions and AZURE_DOCUMENT_INTELLIGENCE_KEY plus an endpoint for Azure Document Intelligence. Neither is required for basic conversion.
Yes. The skill includes a batch pattern that iterates over a directory, converts each file with the Python API, and writes a .md file per document, handling failures per file.
Quick Setup:
.claude/skills/Repository
julianobarbosa/claude-code-skills