Share Obsidian notes as unlisted WordPress pages in seconds.
Quickli consists of two parts working together:
- Obsidian plugin (
obsidian-plugin/) to publish notes, update shares, set passwords, and revoke links. - WordPress plugin (
wordpress-plugin/) to store/render shares and serve unlisted URLs.
- Share any Obsidian note via a unique unlisted URL (
/q/<token>/) - Optional password protection per share
- Optional expiry (
7 days,12 hours, etc.) - Update existing shares instead of creating duplicates
- Revoke shares from Obsidian
- Copy/open/email share links from the Obsidian modal
- Optional upload of local images to WordPress Media before publish
vaultredirect pages (/vault/<vault>/<path>) that launchobsidian://open?...
The screenshots below are sanitized (sensitive values are redacted).
quickli/
├─ obsidian-plugin/
│ ├─ main.ts
│ ├─ main.js
│ ├─ manifest.json
│ ├─ styles.css
│ └─ package.json
├─ wordpress-plugin/
│ └─ quickli-share.php
└─ docs/
└─ screenshots/
- In Obsidian, the plugin reads the current note.
- Markdown is rendered to HTML.
- Optional: local images are uploaded to
wp-json/wp/v2/mediaand links are replaced. - Obsidian calls
POST /wp-json/quickli-share/v1/sharewith Basic Auth (WordPress application password). - WordPress stores the share as a private custom post type (
quickli_share) with metadata (token, expiry, source path). - The public unlisted URL is returned and shown in Obsidian.
Install wordpress-plugin/quickli-share.php as a standard WordPress plugin and activate it.
After activation, Quickli provides:
- REST endpoints under
quickli-share/v1 - Unlisted share route:
/q/<token>/ - Vault redirect route:
/vault/<vault>/<path>
Build/copy the plugin in your Obsidian vault plugin directory:
cd obsidian-plugin
npm install
npm run buildThen enable Quickli Share inside Obsidian Community Plugins.
Set these values in the plugin settings:
- WordPress site URL (e.g.
https://quickli.net) - WordPress username
- WordPress application password
- Default expiry (optional)
- Upload local images (optional)
- Open share after upload (optional)
Share noteCopy share URLSet or clear share passwordRevoke share
A status bar item shows whether the current note is shared and if it is password-protected.
Base path:
/wp-json/quickli-share/v1
Endpoints:
POST /share→ create or update a shareGET /share/{id}→ fetch share metadataDELETE /share/{id}→ revoke share
Auth/permissions:
- Uses WordPress authentication (Application Passwords)
- Permission callback requires capability:
edit_posts
- Share links are unlisted, not indexed pages.
- Tokenized URLs are generated with cryptographically secure randomness (
random_bytes). - Share pages send noindex headers (
X-Robots-Tag: noindex, nofollow, noarchive). - Password protection is supported per share.
- Expiry can auto-delete old shares via daily cleanup cron.
Before publishing this repository:
- Do not commit real credentials, app passwords, or private base URLs.
- Keep screenshots redacted (as in
docs/screenshots/). - Avoid committing local artifacts (
.DS_Store, local logs, exports).
Current versions in this repo:
- WordPress plugin header:
0.3.0 - Obsidian manifest:
0.1.0
No license file is currently included in this repository.
Add a LICENSE file before wider public distribution.


