NoteRelay is an Obsidian desktop plugin for Markdown creators. It turns the active note into platform-specific previews and clipboard content for WeChat Official Accounts, Xiaohongshu, and X. It does not sign in to social platforms, store publishing credentials, or publish content automatically.
| Platform | Preview and formatting | Output |
|---|---|---|
| WeChat Official Accounts | Six built-in themes, Markdown rich text, account variables, images, and code blocks | Copy inline-styled HTML with a plain-text fallback |
| Xiaohongshu | Fixed 3:4 HD cards, automatic pagination, eleven themes, default and memo templates, backgrounds, avatars, and signatures | Download the current page, copy the current PNG, or export all pages as a ZIP archive |
| X | Long-form rich-text preview, title handling, table-to-list conversion, media position markers, and a media checklist | Copy rich text and plain text; upload images, GIFs, and videos natively in X |
All three platforms support multiple creator profiles. Account details are used only for previews, signatures, and {{variable}} replacement.


Download or build main.js, manifest.json, and styles.css.
Create this directory in your Vault:
.obsidian/plugins/noterelay/
Put the three files in that directory.
Open Obsidian → Settings → Community plugins and enable NoteRelay.
NoteRelay currently supports Obsidian desktop only.
1242 × 1660 with a 3:4 aspect ratio.# or level-two ## headings.256 × 256.Each platform can have multiple accounts and shows only the fields used by its renderer:
Enter one variable per line in Settings:
Column=AI Watch
AuthorName=NoteRelay
Closing=Follow me for more practical AI notes
Topics=#AI #Obsidian
Use the variables in Markdown:
# {{Column}}
Author: {{AuthorName}}
{{Closing}}
Variables without configured values remain as {{VariableName}}, making omissions easy to spot in the preview.
Each platform applies compatibility handling based on the capabilities of its editor. Always treat the final result in the destination editor as authoritative.
Node.js and npm are required.
npm install
npm run dev
Run the release checks before publishing:
npm run check
node --check main.js
Build artifacts:
main.js
manifest.json
styles.css
Using a separate test Vault and symlinking the build artifacts into .obsidian/plugins/noterelay/ can shorten the development loop.
If NoteRelay is useful to you and you would like to support its ongoing maintenance, you can send a tip through WeChat Pay.
WeChat Pay
The generated main.js file is not committed to the repository. When a maintainer pushes a semantic-version tag matching both manifest.json and package.json, GitHub Actions runs the checks and build, then attaches these files to the GitHub Release:
main.jsmanifest.jsonstyles.cssFor example, to release 0.1.5:
git tag 0.1.5
git push origin 0.1.5
src/
├── core/ # Shared account variables, images, clipboard, and platform utilities
├── platforms/
│ ├── wechat/ # WeChat parsing, themes, and compatible output
│ ├── rednote/ # Xiaohongshu templates, themes, pagination, and image export
│ └── x/ # X long-form preview, media checklist, and copy output
├── themes/ # Built-in theme registry and lookup
├── ui/ # Obsidian views, settings, and modals
├── defaults.ts # Default settings
├── main.ts # Plugin wiring and lifecycle
└── types.ts # Shared domain models
NoteRelay uses or references the following open-source projects:
AGPL-3.0-or-later.See THIRD_PARTY_NOTICES.md for complete copyright notices, modification notes, and third-party license texts.
Runtime dependencies markdown-it, html-to-image, and fflate use open-source licenses compatible with this project.
NoteRelay is licensed under the GNU Affero General Public License v3.0 or later.
Because the project includes modifications and adaptations of AGPL-3.0-or-later components and theme structures, NoteRelay no longer uses the MIT License for the project as a whole. Distributing a modified version or providing it as a network service requires making the corresponding source code available under the AGPL-3.0-or-later and retaining copyright and license notices.
Third-party components under the MIT License retain their original MIT copyright notices. See THIRD_PARTY_NOTICES.md.
