Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

96 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

everything-markdown

CI PyPI Python 3.11+ License: MIT

๐ŸŒ English ยท ็ฎ€ไฝ“ไธญๆ–‡

Convert PDF, Word, HTML, URLs, PowerPoint, Excel, CSV, TSV, EPUB, RTF and ODT into clean, LLM-ready Markdown โ€” with academic-paper-grade PDF quality.

pip install everything-markdown
everything-md paper.pdf -o paper.md

Why everything-markdown?

everything-markdown markitdown docling marker
Academic PDF quality (header/footer strip, caption reattach, line-number removal) Yes No Partial Partial
Formats supported 11 8 3 1
Install size ~150 MB ~50 MB ~2 GB ~1.5 GB
GPU required No No Optional Optional
MCP server Yes No No No
Agent skill (SKILL.md) Yes No No No
Scanned PDF OCR Yesยน No Yes Yes
LangChain loader Yes No No No

ยน Requires ocrmypdf + Tesseract. Auto-detected at runtime.

See docs/benchmarks.md for a detailed comparison.

Quick start

Python API

from everything_markdown import convert

doc = convert("paper.pdf")
print(doc.markdown)       # the full markdown text
print(doc.title)          # extracted document title
print(doc.warnings)       # any conversion warnings
print(doc.assets)         # extracted images (Asset objects)

# Write to file with images extracted:
doc = convert("paper.pdf", output_path="paper.md", images="folder")

CLI

# Basic conversion
everything-md paper.pdf                        # โ†’ paper.md
everything-md report.docx -o output.md         # explicit output path
everything-md https://example.com/post --stdout # stream to stdout

# Image handling
everything-md paper.pdf --images folder         # extract images (default)
everything-md paper.pdf --images base64         # inline as data URIs
everything-md paper.pdf --images skip           # drop images

MCP server (Claude Desktop / Cursor / any MCP client)

pip install everything-markdown[mcp]

Add to your MCP client config:

{
  "mcpServers": {
    "everything-markdown": {
      "command": "everything-md-mcp"
    }
  }
}

Or use uvx (no install needed):

{
  "mcpServers": {
    "everything-markdown": {
      "command": "uvx",
      "args": ["--from", "everything-markdown[mcp]", "everything-md-mcp"]
    }
  }
}

LangChain integration

pip install everything-markdown[langchain]
from everything_markdown.integrations.langchain import EverythingMarkdownLoader

loader = EverythingMarkdownLoader("paper.pdf")
docs = loader.load()
# docs[0].page_content  โ†’ full markdown
# docs[0].metadata      โ†’ {"source": "paper.pdf", "title": "...", ...}

Agent skill (Claude Code / Cursor / Codex CLI)

No pip install needed โ€” the skill bundles its own code and resolves dependencies on first run.

# One-liner install:
curl -fsSL https://raw.githubusercontent.com/JustinRaoV/everything-markdown/main/install.sh | bash

# Or via Claude Code marketplace:
/plugin marketplace add JustinRaoV/everything-markdown
/plugin install convert-to-markdown@everything-markdown

Then tell your agent: ๆŠŠ paper.pdf ่ฝฌๆˆ markdown

Install

Option 1: pip (recommended)

pip install everything-markdown           # core conversion
pip install everything-markdown[mcp]      # + MCP server
pip install everything-markdown[langchain]# + LangChain loader
pip install everything-markdown[ocr]      # + OCR for scanned PDFs
pip install everything-markdown[all]      # everything

Option 2: Agent skill (no pip)

Pick whichever path matches your agent:

# Zip download (no git, no shell):
# Grab from https://github.com/JustinRaoV/everything-markdown/releases/latest
unzip convert-to-markdown-v*.zip -d ~/.claude/skills/

# One-liner:
curl -fsSL https://raw.githubusercontent.com/JustinRaoV/everything-markdown/main/install.sh | bash

# Manual:
git clone https://github.com/JustinRaoV/everything-markdown.git
# Point your agent at: <clone>/skills/convert-to-markdown/

Runtime requirements

  • Python 3.11+ must be on PATH.
  • For agent skill mode: uv (recommended) or plain python3 (bootstrap falls back to venv + pip).
  • For OCR: pip install everything-markdown[ocr] or install ocrmypdf + Tesseract system-wide.

Supported formats

Format Extensions Notes
PDF (text) .pdf pymupdf4llm + custom post-processor; paper-grade on academic PDFs; password-protected PDFs detected
PDF (scanned) .pdf Auto-OCR via ocrmypdf when available; falls back to warning if not installed
HTML / URL .html, .htm, http(s):// Readability + html2text; title from og/twitter/title/h1; charset meta respected
DOCX .docx Mammoth (no legacy .doc); title from docProps/core.xml; tables as GFM
PPTX .pptx python-pptx; bold/italic preserved; hyperlinks extracted; nested bullets; notes as blockquote
XLSX / CSV / TSV .xlsx, .csv, .tsv One GFM table per sheet; CSV/TSV auto-detects delimiter, BOM + CJK/Western encodings
EPUB .epub ebooklib; cross-chapter image dedup; all three image modes supported
RTF .rtf striprtf (pure Python); plain-text extraction; paragraphs + bullets preserved
ODT .odt odfpy (pure Python); headings/lists/tables/images; bold/italic, hyperlinks, footnotes/endnotes

What you get

$ everything-md ~/Downloads/whitepaper.pdf
wrote: /Users/.../Downloads/whitepaper.md
  + 12 asset(s) -> whitepaper.assets

The output has paragraphs reflowed across 2-column layouts, headings inferred from font hierarchy, GFM tables, and image refs pointing at the sibling assets folder.

For academic PDFs, the post-processor strips bioRxiv line numbers, CrossMark badges, license boilerplate, and page headers/footers โ€” then reattaches figure captions to their images.

See examples/ for input/output pairs you can read straight on GitHub.

Development

git clone https://github.com/JustinRaoV/everything-markdown.git
cd everything-markdown
uv sync                                  # installs all deps
uv run pytest                            # 307 tests
uv run ruff check .                      # lint
make check                               # lint + tests + format check

Architecture: docs/technical-design.md. Adding a converter: CONTRIBUTING.md.

Troubleshooting

  • First run takes 30+ seconds โ€” expected; wheels download once.
  • Scanned PDF produces empty markdown โ€” install ocrmypdf + Tesseract, or pip install everything-markdown[ocr].
  • Agent skill doesn't appear โ€” restart your agent; confirm ~/.claude/skills/convert-to-markdown/SKILL.md exists.

Full list: docs/troubleshooting.md.

FAQ

  • Can I use this in a non-Python project? Yes โ€” the CLI is a standalone command, and the MCP server works with any MCP client.
  • Where does the markdown get written? Alongside the input by default (paper.pdf โ†’ paper.md); pass -o to override, or --stdout to stream.
  • Can I batch-convert a directory? Loop in your shell; the converter is intentionally one-document-per-invocation.

Full list: docs/faq.md.

Changelog

See CHANGELOG.md.

License

MIT

About

No description or website provided.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages