Content Publisher
pendingby Romain Peyrichou
Publish your notes to multiple platforms: Substack, WordPress, and LinkedIn.
Obsidian Content Publisher
Publish your Obsidian notes to multiple platforms: Substack, WordPress, and more
Installation • Platforms • Usage • Roadmap
Supported Platforms
| Platform | Status | Features |
|---|---|---|
| Substack | ✅ | Draft/publish, images, audience targeting, sections |
| WordPress | ✅ | Multi-server, categories, tags, Rank Math SEO, Polylang |
| ✅ | Text/article posts, draft support, editable preview |
See PLATFORMS.md for detailed setup and frontmatter documentation.
Features
Substack
- One-Click Login — Automatic Substack authentication (desktop only)
- Draft & Publish — Save as draft or publish immediately
- Multi-Publication — Manage multiple Substack publications
- Audience Control — Target everyone, paid-only, free-only, or founding members
- Tags & Sections — Organize posts with tags and publication sections
WordPress
- Multi-Server — Configure multiple WordPress sites (production, staging, etc.)
- Server Selector — Choose which server to publish to
- Categories & Tags — Auto-fetch categories, create tags on the fly
- SEO Integration — Rank Math meta fields support
- Wikilinks — Automatic conversion to WordPress internal links
- Drop Cap Images — Decorative initial images (see Advanced Features)
- Bilingual Publishing — FR/EN with Polylang (see Advanced Features)
- Text & Article Posts — Share text or articles with link preview
- Auto Article URL — Uses
wordpress_urlorsubstack_urlfrom frontmatter - Editable Preview — Edit content before publishing (3000 char limit)
- Draft Support — Save as draft before publishing
- Bilingual Support — Publish FR or EN version separately
General
- Markdown Conversion — Full conversion to platform formats
- Image Upload — Local images auto-uploaded to platform CDN
- Frontmatter Support — Configure per-post settings via YAML
- Cross-Platform — Publish to WordPress first, then Substack with link
Installation
From Community Plugins (Coming Soon)
- Open Settings → Community plugins
- Search for "Content Publisher"
- Install and enable
Manual Installation
- Download
main.js,manifest.json,styles.cssfrom latest release - Create folder:
.obsidian/plugins/content-publisher/ - Copy files into the folder
- Restart Obsidian → Enable plugin
Quick Start
Substack
- Go to Settings → Content Publisher → Authentication
- Click "Login" to authenticate with Substack
- Click "Refresh" to fetch your publications
WordPress
- Go to Settings → Content Publisher → WordPress
- Enable WordPress publishing
- Add a server with your WordPress URL and Application Password
- Click "Fetch from WP" to load categories
- Go to Settings → Content Publisher → LinkedIn
- Enable LinkedIn publishing
- Follow the Setup guide in settings to get your access token via Postman
- Test connection to verify
Usage
- Open any Markdown note
- Add frontmatter (optional) for platform-specific settings
- Click the ribbon icon or use command palette
- Select platform and options
- Publish or save as draft
See PLATFORMS.md for frontmatter examples and platform-specific options.
Advanced Features
These optional features activate automatically when specific patterns are detected in your content.
Drop Cap Images (WordPress)
Add decorative initial images (medieval manuscript style) to your WordPress posts. The image floats left as a visual drop cap while the first letter remains in the HTML for SEO.
Usage: Name your image file with enluminure in the path:
![[Assets/enluminure-A.png]]
Your article content starts here...
Or specify in frontmatter:
---
enluminure: Assets/drop-caps/letter-A.png
---
The image will be:
- Uploaded to WordPress
- Positioned as a floating drop cap (200px max-width)
- Set as the featured image and Open Graph image (Rank Math)
- Removed from inline content to avoid duplication
Note: This feature only activates when "enluminure" appears in an image path. Regular images are unaffected.
Bilingual Publishing (WordPress + Polylang)
Publish French and English versions of your content simultaneously using the Polylang plugin.
1. Enable in Settings:
- Go to WordPress server settings
- Enable "Polylang" in the Multilingual section
- Configure category mappings for each language
2. Write bilingual content using callouts:
> [!info]- 🇫🇷 Titre français
> Votre contenu en français ici.
>
> Plusieurs paragraphes sont supportés.
> [!info]- 🇬🇧 English Title
> Your English content here.
>
> Multiple paragraphs are supported.
3. Publish: The plugin will create two linked WordPress posts (one FR, one EN) with proper Polylang language tags.
Note: This feature only activates when both 🇫🇷 and 🇬🇧 callouts are present and Polylang is enabled.
Privacy & Security
- Credentials stored locally in your vault
- No telemetry or data collection
- WordPress uses Application Passwords (not your login)
- Open source — audit the code yourself
Troubleshooting
| Error | Solution |
|---|---|
| "Session expired" (Substack) | Re-login via Settings → Login |
| "Publication not found" | Check subdomain spelling |
| "401 Unauthorized" (WordPress) | Check Application Password |
| Plugin not loading | Enable in Community plugins, restart Obsidian |
Roadmap
See ROADMAP.md for planned features.
Coming soon:
- Cover image support
- Scheduled publishing
Credits
Built upon these open-source projects:
- obsidian-content-os by @eharris128
- substack-mcp-plus by @ty13r
- python-substack by @ma2za
See ATTRIBUTIONS.md for details.
License
MIT License — See LICENSE for details.
Contributing
Found a bug? Have an idea? Open an issue or submit a PR!
See CONTRIBUTING.md for guidelines.
Disclaimer: This plugin uses unofficial APIs. Not affiliated with Substack or WordPress.
Star on GitHub if this helps you!
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.