How to migrate legacy documentation to Markdown with AI
Leave feedback
On this page
Internal documentation accumulates in whatever format was current when it was written: CHM help files, EPUB manuals, a decade of Word documents on a share. Markdown is where it should end up, and the conversion is one tool call per file.
Note
The commands and config snippets on this page are for the .NET build of the server — the only platform available today. Installation and client setup: MCP server for .NET. Other platforms will expose the same tools with their own launch command; everything else on this page applies unchanged.
The prompt
Convert everything in the archive folder to Markdown with front matter and images as files. Report the source format, page count, and output size for each.
The agent loops the folder and calls convert_to_markdown per document. The report at the end is not decoration — it is how you spot the failures in a batch of four hundred.
Formats that migrate well
DOCX / DOC / RTF / ODT — structure is explicit in the source, so headings and tables come across cleanly.
CHM — old help files, still holding the only copy of some procedures.
XLSX — worksheets become tables; useful for the parameter lists that documentation loves.
The files that will not migrate
Scanned PDFs. A picture of a page has no text to convert, and this server has no OCR step. In a legacy archive these are usually a meaningful fraction — the documents someone scanned in 2009 because the original was lost.
Find them before the migration instead of after:
List the PDFs whose conversion produced less than 2 KB of Markdown for more than 5 pages.
Those are your scans. Handle them separately — OCR elsewhere, or keep them as PDFs and index them by metadata.
Do it in batches
Four hundred documents in one prompt is an unreviewable run. Twenty at a time, with a report each round, gives you a chance to fix the pattern before it is applied to everything — and keeps metered usage predictable.
Licence first, always
Three pages per document in evaluation mode. A migration run unlicensed produces four hundred plausible-looking stubs, and the discovery usually happens weeks later when someone searches for a procedure that is not there. get_license_status before the first batch.
Why local matters for an archive
The archive is the whole corpus — every internal procedure, price list, and post-mortem in one folder. Uploading it to a conversion service to migrate it is a larger disclosure than any single document would be. Here it is read by a local process, and only what the agent says travels. See On-premise architecture.
Was this page helpful?
Any additional feedback you'd like to share with us?
Please tell us how we can improve this page.
Thank you for your feedback!
We value your opinion. Your feedback will help us improve our documentation.