Markdown Converter
Convert source documents into usable Markdown with a repeatable markitdown workflow instead of ad hoc copy-paste cleanup.
Table of Contents
Standards snapshot
- Prefer the bundled
uvx markitdown path over hand-written conversion steps.
- Keep the output faithful to document structure before optimizing style.
- Ask for the source file or URL first; do not invent conversions from descriptions alone.
- Preserve tables, headings, and links whenever the source format supports them.
When to use
- The user wants a PDF, DOCX, PPTX, spreadsheet, HTML file, or similar content converted to Markdown.
- The user needs a repeatable conversion workflow rather than a one-off rewrite.
- The task is document extraction or format transformation, not full editorial rewriting.
Required inputs
- Source file path, URL, or stdin source.
- Desired output path if the result should be written to disk.
- Any format hints needed for stdin workflows such as extension or MIME type.
- Whether higher-quality extraction via Azure Document Intelligence is available and desired.
Deliverables
- Markdown output to stdout or a requested file path.
- A short note about any extraction limitations or formatting loss.
- Exact converter command used when reproducibility matters.
Philosophy
- Favor deterministic conversion first, cleanup second.
- Keep guidance tool-backed and concrete rather than generic.
- Make extraction limits explicit so the user can decide whether a second pass is needed.
Failure mode
- If the user wants content rewritten, summarized, or edited for style, route to a writing or docs skill after conversion.
- If the input format is unsupported or inaccessible, stop and report that directly.
- If a scan is too poor for reliable extraction, recommend a better source or the Azure-backed path instead of faking structure.
Constraints
- Redact secrets, credentials, and sensitive content by default when showing sample output.
- Do not overwrite existing files unless the destination path is explicit.
- Keep the scope to conversion and extraction, not broader document redesign.
Workflow
- Confirm the source path or URL and the desired output destination.
- Choose the simplest converter path that fits:
- direct file conversion;
- stdin with
-x or -m hints;
- Azure-backed extraction for difficult scans.
- Run
uvx markitdown with the smallest set of required flags.
- Inspect the result for obvious structure failures:
- missing headings;
- broken tables;
- collapsed lists;
- missing links.
- Return the Markdown output or saved-file path plus any caveats.
Anti-patterns
- Treating conversion as if it were editorial cleanup.
- Inventing Markdown structure that the source did not reliably provide.
- Using heavyweight extraction options by default when the basic path is sufficient.
Validation
- Fail fast: stop at the first broken input, unsupported format, or unreadable output.
- Verify the converter ran successfully and produced non-empty output.
- Spot-check that headings, tables, or lists survived when the source clearly contained them.
- If writing to a file, confirm the destination path contains the expected Markdown output.
Examples
# Convert to stdout
uvx markitdown input.pdf
# Save to file
uvx markitdown report.docx -o report.md
# Convert stdin with a file hint
cat input.pdf | uvx markitdown -x .pdf > output.md
# Use Azure Document Intelligence for difficult scans
uvx markitdown scan.pdf -d -e "https://your-resource.cognitiveservices.azure.com/"
References
- Contract:
references/contract.yaml
- Evals:
references/evals.yaml
See Also
| Skill |
When to use together |
| [[docs-expert]] |
Polish converted docs to meet repository quality standards |
| [[visual-explainer]] |
Present converted content as a visual HTML page |
| [[spreadsheet]] |
Convert tabular data alongside markdown conversion |
| [[notebooklm]] |
Feed converted markdown to NotebookLM for analysis |
Topic map: [[content-publishing]]
Decision feedback protocol (required):
- If post-run feedback capture is enabled for this runtime, emit a non-blocking
post_run_feedback event via request_user_input after result delivery.
- Capture:
decision (accepted|partial|rejected|deferred), outcome (good|neutral|bad|unknown), and confidence (high|medium|low).
- Persist with:
python3 utilities/skill-builder/scripts/record_skill_feedback.py --skill-path <path/to/SKILL.md> --decision <...> --outcome <...> --confidence <...> --notes "...".
- The recorder tags
subject (for example ui, code_review, backend, security) for cross-domain quality analytics.
Gotchas
- None yet. Capture recurring failures here as symptom -> cause -> do instead -> check.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: markdown-converter-23description: Convert source files into Markdown outputs using the bundled converter workflow. Use when a user asks to transform documents, notes, or technical files into clean Markdown format. Use when this capability is needed.4---56# Markdown Converter78Convert source documents into usable Markdown with a repeatable `markitdown` workflow instead of ad hoc copy-paste cleanup.910## Table of Contents11- [Standards snapshot](#standards-snapshot)12- [When to use](#when-to-use)13- [Required inputs](#required-inputs)14- [Deliverables](#deliverables)15- [Philosophy](#philosophy)16- [Failure mode](#failure-mode)17- [Constraints](#constraints)18- [Workflow](#workflow)19- [Anti-patterns](#anti-patterns)20- [Validation](#validation)21- [Examples](#examples)22- [References](#references)2324## Standards snapshot25- Prefer the bundled `uvx markitdown` path over hand-written conversion steps.26- Keep the output faithful to document structure before optimizing style.27- Ask for the source file or URL first; do not invent conversions from descriptions alone.28- Preserve tables, headings, and links whenever the source format supports them.2930## When to use31- The user wants a PDF, DOCX, PPTX, spreadsheet, HTML file, or similar content converted to Markdown.32- The user needs a repeatable conversion workflow rather than a one-off rewrite.33- The task is document extraction or format transformation, not full editorial rewriting.3435## Required inputs36- Source file path, URL, or stdin source.37- Desired output path if the result should be written to disk.38- Any format hints needed for stdin workflows such as extension or MIME type.39- Whether higher-quality extraction via Azure Document Intelligence is available and desired.4041## Deliverables42- Markdown output to stdout or a requested file path.43- A short note about any extraction limitations or formatting loss.44- Exact converter command used when reproducibility matters.4546## Philosophy47- Favor deterministic conversion first, cleanup second.48- Keep guidance tool-backed and concrete rather than generic.49- Make extraction limits explicit so the user can decide whether a second pass is needed.5051## Failure mode52- If the user wants content rewritten, summarized, or edited for style, route to a writing or docs skill after conversion.53- If the input format is unsupported or inaccessible, stop and report that directly.54- If a scan is too poor for reliable extraction, recommend a better source or the Azure-backed path instead of faking structure.5556## Constraints57- Redact secrets, credentials, and sensitive content by default when showing sample output.58- Do not overwrite existing files unless the destination path is explicit.59- Keep the scope to conversion and extraction, not broader document redesign.6061## Workflow621. Confirm the source path or URL and the desired output destination.632. Choose the simplest converter path that fits:64 - direct file conversion;65 - stdin with `-x` or `-m` hints;66 - Azure-backed extraction for difficult scans.673. Run `uvx markitdown` with the smallest set of required flags.684. Inspect the result for obvious structure failures:69 - missing headings;70 - broken tables;71 - collapsed lists;72 - missing links.735. Return the Markdown output or saved-file path plus any caveats.7475## Anti-patterns76- Treating conversion as if it were editorial cleanup.77- Inventing Markdown structure that the source did not reliably provide.78- Using heavyweight extraction options by default when the basic path is sufficient.7980## Validation81- Fail fast: stop at the first broken input, unsupported format, or unreadable output.82- Verify the converter ran successfully and produced non-empty output.83- Spot-check that headings, tables, or lists survived when the source clearly contained them.84- If writing to a file, confirm the destination path contains the expected Markdown output.8586## Examples87```bash88# Convert to stdout89uvx markitdown input.pdf9091# Save to file92uvx markitdown report.docx -o report.md9394# Convert stdin with a file hint95cat input.pdf | uvx markitdown -x .pdf > output.md9697# Use Azure Document Intelligence for difficult scans98uvx markitdown scan.pdf -d -e "https://your-resource.cognitiveservices.azure.com/"99```100101## References102- Contract: `references/contract.yaml`103- Evals: `references/evals.yaml`104105## See Also106107| Skill | When to use together |108|---|---|109| [[docs-expert]] | Polish converted docs to meet repository quality standards |110| [[visual-explainer]] | Present converted content as a visual HTML page |111| [[spreadsheet]] | Convert tabular data alongside markdown conversion |112| [[notebooklm]] | Feed converted markdown to NotebookLM for analysis |113114**Topic map:** [[content-publishing]]115116<!-- decision-feedback-protocol:v2 -->117**Decision feedback protocol (required):**118- If post-run feedback capture is enabled for this runtime, emit a non-blocking `post_run_feedback` event via `request_user_input` after result delivery.119- Capture: `decision` (`accepted|partial|rejected|deferred`), `outcome` (`good|neutral|bad|unknown`), and `confidence` (`high|medium|low`).120- Persist with: `python3 utilities/skill-builder/scripts/record_skill_feedback.py --skill-path <path/to/SKILL.md> --decision <...> --outcome <...> --confidence <...> --notes "..."`.121- The recorder tags `subject` (for example `ui`, `code_review`, `backend`, `security`) for cross-domain quality analytics.122<!-- /decision-feedback-protocol -->123124## Gotchas125- None yet. Capture recurring failures here as symptom -> cause -> do instead -> check.126127---128> Converted and distributed by [TomeVault](https://tomevault.io/claim/jscraik) — claim your Tome and manage your conversions.129<!-- tomevault:4.0:skill_md:2026-04-13 -->