chenglong10 downloadsCreate styled WeChat drafts and X Articles handoffs from Markdown notes.
Turn Markdown notes into styled, review-ready publishing drafts. Publisher Workbench is a free, open-source, desktop-only community plugin for Obsidian, with an editorial workbench for WeChat Official Accounts and an optional companion Chrome extension for X Articles.
简体中文 · Download releases · Report an issue
Draft-first by design. The plugin does not click the final public Publish button. Verify content on the destination platform before publishing it yourself.
The development project was previously called Obsidian Publisher. The Community Plugins listing is Publisher Workbench (ID publisher-workbench), in accordance with Obsidian's plugin naming rules. The repository is still haomiaoOnline/obsidian-publisher. This is not an official Obsidian product.
| Platform | Capabilities | Additional requirements |
|---|---|---|
| WeChat Official Account | Theme presets, live HTML preview, rich-text Copy to WeChat with local images, optional automated draft handoff. | Logged-in WeChat editor. For draft automation, a separate Wechatsync installation. |
| X Articles | Markdown handoff and article draft creation through the optional X Bridge, including image import. | Desktop Chrome, an X account eligible for Articles and a separate X Bridge installation. |
| Xiaohongshu | Optional draft handoff through the external Wechatsync adapter. | Configured Wechatsync CLI and extension; functionality depends on external platform support. |
After the directory review is approved, open Settings → Community plugins → Browse, find Publisher Workbench, install and enable it. This installs the Obsidian plugin only, not its separate Chrome extensions or command-line integrations.
main.js, manifest.json and styles.css from the latest GitHub Release. Use matching files from the same release.<Vault>/.obsidian/plugins/publisher-workbench/ and copy those files into the folder.Migrating from an earlier private/test version: The former ID was obsidian-publisher and the Community version ID is publisher-workbench. Disable the old plugin before enabling the new one. Back up its data.json if needed; settings and locally stored bridge tokens do not migrate automatically. Do not keep both enabled at once.
 and Obsidian ![[image]] embeds are supported when attachments are resolvable from the vault.Why explicit saving matters: In real-editor acceptance testing, merely pasting text did not always cause a persistent save. A manual Save as draft followed by reopening did preserve the complete 11,298-character, five-image article. External clipboard managers, device-sharing utilities and desktop automation can occasionally replace the clipboard after copying. A successful local clipboard check cannot guarantee that the remote editor received or saved the content.
Wechatsync is a separate third-party CLI plus Chrome integration, not installed automatically by this plugin.
wechatsync), platform identifiers, and token.The plugin stages temporary Markdown/HTML files outside the vault for the configured adapter. It launches the executable without a shell, supplies the local token through the child-process WECHATSYNC_TOKEN environment variable (not command arguments), and checks bridge availability at 127.0.0.1:9527/9528. Versions of the third-party tool may behave differently. The plugin does not manage Wechatsync upgrades.
X Articles is not the same as a regular short post on X. The companion extension uses a pinned, MIT-licensed version of xPoster.
x-bridge.zip from the matching GitHub Release, and extract it to a stable directory.chrome://extensions, enable Developer mode, select Load unpacked, and choose the extracted directory that contains the extension manifest.json.The X Bridge has a diagnostic side panel for manual retry. The core plugin also offers Prepare only and External command strategies; an external command must support X Articles, not merely short posts. No extension is installed by this Obsidian plugin. See extension notes, xPoster license, and upstream version attribution.
No built-in ads, telemetry or hosted plugin service. The plugin reads the currently opened note and referenced images only when you use the publishing interface. Nothing is made public automatically.
| Capability | Disclosure |
|---|---|
| Vault access | Reads the active Markdown note and images referenced by that article. |
| System clipboard | Writes HTML, plain text or a versioned X handoff. Other desktop programs may read or overwrite clipboard content. |
| Files outside the vault | Creates temporary Markdown/HTML staging files and may expose absolute file paths to locally configured third-party tools. |
| Launching local programs | Starts the configured Wechatsync or external X Article command when the user executes a non-dry-run handoff. These programs must be separately installed and trusted. |
| Local networking | Checks Wechatsync's bridge status on loopback TCP ports 9527/9528. |
| Platform networks | Separately installed Wechatsync and X Bridge communicate with the website you are signed into (including mp.weixin.qq.com and x.com) to create drafts and upload images. Their own terms and privacy practices apply. |
| Local secrets | The configured Wechatsync token is stored in local Obsidian plugin settings, and is passed only to the spawned adapter process when needed. Do not commit your plugin's data.json or any token. |
We cannot control the behavior of other installed publishing tools or Chrome extensions. Protect your vault, clipboard, local browser sessions and permission grants. Do not share private drafts or authentication data in bug reports.
| Problem | Suggested check |
|---|---|
| Rich copy is unavailable | Wait for attachment conversion; retry preparation if image decoding failed or the article is too large. |
| WeChat paste appears plain or missing images | Re-copy, temporarily disable competing clipboard utilities, paste directly into the WeChat body editor, save manually, then reopen and inspect. |
| WeChat warns about text alignment | Inspect the preview and choose to continue only if the article looks right; verify saved formatting and images. |
Wechatsync says connected:false |
Open its Chrome extension, enable the local bridge, and confirm the token and local ports; avoid duplicate background processes. |
X Articles has missing images or XPOSTER_ markers |
Check the X Bridge version, extension enabled state, image-directory permission and draft after reload; use the diagnostic side panel for retry. |
| Manual installation does not appear | Ensure all three release files are in <Vault>/.obsidian/plugins/publisher-workbench/ and the manifest ID matches the folder. |
Use a Node.js development environment:
npm ci
npm run typecheck
npm test
npm run test:x-bridge
npm run build
main.js is a generated build artifact and is intentionally absent from Git source history. Community installs require the binary release assets main.js, manifest.json and styles.css. The optional X Bridge is distributed as x-bridge.zip.
See architecture and MVP test scope. The repository is open for bug reports and contributions.
Copyright © 2026 haomiaoOnline contributors. Distributed under the MIT License.
The optional Chrome extension contains modified material from xPoster under its MIT License, pinned to the documented upstream commit. Its third-party Markdown parser retains its license.
Obsidian, WeChat, X, Xiaohongshu and other platform names and marks belong to their respective owners. This project is independent and not endorsed by them.