Browser Note

approved

by fengshuzi

Expose a localhost HTTP API (API-key protected) to view, create, edit and delete vault notes, with a built-in browser UI. - This plugin has not been manually reviewed by Obsidian staff.

14 downloadsUpdated 6d agoMIT

Browser Note

Expose your vault through a localhost HTTP API (API-key protected) — view, create, edit and delete notes, resolve wiki links and serve binary assets from external tools — with a built-in browser UI: open http://127.0.0.1:27124/ in any browser (or set it as your browser's new-tab URL) to browse and edit your journals.

Browser Note web UI

Features

  • Built-in web UI — an Infinity-style journal page (evolved from the Note Tab Chrome extension) served by the plugin itself; no extension install needed. Disable it in settings if you only want the API.
  • Localhost by default — the HTTP server binds to 127.0.0.1; an opt-in "Allow LAN access" setting binds 0.0.0.0 so phones/tablets on your network can connect.
  • API-key required — every API request needs Authorization: Bearer <key>; the key is auto-generated on first run and can be copied or regenerated in settings.
  • Full note CRUD over the Vault API (markdown files only).
  • Wiki-link resolution — uses Obsidian's own metadataCache.getFirstLinkpathDest, so shortest-path links like [[001 皮囊]] resolve exactly as they do in the app.
  • Binary asset serving — images, PDFs, audio/video from the vault over HTTP.
  • Daily-notes config — reads the vault's daily-notes folder/format so clients can find journals.
  • Desktop only.

API

Base URL: http://127.0.0.1:27124 (port configurable).

All endpoints require Authorization: Bearer <api-key>. For GET requests the key may also be passed as ?key= (needed by <img> tags, which cannot send headers).

MethodPathDescription
GET/api/statusHealth check: vault name, plugin version.
GET/api/notes?q=&folder=&content=1&limit=List notes. q matches path and content; content=1 includes note bodies; limit caps results (max 500).
GET/api/notes/<path>Read a note's content.
POST/api/notesCreate a note. Body: {"path": "folder/note.md", "content": "..."}. Parent folders are created automatically.
PUT/api/notes/<path>Replace a note's content. Body: {"content": "..."}.
DELETE/api/notes/<path>Move a note to trash (respects the system/Obsidian trash setting).
GET/api/resolve?path=<linkpath>&source=<note>Resolve a wiki/markdown link to a real vault path (shortest-path aware).
GET/api/assets/<path>Serve a vault file as binary (images, PDF, audio, video).
POST/api/assets?filename=<name>&folder=assetsUpload raw bytes (Content-Type: application/octet-stream) as a vault file. Defaults to assets/; auto-renames on conflict.
GET/api/daily-notes/configDaily-notes folder + filename format.
GET/api/journals?limit=&offset=List journal entries only: files in the daily-notes folder whose basename parses as a date in the configured format, sorted by that date desc. limit defaults to 50 (max 500). Response includes total, folder, and format.

Examples

KEY="<paste from settings>"

curl -H "Authorization: Bearer $KEY" http://127.0.0.1:27124/api/status

curl -H "Authorization: Bearer $KEY" "http://127.0.0.1:27124/api/notes?q=%23读书&content=1&limit=50"

curl -H "Authorization: Bearer $KEY" http://127.0.0.1:27124/api/notes/journals/2026-07-25.md

curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"path":"Inbox/hello.md","content":"# Hello"}' \
  http://127.0.0.1:27124/api/notes

curl -X PUT -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"content":"# Updated"}' \
  http://127.0.0.1:27124/api/notes/Inbox/hello.md

curl -X DELETE -H "Authorization: Bearer $KEY" http://127.0.0.1:27124/api/notes/Inbox/hello.md

# Resolve a shortest-path link, then fetch the image
curl -H "Authorization: Bearer $KEY" \
  "http://127.0.0.1:27124/api/resolve?path=pasted-image.png&source=journals/2026-07-25.md"
open "http://127.0.0.1:27124/api/assets/assets/pasted-image.png?key=$KEY"

Settings

  • Server status — start/stop the HTTP server.
  • Port — localhost port (default 27124); apply & restart after changing.
  • API key — required for every request. Fresh installs start with the shared default addwxfengshu4511 (so clients like note-tab connect out of the box); regenerate here if you see that as a risk.
  • Start on launch — auto-start the server when the vault opens.

Installation

  1. Download main.js, manifest.json, styles.css from the latest release.
  2. Place them in <vault>/.obsidian/plugins/browser-note/.
  3. Enable Browser Note in Settings → Community plugins.
  4. Open http://127.0.0.1:27124/ in your browser, or copy the API key from the plugin settings and configure your own client.

Development

npm install
npm run dev      # watch build
npm run build    # strict lint + typecheck + production bundle to dist/
npm run deploy   # build + copy into local vaults
npm run release  # build + GitHub release via gh CLI

License

MIT


Browser Note(中文说明)

把 vault 通过本地 HTTP API 暴露给外部工具:查看、新建、编辑、删除笔记,解析 wiki 链接,并提供图片等二进制资源访问。内置浏览器界面:直接在浏览器打开 http://127.0.0.1:27124/(或设为浏览器新标签页 URL)即可浏览/编辑日记,无需安装扩展。默认只监听 127.0.0.1,所有 API 请求必须携带 API key(Authorization: Bearer <key>,设置页可复制/重新生成)。

Web 界面源自 Chrome 扩展 Note Tab:Infinity 风格,默认打开今日日记,支持 markdown 渲染、双击编辑、标签、热力图、wiki 链接和图片显示。

接口、示例与设置说明见上方英文部分。

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.