Share Page

approved

by licc168

Instantly share a note as a beautiful webpage and copy the public link. - This plugin has not been manually reviewed by Obsidian staff.

2 stars960 downloadsUpdated 16d agoMIT

Share Page — Obsidian Plugin

中文文档

Instantly share any Obsidian note as a beautiful webpage via htmlto.link and copy the public link.

Features

  • One-click share — Ribbon, command palette (Share current note), or right-click a file
  • Same URL on update — Re-sharing a note updates the existing link; rename or move the file and it still matches
  • Update on save — Optional. Already-shared notes update the same URL when you save; the first share is still manual
  • 30+ templates — Memo, Pop Art, Traditional Chinese, Coil Notebook, Cyberpunk, Glassmorphism, and more
  • Theme variants — Multiple color themes per template (e.g. Bright / Dark for Memo)
  • Local template preview — Switch template and theme from the top-right of the current Markdown page without publishing or uploading the note
  • Responsive layout — Share pages adapt to screen width automatically
  • Delete share — Remove a previously shared link (Delete share for current note)
  • Frontmatter integration — Automatically writes share_link and share_updated to note properties after sharing
  • i18n — UI follows Obsidian language (English / 中文), or set manually
  • API Token help — Clear steps and a one-click link to get your token from htmlto.link settings

Installation

From Obsidian Community Plugins

Search "Share Page" in Settings → Community plugins → Browse.

Manual / BRAT

  1. Download main.js, manifest.json, styles.css from the latest GitHub Release.
  2. Place them in <your-vault>/.obsidian/plugins/htmlto-link/.
  3. Enable Share Page in Settings → Community plugins.

Build from source

git clone https://github.com/licc168/obsidian-htmlto-link.git
cd obsidian-htmlto-link
npm install
npm run build

Copy main.js, manifest.json, styles.css to your vault's plugin directory.

Usage

  1. Open any Markdown note.
  2. Use the Template and Theme dropdowns at the top-right of the page to preview locally. Choose Obsidian original to exit preview.
  3. To publish, use Ctrl/Cmd + PShare current note (or the ribbon icon/right-click menu).
  4. Confirm the template/theme in the publish dialog. Unsaved edits are included and the share link is copied automatically.

To remove a share: Ctrl/Cmd + PDelete share for current note.

To keep a public link in sync: share the note once, then enable Update share on save in plugin settings. Later saves update that same URL after a short pause. This does not create a new link if the old one expired.

Settings

SettingDescription
API TokenOptional. Empty = guest (24h). Sign in at htmlto.link/settings, copy API Token, paste here for account-bound longer lifetime
Default Templatememo / popart / traditionalchinese / coilnotebook / …
Theme Classe.g. bright-mode, candy-mode
LanguageAuto / English / 中文
Copy link on successEnabled by default
Open in browserDisabled by default
Write share info to noteWrites share_link / share_updated to frontmatter
Update share on saveDisabled by default. Saving an already-shared note updates the same public URL
Show options on publishTemplate & theme picker dialog

Template preview is not a separate setting. It is enabled from the Markdown page controls and remains separate from publishing.

Privacy & Data

  • Network access: Template preview runs locally and does not send the note content or upload local images. When you publish, the plugin sends the current note's Markdown and referenced local images to the configured API server to create or update the share page. If Update share on save is enabled, saving an already-shared note also uploads that note and its referenced local images to update the existing page. Deleting a share also contacts that server. The plugin does not scan or upload the rest of the vault.
  • Server-side storage: The configured service stores the published note content and uploaded images to serve the resulting public page. Anyone with the public share URL may be able to view the published content. The current service does not provide end-to-end encryption for this plugin's shares.
  • Retention: Guest shares expire after 24 hours. Account-bound shares follow the retention period returned by the service and the applicable plan. Use Delete share for current note to request deletion of a share.
  • Telemetry: The plugin does not send startup pings or client-side usage analytics. The service may record the minimum request information needed to operate the publishing API; see the HTML To Link Privacy Policy.
  • Clipboard access: The plugin only writes to the clipboard. After a successful publish it copies the public URL when “Copy link on success” is enabled, and the local template preview can copy a code block you click. It never reads the clipboard, so it cannot expose content copied from outside Obsidian.
  • Vault access: The plugin reads only the note being shared and its referenced local images. It writes share_link and share_updated to that note only when the corresponding setting is enabled.
  • Local data: Settings, share-update tokens, and image cache records are stored through Obsidian's plugin data API.

Development

npm install
npm run dev    # watch mode
npm run build  # production build

Project Structure

obsidian-htmlto-link/
├── manifest.json
├── package.json
├── styles.css
├── esbuild.config.mjs
├── src/
│   ├── main.ts        # Plugin entry
│   ├── settings.ts    # Settings tab
│   ├── constants.ts   # Defaults / templates
│   ├── api.ts         # API client
│   ├── publish.ts     # Share & delete logic
│   ├── auto-update.ts # Optional update-on-save
│   ├── template-preview/ # Local template preview
│   └── i18n.ts        # Internationalization
├── scripts/
│   └── sync-template-assets.mjs # Sync html2url template CSS
└── README.md

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.