"Use MarkItDown to convert documents to Markdown, configure
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill markitdown --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Markitdown?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-markitdown)More formats (shields.io, HTML) on the badges page.
---
name: markitdown
description: "Use MarkItDown to convert documents to Markdown, configure
cloud/OCR/plugin workflows, and run the local MCP server safely."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# MarkItDown Repo Skill
Use this skill when a task involves Microsoft MarkItDown: converting files or URIs to Markdown for LLM pipelines, choosing optional format extras, using Azure conversion integrations, enabling OCR or third-party plugins, developing plugins, or exposing conversion through the local MCP server.
## Start With The Route
- For ordinary file, stream, URI, stdin, or CLI conversion, read `sub-skills/core-conversion/SKILL.md`.
- For Azure Document Intelligence or Azure Content Understanding conversion, read `sub-skills/cloud-integrations/SKILL.md`.
- For OCR over images embedded in PDF, DOCX, PPTX, or XLSX via `markitdown-ocr`, read `sub-skills/ocr-plugin/SKILL.md`.
- For authoring or debugging third-party MarkItDown plugins, read `sub-skills/plugin-development/SKILL.md`.
- For running `markitdown-mcp` as a local MCP server, Docker service, Claude Desktop server, or Inspector target, read `sub-skills/mcp-server/SKILL.md`.
## Install And Smoke Check
Install the core package plus the extras needed for the requested workflow:
```bash
pip install 'markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription]'
```
Use `markitdown[all]` only when the task truly needs every optional converter, including Azure cloud integrations. Add these package families when needed:
- `pip install markitdown-mcp` for MCP serving.
- `pip install markitdown-ocr` plus an OpenAI-compatible client package for real LLM Vision OCR.
- A custom plugin package with a `markitdown.plugin` entry point for third-party converters.
Run the bundled shared checker from this skill directory when the user asks for an environment or install diagnosis:
```bash
python scripts/check_markitdown_environment.py --check-cli --list-plugins
```
Minimal Python import check:
```python
from markitdown import MarkItDown, StreamInfo
md = MarkItDown()
result = md.convert_stream(
open("example.md", "rb"),
stream_info=StreamInfo(extension=".md"),
)
print(result.markdown)
```
For untrusted inputs, prefer the narrowest API that matches the source (`convert_stream`, `convert_local`, `convert_uri`, or `convert_response`) and remember that MarkItDown performs I/O with the privileges of the current process.
## Shared References
- `references/package-overview.md` summarizes the monorepo packages, public entry points, optional extras, and when each sub-skill owns the workflow.
- `references/troubleshooting.md` covers cross-cutting install/import, optional dependency, plugin discovery, cloud credential, security, and system-tool failures.
- `references/repo-provenance.md` records the source snapshot and evidence paths used to create this skill; read it before deciding whether to refresh the skill.
- `references/repo-routing-metadata.json` is structured metadata used by `repo-skills-router` during managed import.
## Workflow Hints
- Choose local/offline conversion first unless the user explicitly asks for Azure cloud extraction, OCR via an LLM, or remote URI fetching.
- Use stream hints (`StreamInfo` or CLI `--extension`, `--mime-type`, `--charset`) when converting stdin or bytes without a reliable filename.
- Keep plugin usage explicit: install the plugin package, verify `markitdown --list-plugins`, then use `--use-plugins` or `MarkItDown(enable_plugins=True)`.
- Treat MCP and cloud modes as security-sensitive because they can read local files or fetch network resources with the process privileges.
- Do not make cloud, LLM, network, server, or Docker calls unless the user has supplied the necessary endpoints/credentials/files and explicitly wants that side effect.
## Common Task Routing
| User request | Read |
| --- | --- |
| "Convert this PDF/DOCX/XLSX/HTML/ZIP to Markdown" | `sub-skills/core-conversion/SKILL.md` |
| "Why does MarkItDown say missing dependency or unsupported format?" | `sub-skills/core-conversion/references/troubleshooting.md` |
| "Use Azure Document Intelligence or Content Understanding" | `sub-skills/cloud-integrations/SKILL.md` |
| "Extract text from screenshots inside a PDF or Office file" | `sub-skills/ocr-plugin/SKILL.md` |
| "Build a MarkItDown plugin for a new file type" | `sub-skills/plugin-development/SKILL.md` |
| "Expose MarkItDown to Claude Desktop or an MCP client" | `sub-skills/mcp-server/SKILL.md` |
| "Check whether this install has MarkItDown, plugins, and CLIs" | `scripts/check_markitdown_environment.py` |
## Safety Boundaries
- Do not hard-code Azure endpoints, API keys, bearer tokens, OpenAI keys, or private file paths into generated code or examples.
- Do not bind `markitdown-mcp` to non-loopback interfaces unless the user accepts that the server has no authentication and can read files/network resources available to its process.
- Do not preserve data URIs with `--keep-data-uris` unless the downstream consumer explicitly needs embedded data; it can make Markdown very large.
- Do not run long-lived servers, Docker containers, cloud conversions, real OCR calls, or network fetches as a "smoke test" without explicit user intent.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!