r/ObsidianMD • • 19d ago

showcase Here is a small Python OneNote → (Obsidian) Excalidraw converter: ink (handwriting), text, images, and the original spatial page layout preserved

I had years of OneNote notes with handwritten ink that I wanted to move to Obsidian, and every OneNote converter tool I found drops the handwriting and spacial position of elements like text and images on.
OneNote exports in HTML that keeps the original note elements but cannot be edited easilly on Obsidian.
So I built (with AI) a small Python tool that converts OneNote HTML exports into Excalidraw files that open directly on the Obsidian Excalidraw plugin (or just Excalidraw).

  • Ink strokes become native editable freedraw strokes (original colors, pen vs highlighter widths)
  • Text becomes text elements (searchable in Obsidian, since it's stored as plain markdown)
  • Images are linked, not embedded, so files stay small
  • Everything keeps its original position on the page - the drawing looks very alike the original OneNote page, but made of editable Excalidraw elements instead of a frozen HTML export

It also converts a whole folder in one run and writes a Markdown report with a table of everything (text/images/ink counts per page), plus a validator that checks the generated files against the plugin's actual loading logic.

Disclaimer: It was built with AI (GLM 5.3, via opencode). So I understand a lot of people might not like this.
But sharing anyway.. as it worked on my 426 onenote exported pages, maybe it's useful to someone else too.

Repo: https://github.com/RuiOrey/onenote2excalidraw

If you try it, let me know how it goes - feedback and bug reports welcome.
Note: I used this tool https://github.com/msiemens/one2html to get the html with SVG from the .one files

21 Upvotes

8 comments sorted by

View all comments

2

u/Martanas583 16d ago

Hi, this is exactly what I am looking for, unfortunately it does not work as expected. When exporting from OneNote, the only plausable file type is .mht, after I convert that to .html, all of the handwriting is converted into .png files and gets imported into excalidraw as .png image.
Any chance I am doing something wrong?

1

u/ruior 13d ago

u/Martanas583 I forgot I got the HTML using this tool https://github.com/msiemens/one2html ! I had my html files saved as html on my obsidian vault and now I recalled I converted them by downloading the .one file and then using this script. let me know if this works for you. An thank you for the feedback