Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

JoySpace Publisher

cynthia-dingcynthia-ding44 downloads

Publish, update, and import Markdown documents with JoySpace.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates1

Publish, update, and import Markdown documents between Obsidian and JoySpace.

Features

  • Publish the active Markdown document to a JoySpace folder or private-space root.
  • Update a previously bound JoySpace page and skip unchanged content.
  • Override the default destination with joyspace-target-page-url in frontmatter.
  • Import a JoySpace regular document into the current Obsidian folder.
  • Optionally promote section headings and open the JoySpace page after publishing.

Requirements

  • Obsidian desktop.
  • Python 3 with browser_cookie3 installed by the user.
  • Chrome or another supported browser signed in to joyspace.jd.com and jd.com.
  • webcli for updating pages that were already published.

The plugin never installs or updates local dependencies. Install the Python dependency manually when needed:

python3 -m pip install --user browser_cookie3

Use Settings → JoySpace Publisher → Recheck environment after changing Python or WebCLI.

Installation

A release installation contains only:

main.js
manifest.json

Copy those files into <vault>/.obsidian/plugins/joyspace-publisher/, then enable JoySpace Publisher under Community plugins.

Usage

Open a Markdown document and run one of these commands:

  • Publish/update active document to JoySpace
  • Update active document on the bound JoySpace page
  • Import document from a JoySpace link into the current folder

After the first successful publish, the plugin writes these fields to the document frontmatter:

joyspace-page-id: "..."
joyspace-url: "https://joyspace.jd.com/pages/..."
joyspace-sync-hash: "..."
joyspace-synced-at: "..."

To override the default destination for one document, add:

joyspace-target-page-url: "https://joyspace.jd.com/teams/<team-id>/<folder-id>"

Privacy and network usage

  • The plugin connects to https://apijoyspace.jd.com to create pages, inspect destination information, and retrieve regular-document content.
  • It opens https://joyspace.jd.com links only after a successful operation and only when the corresponding setting is enabled.
  • Publishing sends the active document title, Markdown body, selected tenant, and destination information to JoySpace.
  • Importing sends the requested JoySpace page ID and saves the returned content inside the current vault.
  • Authentication reads browser cookies for jd.com from supported local browser profiles through the user-installed browser_cookie3 package. Cookies are used only to authenticate requests to JoySpace; the plugin does not write them to plugin settings, note files, or an author-controlled service.
  • Updating an existing page invokes the locally installed webcli executable with an argument array. Reading browser login state invokes the configured Python executable. The plugin does not concatenate document content into a shell command.
  • Temporary Markdown files used for WebCLI updates are created in the operating system temporary directory and removed after success or failure.
  • The plugin contains no client-side analytics, telemetry, advertising, or author-controlled data collection service.
  • Plugin settings remain in the vault's Obsidian plugin data after the plugin is disabled. Frontmatter written to notes also remains until the user removes it. Uninstalling the plugin directory removes its settings but does not alter note frontmatter.

Development

npm install
npm test
npm run build

The production build bundles project-owned runtime modules into a single CommonJS main.js. obsidian and electron remain runtime externals provided by the desktop app.

License

Licensed under the MIT License. Copyright © 2026 Cynthia Ding.

HealthExcellent
ReviewSatisfactory
About
Publish and update Markdown files between Obsidian and JoySpace, skipping unchanged content and syncing to previously bound JoySpace pages. Import JoySpace documents into the current folder, override the destination with a joyspace-target-page-url frontmatter entry, and write page ID, URL and sync metadata to the note after first publish.
PublishingImportIntegrations
Details
Current version
0.7.0
Last updated
3 weeks ago
Created
Last month
Updates
1 release
Downloads
44
Compatible with
Obsidian 1.5.0+
Platforms
Desktop only
License
MIT
Report bugRequest featureReport plugin
Author
cynthia-dingcynthia-ding
GitHubcynthia2023xy
  1. Community
  2. Plugins
  3. Publishing
  4. JoySpace Publisher

Related plugins

Zotero Integration

Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.

Snipd Official

Sync Snipd podcast highlights to your vault with transcript, notes, AI summaries and metadata.

Readwise Official

Sync highlights from Readwise to your vault.

Granola Sync

Sync Granola notes to your vault.

ZotLit

Integrate with Zotero, create literature notes, and insert citations from a Zotero library.

Plaud Sync

Sync Plaud voice recordings into Markdown notes with transcripts, AI summaries, and highlights.

Digital Garden

Publish your notes to a digital garden for others to enjoy.

GitHub

Share as Gist

Share a note as a GitHub.com Gist.

Telegram Sync

Transfer messages and files from Telegram to Obsidian.

Make It Rain

Pull Raindrop.io bookmarks, highlights, and attachments into Markdown notes with rich metadata, smart folder structures, and native file support.