HackMD Push
approvedby enyaw9
One-click push your notes to HackMD. - This plugin has not been manually reviewed by Obsidian staff.
HackMD Push
One-click push your Obsidian notes to HackMD.
Features
- Push the current note to HackMD with a single command or ribbon click
- Create or update — the plugin remembers the remote note ID and syncs to the same note on subsequent pushes
- Title & tags synced automatically from frontmatter
- Frontmatter stripped before upload so HackMD shows clean content
- Auxiliary commands: copy link, open in browser, unlink note
Installation
Manual (current)
- Download the latest
obsidian-hackmd-push.zipfrom Releases - Unzip and place the
obsidian-hackmd-pushfolder into your vault's.obsidian/plugins/directory - In Obsidian: Settings → Community plugins → Enable HackMD Push
Only main.js and manifest.json are required to run the plugin.
Setup
- Open Settings → HackMD Push
- Click ① 開啟 HackMD 設定頁 to open
hackmd.io/settings#apiin your browser (you must be logged in) - Create a new API token on that page
- Paste the token into ② 貼上 Token
- Click ③ 驗證 — you should see your HackMD username appear
Usage
With any Markdown note open:
| Action | How |
|---|---|
| Push to HackMD | Command palette → Push current note to HackMD, or click the cloud icon in the ribbon |
| Copy link | Command palette → Copy HackMD link |
| Open in browser | Command palette → Open in HackMD |
| Unlink note | Command palette → Unlink from HackMD |
On first push the plugin creates a new HackMD note and writes three fields into your frontmatter:
hackmd-id: abc123xyz
hackmd-url: https://hackmd.io/@username/note-slug
hackmd-pushed-at: 2026-07-28T00:00:00.000Z
Subsequent pushes update the same remote note.
Frontmatter integration
The plugin reads the following frontmatter fields before uploading:
title: My Note Title # used as the HackMD note title; falls back to filename
tags: [CISSP, security] # synced to HackMD tags; string or array both accepted
The frontmatter block itself is stripped from the uploaded content.
Default permissions
| Permission | Default |
|---|---|
| Read | Everyone (guest) |
| Write | Signed-in users |
| Comment | Disabled |
All three can be changed in Settings.
Security note
Your API token is stored in plain text at .obsidian/plugins/hackmd-push/data.json. If your vault is synced via iCloud, Obsidian Sync, or Git, the token travels with it. Treat it like a password and regenerate it if you suspect exposure.
Known limitations
- Local attachments (
![[image.png]]) are not uploaded — HackMD cannot access files on your machine - Wikilinks (
[[note]]) are not converted — they appear as plain text on HackMD - Sync is one-way: Obsidian → HackMD. Edits made on HackMD will be overwritten on next push
- Obsidian callouts (
> [!note]) are not converted to HackMD container syntax
Development
git clone https://github.com/EnyaWu/obsidian-hackmd-push
cd obsidian-hackmd-push
npm install
# watch mode (symlink main.js into your vault's plugin folder for live reload)
npm run dev
# production build
npm run build
See ARCHITECTURE.md for a detailed breakdown of every source file.
License
MIT
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.