markitdown by davila7/claude-code-templates
npx skills add https://github.com/davila7/claude-code-templates --skill markitdownMarkItDown 是微软开发的一款 Python 工具,用于将各种文件格式转换为 Markdown。它特别适用于将文档转换为适合大语言模型(LLM)处理的文本格式,因为 Markdown 格式令牌效率高,且现代语言模型对其理解良好。
主要优势:
使用此技能创建文档时,请务必考虑添加科学图表和示意图以增强视觉传达效果。
如果您的文档尚未包含示意图或图表:
对于新文档: 默认应生成科学示意图,以直观地呈现文本中描述的关键概念、工作流程、架构或关系。
如何生成示意图:
python scripts/generate_schematic.py "your diagram description" -o figures/output.png
AI 将自动:
何时添加示意图:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
有关创建示意图的详细指南,请参阅 scientific-schematics 技能文档。
| 格式 | 描述 | 备注 |
|---|---|---|
| 便携式文档格式 | 完整文本提取 | |
| DOCX | Microsoft Word | 保留表格、格式 |
| PPTX | PowerPoint | 包含备注的幻灯片 |
| XLSX | Excel 电子表格 | 表格和数据 |
| 图像 | JPEG, PNG, GIF, WebP | EXIF 元数据 + OCR |
| 音频 | WAV, MP3 | 元数据 + 转录 |
| HTML | 网页 | 干净转换 |
| CSV | 逗号分隔值 | 表格格式 |
| JSON | JSON 数据 | 结构化表示 |
| XML | XML 文档 | 结构化格式 |
| ZIP | 归档文件 | 遍历内容 |
| EPUB | 电子书 | 完整文本提取 |
| YouTube | 视频 URL | 获取转录文本 |
# 安装所有功能
pip install 'markitdown[all]'
# 或从源代码安装
git clone https://github.com/microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'
# 基本转换
markitdown document.pdf > output.md
# 指定输出文件
markitdown document.pdf -o output.md
# 管道传输内容
cat document.pdf | markitdown > output.md
# 启用插件
markitdown --list-plugins # 列出可用插件
markitdown --use-plugins document.pdf -o output.md
from markitdown import MarkItDown
# 基本用法
md = MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)
# 从流转换
with open("document.pdf", "rb") as f:
result = md.convert_stream(f, file_extension=".pdf")
print(result.text_content)
通过 OpenRouter 使用 LLM 生成详细的图像描述(适用于 PPTX 和图像文件):
from markitdown import MarkItDown
from openai import OpenAI
# 初始化 OpenRouter 客户端(兼容 OpenAI 的 API)
client = OpenAI(
api_key="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # 推荐用于科学视觉
llm_prompt="详细描述此图像以用于科学文档"
)
result = md.convert("presentation.pptx")
print(result.text_content)
使用 Microsoft Document Intelligence 进行增强的 PDF 转换:
# 命令行
markitdown document.pdf -o output.md -d -e "<document_intelligence_endpoint>"
# Python API
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("complex_document.pdf")
print(result.text_content)
MarkItDown 支持第三方插件以扩展功能:
# 列出已安装的插件
markitdown --list-plugins
# 启用插件
markitdown --use-plugins file.pdf -o output.md
在 GitHub 上使用标签查找插件:#markitdown-plugin
控制您支持的文件格式:
# 安装特定格式
pip install 'markitdown[pdf, docx, pptx]'
# 所有可用选项:
# [all] - 所有可选依赖项
# [pptx] - PowerPoint 文件
# [docx] - Word 文档
# [xlsx] - Excel 电子表格
# [xls] - 旧版 Excel 文件
# [pdf] - PDF 文档
# [outlook] - Outlook 邮件
# [az-doc-intel] - Azure Document Intelligence
# [audio-transcription] - WAV 和 MP3 转录
# [youtube-transcription] - YouTube 视频转录
from markitdown import MarkItDown
md = MarkItDown()
# 转换 PDF 论文
result = md.convert("research_paper.pdf")
with open("paper.md", "w") as f:
f.write(result.text_content)
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("data.xlsx")
# 结果将以 Markdown 表格格式呈现
print(result.text_content)
from markitdown import MarkItDown
import os
from pathlib import Path
md = MarkItDown()
# 处理目录中的所有 PDF
pdf_dir = Path("papers/")
output_dir = Path("markdown_output/")
output_dir.mkdir(exist_ok=True)
for pdf_file in pdf_dir.glob("*.pdf"):
result = md.convert(str(pdf_file))
output_file = output_dir / f"{pdf_file.stem}.md"
output_file.write_text(result.text_content)
print(f"已转换: {pdf_file.name}")
from markitdown import MarkItDown
from openai import OpenAI
# 使用 OpenRouter 访问多个 AI 模型
client = OpenAI(
api_key="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # 推荐用于演示文稿
llm_prompt="详细描述此幻灯片图像,重点关注关键视觉元素和数据"
)
result = md.convert("presentation.pptx")
with open("presentation.md", "w") as f:
f.write(result.text_content)
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# 要转换的文件
files = [
"document.pdf",
"spreadsheet.xlsx",
"presentation.pptx",
"notes.docx"
]
for file in files:
try:
result = md.convert(file)
output = Path(file).stem + ".md"
with open(output, "w") as f:
f.write(result.text_content)
print(f"✓ 已转换 {file}")
except Exception as e:
print(f"✗ 转换 {file} 时出错: {e}")
from markitdown import MarkItDown
md = MarkItDown()
# 将 YouTube 视频转换为转录文本
result = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
print(result.text_content)
# 构建镜像
docker build -t markitdown:latest .
# 运行转换
docker run --rm -i markitdown:latest < ~/document.pdf > output.md
MarkItDown()from markitdown import MarkItDown
md = MarkItDown()
try:
result = md.convert("document.pdf")
print(result.text_content)
except FileNotFoundError:
print("文件未找到")
except Exception as e:
print(f"转换错误: {e}")
from markitdown import MarkItDown
md = MarkItDown()
# 对于大文件,使用流式处理
with open("large_file.pdf", "rb") as f:
result = md.convert_stream(f, file_extension=".pdf")
# 分块处理或直接保存
with open("output.md", "w") as out:
out.write(result.text_content)
Markdown 输出已经是令牌高效的,但您可以:
移除多余的空格
合并相似部分
如果不需要,则剥离元数据
from markitdown import MarkItDown import re
md = MarkItDown() result = md.convert("document.pdf")
clean_text = re.sub(r'\n{3,}', '\n\n', result.text_content) clean_text = clean_text.strip()
print(clean_text)
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# 转换 literature 文件夹中的所有论文
papers_dir = Path("literature/pdfs")
output_dir = Path("literature/markdown")
output_dir.mkdir(exist_ok=True)
for paper in papers_dir.glob("*.pdf"):
result = md.convert(str(paper))
# 保存元数据
output_file = output_dir / f"{paper.stem}.md"
content = f"# {paper.stem}\n\n"
content += f"**来源**: {paper.name}\n\n"
content += "---\n\n"
content += result.text_content
output_file.write_text(content)
# 用于带插图的 AI 增强转换
from openai import OpenAI
client = OpenAI(
api_key="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md_ai = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5",
llm_prompt="以技术精度描述科学插图"
)
from markitdown import MarkItDown
import re
md = MarkItDown()
result = md.convert("data_tables.xlsx")
# Markdown 表格可以直接解析或使用
print(result.text_content)
缺少依赖项 : 安装特定功能包
pip install 'markitdown[pdf]' # 用于 PDF 支持
二进制文件错误 : 确保以二进制模式打开文件
with open("file.pdf", "rb") as f: # 注意 "rb"
result = md.convert_stream(f, file_extension=".pdf")
OCR 不工作 : 安装 tesseract
# macOS
brew install tesseract
# Ubuntu
sudo apt-get install tesseract-ocr
references/api_reference.md 获取完整的 API 文档references/file_formats.md 获取特定格式的详细信息scripts/batch_convert.py 获取自动化示例scripts/convert_with_ai.py 获取 AI 增强转换示例packages/markitdown-sample-plugin每周安装量
448
代码仓库
GitHub 星标数
22.6K
首次出现
2026年1月20日
安全审计
安装于
opencode364
gemini-cli343
claude-code333
codex329
cursor306
github-copilot296
MarkItDown is a Python tool developed by Microsoft for converting various file formats to Markdown. It's particularly useful for converting documents into LLM-friendly text format, as Markdown is token-efficient and well-understood by modern language models.
Key Benefits :
When creating documents with this skill, always consider adding scientific diagrams and schematics to enhance visual communication.
If your document does not already contain schematics or diagrams:
For new documents: Scientific schematics should be generated by default to visually represent key concepts, workflows, architectures, or relationships described in the text.
How to generate schematics:
python scripts/generate_schematic.py "your diagram description" -o figures/output.png
The AI will automatically:
When to add schematics:
For detailed guidance on creating schematics, refer to the scientific-schematics skill documentation.
| Format | Description | Notes |
|---|---|---|
| Portable Document Format | Full text extraction | |
| DOCX | Microsoft Word | Tables, formatting preserved |
| PPTX | PowerPoint | Slides with notes |
| XLSX | Excel spreadsheets | Tables and data |
| Images | JPEG, PNG, GIF, WebP | EXIF metadata + OCR |
| Audio | WAV, MP3 | Metadata + transcription |
| HTML | Web pages | Clean conversion |
| CSV | Comma-separated values |
# Install with all features
pip install 'markitdown[all]'
# Or from source
git clone https://github.com/microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'
# Basic conversion
markitdown document.pdf > output.md
# Specify output file
markitdown document.pdf -o output.md
# Pipe content
cat document.pdf | markitdown > output.md
# Enable plugins
markitdown --list-plugins # List available plugins
markitdown --use-plugins document.pdf -o output.md
from markitdown import MarkItDown
# Basic usage
md = MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)
# Convert from stream
with open("document.pdf", "rb") as f:
result = md.convert_stream(f, file_extension=".pdf")
print(result.text_content)
Use LLMs via OpenRouter to generate detailed image descriptions (for PPTX and image files):
from markitdown import MarkItDown
from openai import OpenAI
# Initialize OpenRouter client (OpenAI-compatible API)
client = OpenAI(
api_key="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # recommended for scientific vision
llm_prompt="Describe this image in detail for scientific documentation"
)
result = md.convert("presentation.pptx")
print(result.text_content)
For enhanced PDF conversion with Microsoft Document Intelligence:
# Command line
markitdown document.pdf -o output.md -d -e "<document_intelligence_endpoint>"
# Python API
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("complex_document.pdf")
print(result.text_content)
MarkItDown supports 3rd-party plugins for extending functionality:
# List installed plugins
markitdown --list-plugins
# Enable plugins
markitdown --use-plugins file.pdf -o output.md
Find plugins on GitHub with hashtag: #markitdown-plugin
Control which file formats you support:
# Install specific formats
pip install 'markitdown[pdf, docx, pptx]'
# All available options:
# [all] - All optional dependencies
# [pptx] - PowerPoint files
# [docx] - Word documents
# [xlsx] - Excel spreadsheets
# [xls] - Older Excel files
# [pdf] - PDF documents
# [outlook] - Outlook messages
# [az-doc-intel] - Azure Document Intelligence
# [audio-transcription] - WAV and MP3 transcription
# [youtube-transcription] - YouTube video transcription
from markitdown import MarkItDown
md = MarkItDown()
# Convert PDF paper
result = md.convert("research_paper.pdf")
with open("paper.md", "w") as f:
f.write(result.text_content)
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("data.xlsx")
# Result will be in Markdown table format
print(result.text_content)
from markitdown import MarkItDown
import os
from pathlib import Path
md = MarkItDown()
# Process all PDFs in a directory
pdf_dir = Path("papers/")
output_dir = Path("markdown_output/")
output_dir.mkdir(exist_ok=True)
for pdf_file in pdf_dir.glob("*.pdf"):
result = md.convert(str(pdf_file))
output_file = output_dir / f"{pdf_file.stem}.md"
output_file.write_text(result.text_content)
print(f"Converted: {pdf_file.name}")
from markitdown import MarkItDown
from openai import OpenAI
# Use OpenRouter for access to multiple AI models
client = OpenAI(
api_key="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # recommended for presentations
llm_prompt="Describe this slide image in detail, focusing on key visual elements and data"
)
result = md.convert("presentation.pptx")
with open("presentation.md", "w") as f:
f.write(result.text_content)
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Files to convert
files = [
"document.pdf",
"spreadsheet.xlsx",
"presentation.pptx",
"notes.docx"
]
for file in files:
try:
result = md.convert(file)
output = Path(file).stem + ".md"
with open(output, "w") as f:
f.write(result.text_content)
print(f"✓ Converted {file}")
except Exception as e:
print(f"✗ Error converting {file}: {e}")
from markitdown import MarkItDown
md = MarkItDown()
# Convert YouTube video to transcript
result = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
print(result.text_content)
# Build image
docker build -t markitdown:latest .
# Run conversion
docker run --rm -i markitdown:latest < ~/document.pdf > output.md
MarkItDown()from markitdown import MarkItDown
md = MarkItDown()
try:
result = md.convert("document.pdf")
print(result.text_content)
except FileNotFoundError:
print("File not found")
except Exception as e:
print(f"Conversion error: {e}")
from markitdown import MarkItDown
md = MarkItDown()
# For large files, use streaming
with open("large_file.pdf", "rb") as f:
result = md.convert_stream(f, file_extension=".pdf")
# Process in chunks or save directly
with open("output.md", "w") as out:
out.write(result.text_content)
Markdown output is already token-efficient, but you can:
Remove excessive whitespace
Consolidate similar sections
Strip metadata if not needed
from markitdown import MarkItDown import re
md = MarkItDown() result = md.convert("document.pdf")
clean_text = re.sub(r'\n{3,}', '\n\n', result.text_content) clean_text = clean_text.strip()
print(clean_text)
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Convert all papers in literature folder
papers_dir = Path("literature/pdfs")
output_dir = Path("literature/markdown")
output_dir.mkdir(exist_ok=True)
for paper in papers_dir.glob("*.pdf"):
result = md.convert(str(paper))
# Save with metadata
output_file = output_dir / f"{paper.stem}.md"
content = f"# {paper.stem}\n\n"
content += f"**Source**: {paper.name}\n\n"
content += "---\n\n"
content += result.text_content
output_file.write_text(content)
# For AI-enhanced conversion with figures
from openai import OpenAI
client = OpenAI(
api_key="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md_ai = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5",
llm_prompt="Describe scientific figures with technical precision"
)
from markitdown import MarkItDown
import re
md = MarkItDown()
result = md.convert("data_tables.xlsx")
# Markdown tables can be parsed or used directly
print(result.text_content)
Missing dependencies : Install feature-specific packages
pip install 'markitdown[pdf]' # For PDF support
Binary file errors : Ensure files are opened in binary mode
with open("file.pdf", "rb") as f: # Note the "rb"
result = md.convert_stream(f, file_extension=".pdf")
OCR not working : Install tesseract
# macOS
brew install tesseract
# Ubuntu
sudo apt-get install tesseract-ocr
references/api_reference.md for complete API documentationreferences/file_formats.md for format-specific detailsscripts/batch_convert.py for automation examplesscripts/convert_with_ai.py for AI-enhanced conversionspackages/markitdown-sample-pluginWeekly Installs
448
Repository
GitHub Stars
22.6K
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubFailSocketFailSnykWarn
Installed on
opencode364
gemini-cli343
claude-code333
codex329
cursor306
github-copilot296
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
136,300 周安装
LobeHub 开源 AI 智能体工作空间 | Next.js + React 现代技术栈
572 周安装
顺序思考工具:迭代推理与分支探索,解决复杂结构化问题的AI推理框架
572 周安装
Codex AI 编程助手使用指南:GPT-5.2模型、沙盒模式与任务执行全解析
572 周安装
Git提交规范工具 - 遵循Conventional Commits的自动化提交工作流指南
572 周安装
QA测试规划器 - 自动化生成测试计划、用例、回归套件和缺陷报告
572 周安装
腾讯云CloudBase Node.js AI模型调用技能:后端集成混元、DeepSeek大模型
572 周安装
| Table format |
| JSON | JSON data | Structured representation |
| XML | XML documents | Structured format |
| ZIP | Archive files | Iterates contents |
| EPUB | E-books | Full text extraction |
| YouTube | Video URLs | Fetch transcriptions |