JACOB ROBINSONOpen.
← Blog ArchiveARTICLE 248 / 265

Blog Archive / JACOB ROBINSON

Porting A 250k+ Item Database from Notion to Obsidian

It was only two weeks ago where I ended a blog post by saying that I wish I could move to Obsidian, but certain barriers were in place which kept me stuck using Notion. Man… how time flies, huh?

Yeah, I have a lot to explain.

To be clear, this was in no way brought on by that blog post. At the very most I intended to just find a way to use the Notion API to allow me to edit Notion items in Obsidian. Absolutely, under no circumstances, did I plan on exporting a 250k item database into Obsidian.

But that’s what happened anyway.

In order to understand why I switched, we have to once again dive into my radical weird productivity system… and how I found out the hard way that it doesn’t work with Notion.

How Stockpile Works (And Why Notion Is Incompatible)

Just so you know, this is now my third time explaining the Stockpile — there are much more detailed explanations on its dedicated blog post and video companion piece. I’m going to keep things as simple as possible here.

  1. Put your life into 5-10 distinct buckets, based primarily on who you want to be and what you want to get better at. Mine are 3D Modeling, Art, Coding, Design, Game Development, Job Stuff (Things related to career or freelance), Language Learning (Japanese/Chinese), Music Production, and Reading. Job Stuff and Reading are more tangential buckets since almost everyone will have them.
  2. Save everything to the stockpile. I used to separate this into a bunch of different categories like articles, books, audio files, images, etc… but I’ve realized now its a lot smarter just to say files, since books are PDFs and articles/notes are markdowns. That’s right, Stockpile is the first productivity system that relies entirely on file management.
  3. Sort the stockpile. Every file in there has to relate to one of your buckets, or else it gets thrown out.
  4. Every day, go down your list of buckets. Pick out 50-100 random items from each bucket. Your day is done when you have done this process for every bucket in the Stockpile. [1]

I love the Stockpile. It has become essential to my productivity and is the first time I’ve ever implemented a system that I think I’m going to keep permanently. After years of watching productivity gurus and reading their books, I finally stumbled upon something perfectly and uniquely me.

But there is one problem, and that problem is scale.

As you can guess, Stockpiles are big. Very big. Big to the point where you can get an enterprise-sized database just for a couple of things you want to do in the future. How? Well, let me give you a real example. In fact, it is this exact example which caused Notion to completely collapse on me:

[Image omitted]

In music production, there is something called “sample loops”. They are 15-30 second snippets of an instrument that you can essentially combine a bunch of together to create a brand new track (assuming you are not music-theory knowledgeable like me). The way these would work with a Stockpile is quite beautiful:

  1. Save a bunch of sample loops
  2. Listen to them during your daily MusicProd bucket, keeping the ones you like and discarding the ones you don’t. The ones you like you can put into a separate folder, called asset library.
  3. With the weekly deadline system, where you have to make a new track a week [2], grab 25-50 random loops from the asset library. Use them to make your song. Bam!

So, I got to looking for loops. There are a few good sites for them — Looperman, FreeSound, and MusicRadar if you’re curious — but I came upon a rather interesting problem.

I ended up with 70,000 loops.

Now, for the sake of the process, this is good. It means I can make a virtually infinite set of music and almost never have to repeat the same loops (unless I do it by choice). And, if I’m going to be honest, I also don’t think this would have been bad for Notion if I had simply eased the app into this process (I was, at the time, only downloading about 2k-5k samples a week — only when they came up in the MusicProd stockpile). But the problem is that I didn’t have my “Stockpile as file management” eureka moment until after I had already obtained the entire loop library. So instead of importing 2k-5k files a week onto Notion (something that would be work, but not tear down the whole system) I just added all 70k files to Notion all at once.

You see, with any database, there is a theoretical maximum amount of files you can add to it. It is dependent on both file size (how long it will take to load each file) and file amount (how long it will take search for each file). If you’re building a query for 10 files, you’re going to get the query results almost instantaneously since it has to do very little searching and loading of each file. But as you get higher and higher up, the longer and longer it will take to do these queries until eventually it hits a point where the search just stalls out and gives an error. For enterprise-quality database searches like SQL this maximum is incredibly high, but for Notion… well, if you want to be precise, it’s probably somewhere between 200k to 250k.

Because that’s where it began to stall out for me.

So there I was, on a fresh Wednesday morning, realizing I was indeed quite screwed because my daily buckets were no longer loading. I needed a new solution, and fast.

Then I remembered my article on Obsidian.

Why Obsidian + Stockpile Is Only A Slight Disaster

When you look at it the right way, Obsidian isn’t a notetaking software — it’s a file management software.

All Obsidian is doing is taking a folder on your computer and allowing you to read/write edits to the files through its software. It does have a focus on Markdown, but all you need to get it to view all the other files in the folder is click a checkbox in the Settings. People use tools like Vim and emacs to create similar “file hubs”, but Obsidian is a bit easier for the average person to work with.

Because of this, it was a great choice for Stockpile 2.0. The issue with Notion (that many people are aware of, including me… but I tried to make it work anyway) is that its file management sucks. Uploading files is a complete pain in the ass: it has a cap of 200 files per upload, only successfully uploads content half the time, and has very little API support for them. To give Notion some credit, this is not a niche that they are trying to break into — but its something that’s necessary for us, and Obsidian (especially with its local directory support) does this way better. No more file caps, uploads are always successful, and anything we can do to automate a normal OS folder we can use to automate Obsidian. Score!

It is also worth noting that one of Stockpile’s most important features — randomization — is native within Obsidian. Building a PRNG for Stockpile in Notion is 1) a pain in the ass, and 2) part of the reason why the database collapsed. You see, the only way to get randomness in a Notion database is to utilize the item ID and the current time. Item ID is no big issue — but us utilizing the time formula means that our random generation is going to be changing every hour. This means that, every single hour in the day, Notion is going to have to calculate a new random ID for 250k+ items. This is silly and unneeded for the Stockpile, but there’s no other way around it. And, unfortunately, this is another niche Notion isn’t interested in.

There is, however, still one problem with Obsidian. And it happens to be the same issue that caused us to leave Notion:

How the hell are we going to sync the 250k files?

The Painful Exporting Process

The day that I attempted the export, I actually made a video detailing my progress (and pain) as it went on. You can watch it if you want to truly understand the amount of effort that had to be expended getting this whole thing working:

Since this is only the day of the export, most of the content in it is not how I’m currently running the system. Here’s more or less a step-by-step of what I went through:

  1. Initially, I was in panic mode. I had a macro download and export each Notion item one-by-one (there is no bulk export for Notion) and push it into a Google Drive, which is where I intended to host my Obsidian Stockpile. I was able to get it working on the desktop and the Macbook, but the iPad was a no-go since it only supported iCloud drive sync. The phone solution was Foldersync Pro, which I initially had set up incorrectly and duplicated some files over 40+ times (!).
  2. After finally getting the Foldersync working correctly, I realized there was a much smarter way to get (some) of my items out of the Notion database. While you cannot bulk export individual items, you can get a CSV of all their properties if you fragment the database enough (like ~10k items at a time). Some of these notes I knew were empty, just holding a URL in their properties. In the case of these notes, I could filter for has-URL, fragment out the database, then export it as a CSV and add it instantly to the Google Drive Obsidian Stockpile [3]. This worked! For the others, I kept the macro downloading them. It was also around this time I realized I was going to have to take the L on language-learning (100k+) and music-production (70k+) items and just start all over downloading them from their sources over time on the Obsidian Stockpile.
  3. After the ~40k URL-only Notion items were ported to Obsidian, we began to have a problem. The Obsidian Stockpile was now too slow to use — much like with Notion, it had reached its theoretical maximum. There were other issues, too — as I had mentioned, the iPad was unusable, cutting off a great use case for the Obsidian Stockpile. The truth is, a DIY sync wasn’t going to cut it — we needed something built for Obsidian, and while I wasn’t itching to spend money on another cloud service, the cost/ROI on Obsidian Sync would still be much, much lower than the combination of tools I was using before. Fortunately, once I got everything ported onto Obsidian Sync, it worked — mostly.
  4. At some point, I had another realization: while I could not export the remaining Notion database as a whole, I could soft export it — that is, grab the links to every item in the Notion database, and port those over as Markdown notes using the same system I used for converting the Notion URL CSV. This gave me the rest of the Notion links which I needed — we could now call the Notion database officially ported!

How It Stands Now/My Current Setup

Now, before I dive too deeply here, its worth noting that I’ve made vital sweeping changes to the Obsidian Stockpile as of today, so the chances of this becoming out-of-date within 24 hours let alone within a year are startling. Still, I think it will help others who want to implement Stockpile what I would deem as an essential plugin, as the needs of the Stockpile itself don’t really change that much. So here’s what I’m using

  1. Binary File Manager – Okay, scratch that. I’m not using this plugin. This is the change made today that I mentioned earlier. I was under the impression that it was really hard to link attachments — particularly attachments not under Obsidian’s “embedded” cornucopia — without giving them their own dedicated Markdown file. So I used BFM, which essentially just made a MD file automatically for any file I added to the Stockpile. Unfortunately, there’s a big problem with this: BFM knows not to make MD files twice by holding the file name in a .txt file. If you lose that .txt file, then BFM makes a new MD file for every single file in the database. If you have 5k+ files like I do, this translates into an instant crash. In addition, if the .txt file is too big, Obsidian won’t load. In other words, BFM is unusable. Fortunately, it turns out my impression was false: files can be 1) put into a folder, and 2) shown in search for that folder. This means using raw files works just fine with Smart Random Note, which is all we need — the only real issue is that opening an unsupported file such as a .zip will open on the desktop instead of inside Obsidian, but this is a minor setback which we can handle.
  2. Smart Random Note – this and one of its features (Alt-Q to grab link to a random note from search) pulls probably 95% of the weight for using Stockpile on Obsidian. It is a purely frictionless way to pick out those items from a bucket. Simply organize into folders, search the folder (say “path:reading/” or “path:design/”) and Alt-Q it up. Thanks Smart Random Note!
  3. Text Generator – As I suggested above, the rest of these are not strictly necessary for the Stockpile — they’re just nice to have. Text Generator, for instance, gives you AI powers in your Obsidian — you can do API access to OpenAI/Gemini/Claude, or use a local model via LM Studio. It also comes with a text extractor tool that automatically grabs PDF text and youtube transcripts for you, and brings it right to the Obsidian page — this is a killer feature that could honestly be its own plugin, but comes built into Text Generator at no extra (plugin bloat) charge. Thanks Text Generator!
  4. Spaced Repetition – Also a nice to have. Allows you to do Anki style review of your notes, or do full-on flashcards if you wish. I use note review for highlighted readings and flashcards for language learning. Keeps everything within Obsidian rather than having to refer to external tools — a huge deal for a Stockpile workflow.
  5. Dataview – Allows you to SQL query your notes. I mean… you do know how many notes we’re dealing with here, so a bit of SQL magic goes a long way if you’re trying to find something in particular.
  6. Tasks – Native to-do management in Obsidian. To be fair, Notion never had task management either — its funny because this is honestly a lot closer to Todoist functionality than any Notion template has gotten.
  7. Charts – For the stats nerds, you can make charts! I use this to track the size of my overall Stockpile + buckets over time. There is zero functional use for this. It’s just fun.

Yup, that’s it. Just six plugins. To be fair, most other plugins will hard-crash Obsidian on boot with a directory of this size — but we don’t need anything else where we’re going!

[1] – The idea, of course, is that there is a to-do associated with every file. An image in the Art bucket should be used as a reference for a practice drawing. A note for an idea of a program in Coding should be executed on. If it cannot be turned into a to-do, it should also be kicked off the Stockpile.

[2] – It’s discussed in the video. Talking about deadlines in this post would get superfluous. I mean, you do know what a deadline is, right?

[3] – Using csv-to-md at https://github.com/astuka/obsidian_tools

[Image omitted]

Select text in the article to highlight it.

Your saved highlights

    Article contents

    Blog Archive · 265 articles

    1. 01 Five Takeaways from #100DaysofCode
    2. 02 Getting Past the Bump
    3. 03 How Important are Principles?
    4. 04 How to Avoid Writer’s Fatigue
    5. 05 The Dangers of Catastrophizing
    6. 06 State of the Union 2019
    7. 07 The Rise of the Personal Brand
    8. 08 Finding Adventure in 2019
    9. 09 5 Ways to Use Automation to Vastly Increase Your Efficiency
    10. 10 What you Should be Doing Instead of Networking
    11. 11 Creatives vs. Technicals: Which Should You Focus On?
    12. 12 The Difference between Quitting and Giving Up
    13. 13 3 Ways To Get Value Out Of Nature
    14. 14 What is the Purpose of Dreams?
    15. 15 How to develop intellectual success in future generations
    16. 16 What the Definition of Luck Really Is
    17. 17 Who Makes the Culture?
    18. 18 Sexual Frustration and Trying to Find Love in the Age of the Internet
    19. 19 The Lazy Man’s Guide to More Efficient Research
    20. 20 How One Joke Can Ruin Your Life
    21. 21 Why IQ is BS
    22. 22 Why it’s Impossible for the Illuminati to Exist
    23. 23 Some of my Favorite Blogs
    24. 24 The Most Important Indicator on Why a Company Succeeds
    25. 25 Returning to Tesla
    26. 26 Living in a Post-Truth World
    27. 27 The Function of Success
    28. 28 Lessons at 20
    29. 29 If the Recession Happened This Year…
    30. 30 Why People Don’t Read
    31. 31 Social Media and Truth
    32. 32 Making Things 1% Better
    33. 33 What the Book of Job Really Means
    34. 34 Life as a Game
    35. 35 The Function of Opportunity
    36. 36 Exponential Growth
    37. 37 The Machine Learning Revolution
    38. 38 Practical Thoughts on Blockchain
    39. 39 Why the Humanities Are Just as Important as STEM
    40. 40 Dow 30,000
    41. 41 The Shame Economy
    42. 42 You Can’t Do It All Alone
    43. 43 Favorites of 2019
    44. 44 State of the Union 2020
    45. 45 The Tolerance Paradox
    46. 46 Null
    47. 47 Social Game Theory
    48. 48 3 Tips for Developing a Positive Mindset
    49. 49 Why Social Gaming is So Popular
    50. 50 A Design Study on YourStack
    51. 51 Relationships, Careers, and Investments
    52. 52 The Fall of GAFA
    53. 53 Wartime CEO
    54. 54 Mass Shooting Cycles
    55. 55 But Who’s Right?
    56. 56 What Matters in the End
    57. 57 Is AR/VR too “weird”?
    58. 58 Convenience + Efficiency
    59. 59 Vicious Cycles
    60. 60 With Smart People
    61. 61 The Third Moat
    62. 62 The Secret to Success
    63. 63 The End of Education
    64. 64 The Ben Carson Effect
    65. 65 Biological Evolution, Cultural Evolution
    66. 66 Suicide and the Self
    67. 67 The Life Cycle of a Business
    68. 68 How to Get into Harvard
    69. 69 Managing Your Personal KPIs
    70. 70 Fog of War
    71. 71 Make-or-Break vs. Nice-to-Have
    72. 72 Identity and Political Groups
    73. 73 Nationalism’s Pros and Cons
    74. 74 How to Win an Election
    75. 75 Why You Shouldn’t Network
    76. 76 On Relative Morality
    77. 77 Death in the Age of the Internet
    78. 78 Audience of One
    79. 79 The Rise of Anxiety
    80. 80 Stop Getting Scared By AI
    81. 81 If You Build It, They Will Come
    82. 82 Building Knowledge Advantage
    83. 83 The Quest to be Kinder
    84. 84 Everything You Do Sucks
    85. 85 Niche Monopolies
    86. 86 Up Shit Creek
    87. 87 Emotional Equivalent Salary
    88. 88 Uncertainty Principle
    89. 89 Building a Startup with Anxiety
    90. 90 Punishment and Forgiveness
    91. 91 Favorites of 2020
    92. 92 State of the Union 2021
    93. 93 Random Factor Social Suicide
    94. 94 Old World Business, New World Business
    95. 95 The Customer Takes Care of Itself
    96. 96 How to Use Reddit as a Business
    97. 97 Genetic Obsolescence
    98. 98 A Social Capital Theory of Management
    99. 99 If I Could Do My Education Over Again
    100. 100 Aggregation and Decoupling
    101. 101 The Crazies, Part II
    102. 102 Art as Inspiration, Art as Education
    103. 103 Free to Play Models for SaaS Services
    104. 104 A Recap on my 2020 Politics Posts
    105. 105 Making Mistakes, Post-Internet
    106. 106 Taste is Not Tech
    107. 107 Immortality
    108. 108 Biases Against Consistency
    109. 109 The Mythical Self
    110. 110 Faulty Mental Models
    111. 111 Honor and Glory
    112. 112 Momentum, and the Value of Cold Showers
    113. 113 The Prestige Myth: Providing Structure to Structureless Forms
    114. 114 The Unluckiest Man Alive
    115. 115 Those Who Make, And Those Who Work
    116. 116 Post-Truth, Revisited
    117. 117 Conscience Questions, Unchristianized Edition
    118. 118 On Being You
    119. 119 Effective versus Efficient
    120. 120 The Experimental Method of Learning
    121. 121 A New Model for Teaching Humanities
    122. 122 A Dialogue on Mindset
    123. 123 I Am Not Your Friend
    124. 124 My 5 Tips Towards Reading Books
    125. 125 Buying Immortality
    126. 126 Do this, but…
    127. 127 Leverage and Wealth: A Simplification
    128. 128 Mind’s Eye and Creative Application
    129. 129 Intersection of Technology and Art
    130. 130 Blog Writing for Robots
    131. 131 10 Tips on Writing
    132. 132 The Cost of Staying Alive in America
    133. 133 Taste on the Margin
    134. 134 Top 10 Tools I Use in 2021
    135. 135 Income Generators 101
    136. 136 Strategies for David, Versus Goliath
    137. 137 Progress in the Long Term
    138. 138 The End of Journalism
    139. 139 Myths of People
    140. 140 Heroism
    141. 141 External Mentors
    142. 142 Favorites of 2021
    143. 143 State of the Union 2022
    144. 144 The End of Gender
    145. 145 The Work After Work
    146. 146 There Is No Metaverse
    147. 147 On Dealing With Chaos
    148. 148 Risk/Return Bets in Entrepreneurship
    149. 149 The Weird, Magical World of Modern Day Quora
    150. 150 On Business
    151. 151 What’s “Hivemind”?
    152. 152 Life as a War
    153. 153 On Culture
    154. 154 My Approach to Investing
    155. 155 Stop Caring About Your Reputation
    156. 156 On Humility
    157. 157 Is Relative Morality Helpful?
    158. 158 Achievement-Based Thinking
    159. 159 On Success
    160. 160 Moral Implications in Maximums and Minimums
    161. 161 Sentience and Suffering
    162. 162 On Improving
    163. 163 The Suicide Disease
    164. 164 Social Diversification
    165. 165 On Meaning
    166. 166 Convenience and Pareto Optimality
    167. 167 Mental Illness is Not a Permanent State
    168. 168 Biased Science
    169. 169 People as Means
    170. 170 Being Wise and Being Smart
    171. 171 The New Working Class
    172. 172 Fitness, Suffering, Self
    173. 173 Political Theory and Evolution
    174. 174 Explaining my Rating System
    175. 175 Why You Might Want A Trading Account Over An IRA
    176. 176 Why NFTs Don’t Work For Games
    177. 177 A Few Thoughts on MMOs
    178. 178 A Review of MyMind
    179. 179 Read, Think, Make, Share, Monetize
    180. 180 Is Science Perfect?
    181. 181 A Guide to Fiction Writing
    182. 182 The Productivity Tool World Tour 2022
    183. 183 My Daily Routine
    184. 184 The Curse of The Conqueror
    185. 185 Some Brief Notes on Programming
    186. 186 My Life Principles
    187. 187 Cyberpunk in 2022
    188. 188 What Decides Good Art?
    189. 189 Trends in Mass Murder Techniques
    190. 190 Changing to Fit the Times
    191. 191 Why Did Photographers Embrace NFTs, but Artists Didn’t?
    192. 192 Favorites of 2022
    193. 193 State of the Union 2023
    194. 194 New Blog Post Schedule
    195. 195 Was Lex Fridman’s “Reading List” Controversy Caused by Mass Psychosis?
    196. 196 Is Notion “Too Good”?
    197. 197 Mastodon is Social Media PvP with Permadeath Enabled
    198. 198 Arc, Vivaldi, and the Next Generation of Browsers
    199. 199 Is the Four-Hour Workweek Actually Possible?
    200. 200 Do Not Obsess Over Your Customer. Obsess Over Your Community.
    201. 201 Why Big Entertainment Failed to Bring in Diversity
    202. 202 My All-Time Favorite Tools
    203. 203 Museums on the Computer
    204. 204 How to use AI to get you motivated to work
    205. 205 The Best Way to Focus: Do Nothing
    206. 206 Can Buddhism and Ego Intertwine?
    207. 207 How I Write My Blog Posts Now
    208. 208 Practice and Mysticism
    209. 209 Automate the Boring Stuff with ChatGPT
    210. 210 State of the Union 2024
    211. 211 The Secret to Great Products You Aren’t Doing
    212. 212 How to build a $5 billion dollar business in 5 minutes
    213. 213 How To Easily Automate Investments, Beat Big Tech, and more!
    214. 214 Can I Use AI To Solve The World’s Unsolvable Problems?
    215. 215 How A “Taste Matrix” Can Improve Your Art And Kill Writer’s Block
    216. 216 My Bizarre, Counterintuitive, and Lifechanging Approach to Work
    217. 217 Top 3 Recommended Browsers (They Aren’t What You Think)
    218. 218 How Hard Is It To Make Money On Steam?
    219. 219 What To Do If You’re Socially Anxious
    220. 220 My New New Way of Reading Books (I Abandoned AI)
    221. 221 References Are The Best Way To Learn Anything
    222. 222 How To Quit Planning Goals And Start Achieving Them
    223. 223 The Only Good Self-Help Book
    224. 224 Be Nice To Everyone. It Just Might Save Your Life.
    225. 225 I Learned An Ancient 3-Step Process And Became A Master Meditator
    226. 226 How Canva Became The Home of Everything
    227. 227 Has The Internet Made More People Mentally Ill?
    228. 228 The Biology Behind Why We Like Stories
    229. 229 This Tape Haunted An Entire Nation. But Was It Even Real?
    230. 230 We Are All Most Certainly Going To Make It
    231. 231 What Makes Good Taste?
    232. 232 In a World of Cancel Culture, Reputation Doesn’t Matter Anymore
    233. 233 Why You Hate Diversity In Media
    234. 234 I Used Readwise for 200 days. Here’s what happened.
    235. 235 Lessons on Bootstrapping Solo with Little Income
    236. 236 This Ancient Story Was Drowned In Lies. The Truth is Much More Interesting.
    237. 237 How To Get Actionable, Memorable Advice Out Of Anything You Read
    238. 238 You Are A Coward. And That’s Not So Bad, Really.
    239. 239 Time Travel is Real. Here’s How to Use It.
    240. 240 How I Got Into Old Games
    241. 241 Is Every Story Political?
    242. 242 Your Culture Decides Your Fate
    243. 243 In Defense of the Jumpscare
    244. 244 Final Fantasy XIV’s Story Is A Mess
    245. 245 Markov Chains and You!
    246. 246 I used Obsidian for 90 days. Here’s what happened.
    247. 247 Ideas That Can Kill You
    248. 248 Porting A 250k+ Item Database from Notion to Obsidian
    249. 249 Why the Fast Inverse Square Root Matters
    250. 250 A Deep Dive on Networking
    251. 251 A Deep Dive on Cybersecurity
    252. 252 Converting a $100k+ Trading Algorithm from Excel to Python
    253. 253 How To Make A (Super) Hard Drive From Scratch
    254. 254 So, How Do Computer Graphics Work?
    255. 255 The Quantum Physics Rabbit Hole, Part I
    256. 256 The Quantum Physics Rabbit Hole, Part II
    257. 257 The Story (and Meaning) of Humanity’s Greatest Achievement
    258. 258 Explaining Tonal Indicators
    259. 259 AI should have you thinking MORE, not less
    260. 260 Forbidden Knowledge: The Vela Incident
    261. 261 All success in life comes back to pain tolerance
    262. 262 The AI Revolution rewards the curious
    263. 263 Forbidden Knowledge: Marco Evaristti
    264. 264 Forbidden Knowledge: Casket Failure
    265. 265 Forbidden Knowledge: Coriander Theory

    Share

    Make it your own before sharing.

    Page link

    Send to

    EmailWhatsAppBlueskyFacebookX

    Facebook shares the link only; add your message there.