Hi,
I’m a newbie too but…
For question #1. In settings, you can choose to store under a subfolder but you have to enter the actual folder name… this is at odds with some fields which when not filled out the faint grey text is used as a default (like the date format in templates is used) but not for the resources folder.
For the image attachments already in the root of your vault you can move them - one at a time I’m afraid into the new folder (unless you write a script in python/Jupyter to do it for you.)
and then choose a folder
In the screenshot above you can see a sub folder in the attachments folder ‘OneNote to Obsidian - Mac-assets’ so you can move an image file to a subfolder in the assets folder if you want. Obsidian will edit the links in your Markdown files for you.
You can also move a folder of attachments into another folder so in the shot below the ‘OneNote to Obsidian - Mac-assets’ folder is back in the root of the vault
and right-clicking and move lets me move it back into the attachments folder


You may have already gotten everything from OneNote if so stop here. if not this may help…
In another post earlier today I posted a method to get notes out and into Obsidian without directly using any scripts. It also has a good side effect of putting all your assets in a folder by OneNote section, you can then move these folders into the root attachments folder if you wish to keep the root clean for md files. I’ve attached the guide as a zipped md file to this reply. You may find it useful.
OneNoteToObsidian.zip (1.9 MB)
Also as you use jupyter… If you want to use a python script this
https://github.com/Danmou/onenote_export
worked after a fashion. NOTE it only gets HTML so another script will be needed to convert to markdown.
Danmou’s script can be tweaked to handle throttling a little better I think, and I found it more consistent if I imported this
https://github.com/deckar01/ratelimit
from pypi and added rate limit decorators to the get method.
from ratelimit import limits, sleep_and_retry
HOUR = 3600
MINUTE = 60
@sleep_and_retry
@limits(calls=120, period=MINUTE, storage='ratelimit.db', name='hourly_limit')
@sleep_and_retry
@limits(calls=400, period=HOUR, storage='ratelimit.db', name='daily_limit')
def get(graph_client, url, params=None, indent=0):
while True:
resp = graph_client.get(url, params=params)
The @ decorators put it to sleep after reaching Microsoft’s throttling point. When it wakes up off you go again. There is also a time out on the webpage you log into the Microsoft account. Just click the back button when the web page gives an error about ‘token missing’ and click on ‘continue’ again and the script will begin to continue (if not still asleep)
I’ve not found any method that hasn’t flaked out over a page in at least one OneNote section yet but both of these got 99% of the notes out for me.
If you do go down this route you need to convert the html to markdown. If you write your own script this could also move the images where ever you want and edit all the link paths. The script I wrote converted all png to jpg as well just to optimise storage as I was moving them.
If you are just going to convert html to markdown then pandoc is said to work well (not used it) and there is a python wrapper for it (also not used it)
There are some odd features in some of the OneNote HTML files - I found alt text entries for images that are dozens of lines long and these made some other methods of converting html to Markdown fall over and the markdownify package for python choked on them as well. So when I wrote my own convertor I ran a method over the HTML to remove these crazy alt tag text values first. If you want the converter scripts message me in here (Click on the K that is used as my Profile Picture) and I can pass them to you, as they are not in git hub as have no documentation or anything like that :-). just some raw code at the moment.
If you have used ink to draw or highlight OneNote pages this is lost and you may see “InkNode is not supported” lines in your markdown files where there was ink after conversion to markdown. I saw some people kept their ink by taking screenshots and then deleting the ink and the original image with the screenshot… Lot of work for heavy users.