Sigh. You know that feeling when you stumble upon something, dismiss it, and then it keeps pulling you back? That’s exactly how it felt with Obsidian.
A year ago, I dipped my toes in, tried to make sense of it, but it just didn’t click. Maybe I wasn’t ready, or perhaps its sheer depth felt a bit overwhelming at the time. I quickly moved on, thinking it just wasn’t for me. Then began the endless quest for the “perfect” Android note-taking app. I tried so many, each promising something different. Notesnook came close, really, and I still use it for some things, but there was always this nagging feeling, this quiet whisper of “something’s missing.” That “something” was the ability to truly make it mine, to bend and shape it to my peculiar needs. The customization, the sheer extensibility… it was nowhere to be found.
And so, like a boomerang, I found myself back at Obsidian’s doorstep a few months ago. This time, it felt different. This time, I was ready.
So, why am I even telling you all this? Well, to understand my journey, you need to know a little bit about me.
I’ve always been a multipotentialite at heart, and more importantly, a builder. Not in the professional, “I want to code for a living” sense, but in that deeply satisfying, almost addictive way. You know, that rush of dopamine when you piece something together, something you had no idea how to even begin? That feeling of bringing an abstract idea into tangible existence? It’s pure magic.
If I can’t find a tool that fits my exact, often quirky, needs, my first instinct isn’t to complain, it’s to build it myself. The catch? I didn’t want to get bogged down in learning complex coding languages just for a hobby. My life’s pretty quiet, honestly. I’m a bit of an introvert – no bustling social life, barely touch social media (YouTube’s my main jam, and even then, it’s just a handful of creators). So, building things, tackling these little creative puzzles, that’s how I fill my free time. It’s my quiet rebellion against boredom.
This isn’t my first rodeo with AI, though. When ChatGPT 3.5 first burst onto the scene, that’s when my real AI journey began. I’ve always loved playing with AI for different things – creative writing (turning my wild ideas into stories is a huge passion), getting advice, even trying to spin up a website or two. I’ve been following AI consistently ever since, without a break. I mean, I have spent many, and I truly mean many hours, experimenting with every free-tier AI model I could get my hands on. So yeah, you could say I had a good amount of experience interacting with AI before diving into plugins.
Being a multipotentialite also means I devour new knowledge like candy, even if it seems utterly useless at the moment. But the flip side? Consistency is a beast. I’m the kind of person who gets utterly obsessed with a specific milestone. I’ll dive headfirst, hit a wall, learn everything I can, reflect, and then slam into it again. This summer, that’s literally all I did. From the moment I woke up until I finally crashed, I was absorbed. No regrets, truly. What else was I going to do?
And then, it clicked. The moment I truly fell head over heels for Obsidian wasn’t just its note-taking prowess; it was its plugin system. For a builder like me, it was like discovering a boundless canvas. And then, the ultimate brush: AI.
Imagine having a platform where you can literally turn your wildest software ideas into reality, combined with a tool that can actually realize those ideas for you, even if you’re not a seasoned coder. For someone who just wants to create, this isn’t just a convenience; it’s absolute heaven. It’s my kind of magic, where imagination and tangible output finally meet.
So, armed with this newfound passion and my AI companion, I embarked on my plugin-building adventure. But let me tell you, this wasn’t some smooth, effortless ride. Not a bit. This was, and still is, a hassle, and I think I know why: I’m not a coder. I don’t have that deep well of knowledge or experience to effectively guide the AI. So, a lot of the time, I was just blindly “banging my head here and there,” hoping something would stick.
My very first baby steps into this world was a plugin called ScriptPilot. Looking back, it’s pretty rough around the edges, definitely a beginner’s attempt. But it solved a problem I had at the time, and after countless hours of banging my head against the AI (and a few frustrated sighs), I got it working. That feeling of “I did it!” was exhilarating, and it pushed me forward.
Then came the next hurdle: bundling plugins on mobile. See, I don’t have a desktop, so my entire development journey happens on my phone. This wasn’t just a challenge; it was the challenge. After more sleepless nights and a relentless dance with the AI, In-App-Builder (IAB) was born. If you ever peek at the repositories for ScriptPilot and IAB, the leap in quality is huge. It’s a testament to how much I learned, how much the AI helped me grow. Now, I use IAB if a plugin doesn’t need external libraries, but for anything more complex or if it uses libraries, GitHub has become my go-to for bundling. Although I already had a GitHub account with some “graves” of old web projects, it was through this plugin journey that I truly learned how to wield GitHub effectively for my current needs.
And the cycle continued. I needed a version control system for my notes, something beyond simple backups, something that let me iterate on ideas without cluttering my vault. Couldn’t find it. So, I built it. My latest creation, and one I’m particularly proud of.
You might have noticed a theme here: all my plugins are mobile-first. That’s not by choice, but by necessity! Building on a phone presented its own unique set of puzzles, but it also forced me to think differently, to optimize for mobile experience. And honestly, as an Obsidian mobile user myself, it just felt right.
This journey, while challenging, has been incredibly rewarding. I’ve absorbed so much, even picking up the bare bones of JavaScript, TypeScript, and HTML – not because I wanted to become a professional developer, but because I needed to speak the AI’s language, to guide it effectively through those “banging my head” moments. And yes, I still use all these plugins daily! ScriptPilot and IAB have their quirks, but they work for me, and that’s what matters. Version Control has been a game-changer for refining my ideas.
Now, let’s talk about the real magic behind it all: the AI. It’s not just a “type and pray” situation; it’s a careful, often frustrating, but ultimately rewarding partnership. I primarily lean on Gemini for about 98% of the actual plugin creation. It’s my workhorse.
But I also bring in others: Deepseek R1 is my brainstorming buddy; sometimes it spits out surprisingly good UI design ideas. Claude is my go-to for prompt engineering – I rarely use it for raw code, but for crafting the perfect instructions, it’s brilliant. And ChatGPT? Honestly, I haven’t found a reason to use it. It feels a bit like a relic when I have these other powerful tools at my fingertips.
I’ve noticed something fascinating about these models: Claude tends to over-deliver, giving you more than you asked for, while Gemini is the opposite, requiring precise guidance. That’s where the real experimentation came in – learning how to effectively “talk” to Gemini, how to coax out exactly what I needed. This learning curve was part of the “banging my head” phase I mentioned earlier, as I figured out how to bridge my lack of coding knowledge with the AI’s capabilities.
My approach isn’t just a single prompt. I’ve built a whole collection of system prompts tailored for different tasks: one for generating a plugin, one for state management, another for converting prompts to XML syntax, even one for creating single-responsibility components. It’s like having a specialized toolkit for different parts of the build.
For prompt engineering, I usually start with Claude or Gemini, then feed that refined prompt into Gemini with a specific system prompt to convert it into XML syntax. Why Gemini for the XML conversion? I’ve found Claude and Deepseek can make the XML tags feel… monotonous, which oddly enough, seems to decrease the LLM’s productivity. It’s a subtle thing, but it makes a difference.
This whole process has taught me a fundamental truth about LLMs: they’re language models. Speaking to them in natural, conversational language often yields better results than overly formal or rigid instructions. It doesn’t mean ditching structure entirely, but finding that sweet spot where it’s clear yet conversational. But hey, that’s just my observation; the key is always to experiment and find what works for you.
And the biggest, most crucial lesson? Never expect the AI to deliver a perfect, polished product right out of the gate. It’s a collaborative dance. You have to be the perfectionist, relentlessly guiding it, iterating, refining little by little. Every word in your prompt matters; LLMs are incredibly sensitive to context and phrasing.
Oh, and a huge reason I stuck with Gemini? Beyond the generous free tier (which, let’s be honest, is a massive bonus), it’s the ability to upload entire zip files. Being able to give the AI my whole codebase, letting it analyze everything at once, that’s been an absolute game-changer. It’s why I’ve been able to push the boundaries as much as I have.
I’ve also fine-tuned the parameters I use with Gemini. For creative tasks, I lean towards a Temperature of 0.15, Top_P at 0.95, and Thinking Budget Max. For more deterministic, precise outputs, I adjust Temperature to 0.15-4 (or even higher sometimes) and Top_P to 0.85, keeping Thinking Budget Max. It’s all about knowing what lever to pull for the desired outcome.
My process for refining a plugin is pretty straightforward, but effective: I hand the entire codebase to the AI, let it “bang its head” against it, and then ask it to list flaws and suggest mitigation strategies. Then, I use the AI to fix those flaws. I repeat this loop until I’m truly satisfied. If the LLM’s effectiveness starts to dip as the codebase grows, I know it’s time to modularize further.
And when I hit a truly stubborn wall? That’s when I step back. I research, I talk to different LLMs for fresh perspectives, anything to shake loose a new idea or uncover something I might be overlooking. If even that doesn’t work, I stop. I rest, I think, and sometimes, I just wait – for a new model to release, or for that “aha!” moment to strike.
Even with all these plugins under my belt, I still haven’t hit the major milestone I’ve set for myself. These creations, as much as I use and love them, are just stepping stones, building blocks towards something bigger.
Right now, I’m pouring my energy into a plugin called ‘Flow.’ Imagine being able to scroll through your notes from any folder or root, almost like a feed, similar to how short-form video apps work. It’s still deep in beta, and true to my perfectionist core, I won’t release it for testers until I’m absolutely satisfied. It has to be just right.
My head is bursting with so many more ideas, so many more things I want to bring to life. My summer holidays, where I could dedicate every waking moment to this, are over now. I won’t have the same endless hours, but believe me, this journey is far from over. I’m determined to keep going, piece by piece, until I successfully build that “dream project” I envision.
So, why did I pour all this out? Honestly, I just had this sudden urge today. Felt like sharing my little corner of the world, my personal adventure in building with AI. Why not, right?
And it’s not just me. If you’ve been paying attention, you’ll notice more and more AI-assisted plugin submissions appearing in the Obsidian release repo. It’s exciting to see this movement grow, to know I’m part of something bigger.
It felt really good, truly, to share these thoughts and feelings with all of you. It’s a vulnerable thing, putting your passion out there. I’m genuinely excited to hear your thoughts, any suggestions, advice, or just anything you feel is worth sharing. Let’s connect on this!
And with that, bye for now!
P.S. Oh, and here’s a fun little meta-fact: this entire post, all polished and transformed, was done with the help of AI. Talk about walking the talk!