Obsidian plugin development: Tự xây second brain extensions

Obsidian plugin development: Tự xây second brain extensions

Obsidian đã trở thành standard de-facto cho personal knowledge management (PKM) với 25+ triệu downloads. Sức mạnh thực sự không chỉ ở Markdown files, mà ở plugin ecosystem: 1.500+ community plugins, từ simple formatter đến complex spaced repetition. Bạn có thể tự build plugin riêng với TypeScript, đóng góp cho cộng đồng, hoặc tạo tool nội bộ cho team.

Kiến trúc plugin Obsidian

Obsidian chạy trên Electron, dùng Node.js APIs trong main process và browser APIs trong renderer. Plugin chạy trong renderer sandbox — có thể access Obsidian API, đọc/ghi vault files, register commands, ribbon icons, status bar items. Nhưng không có DOM access trực tiếp: bạn dùng Obsidian’s view component system.

Prerequisites: Node.js 18+, TypeScript 5+, Obsidian v1.0+ (API stable). Không cần build tool phức tạp — Obsidian template sẵn Vite config.

Obsidian plugin architecture được thiết kế với security và isolation như ưu tiên hàng đầu. Mỗi plugin chạy trong renderer process riêng biệt, chỉ có quyền truy cập thông qua Obsidian API được expose. Điều này ngăn chặn các plugin độc hại truy cập file system trực tiếp hoặc thực hiện các hành động nguy hiểm. Plugin API cung cấp các interface an toàn để tương tác với vault, workspace, và UI components.

Obsidian plugin architecture showing vault, API layer, plugin sandbox, and UI components
Obsidian plugin architecture showing vault, API layer, plugin sandbox, and UI components

Tạo project từ template

git clone https://github.com/obsidianmd/obsidian-sample-plugin.git my-plugin
cd my-plugin
npm install
npm run dev

Template bao gồm: main.ts (entry point), manifest.json (metadata), tsconfig.json, và sample event handlers.

Plugin API chính

  • Plugin: Base class — onload(), onunload(), loadSettings(), saveSettings().
  • Vault: vault.create(), vault.read(), vault.modify(), vault.delete() — đọc/ghi Markdown files.
  • Workspace: Register leaf views, panels, modals. Ví dụ: workspace.dockLeft.add() để thêm sidebar.
  • MetadataCache: Đọc frontmatter, tags, links đã index — nhanh hơn đọc raw file.
  • SuggestModal: Class kế thừa để tìm kiếm modal. Ví dụ: tìm note theo tag, tìm internal link.

Vault API là trái tim của plugin development, cho phép bạn thao tác với Markdown files như một database. Bạn có thể tạo, đọc, sửa, xóa files, lắng nghe các event như file create/modify/delete. MetadataCache cung cấp khả năng query mạnh mẽ: tìm tất cả notes có tag cụ thể, tìm backlinks, đọc frontmatter mà không cần parse file thủ công.

Obsidian API class diagram showing Plugin, Vault, Workspace, and MetadataCache relationships
Obsidian API class diagram showing Plugin, Vault, Workspace, and MetadataCache relationships

Ví dụ: Auto-tagging plugin

Plugin tự động gắn tag #daily cho note được tạo trong ngày:

import { Plugin, TFile } from 'obsidian';

export default class AutoTagPlugin extends Plugin {
  async onload() {
    this.registerEvent(
      this.app.vault.on('create', (file: TFile) => {
        if (file.extension === 'md') {
          const date = window.moment().format('YYYY-MM-DD');
          const content = `#daily/${date}nn`;
          this.app.vault.modify(file, content + await this.app.vault.read(file));
        }
      })
    );
  }
}

Ví dụ nâng cao: Plugin tìm kiếm và replace

Một plugin thực tế hơn có thể thêm command palette entry để tìm và replace text trong toàn bộ vault:

import { Plugin, TFile, Menu, Notice } from 'obsidian';

export default class FindReplacePlugin extends Plugin {
  async onload() {
    this.addCommand({
      id: 'find-replace',
      name: 'Find and Replace in Vault',
      callback: async () => {
        const files = this.app.vault.getMarkdownFiles();
        // Implementation details...
        new Notice('Find and replace completed');
      }
    });
  }
}

Điều này cho thấy sức mạnh của Obsidian API: bạn có thể build các tool phức tạp như full-text search, batch editing, hoặc tự động hóa workflow chỉ với vài trăm dòng code TypeScript.

Tích hợp với công cụ bên ngoài

Obsidian plugin cũng có thể tích hợp với các công cụ bên ngoài thông qua API calls. Ví dụ:

  • Kết nối với GitHub để lưu trữ vault dưới dạng repository
  • Tích hợp với Google Calendar để đồng bộ lịch và reminder
  • Kết nối với REST API để đồng bộ dữ liệu với ứng dụng bên thứ ba
  • Tích hợp với máy chủ local để thực hiện các tác vụ xử lý dữ liệu phức tạp

Ví dụ cụ thể: Plugin có thể tự động tạo note mỗi khi bạn có commit mới trên GitHub, hoặc đồng bộ task từ Todoist vào Obsidian dưới dạng danh sách công việc cần làm.

Cải thiện hiệu suất plugin

Khi phát triển plugin, bạn cần lưu ý đến hiệu suất để tránh làm chậm Obsidian:

  • Throttle các event listener thường xuyên như editor-change
  • Sử dụng requestIdleCallback để lên lịch tác vụ không quan trọng
  • Tránh thực hiện DOM operations trực tiếp trong main thread
  • Sử dụng Web Workers để xử lý các tác vụ CPU-intensive

Ví dụ: Thay vì xử lý ngay lập tức khi user gõ ký tự, bạn có thể delay 300ms để giảm tần suất cập nhật và cải thiện trải nghiệm gõ phím.

Test và debug plugin

Obsidian cung cấp một số công cụ để test và debug plugin:

  • Console logging như bình thường trong browser
  • Plugin debug mode trong cài đặt Obsidian
  • Unit testing framework với Jest hoặc Vitest
  • End-to-end testing với công cụ như Playwright

Bạn cũng có thể sử dụng Obsidian’s built-in developer tools để kiểm tra API calls và event emissions.

Publish lên community plugin list

Khi plugin sẵn sàng, publish lên community plugins repo:

  • Fork repo, copy manifest.json + main.js vào thư mục community-plugins/your-plugin.
  • PR với description, screenshots, compatibility info.
  • Obsidian team review và merge.

Hoặc distribute riêng: zip file, GitHub release, hoặc BRAT (Beta Reviewers Auto-update Tester) — tool cho early access trước khi publish chính thức.

Monetization

Obsidian community plugins phải MIT license, không bán trực tiếp. Nhưng developer có thể:

  • SaaS wrapper: Build desktop app dùng Obsidian core + plugin riêng + cloud sync, bán subscription (ví dụ: Reflect).
  • Consulting: Tạo custom plugin cho enterprise vaults — insurance, legal firms cần PKM compliance.
  • Template + Course: Dạy build plugin, chia sẻ template qua Gumroad, Patreon.

Kết luận

Obsidian plugin development là entry point dễ nhất để build knowledge tools với cộng đồng lớn sẵn. TypeScript + Obsidian API cho bạn access trực tiếp vào vault, metadata cache, và UI system. Với 25 triệu users, plugin được adopt nhanh hơn bất kỳ standalone Electron app nào.

Nếu bạn đang tìm project để học desktop app development, Obsidian plugin là lựa chọn tối ưu: có real users, có feedback loop, có monetization path, và không cần lo về hosting, payments, scaling.

Nguồn tham khảo: Obsidian Plugin Developer Docs, Obsidian API reference, Sample Plugin template, Obsidian community forum.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

tmux Plugin Manager: Tùy chỉnh terminal đa nhiệm chuyên nghiệp

tmux là terminal multiplexer cổ điển nhưng giao diện mặc định còn thiếu features hiện đại: status bar đẹp, đánh số pane tự động, scrollback search, session persistence. tmux Plugin…

Xem thêm

Btrfs vs ZFS: Hệ thống tập tin Linux cho lưu trữ hiện đại

Btrfs và ZFS là hai hệ thống tập tin Linux hiện đại, được thiết kế để thay thế ext4 với khả năng quản lý snapshot, checksum dữ liệu và pool…

Xem thêm
auto_blog_3_1

Syncthing thay thế Dropbox: Đồng bộ tệ tin không giới hạn dung lượng

Syncthing là gì và tại sao chọn thay thế Dropbox? Syncthing là một công cụ đồng bộ hóa tệ tin (file sync) mã nguồn mở, hoạt động theo mạng ngang…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất