Mails Blog Publisher
approvedby FengXuan
Publish the current note to Mails Blog using an Obsidian plugin token. - This plugin has not been manually reviewed by Obsidian staff.
Mails Blog Publisher
Publish notes from Obsidian to Mails Blog. This plugin is for people who already use Mails Blog and want to draft, publish, sync, and upload images without leaving Obsidian.
What It Does
- Save the current note as a draft
- Publish the current note
- Sync a linked note back from Mails Blog
- View saved version history for a linked note
- Upload an image from the vault and insert the returned Markdown
- Write blog binding metadata back into frontmatter automatically
Requirements
- A Mails Blog account
- The Mails iOS app to generate an
Obsidian Plugin Token - A reachable
Blog API Base URL - This plugin only publishes to Mails Blog
Install
If the plugin is available in the Obsidian Community Plugins directory:
- Open
Settings -> Community plugins -> Browse. - Search for
Mails Blog Publisher. - Install and enable the plugin.
For a manual install or an unreleased build:
- Copy these files into your vault plugin folder:
manifest.jsonmain.jsstyles.css
- Target folder example:
<your-vault>/.obsidian/plugins/mails-blog-publisher/
- Enable
Mails Blog Publisherin Obsidian community plugins.
If you build from source, run npm run release:package to create a ready-to-copy release/mails-blog-publisher/ folder.
Release A New Version
From the plugin repo:
npm run release:new -- 1.0.15
From the workspace root:
npm run release:obsidian-plugin -- 1.0.15
What the release command does:
- bumps
package.jsonandpackage-lock.json - syncs
manifest.jsonandversions.json - rebuilds and refreshes
release/mails-blog-publisher/ - creates a
Release <version>git commit - creates the matching Git tag
- pushes the branch and tag so
.github/workflows/release.ymlcan publish the GitHub Release - leaves the Obsidian review request as a separate manual portal step
Useful options:
--minoror--majorto auto-bump instead of passing an explicit version--min-app-version 1.8.0to update the required Obsidian version for this release--skip-pushto prepare the commit and tag locally without pushing--dry-runto preview every step without changing files or git state
Submit The New Version For Obsidian Review
After the GitHub Actions release workflow finishes and the new GitHub Release is visible:
- Open
https://community.obsidian.md/account/plugins. - If you are not signed in, Obsidian will first redirect you to the login page and then return you to the plugins portal.
- Open the
Mails Blog Publisherplugin entry. - Use
Add new versionto submit the just-published release version for review. - Wait for Obsidian staff review.
Notes:
- This plugin is already listed in the Obsidian community plugins directory.
- The public directory entry currently shows that it has not been manually reviewed by Obsidian staff yet.
- Treat the portal review submission as required release follow-up whenever you want a new version to enter the Obsidian manual review queue.
Setup
- In iOS, open
Settings -> Obsidian Plugin. - Generate a token for this Obsidian device and copy it.
- Open Obsidian plugin settings for
Mails Blog Publisher. - Fill in:
Blog API Base URLObsidian Plugin Token
- Run
Test Connection.
If the token stops working later, generate a new one in iOS and paste it again.
Publish A Note
- Open a Markdown note in Obsidian.
- Optional frontmatter fields:
titlecategorytagscard_image
- Run
Mails Blog: Save Current Note as Draftto create or update the remote draft. - Run
Mails Blog: Publish Current Noteto publish it.
The plugin writes the blog link and sync metadata back into frontmatter automatically.
Typical Workflow
- Write in Obsidian as usual.
- Save a draft to create or update the linked remote post.
- Publish when you are ready to make it live.
- Use
Sync Current Note From Blogif the remote post changed elsewhere. - Use
Upload Imageto choose a local image file and insert uploaded image Markdown into the current note. - Use
Upload Unsynced Images in Current Noteto batch-upload local images already referenced in the current note and replace them with blog-hosted Markdown. - Use
Show Current Note Version Historyto inspect saved draft and published snapshots for the linked post.
Other Commands
Mails Blog: Sync Current Note From Blog- pulls the linked blog post back into the current note when it is safe to do so
Mails Blog: Unlink Current Note from Blog Post- removes only the local link to the remote post
Mails Blog: Upload Image- choose a local
jpg,jpeg,png,webp, orgifimage file to upload
- choose a local
Mails Blog: Upload Unsynced Images in Current Note- scans the current note for local embedded images, uploads supported ones, and replaces those embeds with blog-hosted image Markdown
Mails Blog: Show Current Note Version History- opens a read-only history view for the linked post's saved versions
Notes
Publish Current Notealways saves a draft first.Sync Current Note From Blogstops when both the local note and the remote post changed.- The plugin uploads notes or images only when you explicitly run one of its commands.
Current Limitations
- Token generation currently starts in the Mails iOS app.
- Supported image formats are
jpg,jpeg,png,webp, andgif. - When both the local note and the remote post changed, sync stops instead of trying to merge them automatically.
Privacy And Network Use
- This plugin connects to your configured
Blog API Base URL. - It sends your plugin token, note title, frontmatter metadata, note body, and the image file you explicitly choose or batch-upload from the current note only when you run publish, draft, sync, or image upload commands.
- It writes blog binding metadata back into note frontmatter and can replace the current note when you run
Sync Current Note From Blog. - It does not include ads or telemetry.
For implementation and maintenance details, see AI_HANDOFF.md.
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.