Convert Markdown text to DOCX, PPTX, XLSX, PDF, HTML, IPYNB, MD, CSV, JSON, JSONL, XML files, and extract code blocks in Markdown to Python, Bash,JS and etc files.
npx skills add https://github.com/bowenliang123/markdown-exporter --skill markdown-exporter
Markdown Exporter is an Agent Skill that transforms your Markdown text into a wide variety of professional format files.
This SKILL.md for Agent Skills, the cli tool and Python package markdown-exporter are maintained in the GitHub repository bowenliang123/markdown-exporter by bowenliang123.
| Tool | Input (File path of Markdown text or styles) | Output (File path of exported file) |
|------|-------|--------|
| md_to_docx | 📝 Markdown text | 📄 Word document (.docx) |
| md_to_html | 📝 Markdown text | 🌐 HTML file (.html) |
| md_to_html_text | 📝 Markdown text | 🌐 HTML text string |
| md_to_pdf | 📝 Markdown text | 📑 PDF file (.pdf) |
| md_to_md | 📝 Markdown text | 📝 Markdown file (.md) |
| md_to_ipynb | 📝 Markdown text | 📓 Jupyter Notebook (.ipynb) |
| md_to_pptx | 📝 Markdown slides in Pandoc style | 🎯 PowerPoint (.pptx) |
| md_to_xlsx | 📋 Markdown tables | 📊 Excel spreadsheet (.xlsx) |
| md_to_csv | 📋 Markdown tables | 📋 CSV file (.csv) |
| md_to_json | 📋 Markdown tables | 📦 JSON/JSONL file (.json) |
| md_to_xml | 📋 Markdown tables | 🏷️ XML file (.xml) |
| md_to_latex | 📋 Markdown tables | 📝 LaTeX file (.tex) |
| md_to_codeblock | 💻 Code blocks in Markdown | 📁 Code files by language (.py, .js, .sh, etc.) |
Markdown Exporter is available as a PyPI package, which provides a seamless command-line interface for all its functionality.
# with pip
pip install md-exporter
# with uv
uv tool install md-exporter
# on OpenClaw
npx clawhub install markdown-exporter
Check markdown-exporter command and usages:
markdown-exporter -h
markdown-exporter <subcommand> -h
Use the markdown-exporter command to access all the tools:
markdown-exporter <subcommand> <args> [options]
Converts Markdown tables to CSV format file.
Usage:
markdown-exporter md_to_csv <input> <output> [options]
Arguments:
input - Input Markdown file path containing tablesoutput - Output CSV file pathOptions:
--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_csv /path/input.md /path/output.csv
This converts all tables in the input Markdown file to CSV format.
markdown-exporter md_to_csv /path/input.md /path/output.csv --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown text to PDF format with support for Chinese, Japanese, and other languages.
Usage:
markdown-exporter md_to_pdf <input> <output> [options]
Arguments:
input - Input Markdown file pathoutput - Output PDF file pathOptions:
--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_pdf /path/input.md /path/output.pdf
This converts the entire Markdown file to a PDF document.
markdown-exporter md_to_pdf /path/input.md /path/output.pdf --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown text to DOCX format file.
Usage:
markdown-exporter md_to_docx <input> <output> [options]
Arguments:
input - Input Markdown file pathoutput - Output DOCX file pathOptions:
--template - Path to DOCX template file (optional)--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_docx /path/input.md /path/output.docx
This converts the entire Markdown file to a DOCX document.
markdown-exporter md_to_docx /path/input.md /path/output.docx --template /path/template.docx
This uses a custom DOCX template for styling.
markdown-exporter md_to_docx /path/input.md /path/output.docx --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown tables to XLSX format with multiple sheets support.
Usage:
markdown-exporter md_to_xlsx <input> <output> [options]
Arguments:
input - Input Markdown file path containing tablesoutput - Output XLSX file pathOptions:
--force-text - Convert cell values to text type (default: True)--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_xlsx /path/input.md /path/output.xlsx
This converts all tables in the input Markdown file to an XLSX workbook, with each table on a separate sheet.
markdown-exporter md_to_xlsx /path/input.md /path/output.xlsx --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
markdown-exporter md_to_xlsx /path/input.md /path/output.xlsx --force-text False
This allows Excel to automatically determine cell types.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown text to PPTX format file.
Usage:
markdown-exporter md_to_pptx <input> <output> [options]
Arguments:
input - Input Markdown file pathoutput - Output PPTX file pathOptions:
--template - Path to PPTX template file (optional)Examples:
markdown-exporter md_to_pptx /path/input.md /path/output.pptx
This converts the Markdown file to a PowerPoint presentation.
markdown-exporter md_to_pptx /path/input.md /path/output.pptx --template /path/template.pptx
This uses a custom PowerPoint template for styling.
Sample Markdown Input:
Use the "Slides (for PPTX)" example from the Sample Markdown Inputs - Slides (for PPTX) section below.
Extracts code blocks from Markdown and saves them as individual files.
Usage:
markdown-exporter md_to_codeblock <input> <output> [options]
Arguments:
input - Input Markdown file path containing code blocksoutput - Output directory path or ZIP file pathOptions:
--compress - Compress all code blocks into a ZIP fileExamples:
markdown-exporter md_to_codeblock /path/input.md /path/output_dir
This extracts all code blocks to individual files in the specified directory.
markdown-exporter md_to_codeblock /path/input.md /path/output.zip --compress
This extracts all code blocks and compresses them into a ZIP file.
Sample Markdown Input:
Use the "Code Blocks" example from the Sample Markdown Inputs - Code Blocks section below.
Converts Markdown tables to JSON or JSONL format file.
Usage:
markdown-exporter md_to_json <input> <output> [options]
Arguments:
input - Input Markdown file path containing tablesoutput - Output JSON file pathOptions:
--style - JSON output style: jsonl (default) or json_array--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_json /path/input.md /path/output.json
This converts tables to JSON Lines format (one JSON object per line).
markdown-exporter md_to_json /path/input.md /path/output.json --style json_array
This converts tables to a single JSON array of objects.
markdown-exporter md_to_json /path/input.md /path/output.json --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown text to XML format file.
Usage:
markdown-exporter md_to_xml <input> <output> [options]
Arguments:
input - Input Markdown file pathoutput - Output XML file pathOptions:
--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_xml /path/input.md /path/output.xml
This converts the entire Markdown file to an XML document.
markdown-exporter md_to_xml /path/input.md /path/output.xml --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown tables to LaTeX format file.
Usage:
markdown-exporter md_to_latex <input> <output> [options]
Arguments:
input - Input Markdown file path containing tablesoutput - Output LaTeX file pathOptions:
--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_latex /path/input.md /path/output.tex
This converts all tables in the input Markdown file to LaTeX format.
markdown-exporter md_to_latex /path/input.md /path/output.tex --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown text to HTML format file.
Usage:
markdown-exporter md_to_html <input> <output> [options]
Arguments:
input - Input Markdown file pathoutput - Output HTML file pathOptions:
--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_html /path/input.md /path/output.html
This converts the entire Markdown file to an HTML document.
markdown-exporter md_to_html /path/input.md /path/output.html --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown text to HTML and outputs to stdout.
Usage:
markdown-exporter md_to_html_text <input>
Arguments:
input - Input Markdown file pathExample:
markdown-exporter md_to_html_text /path/input.md
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Saves Markdown text to a .md file.
Usage:
markdown-exporter md_to_md <input> <output>
Arguments:
input - Input Markdown file pathoutput - Output MD file pathExample:
markdown-exporter md_to_md /path/input.md /path/output.md
Sample Markdown Input:
Use the "Basic Text and Tables" example from the Sample Markdown Inputs - Basic Text and Tables section below.
Converts Markdown text to Jupyter Notebook (.ipynb) format file.
Usage:
markdown-exporter md_to_ipynb <input> <output> [options]
Arguments:
input - Input Markdown file pathoutput - Output IPYNB file pathOptions:
--strip-wrapper - Remove code block wrapper if presentExamples:
markdown-exporter md_to_ipynb /path/input.md /path/output.ipynb
This converts the Markdown file to a Jupyter Notebook format.
markdown-exporter md_to_ipynb /path/input.md /path/output.ipynb --strip-wrapper
This removes any code block wrappers (`) before processing the Markdown.
Sample Markdown Input:
Use the "Code Blocks" example from the Sample Markdown Inputs - Code Blocks section below.
To help you test the various tools, below are common Markdown input examples that represent the content of input files:
# Test Markdown File
This is a test markdown file for testing various export tools.
## Table Test
| Name | Description | Price |
|------|-------------|-------|
| Item 1 | First item | $10 |
| Item 2 | Second item | $20 |
| Item 3 | Third item | $30 |
## Text Test
This is a paragraph with **bold** and *italic* text.
- List item 1
- List item 2
- List item 3
> This is a blockquote.
# Test Markdown File
## Code Block Test
print("Hello, World!")
def add(a, b):
return a + b
result = add(5, 3)
print(f"Result: {result}")
echo "Hello from Bash"
ls -la
// JavaScript example
console.log("Hello from JavaScript");
function multiply(a, b) {
return a * b;
}
---
title: Markdown Exporter
author: Bowen Liang
---
# Introduction
## Welcome Slide
Welcome to our Markdown Exporter!
::: notes
Remember to greet the audience warmly.
:::
---
# Section 1: Basic Layouts
## Title and Content
- This is a basic slide with bullet points
- It uses the "Title and Content" layout
- Perfect for simple content presentation
## Two Column Layout
::::: columns
::: column
Left column content:
- Point 1
- Point 2
:::
::: column
Right column content:
- Point A
- Point B
:::
:::::
## Comparison Layout
::::: columns
::: column
Text followed by an image:

:::
::: column
- This triggers the "Comparison" layout
- Useful for side-by-side comparisons
:::
:::::
## Content with Caption
Here's some explanatory text about the image below.

---
# Section 2: Advanced Features
## Code Block
Here's a Python code block:
def greet(name):
return f"Hello, {name}!"
print(greet("World"))
## Table Example
| Column 1 | Column 2 | Column 3 |
|----------|----------|----------|
| Row 1 | Data | More |
| Row 2 | Info | Stuff |
## Incremental List
::: incremental
- This point appears first
- Then this one
- And finally this one
:::
## {background-image="https://example.com/image.jpg"}
::: notes
This is a slide with a background image and speaker notes only.
The "Blank" layout will be used.
:::
# Conclusion
## Thank You
Thank you for viewing this kitchen sink presentation!
::: notes
Remember to thank the audience and invite questions.
:::
--strip-wrapper option to remove code block wrappers (`) from the input MarkdownComprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks
Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill.
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
Take bowenliang123/markdown-exporter from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip, npx.
Without those the skill loads but fails at the first command.