About convert-to-markdown
convert-to-markdown is a skill for turning files and URLs into Markdown, suited to workflows that collect document, web, and media content. It selects MarkItDown or a dedicated script by input type, including paths for YouTube transcripts, MHTML, and web pages.
Key features
- 01Converts many document and data formats
- 02Extracts YouTube transcripts and video details
- 03Converts MHTML to Markdown
- 04Converts web pages through Crawl4AI
- 05Supports image OCR and audio transcription
Use cases
- 01Turn PDFs or Office files into Markdown
- 02Extract subtitles from YouTube videos
- 03Convert MHTML files or URLs
- 04Fetch web pages and produce Markdown
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ varlabz/ skills --skill convert-to-markdownAfter installing, type/convert-to-markdownin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
evals/evals.jsonevals/files/page.mhtmlproposal.docxproposal.mdscripts/mhtml-to-mdweb-to-mdyoutube-transcriptDetails
From the project READMEConvert Files and URLs to Markdown
All scripts live in scripts/. Run them "as is".
Tool Selection
| Input type | Command | Script location |
|---|---|---|
.pdf, .docx, .pptx, .xlsx, .xls, .csv, .json, .xml, .epub, images (.jpg/.png/etc.), audio (.mp3/.wav/etc.), .html, .txt, .md | uvx markitdown <path> | built-in CLI |
| YouTube URL or video ID | ./scripts/youtube-transcript <url_or_id> | scripts/youtube-transcript |
| Regular web URL (Crawl4AI server running) | ./scripts/web-to-md <url> | scripts/web-to-md |
.mhtml file or MHTML URL | ./scripts/mhtml-to-md <source> | scripts/mhtml-to-md |
YouTube Transcript
./scripts/youtube-transcript <url_or_video_id> [--info] [--lang <code>] [--raw] [--cookies-from-browser <browser[:profile_dir]>]
--info: Include video metadata (title, channel, duration) before transcript.--lang <code>: Subtitle language (e.g.en,de). Default: auto-detect source language.--raw: Output raw VTT instead of cleaned text.--cookies-from-browser <browser[:profile_dir]>: Load cookies from a browser, optionally specifying its profile (e.g.firefoxorfirefox:/path/to/profile). Falls back to theYOUTUBE_TRANSCRIPT_COOKIESenvironment variable when omitted.
MHTML to Markdown
./scripts/mhtml-to-md <path_or_url>
Accepts local .mhtml files or remote URLs serving MHTML content.
Web Page to Markdown (via Crawl4AI)
./scripts/web-to-md <url> [-o output.md] [-s server_url]
Requires a Crawl4AI server running on http://localhost:11235 (or set $CRAWL4AI_URL). The server fetches the full page HTML; this script converts it to Markdown.
No Crawl4AI? Fall back:
curl -o page.html <url> && uvx markitdown page.html
MarkItDown (General File Conversion)
All other formats use uvx markitdown:
uvx markitdown <path> [-o output.md]
Supports: PDF, DOCX, PPTX, XLSX/XLS, images (EXIF + OCR), audio (transcription), EPUB, CSV, JSON, XML, HTML, TXT, ZIP.
When Things Go Wrong
| Issue | What to do |
|---|---|
| Scanned PDF yields no text | Try uvx markitdown <path> treating it as an image — markitdown runs OCR on images |
| Password-protected file | Remove password first; markitdown can't decrypt |
| Large ZIP archive | Extract specific files first, then convert individually |
| YouTube age-restricted video | Try --cookies-from-browser with a browser profile signed in to an account that can access the video; access is not guaranteed. |
| Audio transcription poor quality | Depends on audio clarity; nothing we can do from here |
| Excel has many sheets | All sheets included as separate tables in output |