# Migrating from Roam to Obsidian Regardless of [[Why Obsidian is better than Roam|why you're migrating from Roam to Obsidian]], there are several things you may have to do before you fully make the change. Below are the steps that *I* took before I fully moved to Obsidian. They helped me make the transition, but they are by no means mandatory for moving to Obsidian. The easiest way to start using Obsidian is to start from scratch, after all! <iframe width="560" height="315" src="https://www.youtube.com/embed/AWUk8-6yG2g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> _Note: I am on a Mac, so some of these may not work too well if you're using Windows. I'm just putting these here because they worked for me!_ 1. Export Roam Research graph into [[Markdown]] format. 2. Unzip and open the folder as a vault in [[Obsidian]]. 3. Settings > Core Plugins > Markdown Format Importer. 4. Open up Markdown Format Importer and start the conversion according to the settings you need. 5. Use [this Python script](https://gist.github.com/Joilence/82e1433870c538db12086e06ac7975f7) to convert daily notes from Roam format (`February 2nd, 2021`) to Obsidian format (`2021-02-02`) 6. Enable Daily Notes core plugin. 7. Enable Fold heading and Fold indent core plugins. 8. Enable Templates. 9. Any files or folder starting with `.` will not be shown in Obsidian - that's because they are hidden files. `CMD + Shift + .` on a Mac to view them in Finder and rename them. 10. If you want to, delete empty Roam notes using [this script](https://github.com/nicolevanderhoeven/deroamify/blob/main/deleteifempty.py). Roam creates notes automatically once you've linked to them, so if you're like me you'll end up with a bunch of empty notes due to typos and such. You can always use the [Dangling links plugin](https://github.com/graydon/obsidian-dangling-links) in Obsidian to find notes you've linked to but not created later. 11. If you've uploaded any files to Roam, use [this script](https://github.com/nicolevanderhoeven/deroamify/blob/main/downloadfirebase.py) to download your files from Roam and store them locally. Roam won't store your assets indefinitely once your subscription runs out! 12. Install [Outliner](https://github.com/vslinko/obsidian-outliner), an Obsidian plugin that gives you Roam-like control (including keyboard shortcuts) for when you want those bullets back in your Obsidian vault. 13. If you want bullet point lines back, use this Snippet by [[Santi Younger]]. Full instructions are [here](https://www.youtube.com/watch?v=rukFr8CjzPo). ```css .cm-hmd-list-indent .cm-tab, ul ul { position: relative; } .cm-hmd-list-indent .cm-tab::before, ul ul::before { content:''; border-left: 1px solid rgba(0, 122, 255, 0.25); position: absolute; } .cm-hmd-list-indent .cm-tab::before { left: 0; top: -5px; bottom: -4px; } ul ul::before { left: -11px; top: 0; bottom: 0; } ``` ### Troubleshooting #### ModuleNotFoundError: No module named ‘dateutil’ This error means that you don't have the Python 3 module `dateutil` installed. To install it, run this command: ```bash sudo pip3 install python-dateutil ``` Now try the script again! ## Things that don't quite transfer over ### Block references They're turned either into double parentheses with the reference number, or a string inside quotes. You'll need to find these in Obsidian and replace them with: `[[Migrating from Roam Research to Obsidian#^5561ee]]` instead of with `(( ))` And on a similar note, block embeds won't work - you'll need to change these in Obsidian to `![[^^` , and note the `!`. ### Queries Obsidian doesn't have a way to do queries natively, but you can use the [[Obsidian Dataview]] plugin instead. ### TODO and DONE You can't filter either out in Obsidian, so you'll need to look for a task management/TODO plugin for Obsidian that suits you. [Obsidian TODO](https://github.com/larslockefeer/obsidian-plugin-todo) is pretty nice. ### Calculations Calculations via the inline calculator that parse blocks for numbers won't work, and you'll have some funky equations in your notes as a result. ## What's different? With Obsidian, you get the freedom to use bullets or just write in freeform. There's definitely something freeing about being able to type outside of Roam's strict block structure. I've found it's also proving much more conducive to publishing, since Markdown is a format many Content Management Systems accept, as opposed to Roam's flavor of Markdown. One of the best things about Obsidian is its complete customizability - almost everything about your Obsidian experience can be customized. It takes a while to set things up how you like it, but it's worthwhile to put in the work to get things set up exactly how you like it. It's easier to find and add plugins and themes on Obsidian, because they have an interface for it! [[Obsidian plugins I use|Here are all the plugins I use]]. It took me a while to get used to the fact that Obsidian has a distinction between edit and preview mode, whereas Roam just toggled this on and off automatically per block. However, it doens't take long to get used to. Nowadays, I pretty much just always stay in edit mode. Notes aren't created just by writing them; you have to click into them to create it. While I initially missed this, I did NOT miss creating a hundred typo-filled pages because Roam created them before I spotted the typo. ## Blog posts about my use cases for Obsidian - [How to import Shortform highlights to Obsidian via Readwise](https://nicolevanderhoeven.github.io/blog/20210815-shortform-to-readwise/) - [The easiest way to sync Kindle highlights to Obsidian: Readwise to Obsidian Redux](https://nicolevanderhoeven.github.io/blog/20210810-readwise-to-obsidian-redux/) - [How I use Obsidian for D&D - Player's Edition](https://nicolevanderhoeven.github.io/blog/20210809-dnd-obsidian-player/) - [Downloading files uploaded to Roam Research for use with Obsidian](https://nicolevanderhoeven.github.io/blog/20210602-downloading-files-from-roam/) - [How I Use Obsidian at Work](https://nicolevanderhoeven.github.io/blog/20210518-how-i-use-obsidian-at-work/) - [Presentation Slides as Code](https://nicolevanderhoeven.github.io/blog/20210302-presentation-slides-as-code/) - [Readwise to Obsidian](https://nicolevanderhoeven.github.io/blog/20210206-readwise-to-obsidian/)