Hello!
I've been posting occasionally about Obsidian/development projects. This time, I'm commemorating the registration of three custom plugins in the Obsidian plugin store by writing a brief reflection on my coding journey with Vibe.
Obsidian is a Markdown-based note app known for its high degree of freedom and extensibility, making it easy to integrate with external tools. Previously, this freedom acted as a significant barrier to entry, often leading users to abandon the platform after initial exploration.
Even before the advent of AI, Obsidian was an excellent tool. However, recently, many users have started utilizing Obsidian as a knowledge hub and interacting with AI based on that knowledge base.
Last year, I began using Obsidian to leverage static blogs (Jekyll) hosted on GitHub. While writing blog posts, I realized the need for a Korean spell checker plugin. Although there was an existing Hangul spell checker plugin in the community, it wasn't functional at the time. Embracing the "if it doesn't exist, build it" mentality, I bravely took on the challenge.
The outcome is not bad, considering it was one of my early projects developed alongside AI. While there might be some rough edges, it essentially accomplishes its purpose. Hoping others would find it useful, I applied to list it in the community store.
The Obsidian team consists of approximately seven members. At the time, I heard that plugin reviews were piling up, but there was no clear information or guidance on processing times. It took a considerable amount of time just to receive initial review results. Upon submission, a bot scans the code to ensure it adheres to Obsidian's syntax. After addressing the bot's comments, one receives feedback from a human reviewer. Once this feedback loop is completed, the plugin gets approved.
Since the latter half of last year, the popularity of Vibe coding has surged, leading to an exponential increase in plugins for Obsidian. This resulted in a backlog of reviews. I submitted my plugin around July last year, and it took over a month to receive feedback from a human reviewer. Then, another month was spent addressing further feedback.
From that point on, I accepted the uncertainty of when my plugin would be officially listed in the store. For those interested, I made the BRAT plugin available, which could be installed and updated via its GitHub repository. This allowed for easier sharing while bypassing the official review process.
The second plugin was created to enable my wife, who writes on Naver Blog, to use Obsidian's writing style. Despite my efforts, she couldn't migrate her blog due to childcare and work commitments. To develop this plugin, I referred to several open-source projects that web scrape Naver Blog. Most of these were written in Python, while Obsidian is based on TypeScript. Adapting the code proved somewhat challenging.
The demo video below is outdated, so please consider it for reference only…. haha
Since fetching blog posts became possible, I envisioned extending the functionality to retrieve Naver Cafe posts and Kakao Brunch articles. Gradually, features were added, including the ability to automatically fetch posts from a specific blog URL upon opening Obsidian.
However, even after submitting the second plugin, the review process for the first one hadn't concluded. I attributed this delay to my own limitations and simply responded to each review result as it arrived. The feedback provided by the Obsidian maintainers was sufficient and AI-driven. Still, I had to wait several weeks to a month for each response.
This experience made me somewhat skeptical of the official plugin process. I no longer placed much emphasis on the community plugin store, assuming interested users would find it independently.
Having developed a few plugins boosted my confidence. "I can do this too!" I thought, embarking on a new challenge: developing a macOS application (https://korean-grammar.junlim.org/). The spell checker plugin wasn't bad, but I wanted to seamlessly integrate AI functionality and address the inconveniences of writing in Obsidian.
After diving in headfirst for 2-3 weeks, I realized something was fundamentally wrong and decided to rebuild the entire application. This rebuild took almost a month. After squashing some bugs and making it usable, I launched the app. Since I was already putting in the effort, I decided to incorporate simple payment and settings features.
Focusing solely on this project led to burnout. I only wrote a few introductory posts and lacked the energy to promote it further. It was a valuable learning experience. Developing an application proved much harder than anticipated. I gained insights into the importance of technology stacks, code refactoring, build and deployment processes, payment gateways, and authentication servers. (As a bonus feature, the app integrates with the Busan National University spell checker API key. Many people might not be aware of this possibility. By contacting the university directly, I was able to implement this functionality. Sending an email allows you to obtain a personal key and use it for free up to 300 sentences.)
After a while, I started using the tool for my own community posts. While making minor improvements along the way, I realized it had become quite usable. However, I still wouldn't recommend it wholeheartedly.
It seems I left some feedback during development… haha
Developing macOS applications made me realize how relatively straightforward plugin development is. Leveraging Obsidian's provided APIs simplifies the process and provides a safety net. This realization led me to embark on developing my third plugin.
I often found it inconvenient to save and manage social media posts. I believed an Obsidian plugin would be beneficial. Social media platforms offer saving features, but they are often hidden and lack efficient search and management capabilities. From the platform's perspective, users might get lost in their feeds and consume more ads.
With my experience, development proceeded smoothly. This is what the early version of the plugin looked like: Entering a social media link would generate a Markdown document within Obsidian containing the post content, likes count, and other metadata. A separate view allowed for browsing posts in a timeline format.
My past experiences proved helpful. Posts on Reddit garnered positive responses, allowing me to connect with a global audience through Obsidian. The plugin's scope has expanded beyond the initial concept, leading to web and mobile app versions currently available as a service.
The third plugin was completed, and even though it had pretty good completion and had global users, it couldn't pass the threshold of the Obsidian community plugin store review. Even while the review of the third plugin was in progress, the two plugins I made initially still couldn't be registered. Was this really too much..?

But finally today, all of them have been registered. It doesn't have much significance, but why were all of them suddenly registered?
The Obsidian team, which couldn't handle the flood of AI-generated plugins with the existing review flow, created a new community site. Still, it was changed so that apps that passed the automated scan could be registered. I wish they had told me earlier that they were making something like this..ㅎㅎ

It's a bit of an anticlimactic ending, isn't it?! Still, I'm happy that now I can simply introduce it by saying you can search for plugins in the in-app community store and install them when introducing or recommending plugins.
There are about 2-3 more projects that I haven't introduced in this article. Starting from around July last year, and although there were times when I took some breaks in the middle, it seems I kept working on something continuously. The more projects I worked on, the more I realized that development is really not easy, and I came to respect even more the developers who had been doing this kind of complex development since before the era of AI.
While it's true that Vibe Coding has improved the accessibility of software development itself, for those who have already done a few projects, you would have already realized that creating a good product through this, securing users, and connecting it to revenue is as difficult as becoming a money-making YouTuber. It seems to have been a journey of realization. There are many people who talk about Vibe Coding as if just good prompting will make everything work, but I don't think there's anything more important than the experience of actually completing a project. I believe that products or services made with Vibe Coding not being recognized is not because they were made with Vibe Coding, but because they lack completeness as services or products.
When you start Vibe Coding, you become extremely brave at first. The AI creates features just by you saying it, and creates seemingly difficult services plausibly. It creates products at about 80-90% quality. It's not bad, but something is missing, you know? But if you keep using it, the unfinished parts become a hindrance. It's disappointing for me to use, and even more ambiguous for others to use. The design also clearly shows that it was made by AI. When I actually tried it, I realized that to fill in that lacking completeness, I needed several times the time (tokens) that I initially invested. I already liked well-made services and apps, but through making services like this, I've come to like them even more.
Note 1. E-book Finder (I made it because it's difficult to borrow books from e-book libraries)

Note 2. Webtoon Archiving & Viewer (For a lazy webtoon viewer, I just made episodes subscribe and automatically download so you can watch them)